Index: lams_common/src/java/org/lamsfoundation/lams/dbupdates/patch20190722.sql =================================================================== diff -u -rf49dd9f6b076828f464fc954bb9c3dc0c87e8b37 -r2b3d3b2f61d37cf2fa7cccc0cf4565e5dfc4b88e --- lams_common/src/java/org/lamsfoundation/lams/dbupdates/patch20190722.sql (.../patch20190722.sql) (revision f49dd9f6b076828f464fc954bb9c3dc0c87e8b37) +++ lams_common/src/java/org/lamsfoundation/lams/dbupdates/patch20190722.sql (.../patch20190722.sql) (revision 2b3d3b2f61d37cf2fa7cccc0cf4565e5dfc4b88e) @@ -3,6 +3,7 @@ -- AUTO COMMIT stays ON because there is so many ALTER TABLE statements which are committed immediately anyway, that it does not make a difference -- Create QB question table + CREATE TABLE lams_qb_question (`uid` BIGINT AUTO_INCREMENT, `uuid` BINARY(16) NOT NULL, `type` TINYINT NOT NULL, @@ -75,6 +76,7 @@ CREATE TABLE lams_qb_tool_answer (`answer_uid` BIGINT AUTO_INCREMENT, `tool_question_uid` BIGINT NOT NULL, `qb_option_uid` BIGINT DEFAULT NULL, + `answer` MEDIUMTEXT, PRIMARY KEY (answer_uid), CONSTRAINT FK_lams_qb_tool_answer_1 FOREIGN KEY (tool_question_uid) REFERENCES lams_qb_tool_question (tool_question_uid) ON DELETE CASCADE ON UPDATE CASCADE, @@ -179,7 +181,7 @@ -- prepare for answer inheritance INSERT INTO lams_qb_tool_answer - SELECT uid, mc_que_content_id, mc_que_option_id FROM tl_lamc11_usr_attempt; + SELECT uid, mc_que_content_id, mc_que_option_id, NULL FROM tl_lamc11_usr_attempt; -- clean up ALTER TABLE tl_lamc11_usr_attempt DROP COLUMN mc_que_content_id, @@ -359,7 +361,7 @@ -- prepare for answer inheritance INSERT INTO lams_qb_tool_answer - SELECT uid, scratchie_item_uid, scratchie_answer_uid FROM tl_lascrt11_answer_log; + SELECT uid, scratchie_item_uid, scratchie_answer_uid, NULL FROM tl_lascrt11_answer_log; -- cleanup @@ -685,7 +687,7 @@ -- prepare for answer inheritance INSERT INTO lams_qb_tool_answer - SELECT uid, assessment_question_uid, submitted_option_uid FROM tl_laasse10_question_result; + SELECT uid, assessment_question_uid, submitted_option_uid, answer_string FROM tl_laasse10_question_result; -- fill content_folder_id with real values from learning designs UPDATE lams_qb_question AS qbque, lams_qb_tool_question AS toolque, lams_learning_activity AS activity, lams_learning_design AS design @@ -696,7 +698,8 @@ -- cleanup ALTER TABLE tl_laasse10_question_result DROP COLUMN assessment_question_uid, - DROP COLUMN submitted_option_uid; + DROP COLUMN submitted_option_uid, + DROP COLUMN answer_string; DROP TABLE tl_laasse10_question_option, tl_laasse10_assessment_unit; @@ -793,10 +796,11 @@ -- prepare for answer inheritance INSERT INTO lams_qb_tool_answer - SELECT uid, qa_que_content_id, NULL FROM tl_laqa11_usr_resp; + SELECT uid, qa_que_content_id, NULL, answer FROM tl_laqa11_usr_resp; -- clean up -ALTER TABLE tl_laqa11_usr_resp DROP COLUMN qa_que_content_id; +ALTER TABLE tl_laqa11_usr_resp DROP COLUMN qa_que_content_id, + DROP COLUMN answer; ALTER TABLE lams_qb_question DROP COLUMN tmp_question_id; Index: lams_common/src/java/org/lamsfoundation/lams/qb/model/QbToolAnswer.java =================================================================== diff -u -rf49dd9f6b076828f464fc954bb9c3dc0c87e8b37 -r2b3d3b2f61d37cf2fa7cccc0cf4565e5dfc4b88e --- lams_common/src/java/org/lamsfoundation/lams/qb/model/QbToolAnswer.java (.../QbToolAnswer.java) (revision f49dd9f6b076828f464fc954bb9c3dc0c87e8b37) +++ lams_common/src/java/org/lamsfoundation/lams/qb/model/QbToolAnswer.java (.../QbToolAnswer.java) (revision 2b3d3b2f61d37cf2fa7cccc0cf4565e5dfc4b88e) @@ -28,6 +28,9 @@ @GeneratedValue(strategy = GenerationType.IDENTITY) protected Long uid; + @Column + protected String answer; + @ManyToOne(optional = false, fetch = FetchType.LAZY) @JoinColumn(name = "tool_question_uid") protected QbToolQuestion qbToolQuestion; @@ -36,6 +39,18 @@ @JoinColumn(name = "qb_option_uid") protected QbOption qbOption; + public Long getUid() { + return this.uid; + } + + public String getAnswer() { + return answer; + } + + public void setAnswer(String answer) { + this.answer = answer; + } + public QbToolQuestion getQbToolQuestion() { return qbToolQuestion; } @@ -52,10 +67,6 @@ this.qbOption = qbOption; } - public Long getUid() { - return this.uid; - } - @Override public int hashCode() { return new HashCodeBuilder().append(getUid()).toHashCode(); Index: lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/dto/QuestionDTO.java =================================================================== diff -u -rb41c8a8bc5134e78088378360a37f3906fadb3de -r2b3d3b2f61d37cf2fa7cccc0cf4565e5dfc4b88e --- lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/dto/QuestionDTO.java (.../QuestionDTO.java) (revision b41c8a8bc5134e78088378360a37f3906fadb3de) +++ lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/dto/QuestionDTO.java (.../QuestionDTO.java) (revision 2b3d3b2f61d37cf2fa7cccc0cf4565e5dfc4b88e) @@ -70,7 +70,7 @@ private String titleEscaped; - private String answerString; + private String answer; private float answerFloat; @@ -342,12 +342,12 @@ } // ============= variable properties ============= - public String getAnswerString() { - return answerString; + public String getAnswer() { + return answer; } - public void setAnswerString(String answerString) { - this.answerString = answerString; + public void setAnswer(String answer) { + this.answer = answer; } public float getAnswerFloat() { Index: lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/model/AssessmentQuestionResult.java =================================================================== diff -u -rf49dd9f6b076828f464fc954bb9c3dc0c87e8b37 -r2b3d3b2f61d37cf2fa7cccc0cf4565e5dfc4b88e --- lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/model/AssessmentQuestionResult.java (.../AssessmentQuestionResult.java) (revision f49dd9f6b076828f464fc954bb9c3dc0c87e8b37) +++ lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/model/AssessmentQuestionResult.java (.../AssessmentQuestionResult.java) (revision 2b3d3b2f61d37cf2fa7cccc0cf4565e5dfc4b88e) @@ -21,7 +21,6 @@ * **************************************************************** */ - package org.lamsfoundation.lams.tool.assessment.model; import java.util.Date; @@ -39,8 +38,6 @@ import javax.persistence.Table; import javax.persistence.Transient; -import org.apache.commons.lang.builder.EqualsBuilder; -import org.apache.commons.lang.builder.HashCodeBuilder; import org.lamsfoundation.lams.qb.model.QbQuestion; import org.lamsfoundation.lams.qb.model.QbToolAnswer; import org.lamsfoundation.lams.tool.assessment.dto.QuestionDTO; @@ -55,45 +52,42 @@ //in this entity's table primary key is "uid", but it references "answer_uid" in lams_qb_tool_answer @PrimaryKeyJoinColumn(name = "uid") public class AssessmentQuestionResult extends QbToolAnswer implements Comparable { - - @Column(name = "answer_string") - private String answerString; - + @Column(name = "answer_float") private float answerFloat; - + @Column(name = "answer_boolean") private boolean answerBoolean; - + @Column private float mark; - + @Column(name = "max_mark") private Float maxMark; - + @Column private float penalty; - + @Column(name = "finish_date") private Date finishDate; - + @Column(name = "confidence_level") private int confidenceLevel; - + @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "result_uid") private AssessmentResult assessmentResult; - + @OneToMany(cascade = CascadeType.ALL, fetch = FetchType.EAGER) @JoinColumn(name = "question_result_uid") private Set optionAnswers = new LinkedHashSet<>(); // *************** NON Persist Fields ******************** - + @Transient private AssessmentUser user; @Transient - private String answerStringEscaped; + private String answerEscaped; @Transient private QuestionDTO questionDto; @@ -112,17 +106,6 @@ /** * @return Returns the possible answer. */ - public String getAnswerString() { - return answerString; - } - - public void setAnswerString(String answerString) { - this.answerString = answerString; - } - - /** - * @return Returns the possible answer. - */ public float getAnswerFloat() { return answerFloat; } @@ -193,7 +176,7 @@ public void setFinishDate(Date finishDate) { this.finishDate = finishDate; } - + public int getConfidenceLevel() { return confidenceLevel; } @@ -210,14 +193,14 @@ this.user = user; } - public String getAnswerStringEscaped() { - return answerStringEscaped; + public String getanswerEscaped() { + return answerEscaped; } - public void setAnswerStringEscaped(String answerStringEscaped) { - this.answerStringEscaped = answerStringEscaped; - } - + public void setanswerEscaped(String answerEscaped) { + this.answerEscaped = answerEscaped; + } + public QuestionDTO getQuestionDto() { return questionDto; } Index: lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/service/AssessmentImportContentVersionFilter.java =================================================================== diff -u -r6cbd849584c40532c6be292f9f009c88cde9439c -r2b3d3b2f61d37cf2fa7cccc0cf4565e5dfc4b88e --- lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/service/AssessmentImportContentVersionFilter.java (.../AssessmentImportContentVersionFilter.java) (revision 6cbd849584c40532c6be292f9f009c88cde9439c) +++ lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/service/AssessmentImportContentVersionFilter.java (.../AssessmentImportContentVersionFilter.java) (revision 2b3d3b2f61d37cf2fa7cccc0cf4565e5dfc4b88e) @@ -64,7 +64,7 @@ public void up20170101To20170315() { this.removeField(AssessmentQuestion.class, "createDate"); this.removeField(AssessmentQuestion.class, "createBy"); - this.removeField(AssessmentQuestion.class, "answerString"); + this.removeField(AssessmentQuestion.class, "answer"); this.removeField(AssessmentQuestion.class, "answerFloat"); this.removeField(AssessmentQuestion.class, "answerBoolean"); this.removeField(AssessmentQuestion.class, "questionFeedback"); Index: lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/service/AssessmentServiceImpl.java =================================================================== diff -u -rec62f6f6a9e56cd545c527d2fd530614b3a7e744 -r2b3d3b2f61d37cf2fa7cccc0cf4565e5dfc4b88e --- lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/service/AssessmentServiceImpl.java (.../AssessmentServiceImpl.java) (revision ec62f6f6a9e56cd545c527d2fd530614b3a7e744) +++ lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/service/AssessmentServiceImpl.java (.../AssessmentServiceImpl.java) (revision 2b3d3b2f61d37cf2fa7cccc0cf4565e5dfc4b88e) @@ -258,7 +258,7 @@ if (userQuestionResult.getQbToolQuestion().getUid() .equals(leaderQuestionResult.getQbToolQuestion().getUid())) { - userQuestionResult.setAnswerString(leaderQuestionResult.getAnswerString()); + userQuestionResult.setAnswer(leaderQuestionResult.getAnswer()); userQuestionResult.setAnswerFloat(leaderQuestionResult.getAnswerFloat()); userQuestionResult.setAnswerBoolean(leaderQuestionResult.getAnswerBoolean()); userQuestionResult.setQbOption(leaderQuestionResult.getQbOption()); @@ -667,7 +667,7 @@ // store question answer values questionResult.setAnswerBoolean(questionDto.getAnswerBoolean()); questionResult.setAnswerFloat(questionDto.getAnswerFloat()); - questionResult.setAnswerString(questionDto.getAnswerString()); + questionResult.setAnswer(questionDto.getAnswer()); int j = 0; for (OptionDTO optionDto : questionDto.getOptionDtos()) { @@ -762,8 +762,8 @@ pattern = Pattern.compile(regexWithOnlyAsteriskSymbolActive, java.util.regex.Pattern.CASE_INSENSITIVE | java.util.regex.Pattern.UNICODE_CASE); } - boolean isAnswerMatchedCurrentOption = (questionDto.getAnswerString() != null) - ? pattern.matcher(questionDto.getAnswerString().trim()).matches() + boolean isAnswerMatchedCurrentOption = (questionDto.getAnswer() != null) + ? pattern.matcher(questionDto.getAnswer().trim()).matches() : false; if (isAnswerMatchedCurrentOption) { @@ -775,12 +775,12 @@ } } else if (questionDto.getType() == QbQuestion.TYPE_NUMERICAL) { - String answerString = questionDto.getAnswerString(); - if (answerString != null) { + String answer = questionDto.getAnswer(); + if (answer != null) { for (OptionDTO optionDto : questionDto.getOptionDtos()) { boolean isAnswerMatchedCurrentOption = false; try { - float answerFloat = Float.valueOf(questionDto.getAnswerString()); + float answerFloat = Float.valueOf(questionDto.getAnswer()); isAnswerMatchedCurrentOption = ((answerFloat >= (optionDto.getNumericalOption() - optionDto.getAcceptedError())) && (answerFloat <= (optionDto.getNumericalOption() + optionDto.getAcceptedError()))); @@ -792,9 +792,9 @@ String regex = ".*" + unit.getName() + "$"; 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.getName().length()); + if (pattern.matcher(answer).matches()) { + String answerFloatStr = answer.substring(0, + answer.length() - unit.getName().length()); try { float answerFloat = Float.valueOf(answerFloatStr); answerFloat = answerFloat / unit.getMultiplier(); @@ -821,7 +821,7 @@ } else if (questionDto.getType() == QbQuestion.TYPE_TRUE_FALSE) { if ((questionDto.getAnswerBoolean() == questionDto.getCorrectAnswer()) - && (questionDto.getAnswerString() != null)) { + && (questionDto.getAnswer() != null)) { mark = maxMark; } @@ -923,7 +923,7 @@ private void loadupQuestionResultIntoQuestionDto(QuestionDTO questionDto, AssessmentQuestionResult questionResult) { questionDto.setAnswerBoolean(questionResult.getAnswerBoolean()); questionDto.setAnswerFloat(questionResult.getAnswerFloat()); - questionDto.setAnswerString(questionResult.getAnswerString()); + questionDto.setAnswer(questionResult.getAnswer()); questionDto.setMark(questionResult.getMark()); questionDto.setResponseSubmitted(questionResult.getFinishDate() != null); questionDto.setPenalty(questionResult.getPenalty()); @@ -2025,7 +2025,7 @@ summaryNACount++; } } else if (question.getType() == QbQuestion.TYPE_TRUE_FALSE) { - if (questionResult.getAnswerString() == null) { + if (questionResult.getAnswer() == null) { summaryNACount++; } else { long key = questionResult.getAnswerBoolean() ? 1 : 0; @@ -2260,10 +2260,10 @@ //check whether according question was modified for (AssessmentQuestion modifiedQuestion : modifiedQuestions) { if (oldQuestion.getDisplayOrder() == modifiedQuestion.getDisplayOrder()) { - - //update questionResult's qbQuestion with the new one + + //update questionResult's qbQuestion with the new one questionResult.setQbToolQuestion(modifiedQuestion); - //update questionResult's qbOption + //update questionResult's qbOption // for (QbOption newOption : modifiedQuestion.getQbQuestion().getQbOptions()) { // if (questionResult.getQbOption().getDisplayOrder() == newOption.getDisplayOrder()) { // questionResult.setQbOption(newOption); @@ -2272,29 +2272,30 @@ // } //update questionResult's optionAnswers for (AssessmentOptionAnswer oldOptionAnswer : questionResult.getOptionAnswers()) { - + //find according old qbOption QbOption oldOption = null; - for (QbOption oldOptionIter: oldQuestion.getQbQuestion().getQbOptions()) { + for (QbOption oldOptionIter : oldQuestion.getQbQuestion().getQbOptions()) { if (oldOptionIter.getUid().equals(oldOptionAnswer.getOptionUid())) { oldOption = oldOptionIter; } } - + //update for (QbOption newOption : modifiedQuestion.getQbQuestion().getQbOptions()) { if (oldOption.getDisplayOrder() == newOption.getDisplayOrder()) { oldOptionAnswer.setOptionUid(newOption.getUid()); break; } } - } - + } + //actually recalculate marks QuestionDTO modifiedQuestionDto = new QuestionDTO(modifiedQuestion); modifiedQuestionDto.setMaxMark(oldResultMaxMark); loadupQuestionResultIntoQuestionDto(modifiedQuestionDto, questionResult); - calculateAnswerMark(assessmentUid, user.getUserId(), questionResult, modifiedQuestionDto); + calculateAnswerMark(assessmentUid, user.getUserId(), questionResult, + modifiedQuestionDto); assessmentQuestionResultDao.saveObject(questionResult); float newQuestionAnswerMark = questionResult.getMark(); @@ -2852,18 +2853,18 @@ } else if (qbQuestion.getType() == QbQuestion.TYPE_MATCHING_PAIRS) { } else if (qbQuestion.getType() == QbQuestion.TYPE_SHORT_ANSWER) { - answers.add(questionResult.getAnswerString()); + answers.add(questionResult.getAnswer()); } else if (qbQuestion.getType() == QbQuestion.TYPE_NUMERICAL) { - answers.add(questionResult.getAnswerString()); + answers.add(questionResult.getAnswer()); } else if (qbQuestion.getType() == QbQuestion.TYPE_TRUE_FALSE) { - if (questionResult.getAnswerString() != null) { + if (questionResult.getAnswer() != null) { answers.add("" + questionResult.getAnswerBoolean()); } } else if (qbQuestion.getType() == QbQuestion.TYPE_ESSAY) { - answers.add(questionResult.getAnswerString()); + answers.add(questionResult.getAnswer()); } else if (qbQuestion.getType() == QbQuestion.TYPE_ORDERING) { Index: lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/util/AssessmentEscapeUtils.java =================================================================== diff -u -rb41c8a8bc5134e78088378360a37f3906fadb3de -r2b3d3b2f61d37cf2fa7cccc0cf4565e5dfc4b88e --- lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/util/AssessmentEscapeUtils.java (.../AssessmentEscapeUtils.java) (revision b41c8a8bc5134e78088378360a37f3906fadb3de) +++ lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/util/AssessmentEscapeUtils.java (.../AssessmentEscapeUtils.java) (revision 2b3d3b2f61d37cf2fa7cccc0cf4565e5dfc4b88e) @@ -20,7 +20,6 @@ * **************************************************************** */ - package org.lamsfoundation.lams.tool.assessment.util; import java.util.List; @@ -51,7 +50,7 @@ } } } - + /** * Escapes all characters that may brake JS code on assigning Java value to JS String variable (particularly escapes * all quotes in the following way \"). @@ -63,7 +62,7 @@ } } } - + /** * Escapes all characters that may brake JS code on assigning Java value to JS String variable (particularly escapes * all quotes in the following way \"). @@ -75,12 +74,12 @@ } private static void escapeQuotesInQuestionResult(AssessmentQuestionResult questionResult) { - String answerString = questionResult.getAnswerString(); - if (answerString != null) { - String answerStringEscaped = StringEscapeUtils.escapeJavaScript(answerString); - questionResult.setAnswerStringEscaped(answerStringEscaped); + String answer = questionResult.getAnswer(); + if (answer != null) { + String answerEscaped = StringEscapeUtils.escapeJavaScript(answer); + questionResult.setanswerEscaped(answerEscaped); } - + QuestionDTO questionDto = new QuestionDTO(questionResult.getQbToolQuestion()); questionResult.setQuestionDto(questionDto); @@ -162,7 +161,7 @@ case QbQuestion.TYPE_NUMERICAL: case QbQuestion.TYPE_SHORT_ANSWER: case QbQuestion.TYPE_ESSAY: - responseStr.append(questionResult.getAnswerString()); + responseStr.append(questionResult.getAnswer()); break; case QbQuestion.TYPE_ORDERING: @@ -182,7 +181,7 @@ break; case QbQuestion.TYPE_TRUE_FALSE: - if (questionResult.getAnswerString() != null) { + if (questionResult.getAnswer() != null) { responseStr.append(questionResult.getAnswerBoolean()); } break; @@ -211,7 +210,7 @@ } if (questionResult.getQbQuestion().isHedgingJustificationEnabled()) { - responseStr.append(questionResult.getAnswerString()); + responseStr.append(questionResult.getAnswer()); responseStr.append(DELIMITER); } } @@ -233,22 +232,19 @@ if (questionResult != null) { switch (questionResult.getQbQuestion().getType()) { case QbQuestion.TYPE_ESSAY: - String answerString = questionResult.getAnswerString(); - return (answerString == null) ? "" - : answerString.replaceAll("\\<.*?>", "").replaceAll(" ", " "); + String answer = questionResult.getAnswer(); + return (answer == null) ? "" + : answer.replaceAll("\\<.*?>", "").replaceAll(" ", " "); case QbQuestion.TYPE_MATCHING_PAIRS: - return AssessmentEscapeUtils.getOptionResponse(questionResult, - QbQuestion.TYPE_MATCHING_PAIRS); + return AssessmentEscapeUtils.getOptionResponse(questionResult, QbQuestion.TYPE_MATCHING_PAIRS); case QbQuestion.TYPE_MULTIPLE_CHOICE: - return AssessmentEscapeUtils.getOptionResponse(questionResult, - QbQuestion.TYPE_MULTIPLE_CHOICE); + return AssessmentEscapeUtils.getOptionResponse(questionResult, QbQuestion.TYPE_MULTIPLE_CHOICE); case QbQuestion.TYPE_NUMERICAL: - return questionResult.getAnswerString(); + return questionResult.getAnswer(); case QbQuestion.TYPE_ORDERING: - return AssessmentEscapeUtils.getOptionResponse(questionResult, - QbQuestion.TYPE_ORDERING); + return AssessmentEscapeUtils.getOptionResponse(questionResult, QbQuestion.TYPE_ORDERING); case QbQuestion.TYPE_SHORT_ANSWER: - return questionResult.getAnswerString(); + return questionResult.getAnswer(); case QbQuestion.TYPE_TRUE_FALSE: return questionResult.getAnswerBoolean(); case QbQuestion.TYPE_MARK_HEDGING: Index: lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/web/controller/LearningController.java =================================================================== diff -u -rce0d192a20a8de9861342e3e3179cae23f2939a9 -r2b3d3b2f61d37cf2fa7cccc0cf4565e5dfc4b88e --- lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/web/controller/LearningController.java (.../LearningController.java) (revision ce0d192a20a8de9861342e3e3179cae23f2939a9) +++ lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/web/controller/LearningController.java (.../LearningController.java) (revision 2b3d3b2f61d37cf2fa7cccc0cf4565e5dfc4b88e) @@ -766,9 +766,9 @@ for (OptionDTO optionDto : questionDto.getOptionDtos()) { boolean answerBoolean = false; if (questionDto.isMultipleAnswersAllowed()) { - String answerString = request + String answer = request .getParameter(AssessmentConstants.ATTR_QUESTION_PREFIX + i + "_" + optionDto.getUid()); - answerBoolean = !StringUtils.isBlank(answerString); + answerBoolean = !StringUtils.isBlank(answer); } else { String optionUidSelectedStr = request .getParameter(AssessmentConstants.ATTR_QUESTION_PREFIX + i); @@ -788,24 +788,24 @@ } } else if (questionType == QbQuestion.TYPE_SHORT_ANSWER) { - String answerString = request.getParameter(AssessmentConstants.ATTR_QUESTION_PREFIX + i); - questionDto.setAnswerString(answerString); + String answer = request.getParameter(AssessmentConstants.ATTR_QUESTION_PREFIX + i); + questionDto.setAnswer(answer); } else if (questionType == QbQuestion.TYPE_NUMERICAL) { - String answerString = request.getParameter(AssessmentConstants.ATTR_QUESTION_PREFIX + i); - questionDto.setAnswerString(answerString); + String answer = request.getParameter(AssessmentConstants.ATTR_QUESTION_PREFIX + i); + questionDto.setAnswer(answer); } else if (questionType == QbQuestion.TYPE_TRUE_FALSE) { - String answerString = request.getParameter(AssessmentConstants.ATTR_QUESTION_PREFIX + i); - if (answerString != null) { - questionDto.setAnswerBoolean(Boolean.parseBoolean(answerString)); - questionDto.setAnswerString("answered"); + String answer = request.getParameter(AssessmentConstants.ATTR_QUESTION_PREFIX + i); + if (answer != null) { + questionDto.setAnswerBoolean(Boolean.parseBoolean(answer)); + questionDto.setAnswer("answered"); } } else if (questionType == QbQuestion.TYPE_ESSAY) { - String answerString = request.getParameter(AssessmentConstants.ATTR_QUESTION_PREFIX + i); - answerString = answerString.replaceAll("[\n\r\f]", ""); - questionDto.setAnswerString(answerString); + String answer = request.getParameter(AssessmentConstants.ATTR_QUESTION_PREFIX + i); + answer = answer.replaceAll("[\n\r\f]", ""); + questionDto.setAnswer(answer); } else if (questionType == QbQuestion.TYPE_ORDERING) { for (OptionDTO optionDto : questionDto.getOptionDtos()) { @@ -831,9 +831,9 @@ //store justification of hedging if enabled if (questionDto.isHedgingJustificationEnabled()) { - String answerString = request.getParameter(AssessmentConstants.ATTR_QUESTION_PREFIX + i); -// answerString = answerString.replaceAll("[\n\r\f]", ""); - questionDto.setAnswerString(answerString); + String answer = request.getParameter(AssessmentConstants.ATTR_QUESTION_PREFIX + i); +// answer = answer.replaceAll("[\n\r\f]", ""); + questionDto.setAnswer(answer); } } @@ -891,7 +891,7 @@ || (questionType == QbQuestion.TYPE_NUMERICAL) || (questionType == QbQuestion.TYPE_TRUE_FALSE) || (questionType == QbQuestion.TYPE_ESSAY)) { - isAnswered |= StringUtils.isNotBlank(questionDto.getAnswerString()); + isAnswered |= StringUtils.isNotBlank(questionDto.getAnswer()); } else if (questionType == QbQuestion.TYPE_ORDERING) { isAnswered = true; @@ -907,7 +907,7 @@ //verify justification of hedging is provided if it was enabled if (questionDto.isHedgingJustificationEnabled()) { - isAnswered &= StringUtils.isNotBlank(questionDto.getAnswerString()); + isAnswered &= StringUtils.isNotBlank(questionDto.getAnswer()); } } @@ -921,13 +921,13 @@ if ((questionDto.getType() == QbQuestion.TYPE_ESSAY) && (questionDto.getMinWordsLimit() > 0)) { - if (questionDto.getAnswerString() == null) { + if (questionDto.getAnswer() == null) { isAllQuestionsReachedMinWordsLimit = false; break; } else { boolean isMinWordsLimitReached = ValidationUtil.isMinWordsLimitReached( - questionDto.getAnswerString(), questionDto.getMinWordsLimit(), + questionDto.getAnswer(), questionDto.getMinWordsLimit(), questionDto.isAllowRichEditor()); // check min words limit is reached if (!isMinWordsLimitReached) { Index: lams_tool_assessment/web/pages/learning/parts/essay.jsp =================================================================== diff -u -rc5ccd8770302c86aeedce265ffd1b17494ccb463 -r2b3d3b2f61d37cf2fa7cccc0cf4565e5dfc4b88e --- lams_tool_assessment/web/pages/learning/parts/essay.jsp (.../essay.jsp) (revision c5ccd8770302c86aeedce265ffd1b17494ccb463) +++ lams_tool_assessment/web/pages/learning/parts/essay.jsp (.../essay.jsp) (revision 2b3d3b2f61d37cf2fa7cccc0cf4565e5dfc4b88e) @@ -94,10 +94,10 @@ - + - ${question.answerString} + ${question.answer} Index: lams_tool_assessment/web/pages/learning/parts/markhedging.jsp =================================================================== diff -u -r394f403c289f0fd7808c228840bead5c4e7d5d32 -r2b3d3b2f61d37cf2fa7cccc0cf4565e5dfc4b88e --- lams_tool_assessment/web/pages/learning/parts/markhedging.jsp (.../markhedging.jsp) (revision 394f403c289f0fd7808c228840bead5c4e7d5d32) +++ lams_tool_assessment/web/pages/learning/parts/markhedging.jsp (.../markhedging.jsp) (revision 2b3d3b2f61d37cf2fa7cccc0cf4565e5dfc4b88e) @@ -40,7 +40,7 @@ - + Index: lams_tool_assessment/web/pages/learning/parts/numerical.jsp =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -r2b3d3b2f61d37cf2fa7cccc0cf4565e5dfc4b88e --- lams_tool_assessment/web/pages/learning/parts/numerical.jsp (.../numerical.jsp) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ lams_tool_assessment/web/pages/learning/parts/numerical.jsp (.../numerical.jsp) (revision 2b3d3b2f61d37cf2fa7cccc0cf4565e5dfc4b88e) @@ -8,7 +8,7 @@ Index: lams_tool_assessment/web/pages/learning/parts/shortanswer.jsp =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -r2b3d3b2f61d37cf2fa7cccc0cf4565e5dfc4b88e --- lams_tool_assessment/web/pages/learning/parts/shortanswer.jsp (.../shortanswer.jsp) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ lams_tool_assessment/web/pages/learning/parts/shortanswer.jsp (.../shortanswer.jsp) (revision 2b3d3b2f61d37cf2fa7cccc0cf4565e5dfc4b88e) @@ -8,7 +8,7 @@
- disabled="disabled" />
Index: lams_tool_assessment/web/pages/learning/parts/truefalse.jsp =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -r2b3d3b2f61d37cf2fa7cccc0cf4565e5dfc4b88e --- lams_tool_assessment/web/pages/learning/parts/truefalse.jsp (.../truefalse.jsp) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ lams_tool_assessment/web/pages/learning/parts/truefalse.jsp (.../truefalse.jsp) (revision 2b3d3b2f61d37cf2fa7cccc0cf4565e5dfc4b88e) @@ -20,7 +20,7 @@ Index: lams_tool_assessment/web/pages/learning/results/essay.jsp =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -r2b3d3b2f61d37cf2fa7cccc0cf4565e5dfc4b88e --- lams_tool_assessment/web/pages/learning/results/essay.jsp (.../essay.jsp) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ lams_tool_assessment/web/pages/learning/results/essay.jsp (.../essay.jsp) (revision 2b3d3b2f61d37cf2fa7cccc0cf4565e5dfc4b88e) @@ -8,7 +8,7 @@
- disabled="disabled" />
checked="checked" + checked="checked" disabled="disabled" />
- ${question.answerString} + ${question.answer}
@@ -33,7 +33,7 @@ - + Index: lams_tool_assessment/web/pages/learning/results/historyresponses.jsp =================================================================== diff -u -r9c3a64b840753192b333afb73c8fe7bdb54be638 -r2b3d3b2f61d37cf2fa7cccc0cf4565e5dfc4b88e --- lams_tool_assessment/web/pages/learning/results/historyresponses.jsp (.../historyresponses.jsp) (revision 9c3a64b840753192b333afb73c8fe7bdb54be638) +++ lams_tool_assessment/web/pages/learning/results/historyresponses.jsp (.../historyresponses.jsp) (revision 2b3d3b2f61d37cf2fa7cccc0cf4565e5dfc4b88e) @@ -67,18 +67,18 @@ - ${questionResult.answerString} + ${questionResult.answer} - ${questionResult.answerString} + ${questionResult.answer} - + ${questionResult.answerBoolean} - ${questionResult.answerString} + ${questionResult.answer} Index: lams_tool_assessment/web/pages/learning/results/markhedging.jsp =================================================================== diff -u -r9c3a64b840753192b333afb73c8fe7bdb54be638 -r2b3d3b2f61d37cf2fa7cccc0cf4565e5dfc4b88e --- lams_tool_assessment/web/pages/learning/results/markhedging.jsp (.../markhedging.jsp) (revision 9c3a64b840753192b333afb73c8fe7bdb54be638) +++ lams_tool_assessment/web/pages/learning/results/markhedging.jsp (.../markhedging.jsp) (revision 2b3d3b2f61d37cf2fa7cccc0cf4565e5dfc4b88e) @@ -54,7 +54,7 @@ - + Index: lams_tool_assessment/web/pages/learning/results/numerical.jsp =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -r2b3d3b2f61d37cf2fa7cccc0cf4565e5dfc4b88e --- lams_tool_assessment/web/pages/learning/results/numerical.jsp (.../numerical.jsp) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ lams_tool_assessment/web/pages/learning/results/numerical.jsp (.../numerical.jsp) (revision 2b3d3b2f61d37cf2fa7cccc0cf4565e5dfc4b88e) @@ -17,7 +17,7 @@ - Index: lams_tool_assessment/web/pages/learning/results/shortanswer.jsp =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -r2b3d3b2f61d37cf2fa7cccc0cf4565e5dfc4b88e --- lams_tool_assessment/web/pages/learning/results/shortanswer.jsp (.../shortanswer.jsp) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ lams_tool_assessment/web/pages/learning/results/shortanswer.jsp (.../shortanswer.jsp) (revision 2b3d3b2f61d37cf2fa7cccc0cf4565e5dfc4b88e) @@ -17,7 +17,7 @@ - Index: lams_tool_assessment/web/pages/learning/results/truefalse.jsp =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -r2b3d3b2f61d37cf2fa7cccc0cf4565e5dfc4b88e --- lams_tool_assessment/web/pages/learning/results/truefalse.jsp (.../truefalse.jsp) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ lams_tool_assessment/web/pages/learning/results/truefalse.jsp (.../truefalse.jsp) (revision 2b3d3b2f61d37cf2fa7cccc0cf4565e5dfc4b88e) @@ -9,7 +9,7 @@ - @@ -39,7 +39,7 @@ - @@ -57,7 +57,7 @@ checked="checked" + checked="checked" disabled="disabled" /> Index: lams_tool_assessment/web/pages/monitoring/parts/userresponse.jsp =================================================================== diff -u -r9c3a64b840753192b333afb73c8fe7bdb54be638 -r2b3d3b2f61d37cf2fa7cccc0cf4565e5dfc4b88e --- lams_tool_assessment/web/pages/monitoring/parts/userresponse.jsp (.../userresponse.jsp) (revision 9c3a64b840753192b333afb73c8fe7bdb54be638) +++ lams_tool_assessment/web/pages/monitoring/parts/userresponse.jsp (.../userresponse.jsp) (revision 2b3d3b2f61d37cf2fa7cccc0cf4565e5dfc4b88e) @@ -35,21 +35,21 @@ - responseStr +="${fn:escapeXml(questionResult.answerStringEscaped)}"; + responseStr +="${fn:escapeXml(questionResult.answerEscaped)}"; - responseStr +="${questionResult.answerStringEscaped}"; + responseStr +="${questionResult.answerEscaped}"; - + responseStr +="${questionResult.answerBoolean}"; - responseStr +="${questionResult.answerStringEscaped}"; + responseStr +="${questionResult.answerEscaped}"; @@ -85,7 +85,7 @@ - responseStr +="${questionResult.answerStringEscaped}"; + responseStr +="${questionResult.answerEscaped}"; Index: lams_tool_assessment/web/pages/tblmonitoring/userresponse.jsp =================================================================== diff -u -r9c3a64b840753192b333afb73c8fe7bdb54be638 -r2b3d3b2f61d37cf2fa7cccc0cf4565e5dfc4b88e --- lams_tool_assessment/web/pages/tblmonitoring/userresponse.jsp (.../userresponse.jsp) (revision 9c3a64b840753192b333afb73c8fe7bdb54be638) +++ lams_tool_assessment/web/pages/tblmonitoring/userresponse.jsp (.../userresponse.jsp) (revision 2b3d3b2f61d37cf2fa7cccc0cf4565e5dfc4b88e) @@ -35,21 +35,21 @@ - ${fn:escapeXml(questionResult.answerString)} + ${fn:escapeXml(questionResult.answer)} - ${questionResult.answerString} + ${questionResult.answer} - + ${questionResult.answerBoolean} - ${questionResult.answerString} + ${questionResult.answer} @@ -85,7 +85,7 @@ - ${questionResult.answerString} + ${questionResult.answer} Index: lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/dao/hibernate/QaUsrRespDAO.java =================================================================== diff -u -r69092337b728f903f824a74377bd0ebf9391120c -r2b3d3b2f61d37cf2fa7cccc0cf4565e5dfc4b88e --- lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/dao/hibernate/QaUsrRespDAO.java (.../QaUsrRespDAO.java) (revision 69092337b728f903f824a74377bd0ebf9391120c) +++ lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/dao/hibernate/QaUsrRespDAO.java (.../QaUsrRespDAO.java) (revision 2b3d3b2f61d37cf2fa7cccc0cf4565e5dfc4b88e) @@ -43,16 +43,16 @@ @Repository public class QaUsrRespDAO extends LAMSBaseDAO implements IQaUsrRespDAO { private static final String LOAD_ATTEMPT_FOR_USER_AND_QUESTION = "from qaUsrResp in class QaUsrResp " - + "where qaUsrResp.qaQueUser.queUsrId=:queUsrId and qaUsrResp.qaQuestion.uid=:questionId"; + + "where qaUsrResp.qaQueUser.queUsrId=:queUsrId and qaUsrResp.qbToolQuestion.uid=:questionId"; private static final String LOAD_ATTEMPT_FOR_SESSION_AND_QUESTION = "from qaUsrResp in class QaUsrResp " - + " where qaUsrResp.qaQueUser.qaSession.qaSessionId=:qaSessionId and qaUsrResp.qaQuestion.uid=:questionId"; + + " where qaUsrResp.qaQueUser.qaSession.qaSessionId=:qaSessionId and qaUsrResp.qbToolQuestion.uid=:questionId"; private static final String LOAD_ATTEMPT_FOR_USER = "from qaUsrResp in class QaUsrResp " - + "where qaUsrResp.qaQueUser.uid=:userUid order by qaUsrResp.qaQuestion.displayOrder asc"; + + "where qaUsrResp.qaQueUser.uid=:userUid order by qaUsrResp.qbToolQuestion.displayOrder asc"; private static final String GET_COUNT_RESPONSES_BY_QACONTENT = "SELECT COUNT(*) from " + QaUsrResp.class.getName() - + " as r where r.qaQuestion.qaContent.qaContentId=?"; + + " as r where r.qbToolQuestion.toolContentId=?"; @Override public void createUserResponse(QaUsrResp qaUsrResp) { @@ -61,7 +61,7 @@ @Override public QaUsrResp getResponseById(Long responseId) { - return (QaUsrResp) getSession().get(QaUsrResp.class, responseId); + return getSession().get(QaUsrResp.class, responseId); } /** @@ -81,7 +81,8 @@ @Override public QaUsrResp getResponseByUserAndQuestion(final Long queUsrId, final Long questionId) { List list = getSessionFactory().getCurrentSession().createQuery(LOAD_ATTEMPT_FOR_USER_AND_QUESTION) - .setParameter("queUsrId", queUsrId.longValue()).setParameter("questionId", questionId.longValue()).list(); + .setParameter("queUsrId", queUsrId.longValue()).setParameter("questionId", questionId.longValue()) + .list(); if (list == null || list.size() == 0) { return null; } else { @@ -93,7 +94,8 @@ @Override public List getResponseBySessionAndQuestion(final Long qaSessionId, final Long questionId) { return getSessionFactory().getCurrentSession().createQuery(LOAD_ATTEMPT_FOR_SESSION_AND_QUESTION) - .setParameter("qaSessionId", qaSessionId.longValue()).setParameter("questionId", questionId.longValue()).list(); + .setParameter("qaSessionId", qaSessionId.longValue()).setParameter("questionId", questionId.longValue()) + .list(); } private String buildNameSearch(String searchString, String userRef) { @@ -113,36 +115,34 @@ private static final String SQL_LOAD_ATTEMPT_FOR_SESSION_AND_QUESTION_LIMIT_WITH_NAME_SEARCH_AVG_RATING_SELECT = "SELECT resp.*, AVG(rating.rating) avg_rating "; private static final String SQL_LOAD_ATTEMPT_FOR_SESSION_AND_QUESTION_LIMIT_WITH_NAME_SEARCH_AVG_RATING_FROM = " FROM tl_laqa11_usr_resp resp "; - private static final String SQL_LOAD_ATTEMPT_FOR_SESSION_AND_QUESTION_LIMIT_WITH_NAME_SEARCH_AVG_RATING_JOIN = " JOIN tl_laqa11_que_usr usr" - + " ON resp.answer IS NOT NULL AND resp.qa_que_content_id = :questionId AND resp.que_usr_id = usr.uid " - + " AND usr.que_usr_id!=:excludeUserId " + " JOIN tl_laqa11_session sess " - + " ON usr.qa_session_id = sess.uid AND sess.qa_session_id = :qaSessionId "; + private static final String SQL_LOAD_ATTEMPT_FOR_SESSION_AND_QUESTION_LIMIT_WITH_NAME_SEARCH_AVG_RATING_JOIN = " JOIN lams_qb_tool_answer ans ON ans.uid = resp.uid " + + " AND ans.answer IS NOT NULL AND ans.tool_question_uid = :questionId JOIN tl_laqa11_que_usr usr" + + " ON resp.que_usr_id = usr.uid AND usr.que_usr_id!=:excludeUserId " + + " JOIN tl_laqa11_session sess ON usr.qa_session_id = sess.uid AND sess.qa_session_id = :qaSessionId"; private static final String SQL_LOAD_ATTEMPT_FOR_SESSION_AND_QUESTION_LIMIT_WITH_NAME_SEARCH_AVG_RATING_JOIN_RATING = " LEFT JOIN (" - + " SELECT rat.item_id, rat.rating FROM lams_rating rat" + " JOIN lams_rating_criteria crit" + + " SELECT rat.item_id, rat.rating FROM lams_rating rat JOIN lams_rating_criteria crit" + " ON rat.rating_criteria_id = crit.rating_criteria_id AND crit.tool_content_id = :toolContentId" - + " ) rating" + " ON rating.item_id = resp.response_id" + " GROUP BY response_id" + " ORDER BY "; + + " ) rating ON rating.item_id = resp.uid GROUP BY resp.uid ORDER BY "; private static final String SQL_LOAD_ATTEMPT_FOR_SESSION_AND_QUESTION_LIMIT_WITH_COMMENT_COUNT_SELECT = "SELECT resp.*, COUNT(rating_comment.item_id) count_comment "; private static final String SQL_LOAD_ATTEMPT_FOR_SESSION_AND_QUESTION_LIMIT_WITH_COMMENT_COUNT_FROM = " FROM tl_laqa11_usr_resp resp "; - private static final String SQL_LOAD_ATTEMPT_FOR_SESSION_AND_QUESTION_LIMIT_WITH_COMMENT_COUNT_JOIN = " JOIN tl_laqa11_que_usr usr" - + " ON resp.answer IS NOT NULL AND resp.qa_que_content_id = :questionId AND resp.que_usr_id = usr.uid " - + " AND usr.que_usr_id!=:excludeUserId " + private static final String SQL_LOAD_ATTEMPT_FOR_SESSION_AND_QUESTION_LIMIT_WITH_COMMENT_COUNT_JOIN = " JOIN lams_qb_tool_answer ans ON ans.uid = resp.uid " + + " AND ans.answer IS NOT NULL AND ans.tool_question_uid = :questionId " + + " JOIN tl_laqa11_que_usr usr ON resp.que_usr_id = usr.uid AND usr.que_usr_id!=:excludeUserId " + " JOIN tl_laqa11_session sess " - + " ON usr.qa_session_id = sess.uid AND sess.qa_session_id = :qaSessionId " - + " LEFT JOIN (" + + " ON usr.qa_session_id = sess.uid AND sess.qa_session_id = :qaSessionId LEFT JOIN (" + " SELECT ratcom.item_id FROM lams_rating_comment ratcom JOIN lams_rating_criteria crit" + " ON ratcom.rating_criteria_id = crit.rating_criteria_id AND crit.tool_content_id = :toolContentId" - + " ) rating_comment " - + " ON rating_comment.item_id = resp.response_id "; - private static final String SQL_LOAD_ATTEMPT_FOR_SESSION_AND_QUESTION_LIMIT_WITH_COMMENT_COUNT_ORDER_BY = " GROUP BY response_id ORDER BY count_comment ASC, response_id ASC"; + + " ) rating_comment " + " ON rating_comment.item_id = resp.uid "; + private static final String SQL_LOAD_ATTEMPT_FOR_SESSION_AND_QUESTION_LIMIT_WITH_COMMENT_COUNT_ORDER_BY = " GROUP BY resp.uid ORDER BY count_comment ASC, " + + "resp.uid ASC"; - private static final String LOAD_ATTEMPT_FOR_SESSION_AND_QUESTION_LIMIT_WITH_NAME_SEARCH_SELECT = "SELECT resp.* "; private static final String LOAD_ATTEMPT_FOR_SESSION_AND_QUESTION_LIMIT_WITH_NAME_SEARCH_FROM = " FROM tl_laqa11_usr_resp resp "; - private static final String LOAD_ATTEMPT_FOR_SESSION_AND_QUESTION_LIMIT_WITH_NAME_SEARCH_JOIN1 = " JOIN tl_laqa11_que_usr usr" - + " ON resp.answer IS NOT NULL AND resp.qa_que_content_id = :questionId AND resp.que_usr_id = usr.uid " - + " AND usr.que_usr_id!=:excludeUserId " + private static final String LOAD_ATTEMPT_FOR_SESSION_AND_QUESTION_LIMIT_WITH_NAME_SEARCH_JOIN1 = " JOIN lams_qb_tool_answer ans ON ans.uid = resp.uid " + + " AND ans.answer IS NOT NULL AND ans.tool_question_uid = :questionId JOIN tl_laqa11_que_usr usr" + + " ON resp.que_usr_id = usr.uid " + " AND usr.que_usr_id!=:excludeUserId " + " JOIN tl_laqa11_session sess " + " ON usr.qa_session_id = sess.uid AND sess.qa_session_id = :qaSessionId "; private static final String LOAD_ATTEMPT_FOR_SESSION_AND_QUESTION_LIMIT_WITH_NAME_SEARCH_JOIN2 = " AND sess.qa_group_leader_uid = usr.uid "; @@ -151,7 +151,7 @@ @SuppressWarnings("unchecked") @Override public List getResponsesForTablesorter(final Long toolContentId, final Long qaSessionId, - final Long questionId, final Long excludeUserId, boolean isOnlyLeadersIncluded, int page, int size, + final Long questionId, final Long excludeUserId, boolean isOnlyLeadersIncluded, int page, int size, int sorting, String searchString, IUserManagementService userManagementService) { String sortingOrder; @@ -188,67 +188,65 @@ StringBuilder queryText = null; String[] portraitStrings = userManagementService.getPortraitSQL("usr.que_usr_id"); boolean needsToolContentId = false; - + if (sorting == QaAppConstants.SORT_BY_RATING_ASC || sorting == QaAppConstants.SORT_BY_RATING_DESC) { String filteredSearchString = buildNameSearch(searchString, "usr"); - queryText = new StringBuilder(SQL_LOAD_ATTEMPT_FOR_SESSION_AND_QUESTION_LIMIT_WITH_NAME_SEARCH_AVG_RATING_SELECT) - .append(portraitStrings[0]) - .append(SQL_LOAD_ATTEMPT_FOR_SESSION_AND_QUESTION_LIMIT_WITH_NAME_SEARCH_AVG_RATING_FROM) - .append(SQL_LOAD_ATTEMPT_FOR_SESSION_AND_QUESTION_LIMIT_WITH_NAME_SEARCH_AVG_RATING_JOIN) - .append(filteredSearchString != null ? filteredSearchString : "") - .append(portraitStrings[1]) - .append(SQL_LOAD_ATTEMPT_FOR_SESSION_AND_QUESTION_LIMIT_WITH_NAME_SEARCH_AVG_RATING_JOIN_RATING) - .append(sortingOrder); + queryText = new StringBuilder( + SQL_LOAD_ATTEMPT_FOR_SESSION_AND_QUESTION_LIMIT_WITH_NAME_SEARCH_AVG_RATING_SELECT) + .append(portraitStrings[0]) + .append(SQL_LOAD_ATTEMPT_FOR_SESSION_AND_QUESTION_LIMIT_WITH_NAME_SEARCH_AVG_RATING_FROM) + .append(SQL_LOAD_ATTEMPT_FOR_SESSION_AND_QUESTION_LIMIT_WITH_NAME_SEARCH_AVG_RATING_JOIN) + .append(filteredSearchString != null ? filteredSearchString : "").append(portraitStrings[1]) + .append(SQL_LOAD_ATTEMPT_FOR_SESSION_AND_QUESTION_LIMIT_WITH_NAME_SEARCH_AVG_RATING_JOIN_RATING) + .append(sortingOrder); needsToolContentId = true; - - } else if (sorting == QaAppConstants.SORT_BY_COMMENT_COUNT ) { + } else if (sorting == QaAppConstants.SORT_BY_COMMENT_COUNT) { + queryText = new StringBuilder(SQL_LOAD_ATTEMPT_FOR_SESSION_AND_QUESTION_LIMIT_WITH_COMMENT_COUNT_SELECT) .append(portraitStrings[0]) .append(SQL_LOAD_ATTEMPT_FOR_SESSION_AND_QUESTION_LIMIT_WITH_COMMENT_COUNT_FROM) .append(SQL_LOAD_ATTEMPT_FOR_SESSION_AND_QUESTION_LIMIT_WITH_COMMENT_COUNT_JOIN) .append(portraitStrings[1]) .append(SQL_LOAD_ATTEMPT_FOR_SESSION_AND_QUESTION_LIMIT_WITH_COMMENT_COUNT_ORDER_BY); needsToolContentId = true; - + } else { String filteredSearchString = buildNameSearch(searchString, "usr"); queryText = new StringBuilder(LOAD_ATTEMPT_FOR_SESSION_AND_QUESTION_LIMIT_WITH_NAME_SEARCH_SELECT) .append(portraitStrings[0]) .append(LOAD_ATTEMPT_FOR_SESSION_AND_QUESTION_LIMIT_WITH_NAME_SEARCH_FROM) .append(LOAD_ATTEMPT_FOR_SESSION_AND_QUESTION_LIMIT_WITH_NAME_SEARCH_JOIN1) .append(filteredSearchString != null ? filteredSearchString : "") - .append(isOnlyLeadersIncluded ? LOAD_ATTEMPT_FOR_SESSION_AND_QUESTION_LIMIT_WITH_NAME_SEARCH_JOIN2 : "") + .append(isOnlyLeadersIncluded ? LOAD_ATTEMPT_FOR_SESSION_AND_QUESTION_LIMIT_WITH_NAME_SEARCH_JOIN2 + : "") .append(portraitStrings[1]) - .append(LOAD_ATTEMPT_FOR_SESSION_AND_QUESTION_LIMIT_WITH_NAME_SEARCH_ORDER_BY) - .append(sortingOrder); + .append(LOAD_ATTEMPT_FOR_SESSION_AND_QUESTION_LIMIT_WITH_NAME_SEARCH_ORDER_BY).append(sortingOrder); } - Query query = getSessionFactory().getCurrentSession() - .createSQLQuery(queryText.toString()) - .addEntity(QaUsrResp.class) - .addScalar("portraitId", IntegerType.INSTANCE); + Query query = getSessionFactory().getCurrentSession().createSQLQuery(queryText.toString()) + .addEntity(QaUsrResp.class).addScalar("portraitId", IntegerType.INSTANCE); - if ( needsToolContentId ) { + if (needsToolContentId) { query.setParameter("toolContentId", toolContentId.longValue()); } - query.setParameter("questionId", questionId.longValue()) - .setParameter("qaSessionId", qaSessionId.longValue()) - .setParameter("excludeUserId", excludeUserId.longValue()); + query.setParameter("questionId", questionId.longValue()).setParameter("qaSessionId", qaSessionId.longValue()) + .setParameter("excludeUserId", excludeUserId.longValue()); - if ( size > 0 ) { + if (size > 0) { query.setFirstResult(page * size); query.setMaxResults(size); } - - List list = (List) query.list(); - List respList = new ArrayList(list.size()); - for ( Object[] row : list ) { + + List list = query.list(); + List respList = new ArrayList<>(list.size()); + for (Object[] row : list) { QaUsrResp resp = (QaUsrResp) row[0]; - if ( row.length > 1 && row[1] != null) - resp.setPortraitId(((Number)row[1]).longValue()); + if (row.length > 1 && row[1] != null) { + resp.setPortraitId(((Number) row[1]).longValue()); + } respList.add(resp); } return respList; @@ -274,8 +272,9 @@ private static final String GET_COUNT_RESPONSES_FOR_SESSION_AND_QUESTION_WITH_NAME_SEARCH = "SELECT COUNT(*) FROM " + QaUsrResp.class.getName() - + " AS r WHERE r.answer IS NOT NULL AND r.qaQueUser.qaSession.qaSessionId=? AND r.qaQuestion.uid=? AND r.qaQueUser.queUsrId!=?"; + + " AS r WHERE r.answer IS NOT NULL AND r.qaQueUser.qaSession.qaSessionId=? AND r.qbToolQuestion.uid=? AND r.qaQueUser.queUsrId!=?"; private static final String GET_COUNT_RESPONSES_FOR_SESSION_AND_QUESTION_WITH_NAME_SEARCH2 = " AND r.qaQueUser.qaSession.groupLeader.queUsrId=r.qaQueUser.queUsrId "; + @Override public int getCountResponsesBySessionAndQuestion(final Long qaSessionId, final Long questionId, final Long excludeUserId, boolean isOnlyLeadersIncluded, String searchString) { Index: lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/model/QaQueContent.java =================================================================== diff -u -rf49dd9f6b076828f464fc954bb9c3dc0c87e8b37 -r2b3d3b2f61d37cf2fa7cccc0cf4565e5dfc4b88e --- lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/model/QaQueContent.java (.../QaQueContent.java) (revision f49dd9f6b076828f464fc954bb9c3dc0c87e8b37) +++ lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/model/QaQueContent.java (.../QaQueContent.java) (revision 2b3d3b2f61d37cf2fa7cccc0cf4565e5dfc4b88e) @@ -63,6 +63,7 @@ public QaQueContent(QbQuestion qbQuestion, int displayOrder, QaContent qaContent) { this.qbQuestion = qbQuestion; this.qaContent = qaContent; + this.toolContentId = qaContent.getQaContentId(); this.displayOrder = displayOrder; } Index: lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/model/QaUsrResp.java =================================================================== diff -u -rf49dd9f6b076828f464fc954bb9c3dc0c87e8b37 -r2b3d3b2f61d37cf2fa7cccc0cf4565e5dfc4b88e --- lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/model/QaUsrResp.java (.../QaUsrResp.java) (revision f49dd9f6b076828f464fc954bb9c3dc0c87e8b37) +++ lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/model/QaUsrResp.java (.../QaUsrResp.java) (revision 2b3d3b2f61d37cf2fa7cccc0cf4565e5dfc4b88e) @@ -58,9 +58,6 @@ private static final long serialVersionUID = 3446870699674533029L; - @Column - private String answer; - @Column(name = "answer_autosaved") private String answerAutosaved; @@ -111,14 +108,6 @@ .append("attempt time: ", getAttemptTime()).toString(); } - public String getAnswer() { - return answer; - } - - public void setAnswer(String answer) { - this.answer = answer; - } - public String getAnswerAutosaved() { return answerAutosaved; }