Index: lams_tool_lamc/conf/hibernate/mappings/org/lamsfoundation/lams/tool/mc/McContent.hbm.xml =================================================================== diff -u -r82631c32c25cdbc2d547ee2cdc4a3178cb707f15 -r027758c2ee944683de01e4cd689fe3244d031920 --- lams_tool_lamc/conf/hibernate/mappings/org/lamsfoundation/lams/tool/mc/McContent.hbm.xml (.../McContent.hbm.xml) (revision 82631c32c25cdbc2d547ee2cdc4a3178cb707f15) +++ lams_tool_lamc/conf/hibernate/mappings/org/lamsfoundation/lams/tool/mc/McContent.hbm.xml (.../McContent.hbm.xml) (revision 027758c2ee944683de01e4cd689fe3244d031920) @@ -160,7 +160,16 @@ column="showMarks" length="1" /> + + + + + + + + - + @@ -199,8 +199,21 @@ + + + + + + + + + + + + + @@ -358,6 +371,19 @@ + + + + + + + + + + + + + Index: lams_tool_lamc/db/sql/create_lams_tool_mc.sql =================================================================== diff -u -r82631c32c25cdbc2d547ee2cdc4a3178cb707f15 -r027758c2ee944683de01e4cd689fe3244d031920 --- lams_tool_lamc/db/sql/create_lams_tool_mc.sql (.../create_lams_tool_mc.sql) (revision 82631c32c25cdbc2d547ee2cdc4a3178cb707f15) +++ lams_tool_lamc/db/sql/create_lams_tool_mc.sql (.../create_lams_tool_mc.sql) (revision 027758c2ee944683de01e4cd689fe3244d031920) @@ -18,6 +18,7 @@ , show_report TINYINT(1) NOT NULL DEFAULT 0 , reflectionSubject TEXT , showMarks TINYINT(1) NOT NULL DEFAULT 0 + , randomize TINYINT(1) NOT NULL DEFAULT 0 , UNIQUE UQ_tl_lamc11_content_1 (content_id) , PRIMARY KEY (uid) )TYPE=InnoDB; @@ -40,6 +41,7 @@ , correct_option TINYINT(1) NOT NULL DEFAULT 0 , mc_que_content_id BIGINT(20) NOT NULL , mc_que_option_text VARCHAR(250) + , displayOrder INT(5) , PRIMARY KEY (uid) , INDEX (mc_que_content_id) , CONSTRAINT FK_tl_lamc11_options_content_1 FOREIGN KEY (mc_que_content_id) @@ -110,11 +112,12 @@ REFERENCES tl_lamc11_content (uid) )TYPE=InnoDB; + INSERT INTO tl_lamc11_content(uid, content_id , title, instructions, creation_date , reflect, questions_sequenced , created_by , run_offline , define_later, offline_instructions, online_instructions, content_in_use, retries, show_report, pass_mark) VALUES (1, ${default_content_id} , 'MCQ', 'Instructions', NOW(), 0, 0, 1, 0, 0, '','', 0, 0, 0, 0); INSERT INTO tl_lamc11_que_content (uid,question, mark, display_order, mc_content_id) VALUES (1, 'A Sample question?', 1,1,1); -INSERT INTO tl_lamc11_options_content (uid, correct_option, mc_que_content_id, mc_que_option_text) VALUES (1, 0, 1,'Candidate Answer 1'); -INSERT INTO tl_lamc11_options_content (uid, correct_option, mc_que_content_id, mc_que_option_text) VALUES (2, 1, 1,'Candidate Answer 2'); +INSERT INTO tl_lamc11_options_content (uid, correct_option, displayOrder, mc_que_content_id, mc_que_option_text) VALUES (1, 0, 1, 1,'Candidate Answer 1'); +INSERT INTO tl_lamc11_options_content (uid, correct_option, displayOrder, mc_que_content_id, mc_que_option_text) VALUES (2, 1, 2, 1,'Candidate Answer 2'); Index: lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/McGeneralAuthoringDTO.java =================================================================== diff -u -r82631c32c25cdbc2d547ee2cdc4a3178cb707f15 -r027758c2ee944683de01e4cd689fe3244d031920 --- lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/McGeneralAuthoringDTO.java (.../McGeneralAuthoringDTO.java) (revision 82631c32c25cdbc2d547ee2cdc4a3178cb707f15) +++ lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/McGeneralAuthoringDTO.java (.../McGeneralAuthoringDTO.java) (revision 027758c2ee944683de01e4cd689fe3244d031920) @@ -57,6 +57,7 @@ protected String reflect; protected String synchInMonitor; protected String questionsSequenced; + protected String randomize; protected String editActivityEditMode; protected String reflectionSubject; protected String showMarks; @@ -638,4 +639,16 @@ this.showMarks = showMarks; } + /** + * @return Returns the randomize. + */ + public String getRandomize() { + return randomize; + } + /** + * @param randomize The randomize to set. + */ + public void setRandomize(String randomize) { + this.randomize = randomize; + } } Index: lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/McRandomizedListsDTO.java =================================================================== diff -u --- lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/McRandomizedListsDTO.java (revision 0) +++ lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/McRandomizedListsDTO.java (revision 027758c2ee944683de01e4cd689fe3244d031920) @@ -0,0 +1,77 @@ +/*************************************************************************** + * Copyright (C) 2005 LAMS Foundation (http://lamsfoundation.org) + * ============================================================= + * License Information: http://lamsfoundation.org/licensing/lams/2.0/ + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA + * + * http://www.gnu.org/licenses/gpl.txt + * ***********************************************************************/ +/* $$Id$$ */ +package org.lamsfoundation.lams.tool.mc; + +import java.util.List; + + + + +/** + *

DTO that holds randomized lists + *

+ * + * @author Ozgur Demirtas + */ +public class McRandomizedListsDTO implements Comparable +{ + List listCandidateAnswers; + List listCandidateAnswerUids; + + + public int compareTo(Object o) + { + McRandomizedListsDTO mcRandomizedListsDTO = (McRandomizedListsDTO) o; + + if (mcRandomizedListsDTO == null) + return 1; + else + return 0; + } + + + /** + * @return Returns the listCandidateAnswers. + */ + public List getListCandidateAnswers() { + return listCandidateAnswers; + } + /** + * @param listCandidateAnswers The listCandidateAnswers to set. + */ + public void setListCandidateAnswers(List listCandidateAnswers) { + this.listCandidateAnswers = listCandidateAnswers; + } + /** + * @return Returns the listCandidateAnswerUids. + */ + public List getListCandidateAnswerUids() { + return listCandidateAnswerUids; + } + /** + * @param listCandidateAnswerUids The listCandidateAnswerUids to set. + */ + public void setListCandidateAnswerUids(List listCandidateAnswerUids) { + this.listCandidateAnswerUids = listCandidateAnswerUids; + } +} Index: lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/McUtils.java =================================================================== diff -u -r82631c32c25cdbc2d547ee2cdc4a3178cb707f15 -r027758c2ee944683de01e4cd689fe3244d031920 --- lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/McUtils.java (.../McUtils.java) (revision 82631c32c25cdbc2d547ee2cdc4a3178cb707f15) +++ lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/McUtils.java (.../McUtils.java) (revision 027758c2ee944683de01e4cd689fe3244d031920) @@ -654,6 +654,12 @@ mcAuthoringForm.setQuestionsSequenced(questionsSequenced); mcGeneralAuthoringDTO.setQuestionsSequenced(questionsSequenced); + String randomize=request.getParameter("randomize"); + logger.debug("randomize: " + randomize); + mcAuthoringForm.setRandomize(randomize); + mcGeneralAuthoringDTO.setRandomize(randomize); + + String showMarks=request.getParameter("showMarks"); logger.debug("showMarks: " + questionsSequenced); mcAuthoringForm.setShowMarks(showMarks); Index: lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/dao/hibernate/McOptionsContentDAO.java =================================================================== diff -u -r08950e1090443c3423a3d1c587416a2fccd8bbdf -r027758c2ee944683de01e4cd689fe3244d031920 --- lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/dao/hibernate/McOptionsContentDAO.java (.../McOptionsContentDAO.java) (revision 08950e1090443c3423a3d1c587416a2fccd8bbdf) +++ lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/dao/hibernate/McOptionsContentDAO.java (.../McOptionsContentDAO.java) (revision 027758c2ee944683de01e4cd689fe3244d031920) @@ -43,7 +43,7 @@ static Logger logger = Logger.getLogger(McOptionsContentDAO.class.getName()); //private static final String FIND_MC_OPTIONS_CONTENT = "from " + McOptsContent.class.getName() + " as mco where mc_que_content_id=?"; - private static final String FIND_MC_OPTIONS_CONTENT = "from mcOptsContent in class McOptsContent where mcOptsContent.mcQueContentId=:mcQueContentUid order by mcOptsContent.uid"; + private static final String FIND_MC_OPTIONS_CONTENT = "from mcOptsContent in class McOptsContent where mcOptsContent.mcQueContentId=:mcQueContentUid order by mcOptsContent.displayOrder"; private static final String FIND_MC_OPTIONS_CONTENT_BY_UID = "from mcOptsContent in class McOptsContent where mcOptsContent.uid=:uid"; private static final String LOAD_OPTION_CONTENT_BY_OPTION_TEXT = "from mcOptsContent in class McOptsContent where mcOptsContent.mcQueOptionText=:option and mcOptsContent.mcQueContentId=:mcQueContentUid"; Index: lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/pojos/McContent.java =================================================================== diff -u -r82631c32c25cdbc2d547ee2cdc4a3178cb707f15 -r027758c2ee944683de01e4cd689fe3244d031920 --- lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/pojos/McContent.java (.../McContent.java) (revision 82631c32c25cdbc2d547ee2cdc4a3178cb707f15) +++ lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/pojos/McContent.java (.../McContent.java) (revision 027758c2ee944683de01e4cd689fe3244d031920) @@ -95,6 +95,8 @@ private boolean showReport; + private boolean randomize; + private boolean showMarks; /** nullable persistent field */ @@ -114,7 +116,7 @@ /** full constructor */ public McContent(Long mcContentId, String content, String title, String instructions, boolean defineLater, boolean runOffline, Date creationDate, Date updateDate, boolean questionsSequenced, long createdBy, boolean contentInUse, String offlineInstructions, String onlineInstructions, - Integer passMark, boolean showReport, boolean showMarks, boolean retries, boolean reflect, String reflectionSubject, Set mcQueContents, Set mcSessions, + Integer passMark, boolean showReport, boolean randomize, boolean showMarks, boolean retries, boolean reflect, String reflectionSubject, Set mcQueContents, Set mcSessions, Set mcAttachments) { logger.debug("copying properties"); @@ -136,6 +138,7 @@ this.reflect=reflect; this.passMark = passMark; this.showReport = showReport; + this.randomize = randomize; this.showMarks = showMarks; this.mcQueContents = mcQueContents; this.mcSessions = mcSessions; @@ -184,6 +187,7 @@ mc.getOnlineInstructions(), mc.getPassMark(), mc.isShowReport(), + mc.isRandomize(), mc.isShowMarks(), mc.isRetries(), mc.isReflect(), @@ -487,4 +491,16 @@ public void setShowMarks(boolean showMarks) { this.showMarks = showMarks; } + /** + * @return Returns the randomize. + */ + public boolean isRandomize() { + return randomize; + } + /** + * @param randomize The randomize to set. + */ + public void setRandomize(boolean randomize) { + this.randomize = randomize; + } } Index: lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/pojos/McOptsContent.java =================================================================== diff -u -r08950e1090443c3423a3d1c587416a2fccd8bbdf -r027758c2ee944683de01e4cd689fe3244d031920 --- lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/pojos/McOptsContent.java (.../McOptsContent.java) (revision 08950e1090443c3423a3d1c587416a2fccd8bbdf) +++ lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/pojos/McOptsContent.java (.../McOptsContent.java) (revision 027758c2ee944683de01e4cd689fe3244d031920) @@ -52,6 +52,8 @@ /** nullable persistent field */ private String mcQueOptionText; + + private Integer displayOrder; /** non persistent field */ private Long mcQueContentId; @@ -78,12 +80,20 @@ this.mcQueContent = mcQueContent; this.mcUsrAttempts=mcUsrAttempts; } + public McOptsContent(Integer displayOrder, boolean correctOption, String mcQueOptionText, org.lamsfoundation.lams.tool.mc.pojos.McQueContent mcQueContent, Set mcUsrAttempts) { + this.displayOrder = displayOrder; + this.correctOption = correctOption; + this.mcQueOptionText = mcQueOptionText; + this.mcQueContent = mcQueContent; + this.mcUsrAttempts=mcUsrAttempts; + } public static McOptsContent newInstance(McOptsContent mcOptsContent, McQueContent newMcQueContent) { - McOptsContent newMcOptsContent = new McOptsContent(mcOptsContent.isCorrectOption(), + McOptsContent newMcOptsContent = new McOptsContent(mcOptsContent.getDisplayOrder(), + mcOptsContent.isCorrectOption(), mcOptsContent.getMcQueOptionText(), newMcQueContent, new TreeSet()); @@ -186,4 +196,28 @@ else return (int) (mcQueOptionId.longValue() - optContent.mcQueOptionId.longValue()); } + /** + * @return Returns the logger. + */ + public static Logger getLogger() { + return logger; + } + /** + * @param logger The logger to set. + */ + public static void setLogger(Logger logger) { + McOptsContent.logger = logger; + } + /** + * @return Returns the displayOrder. + */ + public Integer getDisplayOrder() { + return displayOrder; + } + /** + * @param displayOrder The displayOrder to set. + */ + public void setDisplayOrder(Integer displayOrder) { + this.displayOrder = displayOrder; + } } Index: lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/service/McImportContentVersionFilter.java =================================================================== diff -u -r83e5282fb8f5f0a9fac22df1bd45d4e4f72909bd -r027758c2ee944683de01e4cd689fe3244d031920 --- lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/service/McImportContentVersionFilter.java (.../McImportContentVersionFilter.java) (revision 83e5282fb8f5f0a9fac22df1bd45d4e4f72909bd) +++ lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/service/McImportContentVersionFilter.java (.../McImportContentVersionFilter.java) (revision 027758c2ee944683de01e4cd689fe3244d031920) @@ -2,6 +2,7 @@ import org.lamsfoundation.lams.learningdesign.service.ToolContentVersionFilter; import org.lamsfoundation.lams.tool.mc.pojos.McContent; +import org.lamsfoundation.lams.tool.mc.pojos.McOptsContent; import org.lamsfoundation.lams.tool.mc.pojos.McQueContent; import org.lamsfoundation.lams.tool.mc.pojos.McUsrAttempt; @@ -25,6 +26,8 @@ public void up20061015To20061113(){ // Change name to suit the version you give the tool. - this.addField(McContent.class, "showMarks",new Boolean(false)); + this.addField(McContent.class, "showMarks",new Boolean(false)); + this.addField(McContent.class, "randomize",new Boolean(false)); + this.addField(McOptsContent.class, "displayOrder, ",new Boolean(false)); } } Index: lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/service/McServicePOJO.java =================================================================== diff -u -r82631c32c25cdbc2d547ee2cdc4a3178cb707f15 -r027758c2ee944683de01e4cd689fe3244d031920 --- lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/service/McServicePOJO.java (.../McServicePOJO.java) (revision 82631c32c25cdbc2d547ee2cdc4a3178cb707f15) +++ lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/service/McServicePOJO.java (.../McServicePOJO.java) (revision 027758c2ee944683de01e4cd689fe3244d031920) @@ -2523,23 +2523,24 @@ { Date now = new Date(); McContent toolContentObj = new McContent(); - toolContentObj.setContentInUse(Boolean.FALSE.booleanValue()); + toolContentObj.setContentInUse(false); toolContentObj.setCreatedBy(user.getUserID().longValue()); toolContentObj.setCreationDate(now); - toolContentObj.setDefineLater(Boolean.FALSE.booleanValue()); + toolContentObj.setDefineLater(false); toolContentObj.setInstructions(WebUtil.convertNewlines((String)importValues.get(ToolContentImport102Manager.CONTENT_BODY))); toolContentObj.setOfflineInstructions(null); toolContentObj.setOnlineInstructions(null); - toolContentObj.setReflect(Boolean.FALSE); + toolContentObj.setReflect(false); toolContentObj.setReflectionSubject(null); - toolContentObj.setRunOffline(Boolean.FALSE.booleanValue()); + toolContentObj.setRunOffline(false); toolContentObj.setTitle((String)importValues.get(ToolContentImport102Manager.CONTENT_TITLE)); toolContentObj.setContent(null); toolContentObj.setUpdateDate(now); toolContentObj.setMcContentId(toolContentId); toolContentObj.setQuestionsSequenced(false); toolContentObj.setShowMarks(false); + toolContentObj.setRandomize(false); // I can't find a use for setShowReport anywhere toolContentObj.setShowReport(false); @@ -2589,7 +2590,7 @@ question.setQuestion(WebUtil.convertNewlines((String)questionMap.get(CONTENT_Q_QUESTION))); // In 1.0.2 all questions are implicitly assumed to be 1 and be of equal weight - question.setMark( 1 ); + question.setMark(new Integer(1)); String correctAnswer = (String)questionMap.get(CONTENT_Q_ANSWER); @@ -2629,7 +2630,7 @@ +" as the tool content does not exist."); } - toolContentObj.setReflect(Boolean.TRUE); + toolContentObj.setReflect(true); toolContentObj.setReflectionSubject(description); } Index: lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/web/AuthoringUtil.java =================================================================== diff -u -r82631c32c25cdbc2d547ee2cdc4a3178cb707f15 -r027758c2ee944683de01e4cd689fe3244d031920 --- lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/web/AuthoringUtil.java (.../AuthoringUtil.java) (revision 82631c32c25cdbc2d547ee2cdc4a3178cb707f15) +++ lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/web/AuthoringUtil.java (.../AuthoringUtil.java) (revision 027758c2ee944683de01e4cd689fe3244d031920) @@ -66,6 +66,7 @@ protected static void setRadioboxes(McContent mcContent, McAuthoringForm mcAuthoringForm) { mcAuthoringForm.setQuestionsSequenced(mcContent.isQuestionsSequenced()?"1":"0"); + mcAuthoringForm.setRandomize(mcContent.isRandomize ()?"1":"0"); mcAuthoringForm.setShowMarks(mcContent.isShowMarks()?"1":"0"); mcAuthoringForm.setRetries(mcContent.isRetries()?"1":"0"); mcAuthoringForm.setSln(mcContent.isShowReport()?"1":"0"); @@ -1380,6 +1381,9 @@ String questionsSequenced=request.getParameter("questionsSequenced"); logger.debug("questionsSequenced: " + questionsSequenced); + + String randomize=request.getParameter("randomize"); + logger.debug("randomize: " + randomize); String showMarks=request.getParameter("showMarks"); logger.debug("showMarks: " + showMarks); @@ -1404,21 +1408,25 @@ boolean setCommonContent=true; if ((sln == null) || (questionsSequenced == null) || - (retries == null) || (reflect == null) || (showMarks == null)) + (retries == null) || (reflect == null) || (showMarks == null) || (randomize == null)) { setCommonContent=false; } logger.debug("setCommonContent: " + setCommonContent); boolean questionsSequencedBoolean=false; + boolean randomizeBoolean=false; boolean showMarksBoolean=false; boolean slnBoolean=false; boolean retriesBoolean=false; boolean reflectBoolean=false; if ((questionsSequenced != null) && (questionsSequenced.equalsIgnoreCase("1"))) - questionsSequencedBoolean=true; - + questionsSequencedBoolean=true; + + if ((randomize != null) && (randomize.equalsIgnoreCase("1"))) + randomizeBoolean=true; + if ((showMarks != null) && (showMarks.equalsIgnoreCase("1"))) showMarksBoolean=true; @@ -1499,6 +1507,7 @@ mcContent.setOnlineInstructions(richTextOnlineInstructions); mcContent.setOfflineInstructions(richTextOfflineInstructions); mcContent.setQuestionsSequenced(questionsSequencedBoolean); + mcContent.setRandomize(randomizeBoolean); mcContent.setShowMarks(showMarksBoolean); mcContent.setRetries(retriesBoolean); mcContent.setShowReport(slnBoolean); @@ -2009,6 +2018,7 @@ logger.debug("doing persistCandidates:" + caList); logger.debug("mcQueContent:" + mcQueContent); + int displayOrder = 0; Iterator itCaList= caList.iterator(); while (itCaList.hasNext()) { @@ -2024,7 +2034,12 @@ else correctOption= false; - McOptsContent mcOptsContent = new McOptsContent(correctOption, candidateAnswer, mcQueContent, new TreeSet()); + + ++ displayOrder; + logger.debug("displayOrder:" + displayOrder); + + //McOptsContent mcOptsContent = new McOptsContent(correctOption, candidateAnswer, mcQueContent, new TreeSet()); + McOptsContent mcOptsContent = new McOptsContent(new Integer(displayOrder), correctOption, candidateAnswer, mcQueContent, new TreeSet()); logger.debug("mcOptsContent: " + mcOptsContent); mcService.saveMcOptionsContent(mcOptsContent); Index: lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/web/LearningUtil.java =================================================================== diff -u -re4b2a3cbdfdd26b99ead9b77705faa5a333d326e -r027758c2ee944683de01e4cd689fe3244d031920 --- lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/web/LearningUtil.java (.../LearningUtil.java) (revision e4b2a3cbdfdd26b99ead9b77705faa5a333d326e) +++ lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/web/LearningUtil.java (.../LearningUtil.java) (revision 027758c2ee944683de01e4cd689fe3244d031920) @@ -27,6 +27,7 @@ import java.util.LinkedList; import java.util.List; import java.util.Map; +import java.util.Random; import java.util.TreeMap; import java.util.TreeSet; @@ -37,6 +38,7 @@ import org.lamsfoundation.lams.tool.mc.McComparator; import org.lamsfoundation.lams.tool.mc.McGeneralLearnerFlowDTO; import org.lamsfoundation.lams.tool.mc.McLearnerAnswersDTO; +import org.lamsfoundation.lams.tool.mc.McRandomizedListsDTO; import org.lamsfoundation.lams.tool.mc.McStringComparator; import org.lamsfoundation.lams.tool.mc.McUtils; import org.lamsfoundation.lams.tool.mc.pojos.McContent; @@ -733,6 +735,83 @@ } + public static McRandomizedListsDTO randomizeList(List listCandidateAnswers, List listCandidateAnswerUids) + { + logger.debug("starting randomizeList: " + listCandidateAnswers); + logger.debug("using listCandidateAnswerUids: " + listCandidateAnswerUids); + + McRandomizedListsDTO mcRandomizedListsDTO= new McRandomizedListsDTO(); + + int caCount=listCandidateAnswers.size(); + logger.debug("caCount: " + caCount); + + Random generator = new Random(); + + boolean listNotComplete=true; + int randomInt=0; + + List randomList= new LinkedList(); + List randomUidList= new LinkedList(); + while (listNotComplete) + { + randomInt = generator.nextInt(caCount); + logger.debug("randomInt: " + randomInt); + + String ca=(String)listCandidateAnswers.get(randomInt); + logger.debug("ca: " + ca); + + String caUid=(String)listCandidateAnswerUids.get(randomInt); + + + if (!isEntryStored(ca, randomList)) + { + logger.debug("adding ca, since it is a new candidate, ca: " + ca); + randomList.add(ca); + randomUidList.add(caUid); + + logger.debug("randomList size: " + randomList.size()); + if (randomList.size() == listCandidateAnswers.size()) + { + logger.debug("the list is populated completely, randomList: " + randomList); + listNotComplete =false; + } + } + } + + listCandidateAnswerUids=randomUidList; + logger.debug("modified listCandidateAnswerUids as: " + listCandidateAnswerUids); + + mcRandomizedListsDTO.setListCandidateAnswers(randomList); + mcRandomizedListsDTO.setListCandidateAnswerUids(listCandidateAnswerUids); + + logger.debug("returning mcRandomizedListsDTO: " + mcRandomizedListsDTO); + return mcRandomizedListsDTO; + } + + + public static boolean isEntryStored(String ca, List randomList) + { + logger.debug("isEntryStored, randomList: " + randomList); + logger.debug("isEntryStored, ca: " + ca); + + Iterator randomListIterator=randomList.iterator(); + + while (randomListIterator.hasNext()) + { + String caStored=(String)randomListIterator.next(); + logger.debug("caStored: " + caStored); + + if (caStored.equals(ca)) + { + logger.debug("this ca already is stored: " + ca); + return true; + } + } + + return false; + } + + /** * List buildQuestionAndCandidateAnswersDTO(HttpServletRequest request, McContent mcContent, IMcService mcService) * @@ -741,15 +820,19 @@ * @param mcService * @return */ - public static List buildQuestionAndCandidateAnswersDTO(HttpServletRequest request, McContent mcContent, IMcService mcService) + public static List buildQuestionAndCandidateAnswersDTO(HttpServletRequest request, McContent mcContent, boolean randomize, + IMcService mcService) { - logger.debug("starting buildQuestionAndCandidateAnswersDTO"); + logger.debug("starting buildQuestionAndCandidateAnswersDTO, randomize: " + randomize); + List questionAndCandidateAnswersList= new LinkedList(); logger.debug("mcContent uid : " + mcContent.getUid()); List listQuestionEntries=mcService.getAllQuestionEntries(mcContent.getUid()); logger.debug("listQuestionEntries : " + listQuestionEntries); + + Iterator listQuestionEntriesIterator=listQuestionEntries.iterator(); while (listQuestionEntriesIterator.hasNext()) { @@ -760,37 +843,40 @@ logger.debug("mcQueContent uid: " + mcQueContent.getUid()); List listCandidateAnswers=mcService.findMcOptionNamesByQueId(mcQueContent.getUid()); + logger.debug("pre randomize check, listCandidateAnswers: " + listCandidateAnswers); + + List listCandidateAnswerUids=mcService.findMcOptionUidsByQueId(mcQueContent.getUid()); + logger.debug("listCandidateAnswerUids: " + listCandidateAnswerUids); + + + if (randomize) + { + logger.debug("since randomize is on randomizing the list"); + //listCandidateAnswers=randomizeList(listCandidateAnswers, listCandidateAnswerUids); + McRandomizedListsDTO mcRandomizedListsDTO=randomizeList(listCandidateAnswers, listCandidateAnswerUids); + logger.debug("mcRandomizedListsDTO: " + mcRandomizedListsDTO); + + listCandidateAnswers=mcRandomizedListsDTO.getListCandidateAnswers(); + listCandidateAnswerUids=mcRandomizedListsDTO.getListCandidateAnswerUids(); + } + + + logger.debug("post randomize check, listCandidateAnswers: " + listCandidateAnswers); + logger.debug("post randomize check, listCandidateAnswerUids: " + listCandidateAnswerUids); + + logger.debug("listCandidateAnswers: " + listCandidateAnswers); Map mapCandidateAnswers=convertToStringMap(listCandidateAnswers); logger.debug("mapCandidateAnswers: " + mapCandidateAnswers); - List listCandidateAnswerUids=mcService.findMcOptionUidsByQueId(mcQueContent.getUid()); - logger.debug("listCandidateAnswerUids: " + listCandidateAnswerUids); Map mapCandidateAnswerUids=convertToStringMap(listCandidateAnswerUids); logger.debug("mapCandidateAnswerUids: " + mapCandidateAnswerUids); String question=mcQueContent.getQuestion(); logger.debug("question: " + question); - /* - boolean isTextMarkup=LearningUtil.isTextMarkup(question); - logger.debug("isTextMarkup: " + isTextMarkup); - - String newQuestionText=question; - if (!isTextMarkup) - { - newQuestionText= LearningUtil.getWrappedText(question, false); - logger.debug("wrapped newQuestionText: " + newQuestionText); - } - logger.debug("post warp newQuestionText: " + newQuestionText); - - - newQuestionText=McUtils.replaceNewLines(newQuestionText); - logger.debug("newQuestionText after procesing new lines: " + newQuestionText); - */ - mcLearnerAnswersDTO.setQuestion(question); mcLearnerAnswersDTO.setDisplayOrder(mcQueContent.getDisplayOrder().toString()); mcLearnerAnswersDTO.setQuestionUid(mcQueContent.getUid().toString()); Index: lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/web/McAuthoringForm.java =================================================================== diff -u -r82631c32c25cdbc2d547ee2cdc4a3178cb707f15 -r027758c2ee944683de01e4cd689fe3244d031920 --- lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/web/McAuthoringForm.java (.../McAuthoringForm.java) (revision 82631c32c25cdbc2d547ee2cdc4a3178cb707f15) +++ lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/web/McAuthoringForm.java (.../McAuthoringForm.java) (revision 027758c2ee944683de01e4cd689fe3244d031920) @@ -47,6 +47,7 @@ protected String editOptionsMode; protected String showMarks; + protected String randomize; protected String fileItem; protected String uuid; @@ -200,6 +201,7 @@ this.reportTitle=null; this.monitoringReportTitle=null; this.questionsSequenced=null; + this.randomize =null; this.showFeedback=null; this.retries=null; this.sln=null; @@ -1014,4 +1016,16 @@ public void setShowMarks(String showMarks) { this.showMarks = showMarks; } + /** + * @return Returns the randomize. + */ + public String getRandomize() { + return randomize; + } + /** + * @param randomize The randomize to set. + */ + public void setRandomize(String randomize) { + this.randomize = randomize; + } } Index: lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/web/McLearningAction.java =================================================================== diff -u -r82631c32c25cdbc2d547ee2cdc4a3178cb707f15 -r027758c2ee944683de01e4cd689fe3244d031920 --- lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/web/McLearningAction.java (.../McLearningAction.java) (revision 82631c32c25cdbc2d547ee2cdc4a3178cb707f15) +++ lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/web/McLearningAction.java (.../McLearningAction.java) (revision 027758c2ee944683de01e4cd689fe3244d031920) @@ -1074,7 +1074,10 @@ McContent mcContent=mcService.retrieveMc(new Long(toolContentId)); logger.debug("mcContent: " + mcContent); - List listQuestionAndCandidateAnswersDTO=LearningUtil.buildQuestionAndCandidateAnswersDTO(request, mcContent, mcService); + boolean randomize=mcContent.isRandomize(); + logger.debug("randomize: " + randomize); + + List listQuestionAndCandidateAnswersDTO=LearningUtil.buildQuestionAndCandidateAnswersDTO(request, mcContent, randomize, mcService); logger.debug("listQuestionAndCandidateAnswersDTO: " + listQuestionAndCandidateAnswersDTO); request.setAttribute(LIST_QUESTION_CANDIDATEANSWERS_DTO, listQuestionAndCandidateAnswersDTO); logger.debug("LIST_QUESTION_CANDIDATEANSWERS_DTO: " + request.getAttribute(LIST_QUESTION_CANDIDATEANSWERS_DTO)); @@ -1150,7 +1153,11 @@ McContent mcContent=mcService.retrieveMc(new Long(toolContentId)); logger.debug("mcContent: " + mcContent); - List listQuestionAndCandidateAnswersDTO=LearningUtil.buildQuestionAndCandidateAnswersDTO(request, mcContent, mcService); + boolean randomize=mcContent.isRandomize(); + logger.debug("randomize: " + randomize); + + + List listQuestionAndCandidateAnswersDTO=LearningUtil.buildQuestionAndCandidateAnswersDTO(request, mcContent, randomize, mcService); logger.debug("listQuestionAndCandidateAnswersDTO: " + listQuestionAndCandidateAnswersDTO); request.setAttribute(LIST_QUESTION_CANDIDATEANSWERS_DTO, listQuestionAndCandidateAnswersDTO); logger.debug("LIST_QUESTION_CANDIDATEANSWERS_DTO: " + request.getAttribute(LIST_QUESTION_CANDIDATEANSWERS_DTO)); @@ -1792,8 +1799,11 @@ McContent mcContent=mcService.retrieveMc(new Long(toolContentId)); logger.debug("mcContent: " + mcContent); + boolean randomize=mcContent.isRandomize(); + logger.debug("randomize: " + randomize); + - List listQuestionAndCandidateAnswersDTO=LearningUtil.buildQuestionAndCandidateAnswersDTO(request, mcContent, mcService); + List listQuestionAndCandidateAnswersDTO=LearningUtil.buildQuestionAndCandidateAnswersDTO(request, mcContent, randomize,mcService); logger.debug("listQuestionAndCandidateAnswersDTO: " + listQuestionAndCandidateAnswersDTO); request.setAttribute(LIST_QUESTION_CANDIDATEANSWERS_DTO, listQuestionAndCandidateAnswersDTO); logger.debug("LIST_QUESTION_CANDIDATEANSWERS_DTO: " + request.getAttribute(LIST_QUESTION_CANDIDATEANSWERS_DTO)); Index: lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/web/McLearningStarterAction.java =================================================================== diff -u -radb09a70c5f6e06556e11745cb8266861c03c07b -r027758c2ee944683de01e4cd689fe3244d031920 --- lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/web/McLearningStarterAction.java (.../McLearningStarterAction.java) (revision adb09a70c5f6e06556e11745cb8266861c03c07b) +++ lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/web/McLearningStarterAction.java (.../McLearningStarterAction.java) (revision 027758c2ee944683de01e4cd689fe3244d031920) @@ -486,7 +486,11 @@ logger.debug("dettingcommon content: "); Map mapQuestionsContent= new TreeMap(new McComparator()); - List listQuestionAndCandidateAnswersDTO=LearningUtil.buildQuestionAndCandidateAnswersDTO(request, mcContent, mcService); + boolean randomize=mcContent.isRandomize(); + logger.debug("randomize: " + randomize); + + List listQuestionAndCandidateAnswersDTO=LearningUtil.buildQuestionAndCandidateAnswersDTO(request, mcContent, randomize, mcService); + logger.debug("listQuestionAndCandidateAnswersDTO: " + listQuestionAndCandidateAnswersDTO); request.setAttribute(LIST_QUESTION_CANDIDATEANSWERS_DTO, listQuestionAndCandidateAnswersDTO); logger.debug("LIST_QUESTION_CANDIDATEANSWERS_DTO: " + request.getAttribute(LIST_QUESTION_CANDIDATEANSWERS_DTO)); Index: lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/web/McStarterAction.java =================================================================== diff -u -reaed8e160dd64ba3f48bcdf0bb87dadf23eea2f8 -r027758c2ee944683de01e4cd689fe3244d031920 --- lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/web/McStarterAction.java (.../McStarterAction.java) (revision eaed8e160dd64ba3f48bcdf0bb87dadf23eea2f8) +++ lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/web/McStarterAction.java (.../McStarterAction.java) (revision 027758c2ee944683de01e4cd689fe3244d031920) @@ -446,6 +446,7 @@ mcAuthoringForm.setSln(mcContent.isShowReport()?"1":"0"); mcAuthoringForm.setQuestionsSequenced(mcContent.isQuestionsSequenced()?"1":"0"); + mcAuthoringForm.setRandomize(mcContent.isRandomize()?"1":"0"); mcAuthoringForm.setShowMarks(mcContent.isShowMarks()?"1":"0"); mcAuthoringForm.setRetries(mcContent.isRetries()?"1":"0"); @@ -454,6 +455,7 @@ mcGeneralAuthoringDTO.setSln(mcContent.isShowReport()?"1":"0"); mcGeneralAuthoringDTO.setQuestionsSequenced(mcContent.isQuestionsSequenced()?"1":"0"); + mcGeneralAuthoringDTO.setRandomize(mcContent.isRandomize()?"1":"0"); mcGeneralAuthoringDTO.setRetries(mcContent.isRetries()?"1":"0"); mcGeneralAuthoringDTO.setReflect(mcContent.isReflect()?"1":"0"); mcGeneralAuthoringDTO.setReflectionSubject(mcContent.getReflectionSubject()); Index: lams_tool_lamc/web/authoring/AdvancedContent.jsp =================================================================== diff -u -r82631c32c25cdbc2d547ee2cdc4a3178cb707f15 -r027758c2ee944683de01e4cd689fe3244d031920 --- lams_tool_lamc/web/authoring/AdvancedContent.jsp (.../AdvancedContent.jsp) (revision 82631c32c25cdbc2d547ee2cdc4a3178cb707f15) +++ lams_tool_lamc/web/authoring/AdvancedContent.jsp (.../AdvancedContent.jsp) (revision 027758c2ee944683de01e4cd689fe3244d031920) @@ -40,7 +40,18 @@

