Index: lams_common/src/java/org/lamsfoundation/lams/confidencelevel/ConfidenceLevelDTO.java =================================================================== diff -u -r23736eb1785a92ccf57cdbcb2d7b94f4a80cd1ee -rf899620dd37f54eb375d29a5b15a7793c5dc3bb4 --- lams_common/src/java/org/lamsfoundation/lams/confidencelevel/ConfidenceLevelDTO.java (.../ConfidenceLevelDTO.java) (revision 23736eb1785a92ccf57cdbcb2d7b94f4a80cd1ee) +++ lams_common/src/java/org/lamsfoundation/lams/confidencelevel/ConfidenceLevelDTO.java (.../ConfidenceLevelDTO.java) (revision f899620dd37f54eb375d29a5b15a7793c5dc3bb4) @@ -8,9 +8,9 @@ private int level; - private String questionHash; + private String question; - private String answerHash; + private String answer; /** */ @@ -44,21 +44,21 @@ /** */ - public void setQuestionHash(String questionHash) { - this.questionHash = questionHash; + public void setQuestion(String question) { + this.question = question; } - public String getQuestionHash() { - return this.questionHash; + public String getQuestion() { + return this.question; } /** */ - public void setAnswerHash(String answerHash) { - this.answerHash = answerHash; + public void setAnswer(String answer) { + this.answer = answer; } - public String getAnswerHash() { - return this.answerHash; + public String getAnswer() { + return this.answer; } } Index: lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/dao/hibernate/AssessmentResultDAOHibernate.java =================================================================== diff -u -rfeb6062a5128a445b1fa0095b8c9d6cf232af90f -rf899620dd37f54eb375d29a5b15a7793c5dc3bb4 --- lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/dao/hibernate/AssessmentResultDAOHibernate.java (.../AssessmentResultDAOHibernate.java) (revision feb6062a5128a445b1fa0095b8c9d6cf232af90f) +++ lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/dao/hibernate/AssessmentResultDAOHibernate.java (.../AssessmentResultDAOHibernate.java) (revision f899620dd37f54eb375d29a5b15a7793c5dc3bb4) @@ -222,15 +222,15 @@ @Override public List getLastFinishedAssessmentResultsBySession(Long sessionId) { - final String FIND_LAST_FINISHED_RESULTS_BY_SESSION_ID = "SELECT r, u FROM " + AssessmentResult.class.getName() + final String FIND_LAST_FINISHED_RESULTS_BY_SESSION_ID = "SELECT r, u.portraitUuid FROM " + AssessmentResult.class.getName() + " AS r, " + User.class.getName() + " as u WHERE r.sessionId=? AND (r.finishDate != null) AND r.latest=1 AND u.userId=r.user.userId"; return (List) doFind(FIND_LAST_FINISHED_RESULTS_BY_SESSION_ID, new Object[] { sessionId }); } @Override public List getLeadersLastFinishedAssessmentResults(Long contentId) { - final String FIND_LAST_FINISHED_RESULTS_BY_SESSION_ID = "SELECT r, u FROM " + AssessmentResult.class.getName() + final String FIND_LAST_FINISHED_RESULTS_BY_SESSION_ID = "SELECT r, u.portraitUuid FROM " + AssessmentResult.class.getName() + " AS r, " + User.class.getName() + " as u WHERE r.user=r.user.session.groupLeader AND r.assessment.contentId=? AND (r.finishDate != null) AND r.latest=1 AND u.userId=r.user.userId"; return (List) doFind(FIND_LAST_FINISHED_RESULTS_BY_SESSION_ID, new Object[] { contentId }); Index: lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/dbupdates/patch20171016.sql =================================================================== diff -u -rfeb6062a5128a445b1fa0095b8c9d6cf232af90f -rf899620dd37f54eb375d29a5b15a7793c5dc3bb4 --- lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/dbupdates/patch20171016.sql (.../patch20171016.sql) (revision feb6062a5128a445b1fa0095b8c9d6cf232af90f) +++ lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/dbupdates/patch20171016.sql (.../patch20171016.sql) (revision f899620dd37f54eb375d29a5b15a7793c5dc3bb4) @@ -8,7 +8,7 @@ --add questions' hashes in order to be able to search for the similar questions with the same title and question ALTER TABLE tl_laasse10_assessment_question ADD COLUMN question_hash CHAR(40); -UPDATE tl_laasse10_assessment_question SET question_hash = SHA1(CONCAT(title, question)); +UPDATE tl_laasse10_assessment_question SET question_hash = SHA1(question); --add confidence level property to tl_laasse10_question_result ALTER TABLE tl_laasse10_question_result ADD COLUMN confidence_level int; Index: lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/model/AssessmentQuestion.java =================================================================== diff -u -r373dcc4ea6d1a07c60268ceccd9d1e69d9c35f9c -rf899620dd37f54eb375d29a5b15a7793c5dc3bb4 --- lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/model/AssessmentQuestion.java (.../AssessmentQuestion.java) (revision 373dcc4ea6d1a07c60268ceccd9d1e69d9c35f9c) +++ lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/model/AssessmentQuestion.java (.../AssessmentQuestion.java) (revision f899620dd37f54eb375d29a5b15a7793c5dc3bb4) @@ -51,7 +51,7 @@ private String question; /** - * It stores sha1(title + description) value that allows us to search for the AssessmentQuestions with the same title and question + * It stores sha1(question) value that allows us to search for the AssessmentQuestions with the same question */ private String questionHash; @@ -229,7 +229,7 @@ } /** - * Returns sha1(title + description) value that allows us to search for the AssessmentQuestions with the same title and question + * Returns sha1(question) value that allows us to search for the AssessmentQuestions with the same question */ public String getQuestionHash() { return questionHash; Index: lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/service/AssessmentServiceImpl.java =================================================================== diff -u -rfeb6062a5128a445b1fa0095b8c9d6cf232af90f -rf899620dd37f54eb375d29a5b15a7793c5dc3bb4 --- lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/service/AssessmentServiceImpl.java (.../AssessmentServiceImpl.java) (revision feb6062a5128a445b1fa0095b8c9d6cf232af90f) +++ lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/service/AssessmentServiceImpl.java (.../AssessmentServiceImpl.java) (revision f899620dd37f54eb375d29a5b15a7793c5dc3bb4) @@ -409,19 +409,8 @@ public void saveOrUpdateAssessment(Assessment assessment) { //update questions' hashes in case questions' titles or descriptions got changed for (AssessmentQuestion question : (Set) assessment.getQuestions()) { - String plainText = ""; - if (question.getTitle() != null) { - plainText += question.getTitle(); - } - if (question.getQuestion() != null) { - plainText += question.getQuestion(); - } - String newHash = HashUtil.sha1(plainText); - String oldHash = question.getQuestionHash(); - - if (oldHash == null || !oldHash.equals(newHash)) { - question.setQuestionHash(newHash); - } + String newHash = question.getQuestion() == null ? null : HashUtil.sha1(question.getQuestion()); + question.setQuestionHash(newHash); } //store object in DB @@ -2684,15 +2673,15 @@ Assessment assessment = getAssessmentBySessionId(toolSessionId); //in case Assessment is leader aware return all leaders confidences, otherwise - confidences from the users from the same group as requestor - List assessmentResultsAndUsers = assessment.isUseSelectLeaderToolOuput() + List assessmentResultsAndPortraits = assessment.isUseSelectLeaderToolOuput() ? assessmentResultDao.getLeadersLastFinishedAssessmentResults(assessment.getContentId()) : assessmentResultDao.getLastFinishedAssessmentResultsBySession(toolSessionId); - for (Object[] assessmentResultsAndUsersIter : assessmentResultsAndUsers) { - AssessmentResult assessmentResult = (AssessmentResult) assessmentResultsAndUsersIter[0]; - User user = (User) assessmentResultsAndUsersIter[1]; - Integer userId = user.getUserId(); - Long portraitUuid = user.getPortraitUuid(); + for (Object[] assessmentResultsAndPortraitIter : assessmentResultsAndPortraits) { + AssessmentResult assessmentResult = (AssessmentResult) assessmentResultsAndPortraitIter[0]; + Long portraitUuid = assessmentResultsAndPortraitIter[1] == null ? null + : ((Number) assessmentResultsAndPortraitIter[1]).longValue(); + Long userId = assessmentResult.getUser().getUserId(); //fill in question's and user answer's hashes for (AssessmentQuestionResult questionResult : assessmentResult.getQuestionResults()) { @@ -2734,11 +2723,11 @@ for (String answer : answers) { ConfidenceLevelDTO confidenceLevelDto = new ConfidenceLevelDTO(); - confidenceLevelDto.setUserId(userId); + confidenceLevelDto.setUserId(userId.intValue()); confidenceLevelDto.setPortraitUuid(portraitUuid); confidenceLevelDto.setLevel(questionResult.getConfidenceLevel()); - confidenceLevelDto.setQuestionHash(question.getQuestionHash()); - confidenceLevelDto.setAnswerHash(HashUtil.sha1(answer)); + confidenceLevelDto.setQuestion(question.getQuestion()); + confidenceLevelDto.setAnswer(answer); confidenceLevelDtos.add(confidenceLevelDto); } Index: lams_tool_scratchie/src/java/org/lamsfoundation/lams/tool/scratchie/service/ScratchieServiceImpl.java =================================================================== diff -u -rbbe9589ceab063d62380b9fe3f02648a4581e109 -rf899620dd37f54eb375d29a5b15a7793c5dc3bb4 --- lams_tool_scratchie/src/java/org/lamsfoundation/lams/tool/scratchie/service/ScratchieServiceImpl.java (.../ScratchieServiceImpl.java) (revision bbe9589ceab063d62380b9fe3f02648a4581e109) +++ lams_tool_scratchie/src/java/org/lamsfoundation/lams/tool/scratchie/service/ScratchieServiceImpl.java (.../ScratchieServiceImpl.java) (revision f899620dd37f54eb375d29a5b15a7793c5dc3bb4) @@ -242,29 +242,23 @@ //populate Scratchie items with confidence levels for (ScratchieItem item : items) { - String plainText = ""; - if (item.getTitle() != null) { - plainText += item.getTitle(); - } - if (item.getDescription() != null) { - plainText += item.getDescription(); - } - String questionHash = HashUtil.sha1(plainText); - //init answers' confidenceLevelDtos list for (ScratchieAnswer answer : (Set) item.getAnswers()) { LinkedList confidenceLevelDtosTemp = new LinkedList(); answer.setConfidenceLevelDtos(confidenceLevelDtosTemp); } + //Assessment (similar with Scratchie) adds '\n' at the end of question, MCQ - '\r\n' + String question = item.getDescription() == null ? "" : item.getDescription().replaceAll("(\\r|\\n)", ""); + //find according confidenceLevelDto for (ConfidenceLevelDTO confidenceLevelDto : confidenceLevelDtos) { - if (questionHash.equals(confidenceLevelDto.getQuestionHash())) { - + if (question.equals(confidenceLevelDto.getQuestion().replaceAll("(\\r|\\n)", ""))) { + //find according answer for (ScratchieAnswer answer : (Set) item.getAnswers()) { - String answerHash = HashUtil.sha1(answer.getDescription()); - if (answerHash.equals(confidenceLevelDto.getAnswerHash())) { + String answerText = answer.getDescription().replaceAll("(\\r|\\n)", ""); + if (answerText.equals(confidenceLevelDto.getAnswer().replaceAll("(\\r|\\n)", ""))) { answer.getConfidenceLevelDtos().add(confidenceLevelDto); } }