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('');">
|
|