Index: lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/model/AssessmentOptionAnswer.java =================================================================== diff -u -rb6ddefd42c5660f90bd1da67f25e44d65ee21e30 -r6e5d1ff4891084bef035cb865c1a395e3eb49ab0 --- lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/model/AssessmentOptionAnswer.java (.../AssessmentOptionAnswer.java) (revision b6ddefd42c5660f90bd1da67f25e44d65ee21e30) +++ lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/model/AssessmentOptionAnswer.java (.../AssessmentOptionAnswer.java) (revision 6e5d1ff4891084bef035cb865c1a395e3eb49ab0) @@ -37,7 +37,7 @@ private Long uid; - private Long questionOptionUid; + private Long optionUid; private int answerInt; @@ -66,18 +66,18 @@ * * @hibernate.property column="question_option_uid" */ - public Long getQuestionOptionUid() { - return questionOptionUid; + public Long getOptionUid() { + return optionUid; } /** * Sets question Option's Uid. * - * @param questionOptionUid + * @param optionUid * question Option's Uid */ - public void setQuestionOptionUid(Long questionOptionUid) { - this.questionOptionUid = questionOptionUid; + public void setOptionUid(Long optionUid) { + this.optionUid = optionUid; } /** Index: lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/model/AssessmentQuestion.java =================================================================== diff -u -r2b2840334b7e75371d9fcb6c094697af11d510c3 -r6e5d1ff4891084bef035cb865c1a395e3eb49ab0 --- lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/model/AssessmentQuestion.java (.../AssessmentQuestion.java) (revision 2b2840334b7e75371d9fcb6c094697af11d510c3) +++ lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/model/AssessmentQuestion.java (.../AssessmentQuestion.java) (revision 6e5d1ff4891084bef035cb865c1a395e3eb49ab0) @@ -89,7 +89,7 @@ // *********************************************** // Non persistant fields: - private Set questionOptions; + private Set options; private Set units; @@ -118,7 +118,7 @@ private List questionResults; public AssessmentQuestion() { - questionOptions = new TreeSet(new SequencableComparator()); + options = new TreeSet(new SequencableComparator()); units = new TreeSet(new SequencableComparator()); } @@ -128,16 +128,16 @@ obj = (AssessmentQuestion) super.clone(); ((AssessmentQuestion) obj).setUid(null); - // clone questionOptions - if (questionOptions != null) { - Iterator iter = questionOptions.iterator(); + // clone options + if (options != null) { + Iterator iter = options.iterator(); Set set = new TreeSet(new SequencableComparator()); while (iter.hasNext()) { AssessmentQuestionOption answerOption = (AssessmentQuestionOption) iter.next(); AssessmentQuestionOption newAnswerOption = (AssessmentQuestionOption) answerOption.clone(); set.add(newAnswerOption); } - obj.questionOptions = set; + obj.options = set; } // clone units @@ -448,17 +448,17 @@ * @hibernate.collection-key column="question_uid" * @hibernate.collection-one-to-many class="org.lamsfoundation.lams.tool.assessment.model.AssessmentQuestionOption" * - * @return a set of questionOptions to this AssessmentQuestion. + * @return a set of options to this AssessmentQuestion. */ - public Set getQuestionOptions() { - return questionOptions; + public Set getOptions() { + return options; } /** - * @param questionOptions questionOptions to set. + * @param options options to set. */ - public void setQuestionOptions(Set questionOptions) { - this.questionOptions = questionOptions; + public void setOptions(Set options) { + this.options = options; } /** @@ -474,7 +474,7 @@ } /** - * @param questionOptions units to set. + * @param options units to set. */ public void setUnits(Set units) { this.units = units; Index: lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/service/AssessmentServiceImpl.java =================================================================== diff -u -r405cf90d2646e8f7dc1aa032b28c820279e50930 -r6e5d1ff4891084bef035cb865c1a395e3eb49ab0 --- lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/service/AssessmentServiceImpl.java (.../AssessmentServiceImpl.java) (revision 405cf90d2646e8f7dc1aa032b28c820279e50930) +++ lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/service/AssessmentServiceImpl.java (.../AssessmentServiceImpl.java) (revision 6e5d1ff4891084bef035cb865c1a395e3eb49ab0) @@ -158,7 +158,7 @@ @Override public boolean isUserGroupLeader(AssessmentUser user, Long toolSessionId) { - AssessmentSession session = this.getAssessmentSessionBySessionId(toolSessionId); + AssessmentSession session = getAssessmentSessionBySessionId(toolSessionId); AssessmentUser groupLeader = session.getGroupLeader(); boolean isUserLeader = (groupLeader != null) && user.getUid().equals(groupLeader.getUid()); @@ -171,15 +171,15 @@ return null; } - AssessmentSession assessmentSession = this.getAssessmentSessionBySessionId(toolSessionId); + AssessmentSession assessmentSession = getAssessmentSessionBySessionId(toolSessionId); AssessmentUser leader = assessmentSession.getGroupLeader(); // check leader select tool for a leader only in case QA tool doesn't know it. As otherwise it will screw // up previous scratches done if (leader == null) { Long leaderUserId = toolService.getLeaderUserId(toolSessionId, user.getUserId().intValue()); if (leaderUserId != null) { - leader = this.getUserByIDAndSession(leaderUserId, toolSessionId); + leader = getUserByIDAndSession(leaderUserId, toolSessionId); // create new user in a DB if (leader == null) { @@ -188,7 +188,7 @@ String userName = leaderDto.getLogin(); String fullName = leaderDto.getFirstName() + " " + leaderDto.getLastName(); leader = new AssessmentUser(leaderDto.getUserDTO(), assessmentSession); - this.createUser(leader); + createUser(leader); } // set group leader @@ -230,7 +230,7 @@ Set userOptionAnswers = userQuestionResult.getOptionAnswers(); for (AssessmentOptionAnswer leaderOptionAnswer: leaderOptionAnswers) { AssessmentOptionAnswer userOptionAnswer = new AssessmentOptionAnswer(); - userOptionAnswer.setQuestionOptionUid(leaderOptionAnswer.getQuestionOptionUid()); + userOptionAnswer.setOptionUid(leaderOptionAnswer.getOptionUid()); userOptionAnswers.add(userOptionAnswer); } } @@ -259,7 +259,7 @@ Set userOptionAnswers = userQuestionResult.getOptionAnswers(); for (AssessmentOptionAnswer leaderOptionAnswer : leaderOptionAnswers) { for (AssessmentOptionAnswer userOptionAnswer : userOptionAnswers) { - if (userOptionAnswer.getQuestionOptionUid().equals(leaderOptionAnswer.getQuestionOptionUid())) { + if (userOptionAnswer.getOptionUid().equals(leaderOptionAnswer.getOptionUid())) { userOptionAnswer.setAnswerBoolean(leaderOptionAnswer.getAnswerBoolean()); userOptionAnswer.setAnswerInt(leaderOptionAnswer.getAnswerInt()); @@ -379,7 +379,7 @@ @Override public void setAttemptStarted(Assessment assessment, AssessmentUser assessmentUser, Long toolSessionId) { - AssessmentResult lastResult = this.getLastAssessmentResult(assessment.getUid(), assessmentUser.getUserId()); + AssessmentResult lastResult = getLastAssessmentResult(assessment.getUid(), assessmentUser.getUserId()); //don't instantiate new attempt if the previous one wasn't finished and thus continue working with it if ((lastResult != null) && (lastResult.getFinishDate() == null)) { return; @@ -397,73 +397,107 @@ public void storeUserAnswers(Long assessmentUid, Long userId, ArrayList> pagedQuestions, boolean isAutosave) { - SortedSet questionResultList = new TreeSet( - new AssessmentQuestionResultComparator()); int maximumGrade = 0; float grade = 0; + + AssessmentResult result = assessmentResultDao.getLastAssessmentResult(assessmentUid, userId); + //store all answers (in all pages) for (LinkedHashSet questionsForOnePage : pagedQuestions) { for (AssessmentQuestion question : questionsForOnePage) { - int numberWrongAnswers = assessmentQuestionResultDao.getNumberWrongAnswersDoneBefore(assessmentUid, - userId, question.getUid()); - AssessmentQuestionResult processedAnswer = this.storeUserAnswer(question, numberWrongAnswers); - questionResultList.add(processedAnswer); + + float userQeustionGrade = storeUserAnswer(result, question, isAutosave); + grade += userQeustionGrade; maximumGrade += question.getGrade(); - grade += processedAnswer.getMark(); } } - AssessmentResult result = assessmentResultDao.getLastAssessmentResult(assessmentUid, userId); - result.setQuestionResults(questionResultList); //store grades and finished date only on user hitting submit all answers button if (!isAutosave) { result.setMaximumGrade(maximumGrade); result.setGrade(grade); result.setFinishDate(new Timestamp(new Date().getTime())); + assessmentResultDao.saveObject(result); } - assessmentResultDao.saveObject(result); } - private AssessmentQuestionResult storeUserAnswer(AssessmentQuestion question, int numberWrongAnswers) { - AssessmentQuestionResult questionResult = new AssessmentQuestionResult(); + /** + * Stores given AssessmentQuestion's answer. + * + * @param isAutosave in case of autosave there is no need to calculate marks + * @return grade that user scored by answering that question + */ + private float storeUserAnswer(AssessmentResult assessmentAnswer, AssessmentQuestion question, boolean isAutosave) { + + AssessmentQuestionResult questionAnswer = null; + + //create new questionAnswer if this is a new assessmentAnswer (i.e. doesn't have any answers yet) + if (assessmentAnswer.getQuestionResults().isEmpty()) { + questionAnswer = new AssessmentQuestionResult(); + questionAnswer.setAssessmentQuestion(question); + questionAnswer.setAssessmentResult(assessmentAnswer); + + Set optionAnswers = questionAnswer.getOptionAnswers(); + for (AssessmentQuestionOption option : question.getOptions()) { + AssessmentOptionAnswer optionAnswer = new AssessmentOptionAnswer(); + optionAnswer.setOptionUid(option.getUid()); + optionAnswers.add(optionAnswer); + } + + assessmentQuestionResultDao.saveObject(questionAnswer); + + } else { + // get questionResult from DB instance of AssessmentResult + for (AssessmentQuestionResult dbQuestionAnswer : assessmentAnswer.getQuestionResults()) { + if (question.equals(dbQuestionAnswer.getAssessmentQuestion())) { + questionAnswer = dbQuestionAnswer; + } + } + } + + //store question answer values + questionAnswer.setAnswerBoolean(question.getAnswerBoolean()); + questionAnswer.setAnswerFloat(question.getAnswerFloat()); + questionAnswer.setAnswerString(question.getAnswerString()); + questionAnswer.setFinishDate(new Date()); - Set optionAnswers = questionResult.getOptionAnswers(); int j = 0; - for (AssessmentQuestionOption questionOption : question.getQuestionOptions()) { - AssessmentOptionAnswer optionAnswer = new AssessmentOptionAnswer(); - optionAnswer.setQuestionOptionUid(questionOption.getUid()); - optionAnswer.setAnswerBoolean(questionOption.getAnswerBoolean()); - optionAnswer.setAnswerInt(questionOption.getAnswerInt()); - optionAnswers.add(optionAnswer); - + for (AssessmentQuestionOption option : question.getOptions()) { + + // get optionAnswer from questionAnswer + AssessmentOptionAnswer optionAnswer = null; + for (AssessmentOptionAnswer dbOptionAnswer : questionAnswer.getOptionAnswers()) { + if (option.getUid().equals(dbOptionAnswer.getOptionUid())) { + optionAnswer = dbOptionAnswer; + } + } + + //store option answer values + optionAnswer.setAnswerBoolean(option.getAnswerBoolean()); + optionAnswer.setAnswerInt(option.getAnswerInt()); if (question.getType() == AssessmentConstants.QUESTION_TYPE_ORDERING) { optionAnswer.setAnswerInt(j++); } } - questionResult.setAssessmentQuestion(question); - questionResult.setAnswerBoolean(question.getAnswerBoolean()); - questionResult.setAnswerFloat(question.getAnswerFloat()); - questionResult.setAnswerString(question.getAnswerString()); - questionResult.setFinishDate(new Date()); float mark = 0; float maxMark = question.getGrade(); if (question.getType() == AssessmentConstants.QUESTION_TYPE_MULTIPLE_CHOICE) { - for (AssessmentQuestionOption option : question.getQuestionOptions()) { + for (AssessmentQuestionOption option : question.getOptions()) { if (option.getAnswerBoolean()) { mark += option.getGrade() * maxMark; } } } else if (question.getType() == AssessmentConstants.QUESTION_TYPE_MATCHING_PAIRS) { - float maxMarkForCorrectAnswer = maxMark / question.getQuestionOptions().size(); - for (AssessmentQuestionOption option : question.getQuestionOptions()) { + float maxMarkForCorrectAnswer = maxMark / question.getOptions().size(); + for (AssessmentQuestionOption option : question.getOptions()) { if (option.getAnswerInt() == option.getUid()) { mark += maxMarkForCorrectAnswer; } } } else if (question.getType() == AssessmentConstants.QUESTION_TYPE_SHORT_ANSWER) { - for (AssessmentQuestionOption option : question.getQuestionOptions()) { + for (AssessmentQuestionOption option : question.getOptions()) { String optionString = option.getOptionString().trim().replaceAll("\\*", ".*"); Pattern pattern; if (question.isCaseSensitive()) { @@ -477,14 +511,14 @@ if (isAnswerCorrect) { mark = option.getGrade() * maxMark; - questionResult.setSubmittedOptionUid(option.getUid()); + questionAnswer.setSubmittedOptionUid(option.getUid()); break; } } } else if (question.getType() == AssessmentConstants.QUESTION_TYPE_NUMERICAL) { String answerString = question.getAnswerString(); if (answerString != null) { - for (AssessmentQuestionOption option : question.getQuestionOptions()) { + for (AssessmentQuestionOption option : question.getOptions()) { boolean isAnswerCorrect = false; try { float answerFloat = Float.valueOf(question.getAnswerString()); @@ -517,7 +551,7 @@ } if (isAnswerCorrect) { mark = option.getGrade() * maxMark; - questionResult.setSubmittedOptionUid(option.getUid()); + questionAnswer.setSubmittedOptionUid(option.getUid()); break; } } @@ -527,37 +561,54 @@ mark = maxMark; } } else if (question.getType() == AssessmentConstants.QUESTION_TYPE_ORDERING) { - float maxMarkForCorrectAnswer = maxMark / question.getQuestionOptions().size(); + float maxMarkForCorrectAnswer = maxMark / question.getOptions().size(); TreeSet correctOptionSet = new TreeSet( new SequencableComparator()); - correctOptionSet.addAll(question.getQuestionOptions()); + correctOptionSet.addAll(question.getOptions()); ArrayList correctOptionList = new ArrayList( correctOptionSet); int i = 0; - for (AssessmentQuestionOption option : question.getQuestionOptions()) { + for (AssessmentQuestionOption option : question.getOptions()) { if (option.getUid() == correctOptionList.get(i++).getUid()) { mark += maxMarkForCorrectAnswer; } } } - if (mark > maxMark) { - mark = maxMark; - } - if (mark > 0) { - float penalty = question.getPenaltyFactor() * numberWrongAnswers; - mark -= penalty; - if (penalty > maxMark) { - penalty = maxMark; + + //we start calculating and storing marks only in case it's not an autosave request + if (!isAutosave) { + + if (mark > maxMark) { + mark = maxMark; } - questionResult.setPenalty(penalty); + + // calculate penalty + if (mark > 0) { + // calculate number of wrong answers + Long assessmentUid = assessmentAnswer.getAssessment().getUid(); + Long userId = assessmentAnswer.getUser().getUserId(); + int numberWrongAnswers = assessmentQuestionResultDao.getNumberWrongAnswersDoneBefore(assessmentUid, + userId, question.getUid()); + + // calculate penalty itdelf + float penalty = question.getPenaltyFactor() * numberWrongAnswers; + mark -= penalty; + if (penalty > maxMark) { + penalty = maxMark; + } + questionAnswer.setPenalty(penalty); + } + + if (mark < 0) { + mark = 0; + } + + questionAnswer.setMark(mark); + questionAnswer.setMaxMark(maxMark); + } - if (mark < 0) { - mark = 0; - } - questionResult.setMark(mark); - questionResult.setMaxMark(maxMark); - return questionResult; + return mark; } @Override @@ -639,7 +690,7 @@ String nextUrl = null; try { - nextUrl = this.leaveToolSession(toolSessionId, userId); + nextUrl = leaveToolSession(toolSessionId, userId); } catch (DataMissingException e) { throw new AssessmentApplicationException(e); } catch (ToolException e) { @@ -848,7 +899,7 @@ // students within the group List users = new ArrayList(); if (assessment.isUseSelectLeaderToolOuput()) { - users = this.getUsersBySession(toolSessionId); + users = getUsersBySession(toolSessionId); } else { users = new ArrayList(); AssessmentUser leader = questionResult.getUser(); @@ -928,7 +979,7 @@ for (ToolSession toolSession : (Set) assessmentActivity.getToolSessions()) { Long toolSessionId = toolSession.getToolSessionId(); - AssessmentSession assessmentSession = this.getAssessmentSessionBySessionId(toolSessionId); + AssessmentSession assessmentSession = getAssessmentSessionBySessionId(toolSessionId); Assessment assessment = assessmentSession.getAssessment(); if (assessment.isUseSelectLeaderToolOuput()) { @@ -938,17 +989,17 @@ continue; } - AssessmentResult leaderLastResult = this.getLastFinishedAssessmentResult(assessment.getUid(), + AssessmentResult leaderLastResult = getLastFinishedAssessmentResult(assessment.getUid(), leader.getUserId()); if (leaderLastResult == null) { continue; } Double mark = new Double(leaderLastResult.getGrade()); // update marks for all learners in a group - List users = this.getUsersBySession(toolSessionId); + List users = getUsersBySession(toolSessionId); for (AssessmentUser user : users) { - this.copyAnswersFromLeader(user, leader); + copyAnswersFromLeader(user, leader); // propagade total mark to Gradebook gradebookService.updateActivityMark(mark, null, user.getUserId().intValue(), toolSessionId, @@ -957,9 +1008,9 @@ } else { // update marks for all learners in a group - List users = this.getUsersBySession(toolSessionId); + List users = getUsersBySession(toolSessionId); for (AssessmentUser user : users) { - AssessmentResult userLastResult = this.getLastFinishedAssessmentResult(assessment.getUid(), + AssessmentResult userLastResult = getLastFinishedAssessmentResult(assessment.getUid(), user.getUserId()); if (userLastResult == null) { continue; @@ -1061,17 +1112,17 @@ question.setTitleEscaped(titleEscaped); } - for (AssessmentQuestionOption questionOption : question.getQuestionOptions()) { - String questionStr = questionOption.getQuestion(); + for (AssessmentQuestionOption option : question.getOptions()) { + String questionStr = option.getQuestion(); if (questionStr != null) { String questionEscaped = StringEscapeUtils.escapeJavaScript(questionStr); - questionOption.setQuestionEscaped(questionEscaped); + option.setQuestionEscaped(questionEscaped); } - String optionStr = questionOption.getOptionString(); + String optionStr = option.getOptionString(); if (optionStr != null) { String optionEscaped = StringEscapeUtils.escapeJavaScript(optionStr); - questionOption.setOptionStringEscaped(optionEscaped); + option.setOptionStringEscaped(optionEscaped); } } } Index: lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/web/action/AuthoringAction.java =================================================================== diff -u -r70cd6c82e640323ec48513c47a11a1e4af86f575 -r6e5d1ff4891084bef035cb865c1a395e3eb49ab0 --- lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/web/action/AuthoringAction.java (.../AuthoringAction.java) (revision 70cd6c82e640323ec48513c47a11a1e4af86f575) +++ lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/web/action/AuthoringAction.java (.../AuthoringAction.java) (revision 6e5d1ff4891084bef035cb865c1a395e3eb49ab0) @@ -638,7 +638,7 @@ optionList.add(assessmentAnswer); } - assessmentQuestion.setQuestionOptions(optionList); + assessmentQuestion.setOptions(optionList); } if (correctAnswer == null) { @@ -681,7 +681,7 @@ optionList.add(assessmentAnswer); } - assessmentQuestion.setQuestionOptions(optionList); + assessmentQuestion.setOptions(optionList); } } else if (Question.QUESTION_TYPE_TRUE_FALSE.equals(question.getType())) { @@ -742,7 +742,7 @@ } } - assessmentQuestion.setQuestionOptions(optionList); + assessmentQuestion.setOptions(optionList); } } else if (Question.QUESTION_TYPE_ESSAY.equals(question.getType())) { assessmentQuestion.setType(AssessmentConstants.QUESTION_TYPE_ESSAY); @@ -790,19 +790,19 @@ question.setType(Question.QUESTION_TYPE_MULTIPLE_RESPONSE); int correctAnswerCount = 0; - for (AssessmentQuestionOption assessmentAnswer : assessmentQuestion.getQuestionOptions()) { + for (AssessmentQuestionOption assessmentAnswer : assessmentQuestion.getOptions()) { if (assessmentAnswer.getGrade() > 0) { correctAnswerCount++; } } Float correctAnswerScore = correctAnswerCount > 0 ? new Integer(100 / correctAnswerCount) .floatValue() : null; - int incorrectAnswerCount = assessmentQuestion.getQuestionOptions().size() - correctAnswerCount; + int incorrectAnswerCount = assessmentQuestion.getOptions().size() - correctAnswerCount; Float incorrectAnswerScore = incorrectAnswerCount > 0 ? new Integer(-100 / incorrectAnswerCount) .floatValue() : null; - for (AssessmentQuestionOption assessmentAnswer : assessmentQuestion.getQuestionOptions()) { + for (AssessmentQuestionOption assessmentAnswer : assessmentQuestion.getOptions()) { Answer answer = new Answer(); boolean isCorrectAnswer = assessmentAnswer.getGrade() > 0; @@ -817,7 +817,7 @@ } else { question.setType(Question.QUESTION_TYPE_MULTIPLE_CHOICE); - for (AssessmentQuestionOption assessmentAnswer : assessmentQuestion.getQuestionOptions()) { + for (AssessmentQuestionOption assessmentAnswer : assessmentQuestion.getOptions()) { Answer answer = new Answer(); boolean isCorrectAnswer = assessmentAnswer.getGrade() == 1F; @@ -835,7 +835,7 @@ case AssessmentConstants.QUESTION_TYPE_SHORT_ANSWER: question.setType(Question.QUESTION_TYPE_FILL_IN_BLANK); - for (AssessmentQuestionOption assessmentAnswer : assessmentQuestion.getQuestionOptions()) { + for (AssessmentQuestionOption assessmentAnswer : assessmentQuestion.getOptions()) { // only answer which has more than 0% is considered a correct one if (assessmentAnswer.getGrade() > 0) { Answer answer = new Answer(); @@ -872,10 +872,10 @@ question.setType(Question.QUESTION_TYPE_MATCHING); int answerIndex = 0; - float score = assessmentQuestion.getDefaultGrade() / assessmentQuestion.getQuestionOptions().size(); - question.setMatchAnswers(new ArrayList(assessmentQuestion.getQuestionOptions().size())); + float score = assessmentQuestion.getDefaultGrade() / assessmentQuestion.getOptions().size(); + question.setMatchAnswers(new ArrayList(assessmentQuestion.getOptions().size())); question.setMatchMap(new TreeMap()); - for (AssessmentQuestionOption assessmentAnswer : assessmentQuestion.getQuestionOptions()) { + for (AssessmentQuestionOption assessmentAnswer : assessmentQuestion.getOptions()) { Answer answer = new Answer(); answer.setText(assessmentAnswer.getQuestion()); @@ -1669,7 +1669,7 @@ || (questionType == AssessmentConstants.QUESTION_TYPE_MATCHING_PAIRS) || (questionType == AssessmentConstants.QUESTION_TYPE_SHORT_ANSWER) || (questionType == AssessmentConstants.QUESTION_TYPE_NUMERICAL)) { - Set optionList = question.getQuestionOptions(); + Set optionList = question.getOptions(); request.setAttribute(AssessmentConstants.ATTR_OPTION_LIST, optionList); } if (questionType == AssessmentConstants.QUESTION_TYPE_NUMERICAL) { @@ -1762,7 +1762,7 @@ option.setSequenceId(seqId++); options.add(option); } - question.setQuestionOptions(options); + question.setOptions(options); } // set units if (type == AssessmentConstants.QUESTION_TYPE_NUMERICAL) { @@ -2039,7 +2039,7 @@ * @param question */ private void removeNewLineCharacters(AssessmentQuestion question) { - Set options = question.getQuestionOptions(); + Set options = question.getOptions(); if (options != null) { for (AssessmentQuestionOption option : options) { String optionString = option.getOptionString(); Index: lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/web/action/LearningAction.java =================================================================== diff -u -rbb597b8155375e6ac4dfe280f630d323b6e5e575 -r6e5d1ff4891084bef035cb865c1a395e3eb49ab0 --- lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/web/action/LearningAction.java (.../LearningAction.java) (revision bb597b8155375e6ac4dfe280f630d323b6e5e575) +++ lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/web/action/LearningAction.java (.../LearningAction.java) (revision 6e5d1ff4891084bef035cb865c1a395e3eb49ab0) @@ -322,12 +322,12 @@ } for (AssessmentQuestion question : questionList) { if (question.isShuffle() || (question.getType() == AssessmentConstants.QUESTION_TYPE_ORDERING)) { - ArrayList shuffledList = new ArrayList(question.getQuestionOptions()); + ArrayList shuffledList = new ArrayList(question.getOptions()); Collections.shuffle(shuffledList); - question.setQuestionOptions(new LinkedHashSet(shuffledList)); + question.setOptions(new LinkedHashSet(shuffledList)); } if (question.getType() == AssessmentConstants.QUESTION_TYPE_MATCHING_PAIRS) { - ArrayList shuffledList = new ArrayList(question.getQuestionOptions()); + ArrayList shuffledList = new ArrayList(question.getOptions()); Collections.shuffle(shuffledList); question.setMatchingPairOptions(new LinkedHashSet(shuffledList)); } @@ -541,7 +541,7 @@ } } - Set optionList = question.getQuestionOptions(); + Set optionList = question.getOptions(); int optionIndex = NumberUtils.stringToInt(request.getParameter(AssessmentConstants.PARAM_OPTION_INDEX), -1); if (optionIndex != -1) { @@ -557,7 +557,7 @@ // put back list optionList = new LinkedHashSet(rList); - question.setQuestionOptions(optionList); + question.setOptions(optionList); } request.setAttribute(AssessmentConstants.ATTR_QUESTION_FOR_ORDERING, question); @@ -657,9 +657,8 @@ int pageNumber = (Integer) sessionMap.get(AssessmentConstants.ATTR_PAGE_NUMBER); ArrayList> pagedQuestions = (ArrayList>) sessionMap.get(AssessmentConstants.ATTR_PAGED_QUESTIONS); LinkedHashSet questionsForOnePage = pagedQuestions.get(pageNumber-1); - int count = questionsForOnePage.size(); - for (int i = 0; i < count; i++) { + for (int i = 0; i < questionsForOnePage.size(); i++) { Long assessmentQuestionUid = WebUtil.readLongParam(request, AssessmentConstants.PARAM_QUESTION_UID + i); AssessmentQuestion question = null; for (AssessmentQuestion sessionQuestion : questionsForOnePage) { @@ -677,7 +676,7 @@ int questionType = question.getType(); if (questionType == AssessmentConstants.QUESTION_TYPE_MULTIPLE_CHOICE) { - for (AssessmentQuestionOption option : question.getQuestionOptions()) { + for (AssessmentQuestionOption option : question.getOptions()) { boolean answerBoolean = false; if (question.isMultipleAnswersAllowed()) { String answerString = request.getParameter(AssessmentConstants.ATTR_QUESTION_PREFIX + i + "_" @@ -693,7 +692,7 @@ option.setAnswerBoolean(answerBoolean); } } else if (questionType == AssessmentConstants.QUESTION_TYPE_MATCHING_PAIRS) { - for (AssessmentQuestionOption option : question.getQuestionOptions()) { + for (AssessmentQuestionOption option : question.getOptions()) { int answerInt = WebUtil.readIntParam(request, AssessmentConstants.ATTR_QUESTION_PREFIX + i + "_" + option.getSequenceId()); option.setAnswerInt(answerInt); } @@ -737,9 +736,9 @@ question.setPenalty(questionResult.getPenalty()); question.setQuestionFeedback(null); - for (AssessmentQuestionOption questionOption : question.getQuestionOptions()) { - if (questionOption.getUid().equals(questionResult.getSubmittedOptionUid())) { - question.setQuestionFeedback(questionOption.getFeedback()); + for (AssessmentQuestionOption option : question.getOptions()) { + if (option.getUid().equals(questionResult.getSubmittedOptionUid())) { + question.setQuestionFeedback(option.getFeedback()); break; } } @@ -800,15 +799,15 @@ question.setMark(questionResult.getMark()); question.setPenalty(questionResult.getPenalty()); - for (AssessmentQuestionOption questionOption : question.getQuestionOptions()) { + for (AssessmentQuestionOption option : question.getOptions()) { for (AssessmentOptionAnswer optionAnswer : questionResult.getOptionAnswers()) { - if (questionOption.getUid().equals(optionAnswer.getQuestionOptionUid())) { + if (option.getUid().equals(optionAnswer.getOptionUid())) { - questionOption.setAnswerBoolean(optionAnswer.getAnswerBoolean()); + option.setAnswerBoolean(optionAnswer.getAnswerBoolean()); if (question.getType() == AssessmentConstants.QUESTION_TYPE_ORDERING) { - questionOption.setSequenceId(optionAnswer.getAnswerInt()); + option.setSequenceId(optionAnswer.getAnswerInt()); } else { - questionOption.setAnswerInt(optionAnswer.getAnswerInt()); + option.setAnswerInt(optionAnswer.getAnswerInt()); } break; @@ -822,8 +821,8 @@ //sort ordering type of question if (question.getType() == AssessmentConstants.QUESTION_TYPE_ORDERING) { TreeSet orderedSet = new TreeSet(new SequencableComparator()); - orderedSet.addAll(question.getQuestionOptions()); - question.setQuestionOptions(orderedSet); + orderedSet.addAll(question.getOptions()); + question.setOptions(orderedSet); } } } Index: lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/web/action/MonitoringAction.java =================================================================== diff -u -r405cf90d2646e8f7dc1aa032b28c820279e50930 -r6e5d1ff4891084bef035cb865c1a395e3eb49ab0 --- lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/web/action/MonitoringAction.java (.../MonitoringAction.java) (revision 405cf90d2646e8f7dc1aa032b28c820279e50930) +++ lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/web/action/MonitoringAction.java (.../MonitoringAction.java) (revision 6e5d1ff4891084bef035cb865c1a395e3eb49ab0) @@ -733,10 +733,10 @@ if (type == AssessmentConstants.QUESTION_TYPE_MULTIPLE_CHOICE) { for (AssessmentOptionAnswer optionAnswer : optionAnswers) { if (optionAnswer.getAnswerBoolean() == true) { - for (AssessmentQuestionOption questionOption : assessmentQuestionResult.getAssessmentQuestion() - .getQuestionOptions()) { - if (questionOption.getUid().equals(optionAnswer.getQuestionOptionUid())) { - sb.append(questionOption.getOptionString() + ", "); + for (AssessmentQuestionOption option : assessmentQuestionResult.getAssessmentQuestion() + .getOptions()) { + if (option.getUid().equals(optionAnswer.getOptionUid())) { + sb.append(option.getOptionString() + ", "); trimComma = true; } } @@ -746,10 +746,10 @@ for (int i = 0; i < optionAnswers.size(); i++) { for (AssessmentOptionAnswer optionAnswer : optionAnswers) { if (optionAnswer.getAnswerInt() == i) { - for (AssessmentQuestionOption questionOption : assessmentQuestionResult - .getAssessmentQuestion().getQuestionOptions()) { - if (questionOption.getUid().equals(optionAnswer.getQuestionOptionUid())) { - sb.append(questionOption.getOptionString() + ", "); + for (AssessmentQuestionOption option : assessmentQuestionResult + .getAssessmentQuestion().getOptions()) { + if (option.getUid().equals(optionAnswer.getOptionUid())) { + sb.append(option.getOptionString() + ", "); trimComma = true; } } @@ -759,15 +759,15 @@ } else if (type == AssessmentConstants.QUESTION_TYPE_MATCHING_PAIRS) { - for (AssessmentQuestionOption questionOption : assessmentQuestionResult.getAssessmentQuestion() - .getQuestionOptions()) { - sb.append("[" + questionOption.getOptionString() + ", "); + for (AssessmentQuestionOption option : assessmentQuestionResult.getAssessmentQuestion() + .getOptions()) { + sb.append("[" + option.getOptionString() + ", "); for (AssessmentOptionAnswer optionAnswer : optionAnswers) { - if (questionOption.getUid().equals(optionAnswer.getQuestionOptionUid())) { - for (AssessmentQuestionOption questionOption2 : assessmentQuestionResult - .getAssessmentQuestion().getQuestionOptions()) { - if (questionOption2.getUid() == optionAnswer.getAnswerInt()) { - sb.append(questionOption2.getOptionString() + "] "); + if (option.getUid().equals(optionAnswer.getOptionUid())) { + for (AssessmentQuestionOption option2 : assessmentQuestionResult + .getAssessmentQuestion().getOptions()) { + if (option2.getUid() == optionAnswer.getAnswerInt()) { + sb.append(option2.getOptionString() + "] "); } } } Index: lams_tool_assessment/web/pages/export/parts/userresponse.jsp =================================================================== diff -u -rb6ddefd42c5660f90bd1da67f25e44d65ee21e30 -r6e5d1ff4891084bef035cb865c1a395e3eb49ab0 --- lams_tool_assessment/web/pages/export/parts/userresponse.jsp (.../userresponse.jsp) (revision b6ddefd42c5660f90bd1da67f25e44d65ee21e30) +++ lams_tool_assessment/web/pages/export/parts/userresponse.jsp (.../userresponse.jsp) (revision 6e5d1ff4891084bef035cb865c1a395e3eb49ab0) @@ -2,28 +2,28 @@ - + - - responseStr += "${questionOption.optionStringEscaped}"; + + responseStr += "${option.optionStringEscaped}"; responseStr +=''; - + responseStr +=''; responseStr +=''; responseStr +='
'; - responseStr +="${questionOption.questionEscaped}"; + responseStr +="${option.questionEscaped}"; responseStr +=''; responseStr +='-'; - - - - responseStr +="${questionOption2.optionStringEscaped}"; + + + + responseStr +="${option2.optionStringEscaped}"; @@ -51,9 +51,9 @@ - - - responseStr +="${questionOption.optionStringEscaped}"; + + + responseStr +="${option.optionStringEscaped}"; Index: lams_tool_assessment/web/pages/learning/parts/matchingpairs.jsp =================================================================== diff -u -r6c5d0c6b8ff17d661580df2c265f2dcabfe7d76c -r6e5d1ff4891084bef035cb865c1a395e3eb49ab0 --- lams_tool_assessment/web/pages/learning/parts/matchingpairs.jsp (.../matchingpairs.jsp) (revision 6c5d0c6b8ff17d661580df2c265f2dcabfe7d76c) +++ lams_tool_assessment/web/pages/learning/parts/matchingpairs.jsp (.../matchingpairs.jsp) (revision 6e5d1ff4891084bef035cb865c1a395e3eb49ab0) @@ -5,7 +5,7 @@ - +
Index: lams_tool_assessment/web/pages/learning/parts/multiplechoice.jsp =================================================================== diff -u -r6c5d0c6b8ff17d661580df2c265f2dcabfe7d76c -r6e5d1ff4891084bef035cb865c1a395e3eb49ab0 --- lams_tool_assessment/web/pages/learning/parts/multiplechoice.jsp (.../multiplechoice.jsp) (revision 6c5d0c6b8ff17d661580df2c265f2dcabfe7d76c) +++ lams_tool_assessment/web/pages/learning/parts/multiplechoice.jsp (.../multiplechoice.jsp) (revision 6e5d1ff4891084bef035cb865c1a395e3eb49ab0) @@ -12,7 +12,7 @@ - +
Index: lams_tool_assessment/web/pages/learning/parts/ordering.jsp =================================================================== diff -u -r6c5d0c6b8ff17d661580df2c265f2dcabfe7d76c -r6e5d1ff4891084bef035cb865c1a395e3eb49ab0 --- lams_tool_assessment/web/pages/learning/parts/ordering.jsp (.../ordering.jsp) (revision 6c5d0c6b8ff17d661580df2c265f2dcabfe7d76c) +++ lams_tool_assessment/web/pages/learning/parts/ordering.jsp (.../ordering.jsp) (revision 6e5d1ff4891084bef035cb865c1a395e3eb49ab0) @@ -12,7 +12,7 @@ - +
Index: lams_tool_assessment/web/pages/learning/parts/questionsummary.jsp =================================================================== diff -u -r0c7332f878ff51630f2c84a47f419abc832e022e -r6e5d1ff4891084bef035cb865c1a395e3eb49ab0 --- lams_tool_assessment/web/pages/learning/parts/questionsummary.jsp (.../questionsummary.jsp) (revision 0c7332f878ff51630f2c84a47f419abc832e022e) +++ lams_tool_assessment/web/pages/learning/parts/questionsummary.jsp (.../questionsummary.jsp) (revision 6e5d1ff4891084bef035cb865c1a395e3eb49ab0) @@ -40,26 +40,26 @@ border-bottom: none; " > - + - - ${questionOption.optionString} + + ${option.optionString} - +
- ${questionOption.question} + ${option.question} - - - + + ${questionOption2.optionString} @@ -89,9 +89,9 @@ - - - ${questionOption.optionString} + + + ${option.optionString} Index: lams_tool_assessment/web/pages/monitoring/parts/userresponse.jsp =================================================================== diff -u -rb24905d1333db0acd4bd02019d43c877e849e97a -r6e5d1ff4891084bef035cb865c1a395e3eb49ab0 --- lams_tool_assessment/web/pages/monitoring/parts/userresponse.jsp (.../userresponse.jsp) (revision b24905d1333db0acd4bd02019d43c877e849e97a) +++ lams_tool_assessment/web/pages/monitoring/parts/userresponse.jsp (.../userresponse.jsp) (revision 6e5d1ff4891084bef035cb865c1a395e3eb49ab0) @@ -2,25 +2,25 @@ - + - - responseStr += "${questionOption.optionStringEscaped}"; + + responseStr += "${option.optionStringEscaped}"; - + responseStr +='
'; responseStr +='
'; - responseStr +="${questionOption.questionEscaped}"; + responseStr +="${option.questionEscaped}"; responseStr +='
'; responseStr +='
'; responseStr +=' - '; - - + + responseStr +="${questionOption2.optionStringEscaped}"; @@ -52,9 +52,9 @@ - - - responseStr +="${questionOption.optionStringEscaped}"; + + + responseStr +="${option.optionStringEscaped}";