Index: lams_tool_lamc/db/model/lams_tool_mc.clay =================================================================== diff -u -rb7285ac977222460053f4293718569503f17fe1e -rf80f8ca251173376b790a2d05914a57cc1acb430 --- lams_tool_lamc/db/model/lams_tool_mc.clay (.../lams_tool_mc.clay) (revision b7285ac977222460053f4293718569503f17fe1e) +++ lams_tool_lamc/db/model/lams_tool_mc.clay (.../lams_tool_mc.clay) (revision f80f8ca251173376b790a2d05914a57cc1acb430) @@ -37,18 +37,16 @@ - + - - - + + - + - - - + + @@ -103,18 +101,16 @@ - + - - - + + - + - - - + + @@ -168,11 +164,10 @@ - + - - - + + @@ -304,18 +299,16 @@ - + - - - + + - + - - - + + @@ -673,7 +666,7 @@ - + Index: lams_tool_lamc/db/sql/create_lams_tool_mc.sql =================================================================== diff -u -rb7285ac977222460053f4293718569503f17fe1e -rf80f8ca251173376b790a2d05914a57cc1acb430 --- lams_tool_lamc/db/sql/create_lams_tool_mc.sql (.../create_lams_tool_mc.sql) (revision b7285ac977222460053f4293718569503f17fe1e) +++ lams_tool_lamc/db/sql/create_lams_tool_mc.sql (.../create_lams_tool_mc.sql) (revision f80f8ca251173376b790a2d05914a57cc1acb430) @@ -1,21 +1,21 @@ CREATE TABLE lams.tl_lamc11_content ( uid BIGINT(20) NOT NULL AUTO_INCREMENT , content_id BIGINT(20) NOT NULL - , title VARCHAR(250) NOT NULL - , instructions VARCHAR(250) NOT NULL + , title TEXT NOT NULL + , instructions TEXT NOT NULL , creation_date VARCHAR(100) , update_date DATETIME , questions_sequenced TINYINT(1) NOT NULL DEFAULT 0 , username_visible TINYINT(1) NOT NULL DEFAULT 0 , created_by BIGINT(20) NOT NULL DEFAULT 0 - , monitoring_report_title VARCHAR(100) NOT NULL - , report_title VARCHAR(100) NOT NULL + , monitoring_report_title TEXT NOT NULL + , report_title TEXT NOT NULL , run_offline TINYINT(1) NOT NULL DEFAULT 0 , define_later TINYINT(1) NOT NULL DEFAULT 0 , synch_in_monitor TINYINT(1) NOT NULL DEFAULT 0 , offline_instructions TEXT , online_instructions TEXT - , end_learning_message VARCHAR(150) NOT NULL + , end_learning_message TEXT NOT NULL , content_in_use TINYINT(1) NOT NULL DEFAULT 0 , retries TINYINT(1) NOT NULL DEFAULT 0 , show_feedback TINYINT(1) NOT NULL DEFAULT 0 @@ -30,8 +30,8 @@ , question VARCHAR(255) , weight INT(5) NOT NULL DEFAULT 0 , disabled TINYINT(1) NOT NULL DEFAULT 1 - , feedbackCorrect VARCHAR(255) - , feedbackIncorrect VARCHAR(255) + , feedbackCorrect TEXT + , feedbackIncorrect TEXT , display_order INT(5) , mc_content_id BIGINT(20) NOT NULL , PRIMARY KEY (uid) @@ -86,7 +86,7 @@ , attempt_time DATETIME , time_zone VARCHAR(255) , isAttemptCorrect TINYINT(1) NOT NULL DEFAULT 0 - , mark VARCHAR(255) NOT NULL DEFAULT '0' + , mark VARCHAR(255) , passed TINYINT(1) NOT NULL DEFAULT 0 , attemptOrder INTEGER NOT NULL DEFAULT 1 , PRIMARY KEY (uid) @@ -118,4 +118,5 @@ INSERT INTO lams.tl_lamc11_que_content (uid,question, weight, disabled, display_order, mc_content_id) VALUES (1, 'a sample question', 0, 1, 1, 1); -INSERT INTO lams.tl_lamc11_options_content (uid, correct_option, mc_que_content_id, mc_que_option_text) VALUES (1, 0, 1,'sample answer 1'); \ No newline at end of file +INSERT INTO lams.tl_lamc11_options_content (uid, correct_option, mc_que_content_id, mc_que_option_text) VALUES (1, 0, 1,'sample answer 1'); + Index: lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/McAppConstants.java =================================================================== diff -u -ra94de5ff6e0fa1bf65e068d94c81ccdd232c06df -rf80f8ca251173376b790a2d05914a57cc1acb430 --- lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/McAppConstants.java (.../McAppConstants.java) (revision a94de5ff6e0fa1bf65e068d94c81ccdd232c06df) +++ lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/McAppConstants.java (.../McAppConstants.java) (revision f80f8ca251173376b790a2d05914a57cc1acb430) @@ -134,7 +134,7 @@ public static final String CHOICE_TYPE_ADVANCED ="choiceTypeAdvanced"; public static final String CHOICE_TYPE_INSTRUCTIONS ="choiceTypeInstructions"; public static final String EDIT_OPTIONS_MODE ="editOptionsMode"; - public static final String SUBMIT_SUCCESS ="submitSuccess"; + public static final String SUBMIT_SUCCESS ="sbmtSuccess"; public static final String FILE_CONTENT ="fileContent"; public static final String LOAD_FILE_CONTENT ="loadFileContent"; public static final String FILE_CONTENT_READY ="fileContentReady"; Index: lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/McResources.properties =================================================================== diff -u -r32fc4979f5d351d85b0b1d751810fe1433ee0fcc -rf80f8ca251173376b790a2d05914a57cc1acb430 --- lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/McResources.properties (.../McResources.properties) (revision 32fc4979f5d351d85b0b1d751810fe1433ee0fcc) +++ lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/McResources.properties (.../McResources.properties) (revision f80f8ca251173376b790a2d05914a57cc1acb430) @@ -4,6 +4,7 @@ label.authoring.mc.basic =Please define the questions. label.mc.questions =Multiple Choice Questions label.authoring.mc.basic.editOptions =Please define the question and/or its options. +label.advanced.definitions =Advanced Definitions label.authoring.title =Title label.authoring.instructions =Instructions label.Questions =Questions @@ -66,6 +67,7 @@ label.candidateAnswers =Candidate Answers label.isCorrect =Correct? +sbmt.successful =The content has been created successfully. label.monitoringReport.title =Monitoring Report Title label.question.only =Question label.question =Question: @@ -125,8 +127,6 @@ error.learningUser.notAvailable =Tool Activity Error! Can't continue. Tool Activity expects a user id. error.fileName.empty =Please correct this: Under "Instructions", the file(name) to upload can not be empty. -submit.successful =The content has been created successfully. - error.question.addNotAllowed.thisScreen = The question text can not be modified in this screen since it has options attached . Please use the "Options" button to edit the question text. error.question.removeNotAllowed.thisScreen = The question can not be removed since one or more of the question texts has been modified. Please try again without any text modifications. Index: lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/web/AuthoringUtil.java =================================================================== diff -u -r32fc4979f5d351d85b0b1d751810fe1433ee0fcc -rf80f8ca251173376b790a2d05914a57cc1acb430 --- lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/web/AuthoringUtil.java (.../AuthoringUtil.java) (revision 32fc4979f5d351d85b0b1d751810fe1433ee0fcc) +++ lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/web/AuthoringUtil.java (.../AuthoringUtil.java) (revision f80f8ca251173376b790a2d05914a57cc1acb430) @@ -876,6 +876,49 @@ } + public static Map updateQuestionsMapForNoOptions(HttpServletRequest request, Map mapQuestionsContent, Map mapGeneralOptionsContent) + { + logger.debug("doing updateQuestionsMapForNoOptions..."); + IMcService mcService =McUtils.getToolService(request); + Map mapUpdatedQuestionsContent= new TreeMap(new McComparator()); + + logger.debug("mapQuestionsContent: " + mapQuestionsContent); + logger.debug("mapGeneralOptionsContent: " + mapGeneralOptionsContent); + + Iterator itQuestionsMap = mapQuestionsContent.entrySet().iterator(); + boolean questionFound=false; + while (itQuestionsMap.hasNext()) + { + Map.Entry pairs = (Map.Entry)itQuestionsMap.next(); + logger.debug("using the pair: " + pairs.getKey() + " = " + pairs.getValue()); + + questionFound=false; + Iterator itMapGOC = mapGeneralOptionsContent.entrySet().iterator(); + while (itMapGOC.hasNext()) + { + Map.Entry pairsGOC = (Map.Entry)itMapGOC.next(); + logger.debug("using the pair: " + pairsGOC.getKey() + " = " + pairsGOC.getValue()); + logger.debug("comparing the pairs : " + pairs.getKey() + " and " + pairsGOC.getKey()); + + if (pairs.getKey().toString().equals(pairsGOC.getKey().toString())) + { + logger.debug("question has options, keep this one: " + pairs.getKey()); + questionFound=true; + } + } + logger.debug("questionFound: " + questionFound); + + if (questionFound == true) + { + logger.debug("will add this question to the the questionsMap:" + pairs.getKey().toString()); + mapUpdatedQuestionsContent.put(pairs.getKey().toString(), pairs.getValue().toString()); + } + logger.debug("final mapUpdatedQuestionsContent:" + mapUpdatedQuestionsContent); + } + return mapUpdatedQuestionsContent; + } + + public static void cleanupRedundantQuestions(HttpServletRequest request, List existingQuestions, Map mapQuestionsContent, McContent mcContent) { logger.debug("doing cleanupRedundantQuestions..."); @@ -921,7 +964,7 @@ } - public static void selectAndPersistQuestions(HttpServletRequest request, List existingQuestions, Map mapQuestionsContent, Map mapFeedbackIncorrect, Map mapFeedbackCorrect, McContent mcContent) + public static void selectAndPersistQuestions(HttpServletRequest request, List existingQuestions, Map mapQuestionsContent,Map mapFeedbackIncorrect, Map mapFeedbackCorrect, Map mapGeneralOptionsContent, McContent mcContent) { logger.debug("doing selectAndPersistQuestions..."); IMcService mcService =McUtils.getToolService(request); @@ -960,7 +1003,7 @@ else { logger.debug("questionContentFound is false: " + mcQueContent); - createQuestionContent(request,mapQuestionsContent, mapFeedbackIncorrect, mapFeedbackCorrect, pairs.getValue().toString(), mcContent); + createQuestionContent(request,mapQuestionsContent, mapFeedbackIncorrect, mapFeedbackCorrect, pairs.getValue().toString(), mapGeneralOptionsContent, mcContent); } } } @@ -1083,6 +1126,8 @@ } } + + public static void selectAndPersistOptions(HttpServletRequest request, Map mapStartupGeneralOptionsContent, Map mapStartupGeneralSelectedOptionsContent, Map mapGeneralOptionsContent, Map mapGeneralSelectedOptionsContent, Map mapStartupGeneralOptionsQueId) @@ -1106,7 +1151,6 @@ Map.Entry pairsGO = (Map.Entry)itGOMap.next(); if (pairsSGO.getKey().equals(pairsGO.getKey())) { - logger.debug("equal keys found: " + pairsSGO.getKey()); String questionIndex=pairsSGO.getKey().toString(); Map mapSGO=(Map)pairsSGO.getValue(); @@ -1349,39 +1393,51 @@ } - public static void createQuestionContent(HttpServletRequest request, Map mapQuestionsContent, Map mapFeedbackIncorrect, Map mapFeedbackCorrect, String question, McContent mcContent) + public static void createQuestionContent(HttpServletRequest request, Map mapQuestionsContent, Map mapFeedbackIncorrect, Map mapFeedbackCorrect, String question, Map mapGeneralOptionsContent, McContent mcContent) { logger.debug("using createQuestionContent with question: " + question); IMcService mcService =McUtils.getToolService(request); int displayOrder= getNewDisplayOrder(mapQuestionsContent, question); logger.debug("displayOrder: " + displayOrder); - Map mapWeights= (Map)request.getSession().getAttribute(MAP_WEIGHTS); - logger.debug("MAP_WEIGHTS: " + MAP_WEIGHTS); + boolean isQuestionWithOptions=isQuestionWithOptions(mapGeneralOptionsContent, displayOrder); + logger.debug("isQuestionWithOptions: " + isQuestionWithOptions); - String weight=(String)mapWeights.get(new Integer(displayOrder).toString()); - logger.debug("new weight will be:" + weight); - - String incorrectFeedback=(String)mapFeedbackIncorrect.get(new Integer(displayOrder).toString()); - logger.debug("new incorrectFeedback will be :" + incorrectFeedback); + if (isQuestionWithOptions == true) + { + Map mapWeights= (Map)request.getSession().getAttribute(MAP_WEIGHTS); + logger.debug("MAP_WEIGHTS: " + MAP_WEIGHTS); + + String weight=(String)mapWeights.get(new Integer(displayOrder).toString()); + logger.debug("new weight will be:" + weight); + + String incorrectFeedback=(String)mapFeedbackIncorrect.get(new Integer(displayOrder).toString()); + logger.debug("new incorrectFeedback will be :" + incorrectFeedback); - String correctFeedback=(String)mapFeedbackCorrect.get(new Integer(displayOrder).toString()); - logger.debug("new correctFeedback will be :" + correctFeedback); - - McQueContent mcQueContent= new McQueContent(question, - new Integer(displayOrder), - new Integer(weight), - false, - incorrectFeedback, - correctFeedback, - mcContent, - new HashSet(), - new HashSet() - ); - - mcService.saveOrUpdateMcQueContent(mcQueContent); - logger.debug("created a new mcQueContent in the db: " + mcQueContent); + String correctFeedback=(String)mapFeedbackCorrect.get(new Integer(displayOrder).toString()); + logger.debug("new correctFeedback will be :" + correctFeedback); + + McQueContent mcQueContent= new McQueContent(question, + new Integer(displayOrder), + new Integer(weight), + false, + incorrectFeedback, + correctFeedback, + mcContent, + new HashSet(), + new HashSet() + ); + + mcService.saveOrUpdateMcQueContent(mcQueContent); + logger.debug("created a new mcQueContent in the db: " + mcQueContent); + } + else + { + logger.debug("we don't create this question's content since it doesn't have options associated with it."); + //mapCopyQuestionsContent.remove(new Long(displayOrder).toString()); + //request.getSession().setAttribute(MAP_QUESTIONS_CONTENT, mapCopyQuestionsContent); + } } @@ -1405,78 +1461,33 @@ /** - * creates the questions from the user in the db and makes a call to persist options. - * persistQuestions(HttpServletRequest request, Map mapQuestionsContent, Map mapFeedbackIncorrect, Map mapFeedbackCorrect, McContent mcContent) - * - * @param request - * @param mapQuestionsContent - * @param mapFeedbackIncorrect - * @param mapFeedbackCorrect - * @param mcContent + * finds out whether a question has options (candidate answers) or not. + * + * isQuestionWithOptions(Map mapGeneralOptionsContent, int displayOrder) + * + * @param mapGeneralOptionsContent + * @param displayOrder + * @return */ - public static void persistQuestions(HttpServletRequest request, Map mapQuestionsContent, Map mapFeedbackIncorrect, Map mapFeedbackCorrect, McContent mcContent) - { - IMcService mcService =McUtils.getToolService(request); - logger.debug("mapQuestionsContent to be persisted :" + mapQuestionsContent); - logger.debug("mapFeedbackIncorrect :" + mapFeedbackIncorrect); - logger.debug("mapFeedbackCorrect :" + mapFeedbackCorrect); - - Map mapGeneralOptionsContent=(Map)request.getSession().getAttribute(MAP_GENERAL_OPTIONS_CONTENT); - logger.debug("final MAP_GENERAL_OPTIONS_CONTENT :" + mapGeneralOptionsContent); - - Map mapGeneralSelectedOptionsContent=(Map)request.getSession().getAttribute(MAP_GENERAL_SELECTED_OPTIONS_CONTENT); - logger.debug("final MAP_GENERAL_SELECTED_OPTIONS_CONTENT :" + mapGeneralSelectedOptionsContent); - - Map mapWeights= AuthoringUtil.repopulateMap(request, "questionWeight"); - request.getSession().setAttribute(MAP_WEIGHTS, mapWeights); - logger.debug("MAP_WEIGHTS:" + request.getSession().getAttribute(MAP_WEIGHTS)); - - Iterator itQuestionsMap = mapQuestionsContent.entrySet().iterator(); - while (itQuestionsMap.hasNext()) { + public static boolean isQuestionWithOptions(Map mapGeneralOptionsContent, int displayOrder) + { + logger.debug("mapGeneralOptionsContent:" + mapGeneralOptionsContent); + + Iterator itQuestionsMap = mapGeneralOptionsContent.entrySet().iterator(); + while (itQuestionsMap.hasNext()) + { Map.Entry pairs = (Map.Entry)itQuestionsMap.next(); logger.debug("using the pair: " + pairs.getKey() + " = " + pairs.getValue()); - if ((pairs.getValue() != null) && (!pairs.getValue().equals(""))) + logger.debug("current questionIndex: " + new Integer(pairs.getKey().toString()).intValue()); + int questionIndex=new Integer(pairs.getKey().toString()).intValue(); + if (questionIndex == displayOrder) { - logger.debug("checking existing question text: " + pairs.getValue().toString() + " and mcContent uid():" + mcContent.getUid()); - - String currentFeedbackIncorrect=(String)mapFeedbackIncorrect.get(pairs.getKey()); - logger.debug("currentFeedbackIncorrect: " + currentFeedbackIncorrect); - if (currentFeedbackIncorrect == null) currentFeedbackIncorrect=""; - - String currentFeedbackCorrect=(String)mapFeedbackCorrect.get(pairs.getKey()); - logger.debug("currentFeedbackCorrect: " + currentFeedbackCorrect); - if (currentFeedbackCorrect == null) currentFeedbackCorrect=""; - - String currentWeight=(String) mapWeights.get(pairs.getKey().toString()); - logger.debug("currentWeight: " + currentWeight); - - McQueContent mcQueContent= new McQueContent(pairs.getValue().toString(), - new Integer(pairs.getKey().toString()), - new Integer(currentWeight), - false, - currentFeedbackIncorrect, - currentFeedbackCorrect, - mcContent, - new HashSet(), - new HashSet() - ); - mcService.createMcQue(mcQueContent); - logger.debug("persisted mcQueContent: " + mcQueContent); - - logger.debug("remove existing options for mcQueContent : " + mcQueContent.getUid()); - mcService.removeMcOptionsContentByQueId(mcQueContent.getUid()); - logger.debug("removed all mcOptionsContents for mcQueContentId :" + mcQueContent.getUid()); - - if (mcQueContent != null) - { - logger.debug("pre persistOptions for: " + mcQueContent); - logger.debug("sending :" + pairs.getKey().toString()); - AuthoringUtil.persistOptions(request, mapGeneralOptionsContent, mapGeneralSelectedOptionsContent, mcQueContent, pairs.getKey().toString()); - logger.debug("post persistOptions"); - } + logger.debug("questionIndex found:" + questionIndex); + return true; } } - } + return false; + } /** Index: lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/web/McAction.java =================================================================== diff -u -r32fc4979f5d351d85b0b1d751810fe1433ee0fcc -rf80f8ca251173376b790a2d05914a57cc1acb430 --- lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/web/McAction.java (.../McAction.java) (revision 32fc4979f5d351d85b0b1d751810fe1433ee0fcc) +++ lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/web/McAction.java (.../McAction.java) (revision f80f8ca251173376b790a2d05914a57cc1acb430) @@ -1398,12 +1398,21 @@ List existingQuestions = mcService.refreshQuestionContent(mcContentId); logger.debug("existingQuestions: " + existingQuestions); + Map mapGeneralOptionsContent=(Map)request.getSession().getAttribute(MAP_GENERAL_OPTIONS_CONTENT); + logger.debug("mapGeneralOptionsContent: " + mapGeneralOptionsContent); + + /* remove from mapQuestionsContent the questions with no options */ + mapQuestionsContent=AuthoringUtil.updateQuestionsMapForNoOptions(request, mapQuestionsContent, mapGeneralOptionsContent); + logger.debug("returned mapQuestionsContent: " + mapQuestionsContent); + request.getSession().setAttribute(MAP_QUESTIONS_CONTENT, mapQuestionsContent); + logger.debug("persisted MAP_QUESTIONS_CONTENT: " + mapQuestionsContent); + logger.debug("will cleanupRedundantQuestions:"); /* Removes only unused question entries from the db. It keeps the valid entries since they get updated. */ AuthoringUtil.cleanupRedundantQuestions(request, existingQuestions, mapQuestionsContent, mcContent); logger.debug("calling selectAndPersistQuestions: " + existingQuestions); - AuthoringUtil.selectAndPersistQuestions(request, existingQuestions, mapQuestionsContent, mapFeedbackIncorrect, mapFeedbackCorrect, mcContent); + AuthoringUtil.selectAndPersistQuestions(request, existingQuestions, mapQuestionsContent, mapFeedbackIncorrect, mapFeedbackCorrect, mapGeneralOptionsContent, mcContent); logger.debug("finished processing questions content..."); logger.debug("start processing options content..."); @@ -1414,7 +1423,6 @@ Map mapStartupGeneralOptionsQueId=(Map) request.getSession().getAttribute(MAP_STARTUP_GENERAL_OPTIONS_QUEID); logger.debug("mapStartupGeneralOptionsQueId: " + mapStartupGeneralOptionsQueId); - Map mapGeneralOptionsContent=(Map)request.getSession().getAttribute(MAP_GENERAL_OPTIONS_CONTENT); logger.debug("mapGeneralOptionsContent: " + mapGeneralOptionsContent); Map mapGeneralSelectedOptionsContent=(Map)request.getSession().getAttribute(MAP_GENERAL_SELECTED_OPTIONS_CONTENT); logger.debug("mapGeneralSelectedOptionsContent: " + mapGeneralSelectedOptionsContent); @@ -1438,13 +1446,9 @@ logger.debug("done removing redundant files"); - //logger.debug("will do addUploadedFilesMetaData"); - //McUtils.addUploadedFilesMetaData(request,mcContent); - //logger.debug("done addUploadedFilesMetaData"); - errors.clear(); - errors.add(Globals.ERROR_KEY,new ActionMessage("submit.successful")); - logger.debug("add submit.successful to ActionMessages"); + errors.add(Globals.ERROR_KEY,new ActionMessage("sbmt.successful")); + logger.debug("add sbmt.successful to ActionMessages"); saveErrors(request,errors); request.setAttribute(SUBMIT_SUCCESS, new Integer(1)); logger.debug("set SUBMIT_SUCCESS to 1"); Index: lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/web/McStarterAction.java =================================================================== diff -u -r3ec3740230023213f3f3621890918928a4acf3a4 -rf80f8ca251173376b790a2d05914a57cc1acb430 --- lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/web/McStarterAction.java (.../McStarterAction.java) (revision 3ec3740230023213f3f3621890918928a4acf3a4) +++ lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/web/McStarterAction.java (.../McStarterAction.java) (revision f80f8ca251173376b790a2d05914a57cc1acb430) @@ -144,6 +144,7 @@ } } mcAuthoringForm.resetUserAction(); + logger.debug("return to: " + LOAD_QUESTIONS); return (mapping.findForward(LOAD_QUESTIONS)); } @@ -612,14 +613,11 @@ request.getSession().setAttribute(LIST_UPLOADED_ONLINE_FILES,listUploadedOnlineFiles); request.getSession().setAttribute(LIST_UPLOADED_ONLINE_FILENAMES,listUploadedOnlineFileNames); - LinkedList listOfflineFilesMetaData= new LinkedList(); LinkedList listOnlineFilesMetaData= new LinkedList(); request.getSession().setAttribute(LIST_OFFLINEFILES_METADATA, listOfflineFilesMetaData); request.getSession().setAttribute(LIST_ONLINEFILES_METADATA, listOnlineFilesMetaData); - - Map mapQuestionsContent= new TreeMap(new McComparator()); Map mapOptionsContent= new TreeMap(new McComparator()); Map mapDefaultOptionsContent= new TreeMap(new McComparator());