Index: lams_tool_assessment/conf/language/lams/ApplicationResources_en_AU.properties =================================================================== diff -u -r95a8036ef190595474c3bac650ecd8e004434fd2 -r1e41e09dbff6a9d1165cd1c7a1eb8e874a2b0776 --- lams_tool_assessment/conf/language/lams/ApplicationResources_en_AU.properties (.../ApplicationResources_en_AU.properties) (revision 95a8036ef190595474c3bac650ecd8e004434fd2) +++ lams_tool_assessment/conf/language/lams/ApplicationResources_en_AU.properties (.../ApplicationResources_en_AU.properties) (revision 1e41e09dbff6a9d1165cd1c7a1eb8e874a2b0776) @@ -120,6 +120,7 @@ label.authoring.advance.allow.students.question.feedback =Allow students to see question feedback after each question label.authoring.advance.allow.students.right.wrong.answers =Allow students to see right/wrong answers label.authoring.advance.allow.students.grades =Allow students to see grades at the end of each attempt +label.authoring.advance.allow.students.history.responses =Allow students to see history of responses at the end of each attempt label.authoring.advance.overall.feedback =Overall feedback label.authoring.advance.grade.boundary =Grade boundary label.authoring.advance.feedback =Feedback @@ -180,7 +181,9 @@ label.learning.question.summary.history.responces =History of Responses: label.learning.question.summary.response =Response label.learning.question.summary.grade =Grade +label.learning.countdown.time.left =Time left label.learning.blockui.time.is.over =Time is over. Processing your answers... +label.learning.blockui.are.you.ready =You are going to participate in activity that has time limitation. Are you ready to start? monitoring.tab.summary =Summary monitoring.tab.instructions =Instruction monitoring.tab.statistics =Statistic Index: lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/model/AssessmentUnit.java =================================================================== diff -u -r3fdcee6fa67ca8bbbf112bb01a95873fc76a6b0f -r1e41e09dbff6a9d1165cd1c7a1eb8e874a2b0776 --- lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/model/AssessmentUnit.java (.../AssessmentUnit.java) (revision 3fdcee6fa67ca8bbbf112bb01a95873fc76a6b0f) +++ lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/model/AssessmentUnit.java (.../AssessmentUnit.java) (revision 1e41e09dbff6a9d1165cd1c7a1eb8e874a2b0776) @@ -42,10 +42,6 @@ private String unit; private float multiplier; - - // *************** NON Persist Fields ******************** - private String multiplierStr = "0.0"; - // ********************************************************** // Get/Set methods @@ -97,14 +93,6 @@ this.multiplier = multiplier; } - public String getMultiplierStr() { - return multiplierStr; - } - - public void setMultiplierStr(String multiplierStr) { - this.multiplierStr = multiplierStr; - } - /** * @hibernate.property column="unit" * Index: lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/service/AssessmentServiceImpl.java =================================================================== diff -u -r95a8036ef190595474c3bac650ecd8e004434fd2 -r1e41e09dbff6a9d1165cd1c7a1eb8e874a2b0776 --- lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/service/AssessmentServiceImpl.java (.../AssessmentServiceImpl.java) (revision 95a8036ef190595474c3bac650ecd8e004434fd2) +++ lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/service/AssessmentServiceImpl.java (.../AssessmentServiceImpl.java) (revision 1e41e09dbff6a9d1165cd1c7a1eb8e874a2b0776) @@ -88,6 +88,7 @@ import org.lamsfoundation.lams.tool.assessment.model.AssessmentQuestionResult; import org.lamsfoundation.lams.tool.assessment.model.AssessmentResult; import org.lamsfoundation.lams.tool.assessment.model.AssessmentSession; +import org.lamsfoundation.lams.tool.assessment.model.AssessmentUnit; import org.lamsfoundation.lams.tool.assessment.model.AssessmentUser; import org.lamsfoundation.lams.tool.assessment.util.AssessmentQuestionResultComparator; import org.lamsfoundation.lams.tool.assessment.util.AssessmentToolContentHandler; @@ -167,27 +168,19 @@ throws AssessmentApplicationException { ITicket tic = getRepositoryLoginTicket(); - try { - return repositoryService.getFileItem(tic, uuid, versionId, relativePath); - } catch (AccessDeniedException e) { - String error = "Unable to access repository to get file uuid " + uuid + " version id " + versionId + " path " + relativePath + "."; - error = error + "AccessDeniedException: " + e.getMessage() + " Unable to retry further."; AssessmentServiceImpl.log.error(error); throw new AssessmentApplicationException(error, e); - } catch (Exception e) { - String error = "Unable to access repository to get file uuid " + uuid + " version id " + versionId + " path " + relativePath + "." + " Exception: " + e.getMessage(); AssessmentServiceImpl.log.error(error); throw new AssessmentApplicationException(error, e); - } } @@ -249,7 +242,6 @@ throw new UploadAssessmentFileException(messageService.getMessage("error.msg.upload.file.not.found", new Object[] { uploadFile })); } - // upload file to repository NodeKey nodeKey = processFile(uploadFile, fileType); @@ -269,15 +261,11 @@ } public AssessmentUser getUserByIDAndContent(Long userId, Long contentId) { - return assessmentUserDao.getUserByUserIDAndContentID(userId, contentId); - } public AssessmentUser getUserByIDAndSession(Long userId, Long sessionId) { - return assessmentUserDao.getUserByUserIDAndSessionID(userId, sessionId); - } public void deleteFromRepository(Long fileUuid, Long fileVersionId) throws AssessmentApplicationException { @@ -454,12 +442,17 @@ AssessmentQuestionResult questionResult = new AssessmentQuestionResult(); 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); + + if (question.getType() == AssessmentConstants.QUESTION_TYPE_ORDERING) { + optionAnswer.setAnswerInt(j++); + } } questionResult.setAssessmentQuestion(question); questionResult.setAnswerBoolean(question.getAnswerBoolean()); @@ -500,17 +493,44 @@ } } } else if (question.getType() == AssessmentConstants.QUESTION_TYPE_NUMERICAL) { - try { - float answerFloat = Float.valueOf(question.getAnswerString()); + String answerString = question.getAnswerString(); + if (answerString != null) { for (AssessmentQuestionOption option : question.getQuestionOptions()) { - if ((answerFloat >= (option.getOptionFloat() - option.getAcceptedError())) - && (answerFloat <= (option.getOptionFloat() + option.getAcceptedError()))) { + boolean isAnswerCorrect = false; + try { + float answerFloat = Float.valueOf(question.getAnswerString()); + isAnswerCorrect = ((answerFloat >= (option.getOptionFloat() - option.getAcceptedError())) + && (answerFloat <= (option.getOptionFloat() + option.getAcceptedError()))); + } catch (Exception e) { + } + + if (!isAnswerCorrect) { + for (AssessmentUnit unit : question.getUnits()) { + String regex = ".*" + unit.getUnit() + "$"; + Pattern pattern = Pattern.compile(regex, java.util.regex.Pattern.CASE_INSENSITIVE + | java.util.regex.Pattern.UNICODE_CASE); + if (pattern.matcher(answerString).matches()) { + String answerFloatStr = answerString.substring(0, answerString.length() - unit.getUnit().length()); + try { + float answerFloat = Float.valueOf(answerFloatStr); + answerFloat = answerFloat / unit.getMultiplier(); + isAnswerCorrect = ((answerFloat >= (option.getOptionFloat() - option + .getAcceptedError())) && (answerFloat <= (option.getOptionFloat() + option + .getAcceptedError()))); + if (isAnswerCorrect) { + break; + } + } catch (Exception e) { + } + } + } + } + if (isAnswerCorrect) { mark = option.getGrade() * maxMark; questionResult.setSubmittedOptionUid(option.getUid()); break; } } - } catch (Exception e) { } } else if (question.getType() == AssessmentConstants.QUESTION_TYPE_TRUE_FALSE) { if ((question.getAnswerBoolean() == question.getCorrectAnswer()) && (question.getAnswerString() != null)) { Index: lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/web/action/LearningAction.java =================================================================== diff -u -r95a8036ef190595474c3bac650ecd8e004434fd2 -r1e41e09dbff6a9d1165cd1c7a1eb8e874a2b0776 --- lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/web/action/LearningAction.java (.../LearningAction.java) (revision 95a8036ef190595474c3bac650ecd8e004434fd2) +++ lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/web/action/LearningAction.java (.../LearningAction.java) (revision 1e41e09dbff6a9d1165cd1c7a1eb8e874a2b0776) @@ -553,10 +553,6 @@ String answerString = request.getParameter(AssessmentConstants.ATTR_QUESTION_PREFIX + i); question.setAnswerString(answerString); } else if (questionType == AssessmentConstants.QUESTION_TYPE_ORDERING) { - int j = 0; - for (AssessmentQuestionOption option : question.getQuestionOptions()) { - option.setAnswerInt(j++); - } } } } Index: lams_tool_assessment/web/pages/learning/learning.jsp =================================================================== diff -u -r95a8036ef190595474c3bac650ecd8e004434fd2 -r1e41e09dbff6a9d1165cd1c7a1eb8e874a2b0776 --- lams_tool_assessment/web/pages/learning/learning.jsp (.../learning.jsp) (revision 95a8036ef190595474c3bac650ecd8e004434fd2) +++ lams_tool_assessment/web/pages/learning/learning.jsp (.../learning.jsp) (revision 1e41e09dbff6a9d1165cd1c7a1eb8e874a2b0776) @@ -22,7 +22,7 @@ - + @@ -38,16 +38,17 @@