+

+ + + +

+ + +

Index: lams_tool_lamc/web/authoring/BasicContent.jsp =================================================================== diff -u -r82631c32c25cdbc2d547ee2cdc4a3178cb707f15 -r027758c2ee944683de01e4cd689fe3244d031920 --- lams_tool_lamc/web/authoring/BasicContent.jsp (.../BasicContent.jsp) (revision 82631c32c25cdbc2d547ee2cdc4a3178cb707f15) +++ lams_tool_lamc/web/authoring/BasicContent.jsp (.../BasicContent.jsp) (revision 027758c2ee944683de01e4cd689fe3244d031920) @@ -105,7 +105,7 @@ ');" + href="javascript:showMessage('');" class="button-add-item"> Index: lams_tool_lamc/web/authoring/InstructionsContent.jsp =================================================================== diff -u -r82631c32c25cdbc2d547ee2cdc4a3178cb707f15 -r027758c2ee944683de01e4cd689fe3244d031920 --- lams_tool_lamc/web/authoring/InstructionsContent.jsp (.../InstructionsContent.jsp) (revision 82631c32c25cdbc2d547ee2cdc4a3178cb707f15) +++ lams_tool_lamc/web/authoring/InstructionsContent.jsp (.../InstructionsContent.jsp) (revision 027758c2ee944683de01e4cd689fe3244d031920) @@ -57,7 +57,7 @@   @@ -125,7 +125,7 @@   Index: lams_tool_lamc/web/authoring/itemlist.jsp =================================================================== diff -u -r82631c32c25cdbc2d547ee2cdc4a3178cb707f15 -r027758c2ee944683de01e4cd689fe3244d031920 --- lams_tool_lamc/web/authoring/itemlist.jsp (.../itemlist.jsp) (revision 82631c32c25cdbc2d547ee2cdc4a3178cb707f15) +++ lams_tool_lamc/web/authoring/itemlist.jsp (.../itemlist.jsp) (revision 027758c2ee944683de01e4cd689fe3244d031920) @@ -106,7 +106,7 @@

images/edit.gif" border="0" title="" - onclick="javascript:showMessage('');"> + onclick="javascript:showMessage('');">