Fisheye: Tag 69092337b728f903f824a74377bd0ebf9391120c refers to a dead (removed) revision in file `lams_tool_laqa/conf/hibernate/mappings/org/lamsfoundation/lams/tool/qa/QaCondition.hbm.xml'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 69092337b728f903f824a74377bd0ebf9391120c refers to a dead (removed) revision in file `lams_tool_laqa/conf/hibernate/mappings/org/lamsfoundation/lams/tool/qa/QaContent.hbm.xml'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 69092337b728f903f824a74377bd0ebf9391120c refers to a dead (removed) revision in file `lams_tool_laqa/conf/hibernate/mappings/org/lamsfoundation/lams/tool/qa/QaQueContent.hbm.xml'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 69092337b728f903f824a74377bd0ebf9391120c refers to a dead (removed) revision in file `lams_tool_laqa/conf/hibernate/mappings/org/lamsfoundation/lams/tool/qa/QaQueUsr.hbm.xml'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 69092337b728f903f824a74377bd0ebf9391120c refers to a dead (removed) revision in file `lams_tool_laqa/conf/hibernate/mappings/org/lamsfoundation/lams/tool/qa/QaSession.hbm.xml'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 69092337b728f903f824a74377bd0ebf9391120c refers to a dead (removed) revision in file `lams_tool_laqa/conf/hibernate/mappings/org/lamsfoundation/lams/tool/qa/QaUsrResp.hbm.xml'. Fisheye: No comparison available. Pass `N' to diff? Index: lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/QaAppConstants.java =================================================================== diff -u -r8384e056e833d8aadcd6cb12a219094f89c67042 -r69092337b728f903f824a74377bd0ebf9391120c --- lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/QaAppConstants.java (.../QaAppConstants.java) (revision 8384e056e833d8aadcd6cb12a219094f89c67042) +++ lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/QaAppConstants.java (.../QaAppConstants.java) (revision 69092337b728f903f824a74377bd0ebf9391120c) @@ -180,8 +180,6 @@ public static final String TOTAL_QUESTION_COUNT = "totalQuestionCount"; public static final String MAP_ANSWERS = "mapAnswers"; public static final String USER_FEEDBACK = "userFeedback"; - public static final String REPORT_TITLE = "reportTitle"; - public static final String MONITORING_REPORT_TITLE = "monitoringReportTitle"; public static final String REPORT_TITLE_LEARNER = "reportTitleLearner"; public static final String END_LEARNING_MESSAGE = "endLearningMessage"; public static final String CHECK_ALL_SESSIONS_COMPLETED = "checkAllSessionsCompleted"; Fisheye: Tag 69092337b728f903f824a74377bd0ebf9391120c refers to a dead (removed) revision in file `lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/QaCondition.java'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 69092337b728f903f824a74377bd0ebf9391120c refers to a dead (removed) revision in file `lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/QaContent.java'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 69092337b728f903f824a74377bd0ebf9391120c refers to a dead (removed) revision in file `lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/QaQueContent.java'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 69092337b728f903f824a74377bd0ebf9391120c refers to a dead (removed) revision in file `lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/QaQueUsr.java'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 69092337b728f903f824a74377bd0ebf9391120c refers to a dead (removed) revision in file `lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/QaSession.java'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 69092337b728f903f824a74377bd0ebf9391120c refers to a dead (removed) revision in file `lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/QaUsrResp.java'. Fisheye: No comparison available. Pass `N' to diff? Index: lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/dao/IQaContentDAO.java =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -r69092337b728f903f824a74377bd0ebf9391120c --- lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/dao/IQaContentDAO.java (.../IQaContentDAO.java) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/dao/IQaContentDAO.java (.../IQaContentDAO.java) (revision 69092337b728f903f824a74377bd0ebf9391120c) @@ -23,8 +23,8 @@ package org.lamsfoundation.lams.tool.qa.dao; -import org.lamsfoundation.lams.tool.qa.QaCondition; -import org.lamsfoundation.lams.tool.qa.QaContent; +import org.lamsfoundation.lams.tool.qa.model.QaCondition; +import org.lamsfoundation.lams.tool.qa.model.QaContent; /** * @author Ozgur Demirtas Index: lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/dao/IQaQueUsrDAO.java =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -r69092337b728f903f824a74377bd0ebf9391120c --- lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/dao/IQaQueUsrDAO.java (.../IQaQueUsrDAO.java) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/dao/IQaQueUsrDAO.java (.../IQaQueUsrDAO.java) (revision 69092337b728f903f824a74377bd0ebf9391120c) @@ -26,8 +26,8 @@ import java.util.List; import org.lamsfoundation.lams.notebook.service.ICoreNotebookService; -import org.lamsfoundation.lams.tool.qa.QaQueUsr; -import org.lamsfoundation.lams.tool.qa.QaSession; +import org.lamsfoundation.lams.tool.qa.model.QaQueUsr; +import org.lamsfoundation.lams.tool.qa.model.QaSession; /** * @author Ozgur Demirtas Index: lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/dao/IQaQuestionDAO.java =================================================================== diff -u -r8846e87b362ce07b580e3750128c5826e667f7e5 -r69092337b728f903f824a74377bd0ebf9391120c --- lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/dao/IQaQuestionDAO.java (.../IQaQuestionDAO.java) (revision 8846e87b362ce07b580e3750128c5826e667f7e5) +++ lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/dao/IQaQuestionDAO.java (.../IQaQuestionDAO.java) (revision 69092337b728f903f824a74377bd0ebf9391120c) @@ -25,7 +25,7 @@ import java.util.List; -import org.lamsfoundation.lams.tool.qa.QaQueContent; +import org.lamsfoundation.lams.tool.qa.model.QaQueContent; /** * @author Ozgur Demirtas Index: lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/dao/IQaSessionDAO.java =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -r69092337b728f903f824a74377bd0ebf9391120c --- lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/dao/IQaSessionDAO.java (.../IQaSessionDAO.java) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/dao/IQaSessionDAO.java (.../IQaSessionDAO.java) (revision 69092337b728f903f824a74377bd0ebf9391120c) @@ -23,7 +23,7 @@ package org.lamsfoundation.lams.tool.qa.dao; -import org.lamsfoundation.lams.tool.qa.QaSession; +import org.lamsfoundation.lams.tool.qa.model.QaSession; /** * @author Ozgur Demirtas Index: lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/dao/IQaUsrRespDAO.java =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -r69092337b728f903f824a74377bd0ebf9391120c --- lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/dao/IQaUsrRespDAO.java (.../IQaUsrRespDAO.java) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/dao/IQaUsrRespDAO.java (.../IQaUsrRespDAO.java) (revision 69092337b728f903f824a74377bd0ebf9391120c) @@ -25,7 +25,7 @@ import java.util.List; -import org.lamsfoundation.lams.tool.qa.QaUsrResp; +import org.lamsfoundation.lams.tool.qa.model.QaUsrResp; import org.lamsfoundation.lams.usermanagement.service.IUserManagementService; /** Index: lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/dao/hibernate/QaContentDAO.java =================================================================== diff -u -r8846e87b362ce07b580e3750128c5826e667f7e5 -r69092337b728f903f824a74377bd0ebf9391120c --- lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/dao/hibernate/QaContentDAO.java (.../QaContentDAO.java) (revision 8846e87b362ce07b580e3750128c5826e667f7e5) +++ lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/dao/hibernate/QaContentDAO.java (.../QaContentDAO.java) (revision 69092337b728f903f824a74377bd0ebf9391120c) @@ -26,10 +26,10 @@ import java.util.List; import org.lamsfoundation.lams.dao.hibernate.LAMSBaseDAO; -import org.lamsfoundation.lams.tool.qa.QaCondition; -import org.lamsfoundation.lams.tool.qa.QaContent; -import org.lamsfoundation.lams.tool.qa.QaQueContent; import org.lamsfoundation.lams.tool.qa.dao.IQaContentDAO; +import org.lamsfoundation.lams.tool.qa.model.QaCondition; +import org.lamsfoundation.lams.tool.qa.model.QaContent; +import org.lamsfoundation.lams.tool.qa.model.QaQueContent; import org.springframework.stereotype.Repository; /** Index: lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/dao/hibernate/QaQueUsrDAO.java =================================================================== diff -u -r8846e87b362ce07b580e3750128c5826e667f7e5 -r69092337b728f903f824a74377bd0ebf9391120c --- lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/dao/hibernate/QaQueUsrDAO.java (.../QaQueUsrDAO.java) (revision 8846e87b362ce07b580e3750128c5826e667f7e5) +++ lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/dao/hibernate/QaQueUsrDAO.java (.../QaQueUsrDAO.java) (revision 69092337b728f903f824a74377bd0ebf9391120c) @@ -33,9 +33,9 @@ import org.lamsfoundation.lams.dao.hibernate.LAMSBaseDAO; import org.lamsfoundation.lams.notebook.service.ICoreNotebookService; import org.lamsfoundation.lams.tool.qa.QaAppConstants; -import org.lamsfoundation.lams.tool.qa.QaQueUsr; -import org.lamsfoundation.lams.tool.qa.QaSession; import org.lamsfoundation.lams.tool.qa.dao.IQaQueUsrDAO; +import org.lamsfoundation.lams.tool.qa.model.QaQueUsr; +import org.lamsfoundation.lams.tool.qa.model.QaSession; import org.springframework.stereotype.Repository; /** Index: lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/dao/hibernate/QaQuestionDAO.java =================================================================== diff -u -r8846e87b362ce07b580e3750128c5826e667f7e5 -r69092337b728f903f824a74377bd0ebf9391120c --- lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/dao/hibernate/QaQuestionDAO.java (.../QaQuestionDAO.java) (revision 8846e87b362ce07b580e3750128c5826e667f7e5) +++ lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/dao/hibernate/QaQuestionDAO.java (.../QaQuestionDAO.java) (revision 69092337b728f903f824a74377bd0ebf9391120c) @@ -27,8 +27,8 @@ import java.util.List; import org.lamsfoundation.lams.dao.hibernate.LAMSBaseDAO; -import org.lamsfoundation.lams.tool.qa.QaQueContent; import org.lamsfoundation.lams.tool.qa.dao.IQaQuestionDAO; +import org.lamsfoundation.lams.tool.qa.model.QaQueContent; import org.springframework.stereotype.Repository; /** Index: lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/dao/hibernate/QaSessionDAO.java =================================================================== diff -u -r8846e87b362ce07b580e3750128c5826e667f7e5 -r69092337b728f903f824a74377bd0ebf9391120c --- lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/dao/hibernate/QaSessionDAO.java (.../QaSessionDAO.java) (revision 8846e87b362ce07b580e3750128c5826e667f7e5) +++ lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/dao/hibernate/QaSessionDAO.java (.../QaSessionDAO.java) (revision 69092337b728f903f824a74377bd0ebf9391120c) @@ -26,8 +26,8 @@ import java.util.List; import org.lamsfoundation.lams.dao.hibernate.LAMSBaseDAO; -import org.lamsfoundation.lams.tool.qa.QaSession; import org.lamsfoundation.lams.tool.qa.dao.IQaSessionDAO; +import org.lamsfoundation.lams.tool.qa.model.QaSession; import org.springframework.stereotype.Repository; /** Index: lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/dao/hibernate/QaUsrRespDAO.java =================================================================== diff -u -r8846e87b362ce07b580e3750128c5826e667f7e5 -r69092337b728f903f824a74377bd0ebf9391120c --- lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/dao/hibernate/QaUsrRespDAO.java (.../QaUsrRespDAO.java) (revision 8846e87b362ce07b580e3750128c5826e667f7e5) +++ lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/dao/hibernate/QaUsrRespDAO.java (.../QaUsrRespDAO.java) (revision 69092337b728f903f824a74377bd0ebf9391120c) @@ -32,8 +32,8 @@ import org.hibernate.type.IntegerType; import org.lamsfoundation.lams.dao.hibernate.LAMSBaseDAO; import org.lamsfoundation.lams.tool.qa.QaAppConstants; -import org.lamsfoundation.lams.tool.qa.QaUsrResp; import org.lamsfoundation.lams.tool.qa.dao.IQaUsrRespDAO; +import org.lamsfoundation.lams.tool.qa.model.QaUsrResp; import org.lamsfoundation.lams.usermanagement.service.IUserManagementService; import org.springframework.stereotype.Repository; @@ -65,7 +65,7 @@ } /** - * @see org.lamsfoundation.lams.tool.qa.dao.IQaUsrRespDAO#updateUserResponse(org.lamsfoundation.lams.tool.qa.QaUsrResp) + * @see org.lamsfoundation.lams.tool.qa.dao.IQaUsrRespDAO#updateUserResponse(org.lamsfoundation.lams.tool.qa.model.QaUsrResp) */ @Override public void updateUserResponse(QaUsrResp resp) { Index: lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/dto/GeneralLearnerFlowDTO.java =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -r69092337b728f903f824a74377bd0ebf9391120c --- lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/dto/GeneralLearnerFlowDTO.java (.../GeneralLearnerFlowDTO.java) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/dto/GeneralLearnerFlowDTO.java (.../GeneralLearnerFlowDTO.java) (revision 69092337b728f903f824a74377bd0ebf9391120c) @@ -28,8 +28,8 @@ import java.util.Set; import org.apache.commons.lang.builder.ToStringBuilder; -import org.lamsfoundation.lams.tool.qa.QaQueContent; -import org.lamsfoundation.lams.tool.qa.QaUsrResp; +import org.lamsfoundation.lams.tool.qa.model.QaQueContent; +import org.lamsfoundation.lams.tool.qa.model.QaUsrResp; /** *

@@ -74,8 +74,6 @@ protected String notebookEntry; - protected String reportTitleLearner; - protected String endLearningMessage; protected String userNameVisible; @@ -257,7 +255,7 @@ .append("lockWhenFinished: ", lockWhenFinished).append("activityTitle: ", activityTitle) .append("countSessionComplete: ", countSessionComplete).append("toolSessionID: ", toolSessionID) .append("currentQuestionIndex: ", currentQuestionIndex) - .append("questionListingMode: ", questionListingMode).append("reportTitleLearner: ", reportTitleLearner) + .append("questionListingMode: ", questionListingMode) .append("userNameVisible: ", userNameVisible).append("requestLearningReport: ", requestLearningReport) .append("requestLearningReportProgress: ", requestLearningReportProgress) .append("requestLearningReportViewOnly: ", requestLearningReportViewOnly) @@ -341,21 +339,6 @@ } /** - * @return Returns the reportTitleLearner. - */ - public String getReportTitleLearner() { - return reportTitleLearner; - } - - /** - * @param reportTitleLearner - * The reportTitleLearner to set. - */ - public void setReportTitleLearner(String reportTitleLearner) { - this.reportTitleLearner = reportTitleLearner; - } - - /** * @return Returns the userNameVisible. */ public String getUserNameVisible() { Index: lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/dto/QaConditionDTO.java =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -r69092337b728f903f824a74377bd0ebf9391120c --- lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/dto/QaConditionDTO.java (.../QaConditionDTO.java) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/dto/QaConditionDTO.java (.../QaConditionDTO.java) (revision 69092337b728f903f824a74377bd0ebf9391120c) @@ -27,8 +27,8 @@ import java.util.TreeSet; import org.lamsfoundation.lams.learningdesign.dto.TextSearchConditionDTO; -import org.lamsfoundation.lams.tool.qa.QaCondition; -import org.lamsfoundation.lams.tool.qa.QaQueContent; +import org.lamsfoundation.lams.tool.qa.model.QaCondition; +import org.lamsfoundation.lams.tool.qa.model.QaQueContent; import org.lamsfoundation.lams.tool.qa.util.QaQueContentComparator; public class QaConditionDTO extends TextSearchConditionDTO { Index: lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/dto/QaQuestionDTO.java =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -r69092337b728f903f824a74377bd0ebf9391120c --- lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/dto/QaQuestionDTO.java (.../QaQuestionDTO.java) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/dto/QaQuestionDTO.java (.../QaQuestionDTO.java) (revision 69092337b728f903f824a74377bd0ebf9391120c) @@ -23,7 +23,7 @@ package org.lamsfoundation.lams.tool.qa.dto; -import org.lamsfoundation.lams.tool.qa.QaQueContent; +import org.lamsfoundation.lams.tool.qa.model.QaQueContent; /** * DTO that holds users attempt history data for jsp purposes Index: lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/model/QaCondition.java =================================================================== diff -u --- lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/model/QaCondition.java (revision 0) +++ lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/model/QaCondition.java (revision 69092337b728f903f824a74377bd0ebf9391120c) @@ -0,0 +1,196 @@ +/**************************************************************** + * Copyright (C) 2005 LAMS Foundation (http://lamsfoundation.org) + * ============================================================= + * License Information: http://lamsfoundation.org/licensing/lams/2.0/ + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2.0 + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 * USA + * + * http://www.gnu.org/licenses/gpl.txt + * **************************************************************** + */ + + +package org.lamsfoundation.lams.tool.qa.model; + +import java.util.Set; +import java.util.SortedSet; +import java.util.TreeSet; + +import javax.persistence.Entity; +import javax.persistence.JoinColumn; +import javax.persistence.JoinTable; +import javax.persistence.ManyToMany; +import javax.persistence.OrderBy; +import javax.persistence.Table; +import javax.persistence.Transient; + +import org.hibernate.annotations.Cascade; +import org.hibernate.annotations.CascadeType; +import org.lamsfoundation.lams.learningdesign.BranchCondition; +import org.lamsfoundation.lams.learningdesign.LearningDesign; +import org.lamsfoundation.lams.learningdesign.TextSearchCondition; +import org.lamsfoundation.lams.tool.OutputType; +import org.lamsfoundation.lams.tool.ToolOutput; +import org.lamsfoundation.lams.tool.ToolOutputFormatException; +import org.lamsfoundation.lams.tool.ToolOutputValue; +import org.lamsfoundation.lams.tool.qa.dto.QaConditionDTO; +import org.lamsfoundation.lams.tool.qa.dto.QaQuestionDTO; +import org.lamsfoundation.lams.tool.qa.util.QaQueContentComparator; +import org.lamsfoundation.lams.tool.qa.util.QaQuestionContentDTOComparator; +import org.lamsfoundation.lams.util.WebUtil; + +/** + * A text search condition with a set of questions on answers to which the + * search should be performed. + * + * @author Marcin Cieslak + * + */ +@Entity +@Table(name = "tl_laqa11_conditions") +public class QaCondition extends TextSearchCondition { + /** + * Questions linked to this condition. Answers to them will be scanned for + * the words that make the condition's parameters. + */ + @ManyToMany + @Cascade({ CascadeType.SAVE_UPDATE }) + @JoinTable(name = "tl_laqa11_condition_questions", joinColumns = @JoinColumn(name = "condition_id"), inverseJoinColumns = @JoinColumn(name = "question_uid")) + @OrderBy("uid ASC") + private Set questions = new TreeSet(new QaQueContentComparator()); + + @Transient + public SortedSet temporaryQuestionDTOSet; + + public QaCondition() { + this.temporaryQuestionDTOSet = new TreeSet(new QaQuestionContentDTOComparator()); + } + + public QaCondition(QaConditionDTO conditionDTO) { + super(conditionDTO); + this.temporaryQuestionDTOSet = new TreeSet(new QaQuestionContentDTOComparator()); + for (QaQueContent question : conditionDTO.getQuestions()) { + QaQueContent questionCopy = new QaQueContent(question.getQuestion(), question.getDisplayOrder(), null, + question.isRequired(), question.getMinWordsLimit(), null); + getQuestions().add(questionCopy); + } + } + + public QaCondition(Long conditionId, Integer conditionUIID, Integer orderId, String name, String displayName, + String allWords, String phrase, String anyWords, String excludedWords, Set questions) { + super(conditionId, conditionUIID, orderId, name, displayName, BranchCondition.OUTPUT_TYPE_COMPLEX, null, null, + null, allWords, phrase, anyWords, excludedWords); + this.temporaryQuestionDTOSet = new TreeSet(new QaQuestionContentDTOComparator()); + setQuestions(questions); + } + + @Override + public boolean isMet(ToolOutput output) throws ToolOutputFormatException { + boolean result = false; + if (output != null) { + ToolOutputValue value = output.getValue(); + if (value != null) { + if (OutputType.OUTPUT_COMPLEX.equals(value.getType())) { + // the condition "knows" it's an array of strings, i.e. user's answers + String[] answers = (String[]) value.getValue(); + result = true; + for (QaQueContent question : questions) { + String textToMatch = answers[question.getDisplayOrder() - 1]; + textToMatch = WebUtil.removeHTMLtags(textToMatch); + result &= matches(textToMatch); + // if at least one answer does not satisfy the condition, there is no need to look further + if (!result) { + break; + } + } + } else { + throw new ToolOutputFormatException("Q&A produced a non-complex tool output."); + } + } + } + return result; + } + + public Set getQuestions() { + return questions; + } + + public void setQuestions(Set questions) { + this.questions = questions; + } + + /** + * Notice that the original questions are assigned to the copy. + */ + @Override + public Object clone() { + Set questionsCopy = new TreeSet(new QaQueContentComparator()); + questionsCopy.addAll(questions); + return new QaCondition(null, null, orderId, name, displayName, allWords, phrase, anyWords, excludedWords, + questionsCopy); + } + + /** + * Notice that questions are copied with very little information and then + * they are assigned to the cloned object. This method is used when + * assigning BranchActivityEntry needs, so only basic information (in fact, + * only order ID) is needed. Also, there should be no link to Q&A content. + */ + @Override + public QaCondition clone(int uiidOffset) { + Integer newConditionUIID = LearningDesign.addOffset(conditionUIID, uiidOffset); + Set questionsCopy = new TreeSet(new QaQueContentComparator()); + + for (QaQueContent question : getQuestions()) { + QaQueContent questionCopy = new QaQueContent(question.getQuestion(), question.getDisplayOrder(), null, + question.isRequired(), question.getMinWordsLimit(), null); + questionsCopy.add(questionCopy); + } + return new QaCondition(null, newConditionUIID, orderId, name, displayName, allWords, phrase, anyWords, + excludedWords, questionsCopy); + } + + /** + * Notice that questions from the cloned (and not the original) tool content + * are assigned to the cloned condition. This method is used for cloning + * tool content. + */ + public QaCondition clone(QaContent qaContent) { + + Set questionsCopy = new TreeSet(new QaQueContentComparator()); + for (QaQueContent conditionQuestion : getQuestions()) { + for (QaQueContent contentQuestion : qaContent.getQaQueContents()) { + if (conditionQuestion.getDisplayOrder() == contentQuestion.getDisplayOrder()) { + questionsCopy.add(contentQuestion); + } + } + } + + return new QaCondition(null, null, orderId, name, displayName, allWords, phrase, anyWords, excludedWords, + questionsCopy); + } + + /** + * The condition must be bound with at least one question. + */ + @Override + protected boolean isValid() { + return getQuestions() != null && !getQuestions().isEmpty(); + } + + @Override + public QaConditionDTO getBranchConditionDTO(Integer toolActivityUIID) { + return new QaConditionDTO(this, toolActivityUIID); + } +} \ No newline at end of file Index: lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/model/QaContent.java =================================================================== diff -u --- lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/model/QaContent.java (revision 0) +++ lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/model/QaContent.java (revision 69092337b728f903f824a74377bd0ebf9391120c) @@ -0,0 +1,633 @@ +/**************************************************************** + * Copyright (C) 2005 LAMS Foundation (http://lamsfoundation.org) + * ============================================================= + * License Information: http://lamsfoundation.org/licensing/lams/2.0/ + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA + * + * http://www.gnu.org/licenses/gpl.txt + * **************************************************************** + */ + + +package org.lamsfoundation.lams.tool.qa.model; + +import java.io.Serializable; +import java.util.Date; +import java.util.Iterator; +import java.util.Set; +import java.util.TreeSet; + +import javax.persistence.CascadeType; +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.JoinColumn; +import javax.persistence.OneToMany; +import javax.persistence.OrderBy; +import javax.persistence.Table; + +import org.apache.commons.lang.builder.EqualsBuilder; +import org.apache.commons.lang.builder.HashCodeBuilder; +import org.apache.commons.lang.builder.ToStringBuilder; +import org.lamsfoundation.lams.learningdesign.TextSearchConditionComparator; +import org.lamsfoundation.lams.rating.model.LearnerItemRatingCriteria; + +/** + * QaContent Value Object The value object that maps to our model database table: tl_laqa11_content The relevant + * hibernate mapping resides in: QaContent.hbm.xml + * + * Holds content representation for the tool. Default content is made available to the tool by the database. + * + * @author Ozgur Demirtas + */ +@SuppressWarnings("serial") +@Entity +@Table(name = "tl_laqa11_content") +public class QaContent implements Serializable { + + @Id + @Column + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long uid; + + @Column(name = "qa_content_id") + private Long qaContentId; + + @Column + private String title; + + @Column + private String instructions; + + @Column(name = "created_by") + private long createdBy; + + @Column(name = "define_later") + private boolean defineLater; + + @Column + private boolean reflect; + + @Column + private String reflectionSubject; + + @Column(name = "questions_sequenced") + private boolean questionsSequenced; + + @Column + private boolean lockWhenFinished; + + @Column(name = "no_reedit_allowed") + private boolean noReeditAllowed; + + @Column + private boolean showOtherAnswers; + + @Column(name = "allow_rich_editor") + private boolean allowRichEditor; + + @Column(name = "use_select_leader_tool_ouput") + private boolean useSelectLeaderToolOuput; + + @Column(name = "username_visible") + private boolean usernameVisible; + + @Column(name = "allow_rate_answers") + private boolean allowRateAnswers; + + @Column(name = "notify_response_submit") + private boolean notifyTeachersOnResponseSubmit; + + @Column(name = "creation_date") + private Date creationDate; + + @Column(name = "update_date") + private Date updateDate; + + @Column(name = "submission_deadline") + private Date submissionDeadline; + + @Column(name = "show_other_answers_after_deadline") + private boolean showOtherAnswersAfterDeadline; + + @Column(name = "maximum_rates") + private int maximumRates; + + @Column(name = "minimum_rates") + private int minimumRates; + + @OneToMany(cascade = CascadeType.ALL) + @JoinColumn(name = "tool_content_id", referencedColumnName = "qa_content_id") + @OrderBy("orderId asc") + private Set ratingCriterias; + + @OneToMany(mappedBy = "qaContent", cascade = CascadeType.ALL) + @OrderBy("displayOrder") + private Set qaQueContents; + + @OneToMany(mappedBy = "qaContent", cascade = CascadeType.ALL, orphanRemoval = true) + private Set qaSessions; + + @OneToMany(cascade = CascadeType.ALL) + @JoinColumn(name = "content_uid") + private Set conditions; + + public QaContent() { + conditions = new TreeSet(new TextSearchConditionComparator()); + }; + + /** full constructor */ + public QaContent(Long qaContentId, String title, String instructions, long createdBy, boolean questionsSequenced, + boolean usernameVisible, boolean allowRateAnswers, boolean notifyTeachersOnResponseSubmit, + boolean lockWhenFinished, boolean noReeditAllowed, boolean showOtherAnswers, boolean reflect, + String reflectionSubject, Date creationDate, Date updateDate, Set qaQueContents, + Set qaSessions, Set conditions, boolean allowRichEditor, + boolean useSelectLeaderToolOuput, int maximumRates, int minimumRates, + Set ratingCriterias) { + this.qaContentId = qaContentId; + this.title = title; + this.instructions = instructions; + this.createdBy = createdBy; + this.questionsSequenced = questionsSequenced; + this.usernameVisible = usernameVisible; + this.allowRateAnswers = allowRateAnswers; + this.notifyTeachersOnResponseSubmit = notifyTeachersOnResponseSubmit; + this.lockWhenFinished = lockWhenFinished; + this.noReeditAllowed = noReeditAllowed; + this.showOtherAnswers = showOtherAnswers; + this.reflect = reflect; + this.reflectionSubject = reflectionSubject; + this.creationDate = creationDate; + this.updateDate = updateDate; + this.qaQueContents = qaQueContents; + this.qaSessions = qaSessions; + this.conditions = conditions != null ? conditions + : new TreeSet(new TextSearchConditionComparator()); + this.allowRichEditor = allowRichEditor; + this.useSelectLeaderToolOuput = useSelectLeaderToolOuput; + this.maximumRates = maximumRates; + this.minimumRates = minimumRates; + this.ratingCriterias = ratingCriterias; + } + + /** + * Copy Constructor to create a new qa content instance. Note that we don't copy the qa session data here because the + * qa session will be created after we copied tool content. + * + * @param qa + * the original qa content. + * @param newContentId + * the new qa content id. + * @return the new qa content object. + */ + public static QaContent newInstance(QaContent qa, Long newContentId) { + QaContent newContent = new QaContent(newContentId, qa.getTitle(), qa.getInstructions(), qa.getCreatedBy(), + qa.isQuestionsSequenced(), qa.isUsernameVisible(), qa.isAllowRateAnswers(), + qa.isNotifyTeachersOnResponseSubmit(), qa.isLockWhenFinished(), qa.isNoReeditAllowed(), + qa.isShowOtherAnswers(), qa.isReflect(), qa.getReflectionSubject(), qa.getCreationDate(), + qa.getUpdateDate(), new TreeSet(), new TreeSet(), + new TreeSet(new TextSearchConditionComparator()), qa.isAllowRichEditor(), + qa.isUseSelectLeaderToolOuput(), qa.maximumRates, qa.minimumRates, + new TreeSet()); + + newContent.setQaQueContents(qa.deepCopyQaQueContent(newContent)); + + newContent.setRatingCriterias(qa.deepCopyRatingCriterias(newContent)); + + newContent.setConditions(qa.deepCopyConditions(newContent)); + return newContent; + } + + public Set deepCopyRatingCriterias(QaContent newQaContent) { + + Set newCriterias = new TreeSet(); + for (Iterator i = ratingCriterias.iterator(); i.hasNext();) { + LearnerItemRatingCriteria criteria = i.next(); + LearnerItemRatingCriteria newCriteria = (LearnerItemRatingCriteria) criteria.clone(); + newCriteria.setToolContentId(newQaContent.qaContentId); + newCriterias.add(newCriteria); + } + return newCriterias; + } + + public Set deepCopyQaQueContent(QaContent newQaContent) { + Set newQaQueContent = new TreeSet(); + for (Iterator i = this.getQaQueContents().iterator(); i.hasNext();) { + QaQueContent queContent = i.next(); + newQaQueContent.add(QaQueContent.newInstance(queContent, newQaContent)); + } + return newQaQueContent; + } + + public Set deepCopyConditions(QaContent newQaContent) { + + Set newConditions = new TreeSet(new TextSearchConditionComparator()); + if (getConditions() != null) { + for (QaCondition condition : getConditions()) { + newConditions.add(condition.clone(newQaContent)); + } + } + + return newConditions; + } + + public Set deepCopyQaSession(QaContent newQaSession) { + return new TreeSet(); + } + + public Set getQaQueContents() { + if (qaQueContents == null) { + setQaQueContents(new TreeSet()); + } + return qaQueContents; + } + + public void setQaQueContents(Set qaQueContents) { + this.qaQueContents = qaQueContents; + } + + public Set getQaSessions() { + return qaSessions; + } + + public void setQaSessions(Set qaSessions) { + this.qaSessions = qaSessions; + } + + /** + * @return Returns the qaContentId. + */ + public Long getQaContentId() { + return qaContentId; + } + + /** + * @param qaContentId + * The qaContentId to set. + */ + public void setQaContentId(Long qaContentId) { + this.qaContentId = qaContentId; + } + + /** + * @return Returns the title. + */ + public String getTitle() { + return title; + } + + /** + * @param title + * The title to set. + */ + public void setTitle(String title) { + this.title = title; + } + + @Override + public String toString() { + return new ToStringBuilder(this).append("qaContentId:", getQaContentId()).append("qa title:", getTitle()) + .append("qa instructions:", getInstructions()).append("creator user id", getCreatedBy()) + .append("username_visible:", isUsernameVisible()).append("allow to rate answers:", isAllowRateAnswers()) + .append("defineLater", isDefineLater()).append("reflection subject: ", getReflectionSubject()) + .toString(); + } + + @Override + public boolean equals(Object other) { + if (!(other instanceof QaContent)) { + return false; + } + QaContent castOther = (QaContent) other; + return new EqualsBuilder().append(this.getQaContentId(), castOther.getQaContentId()).isEquals(); + } + + @Override + public int hashCode() { + return new HashCodeBuilder().append(getQaContentId()).toHashCode(); + } + + /** + * @return Returns the createdBy. + */ + public long getCreatedBy() { + return createdBy; + } + + /** + * @param createdBy + * The createdBy to set. + */ + public void setCreatedBy(long createdBy) { + this.createdBy = createdBy; + } + + /** + * @return Returns the defineLater. + */ + public boolean isDefineLater() { + return defineLater; + } + + /** + * @param defineLater + * The defineLater to set. + */ + public void setDefineLater(boolean defineLater) { + this.defineLater = defineLater; + } + + /** + * @return Returns the instructions. + */ + public String getInstructions() { + return instructions; + } + + /** + * @param instructions + * The instructions to set. + */ + public void setInstructions(String instructions) { + this.instructions = instructions; + } + + /** + * @return Returns the updateDate. + */ + public Date getUpdateDate() { + return updateDate; + } + + /** + * @param updateDate + * The updateDate to set. + */ + public void setUpdateDate(Date updateDate) { + this.updateDate = updateDate; + } + + /** + * @return Returns the submissionDeadline. + */ + public Date getSubmissionDeadline() { + return submissionDeadline; + } + + /** + * @param submissionDeadline + * The submissionDeadline to set. + */ + public void setSubmissionDeadline(Date submissionDeadline) { + this.submissionDeadline = submissionDeadline; + } + + /** + * @return Returns the showOtherAnswersAfterDeadline. + */ + public boolean isShowOtherAnswersAfterDeadline() { + return showOtherAnswersAfterDeadline; + } + + /** + * @param showOtherAnswersAfterDeadline + * The showOtherAnswersAfterDeadline to set. + */ + public void setShowOtherAnswersAfterDeadline(boolean showOtherAnswersAfterDeadline) { + this.showOtherAnswersAfterDeadline = showOtherAnswersAfterDeadline; + } + + /** + * @return Returns the usernameVisible. + */ + public boolean isUsernameVisible() { + return usernameVisible; + } + + /** + * @param usernameVisible + * The usernameVisible to set. + */ + public void setUsernameVisible(boolean usernameVisible) { + this.usernameVisible = usernameVisible; + } + + /** + * @return Returns the allowRateAnswers. + */ + public boolean isAllowRateAnswers() { + return allowRateAnswers; + } + + /** + * @param allowRateAnswers + * The allowRateAnswers to set. + */ + public void setAllowRateAnswers(boolean allowRateAnswers) { + this.allowRateAnswers = allowRateAnswers; + } + + /** + * @return + */ + public boolean isNotifyTeachersOnResponseSubmit() { + return notifyTeachersOnResponseSubmit; + } + + public void setNotifyTeachersOnResponseSubmit(boolean notifyTeachersOnResponseSubmit) { + this.notifyTeachersOnResponseSubmit = notifyTeachersOnResponseSubmit; + } + + /** + * @return Returns the questionsSequenced. + */ + public boolean isQuestionsSequenced() { + return questionsSequenced; + } + + /** + * @param questionsSequenced + * The questionsSequenced to set. + */ + public void setQuestionsSequenced(boolean questionsSequenced) { + this.questionsSequenced = questionsSequenced; + } + + /** + * @return Returns the uid. + */ + public Long getUid() { + return uid; + } + + /** + * @param uid + * The uid to set. + */ + public void setUid(Long uid) { + this.uid = uid; + } + + /** + * @return Returns the creationDate. + */ + public Date getCreationDate() { + return creationDate; + } + + /** + * @param creationDate + * The creationDate to set. + */ + public void setCreationDate(Date creationDate) { + this.creationDate = creationDate; + } + + /** + * @return Returns the reflect. + */ + public boolean isReflect() { + return reflect; + } + + /** + * @param reflect + * The reflect to set. + */ + public void setReflect(boolean reflect) { + this.reflect = reflect; + } + + /** + * @return Returns the reflectionSubject. + */ + public String getReflectionSubject() { + return reflectionSubject; + } + + /** + * @param reflectionSubject + * The reflectionSubject to set. + */ + public void setReflectionSubject(String reflectionSubject) { + this.reflectionSubject = reflectionSubject; + } + + /** + * @return Returns the lockWhenFinished. + */ + public boolean isLockWhenFinished() { + return lockWhenFinished; + } + + /** + * @param lockWhenFinished + * The lockWhenFinished to set. + */ + public void setLockWhenFinished(boolean lockWhenFinished) { + this.lockWhenFinished = lockWhenFinished; + } + + /** + * @return Returns the noReeditAllowed. + */ + public boolean isNoReeditAllowed() { + return noReeditAllowed; + } + + /** + * @param noReeditAllowed + * The noReeditAllowed to set. + */ + public void setNoReeditAllowed(boolean noReeditAllowed) { + this.noReeditAllowed = noReeditAllowed; + } + + public boolean isAllowRichEditor() { + return allowRichEditor; + } + + public void setAllowRichEditor(boolean allowRichEditor) { + this.allowRichEditor = allowRichEditor; + } + + public boolean isUseSelectLeaderToolOuput() { + return useSelectLeaderToolOuput; + } + + public void setUseSelectLeaderToolOuput(boolean useSelectLeaderToolOuput) { + this.useSelectLeaderToolOuput = useSelectLeaderToolOuput; + } + + /** + * @return Returns the showOtherAnswers. + */ + public boolean isShowOtherAnswers() { + return showOtherAnswers; + } + + /** + * @param showOtherAnswers + * The showOtherAnswers to set. + */ + public void setShowOtherAnswers(boolean showOtherAnswers) { + this.showOtherAnswers = showOtherAnswers; + } + + /** + * @return + */ + public int getMaximumRates() { + return maximumRates; + } + + public void setMaximumRates(int maximumRate) { + this.maximumRates = maximumRate; + } + + /** + * @return + */ + public int getMinimumRates() { + return minimumRates; + } + + public void setMinimumRates(int minimumRates) { + this.minimumRates = minimumRates; + } + + /** + * + * @return + */ + public Set getRatingCriterias() { + return ratingCriterias; + } + + public void setRatingCriterias(Set ratingCriterias) { + this.ratingCriterias = ratingCriterias; + } + + public Set getConditions() { + return conditions; + } + + public void setConditions(Set conditions) { + this.conditions = conditions; + } +} \ No newline at end of file Index: lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/model/QaQueContent.java =================================================================== diff -u --- lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/model/QaQueContent.java (revision 0) +++ lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/model/QaQueContent.java (revision 69092337b728f903f824a74377bd0ebf9391120c) @@ -0,0 +1,241 @@ +/**************************************************************** + * Copyright (C) 2005 LAMS Foundation (http://lamsfoundation.org) + * ============================================================= + * License Information: http://lamsfoundation.org/licensing/lams/2.0/ + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA + * + * http://www.gnu.org/licenses/gpl.txt + * **************************************************************** + */ + +package org.lamsfoundation.lams.tool.qa.model; + +import java.io.Serializable; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.JoinColumn; +import javax.persistence.ManyToOne; +import javax.persistence.Table; + +import org.apache.commons.lang.builder.EqualsBuilder; +import org.apache.commons.lang.builder.HashCodeBuilder; +import org.apache.commons.lang.builder.ToStringBuilder; +import org.lamsfoundation.lams.tool.qa.Nullable; + +/** + * + * @author Ozgur Demirtas + * + * The value object that maps to our model database table: tl_laqa11_que_content The relevant hibernate mapping + * resides in: QaQueContent.hbm.xml + * + * Holds question content within a particular content + */ +@Entity +@Table(name = "tl_laqa11_que_content") +public class QaQueContent implements Serializable, Comparable, Nullable { + + private static final long serialVersionUID = -4028785701106936621L; + + @Id + @Column + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long uid; + + @Column + private String question; + + @Column(name = "display_order") + private int displayOrder; + + @Column + private String feedback; + + @Column(name = "answer_required") + private boolean required; + + @Column(name = "min_words_limit") + private int minWordsLimit; + + @ManyToOne + @JoinColumn(name = "qa_content_id") + private QaContent qaContent; + + /** default constructor */ + public QaQueContent() { + } + + public QaQueContent(String question, int displayOrder, String feedback, boolean required, int minWordsLimit, + QaContent qaContent) { + this.question = question; + this.displayOrder = displayOrder; + this.feedback = feedback; + this.required = required; + this.minWordsLimit = minWordsLimit; + this.qaContent = qaContent; + } + + public static QaQueContent newInstance(QaQueContent queContent, QaContent newQaContent) { + QaQueContent newQueContent = new QaQueContent(queContent.getQuestion(), queContent.getDisplayOrder(), + queContent.getFeedback(), queContent.isRequired(), queContent.minWordsLimit, newQaContent); + return newQueContent; + } + + @Override + public String toString() { + return new ToStringBuilder(this).append("qaQueContentId: ", getUid()).append("question: ", getQuestion()) + .append("displayOrder: ", getDisplayOrder()).toString(); + } + + @Override + public boolean equals(Object other) { + if (!(other instanceof QaQueContent)) { + return false; + } + QaQueContent castOther = (QaQueContent) other; + return new EqualsBuilder().append(this.getUid(), castOther.getUid()).isEquals(); + } + + @Override + public int hashCode() { + return new HashCodeBuilder().append(getUid()).toHashCode(); + } + + /** + * @return Returns the displayOrder. + */ + public int getDisplayOrder() { + return displayOrder; + } + + /** + * @param required + * Does this question have to be answered. + */ + public void setRequired(boolean required) { + this.required = required; + } + + /** + * @return Does this question have to be answered. + */ + public boolean isRequired() { + return required; + } + + /** + * @param minWordsLimit + * minWordsLimit + */ + public void setMinWordsLimit(int minWordsLimit) { + this.minWordsLimit = minWordsLimit; + } + + /** + * @return minWordsLimit + */ + public int getMinWordsLimit() { + return minWordsLimit; + } + + /** + * @param displayOrder + * The displayOrder to set. + */ + public void setDisplayOrder(int displayOrder) { + this.displayOrder = displayOrder; + } + + /** + * @return Returns the qaContent. + */ + public org.lamsfoundation.lams.tool.qa.model.QaContent getQaContent() { + return qaContent; + } + + /** + * @param qaContent + * The qaContent to set. + */ + public void setQaContent(org.lamsfoundation.lams.tool.qa.model.QaContent qaContent) { + this.qaContent = qaContent; + } + + /** + * @return Returns the question. + */ + public String getQuestion() { + return question; + } + + /** + * @param question + * The question to set. + */ + public void setQuestion(String question) { + this.question = question; + } + + @Override + public boolean isNull() { + return false; + } + + @Override + public int compareTo(Object o) { + //QaQueContent queContent = (QaQueContent) o; + + // if the object does not exist yet, then just return any one of 0, -1, 1. Should not make a difference. + /* + * if (uid == null) return 1; else return (int) (uid.longValue() - queContent.uid.longValue()); + */ + return 1; + } + + /** + * @return Returns the uid. + */ + public Long getUid() { + return uid; + } + + /** + * @param uid + * The uid to set. + */ + public void setUid(Long uid) { + this.uid = uid; + } + + /** + * @return Returns the feedback. + */ + public String getFeedback() { + return feedback; + } + + /** + * @param feedback + * The feedback to set. + */ + public void setFeedback(String feedback) { + this.feedback = feedback; + } +} Index: lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/model/QaQueUsr.java =================================================================== diff -u --- lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/model/QaQueUsr.java (revision 0) +++ lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/model/QaQueUsr.java (revision 69092337b728f903f824a74377bd0ebf9391120c) @@ -0,0 +1,267 @@ +/**************************************************************** + * Copyright (C) 2005 LAMS Foundation (http://lamsfoundation.org) + * ============================================================= + * License Information: http://lamsfoundation.org/licensing/lams/2.0/ + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA + * + * http://www.gnu.org/licenses/gpl.txt + * **************************************************************** + */ + +package org.lamsfoundation.lams.tool.qa.model; + +import java.io.Serializable; +import java.util.Set; +import java.util.TreeSet; + +import javax.persistence.CascadeType; +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.JoinColumn; +import javax.persistence.ManyToOne; +import javax.persistence.OneToMany; +import javax.persistence.Table; + +import org.apache.commons.lang.builder.EqualsBuilder; +import org.apache.commons.lang.builder.HashCodeBuilder; +import org.apache.commons.lang.builder.ToStringBuilder; +import org.lamsfoundation.lams.tool.qa.Nullable; + +/** + * + * @author Ozgur Demirtas + * + * The value object that maps to our model database table: + * tl_laqa11_que_usr The relevant hibernate mapping resides in: QaQueUsr.hbm.xml + * + * Represents tool users. + */ +@Entity +@Table(name = "tl_laqa11_que_usr") +public class QaQueUsr implements Serializable, Nullable, Comparable { + + private static final long serialVersionUID = -6768077344827699440L; + + @Id + @Column + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long uid; + + @Column(name = "que_usr_id") + private Long queUsrId; + + @Column + private String username; + + @Column + private String fullname; + + @Column + private boolean responseFinalized; + + @Column + private boolean learnerFinished; + + @ManyToOne + @JoinColumn(name = "qa_session_id") + private QaSession qaSession; + + @OneToMany(mappedBy = "qaQueUser", cascade = CascadeType.ALL, orphanRemoval = true) + private SetqaUsrResps; + + public QaQueUsr() { + this.qaUsrResps = new TreeSet(); + }; + + /** full constructor */ + public QaQueUsr(Long queUsrId, String username, String fullname, QaSession qaSession, Set qaUsrResps) { + this.queUsrId = queUsrId; + this.username = username; + this.fullname = fullname; + this.qaSession = qaSession; + this.qaUsrResps = qaUsrResps != null ? qaUsrResps : new TreeSet(); + } + + /** + * Copy constructor; We copy all data except the hibernate id field. + * + * @param queUsr + * the original survey question user object. + * @return the survey question user object. + */ + public QaQueUsr newInstance(QaQueUsr queUsr) { + return new QaQueUsr(queUsr.getQueUsrId(), queUsr.getUsername(), queUsr.getFullname(), queUsr.getQaSession(), + queUsr.getQaUsrResps()); + } + + /** + * @return Returns the fullname. + */ + public String getFullname() { + return fullname; + } + + /** + * @param fullName + * The fullName to set. + */ + public void setFullname(String fullname) { + this.fullname = fullname; + } + + /** + * @return Returns the qaSession. + */ + public QaSession getQaSession() { + return qaSession; + } + + /** + * @param qaSession + * The qaSession to set. + */ + public void setQaSession(QaSession qaSession) { + this.qaSession = qaSession; + } + + /** + * @return Returns the qaUsrResps. + */ + public Set getQaUsrResps() { + return this.qaUsrResps; + } + + /** + * @param qaUsrResps + * The qaUsrResps to set. + */ + public void setQaUsrResps(Set qaUsrResps) { + this.qaUsrResps = qaUsrResps; + } + + /** + * @return Returns the queUsrId. + */ + public Long getQueUsrId() { + return queUsrId; + } + + /** + * @param queUsrId + * The queUsrId to set. + */ + public void setQueUsrId(Long queUsrId) { + this.queUsrId = queUsrId; + } + + /** + * @return Returns the username. + */ + public String getUsername() { + return username; + } + + /** + * @param username + * The username to set. + */ + public void setUsername(String username) { + this.username = username; + } + + @Override + public String toString() { + return new ToStringBuilder(this).append("queUsrId", getQueUsrId()).append("username", getUsername()) + .append("full name", getFullname()).toString(); + } + + @Override + public boolean equals(Object other) { + if (!(other instanceof QaQueUsr)) { + return false; + } + QaQueUsr castOther = (QaQueUsr) other; + return new EqualsBuilder().append(this.getQueUsrId(), castOther.getQueUsrId()).isEquals(); + } + + @Override + public int hashCode() { + return new HashCodeBuilder().append(getQueUsrId()).toHashCode(); + } + + @Override + public boolean isNull() { + return false; + } + + /** + * @return Returns the uid. + */ + public Long getUid() { + return uid; + } + + /** + * @param uid + * The uid to set. + */ + public void setUid(Long uid) { + this.uid = uid; + } + + /** + * @return Returns the responseFinalized. + */ + public boolean isResponseFinalized() { + return responseFinalized; + } + + /** + * @param responseFinalized + * The responseFinalized to set. + */ + public void setResponseFinalized(boolean responseFinalized) { + this.responseFinalized = responseFinalized; + } + + /** + * @return Returns the learnerFinished. + */ + public boolean isLearnerFinished() { + return learnerFinished; + } + + /** + * @param learnerFinished + * The learnerFinished to set. + */ + public void setLearnerFinished(boolean learnerFinished) { + this.learnerFinished = learnerFinished; + } + + @Override + public int compareTo(QaQueUsr user) { + if (user.getUid() != null && uid != null) { + return user.getUid().compareTo(uid) * -1; + } else { + return 1; + } + } + +} Index: lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/model/QaSession.java =================================================================== diff -u --- lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/model/QaSession.java (revision 0) +++ lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/model/QaSession.java (revision 69092337b728f903f824a74377bd0ebf9391120c) @@ -0,0 +1,233 @@ +/**************************************************************** + * Copyright (C) 2005 LAMS Foundation (http://lamsfoundation.org) + * ============================================================= + * License Information: http://lamsfoundation.org/licensing/lams/2.0/ + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA + * + * http://www.gnu.org/licenses/gpl.txt + * **************************************************************** + */ + +package org.lamsfoundation.lams.tool.qa.model; + +import java.io.Serializable; +import java.util.Date; +import java.util.Set; +import java.util.TreeSet; + +import javax.persistence.CascadeType; +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.JoinColumn; +import javax.persistence.ManyToOne; +import javax.persistence.OneToMany; +import javax.persistence.Table; + +import org.apache.commons.lang.builder.EqualsBuilder; +import org.apache.commons.lang.builder.HashCodeBuilder; +import org.apache.commons.lang.builder.ToStringBuilder; +import org.lamsfoundation.lams.tool.qa.Nullable; + +/** + * + * @author Ozgur Demirtas + * + * QaSession Value Object The value object that maps to our model database + * table: tl_laqa11_session The relevant hibernate mapping resides in: + * QaSession.hbm.xml + * + * Holds tool sessions + */ +@Entity +@Table(name = "tl_laqa11_session") +public class QaSession implements Serializable, Comparable, Nullable { + + public final static String INCOMPLETE = "INCOMPLETE"; + + public static final String COMPLETED = "COMPLETED"; + + @Id + @Column + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long uid; + + @Column(name = "qa_session_id") + private Long qaSessionId; + + @Column(name = "session_start_date") + private Date session_start_date; + + @Column(name = "session_end_date") + private Date session_end_date; + + @Column(name = "session_status") + private String session_status; + + @Column(name = "session_name") + private String session_name; + + @ManyToOne + @JoinColumn(name = "qa_content_id") + private QaContent qaContent; + + @OneToMany(mappedBy = "qaSession", cascade = CascadeType.ALL, orphanRemoval = true) + private Set qaQueUsers; + + @ManyToOne + @JoinColumn(name = "qa_group_leader_uid") + private QaQueUsr groupLeader; + + public QaSession() { + this.qaQueUsers = new TreeSet(); + }; + + public QaSession(Long qaSessionId, Date session_start_date, Date session_end_date, String session_status, + QaContent qaContent, Set qaQueUsers) { + this.qaSessionId = qaSessionId; + this.session_start_date = session_start_date; + this.session_end_date = session_end_date; + this.session_status = session_status; + this.qaContent = qaContent; + this.qaQueUsers = qaQueUsers != null ? qaQueUsers : new TreeSet(); + } + + public QaSession(Long qaSessionId, Date session_start_date, String session_status, String session_name, + QaContent qaContent, Set qaQueUsers) { + this.qaSessionId = qaSessionId; + this.session_start_date = session_start_date; + this.session_status = session_status; + this.session_name = session_name; + this.qaContent = qaContent; + this.qaQueUsers = qaQueUsers != null ? qaQueUsers : new TreeSet(); + } + + public Long getQaSessionId() { + return this.qaSessionId; + } + + public void setQaSessionId(Long qaSessionId) { + this.qaSessionId = qaSessionId; + } + + public Date getSession_start_date() { + return this.session_start_date; + } + + public void setSession_start_date(Date session_start_date) { + this.session_start_date = session_start_date; + } + + public Date getSession_end_date() { + return this.session_end_date; + } + + public void setSession_end_date(Date session_end_date) { + this.session_end_date = session_end_date; + } + + public String getSession_status() { + return session_status; + } + + public void setSession_status(String session_status) { + this.session_status = session_status; + } + + public QaContent getQaContent() { + return this.qaContent; + } + + public void setQaContent(QaContent qaContent) { + this.qaContent = qaContent; + } + + public Set getQaQueUsers() { + return this.qaQueUsers; + } + + public void setQaQueUsers(Set qaQueUsers) { + this.qaQueUsers = qaQueUsers; + } + + @Override + public String toString() { + return new ToStringBuilder(this).append("qaSessionId", getQaSessionId()) + .append("session start date", getSession_start_date()).append("session end date", getSession_end_date()) + .append("session status", getSession_status()).toString(); + } + + @Override + public boolean equals(Object other) { + if (!(other instanceof QaSession)) { + return false; + } + + QaSession castOther = (QaSession) other; + return new EqualsBuilder().append(this.getQaSessionId(), castOther.getQaSessionId()).isEquals(); + + } + + @Override + public int hashCode() { + return new HashCodeBuilder().append(getQaSessionId()).toHashCode(); + + } + + @Override + public int compareTo(Object o) { + QaSession qaSession = (QaSession) o; + return (int) (qaSessionId.longValue() - qaSession.qaSessionId.longValue()); + } + + @Override + public boolean isNull() { + return false; + } + + public Long getUid() { + return uid; + } + + public void setUid(Long uid) { + this.uid = uid; + } + + /** + * @return Returns the session_name. + */ + public String getSession_name() { + return session_name; + } + + /** + * @param session_name + * The session_name to set. + */ + public void setSession_name(String session_name) { + this.session_name = session_name; + } + + public QaQueUsr getGroupLeader() { + return this.groupLeader; + } + + public void setGroupLeader(QaQueUsr groupLeader) { + this.groupLeader = groupLeader; + } +} Index: lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/model/QaUsrResp.java =================================================================== diff -u --- lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/model/QaUsrResp.java (revision 0) +++ lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/model/QaUsrResp.java (revision 69092337b728f903f824a74377bd0ebf9391120c) @@ -0,0 +1,302 @@ +/**************************************************************** + * Copyright (C) 2005 LAMS Foundation (http://lamsfoundation.org) + * ============================================================= + * License Information: http://lamsfoundation.org/licensing/lams/2.0/ + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA + * + * http://www.gnu.org/licenses/gpl.txt + * **************************************************************** + */ + +package org.lamsfoundation.lams.tool.qa.model; + +import java.io.Serializable; +import java.util.Date; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.JoinColumn; +import javax.persistence.ManyToOne; +import javax.persistence.Table; +import javax.persistence.Transient; + +import org.apache.commons.lang.builder.EqualsBuilder; +import org.apache.commons.lang.builder.HashCodeBuilder; +import org.apache.commons.lang.builder.ToStringBuilder; +import org.lamsfoundation.lams.rating.dto.ItemRatingDTO; + +/** + * Holds user responses to questions + * + * QaUsrResp Value Object The value object that maps to our model database + * table: tl_laqa11_usr_resp The relevant hibernate mapping resides in: + * QaQueResp.hbm.xml + * + * @author Ozgur Demirtas + */ + +@Entity +@Table(name = "tl_laqa11_usr_resp") +public class QaUsrResp implements Serializable, Comparable { + + @Id + @Column(name = "response_id") + @GeneratedValue(strategy = GenerationType.IDENTITY) +private Long responseId; + + @Column + private String answer; + + @Column(name = "answer_autosaved") + private String answerAutosaved; + + @Column(name = "attempt_time") + private Date attemptTime; + + @ManyToOne + @JoinColumn(name = "qa_que_content_id") + private QaQueContent qaQuestion; + + @Column + private boolean visible; + + @ManyToOne + @JoinColumn(name = "que_usr_id") + private QaQueUsr qaQueUser; + + @Column(name = "time_zone") + private String timezone; + + @Transient + private ItemRatingDTO itemRatingDto; + + @Transient + private Long portraitId; + + /** full constructor */ + public QaUsrResp(Long responseId, String answer, String answerAutosaved, Date attemptTime, String timezone, + QaQueContent qaQuestion, QaQueUsr qaQueUser) { + this.responseId = responseId; + this.answer = answer; + this.answerAutosaved = answerAutosaved; + this.attemptTime = attemptTime; + this.timezone = timezone; + this.qaQuestion = qaQuestion; + this.qaQueUser = qaQueUser; + } + + public QaUsrResp(String answer, String answerAutosaved, Date attemptTime, String timezone, QaQueContent qaQuestion, + QaQueUsr qaQueUser, boolean visible) { + this.answer = answer; + this.answerAutosaved = answerAutosaved; + this.attemptTime = attemptTime; + this.timezone = timezone; + this.qaQuestion = qaQuestion; + this.qaQueUser = qaQueUser; + this.visible = visible; + } + + /** default constructor */ + public QaUsrResp() { + } + + /** + * Copy construtor. Delegate to full construtor to achieve the object + * creation. + * + * @param response + * the original survey user response + * @return the new qa user response cloned from original object + */ + public static QaUsrResp newInstance(QaUsrResp response) { + return new QaUsrResp(response.getResponseId(), response.getAnswer(), response.getAnswerAutosaved(), + response.getAttemptTime(), response.getTimezone(), response.getQaQuestion(), response.qaQueUser); + } + + @Override + public String toString() { + return new ToStringBuilder(this).append("responseId: ", getResponseId()).append("answer:", getAnswer()) + .append("attempt time: ", getAttemptTime()).toString(); + } + + @Override + public boolean equals(Object other) { + if (!(other instanceof QaUsrResp)) { + return false; + } + QaUsrResp castOther = (QaUsrResp) other; + return new EqualsBuilder().append(this.getResponseId(), castOther.getResponseId()).isEquals(); + } + + @Override + public int hashCode() { + return new HashCodeBuilder().append(getResponseId()).toHashCode(); + } + + /** + * @return Returns the answer. + */ + public String getAnswer() { + return answer; + } + + /** + * @param answer + * The answer to set. + */ + public void setAnswer(String answer) { + this.answer = answer; + } + + /** + * @return Returns the answerAutosaved. + */ + public String getAnswerAutosaved() { + return answerAutosaved; + } + + /** + * @param answerAutosaved + * The answerAutosaved to set. + */ + public void setAnswerAutosaved(String answerAutosaved) { + this.answerAutosaved = answerAutosaved; + } + + /** + * @return Returns the attemptTime. + */ + public Date getAttemptTime() { + return attemptTime; + } + + /** + * @param attemptTime + * The attemptTime to set. + */ + public void setAttemptTime(Date attemptTime) { + this.attemptTime = attemptTime; + } + + /** + * @return Returns the qaQuestion. + */ + public QaQueContent getQaQuestion() { + return qaQuestion; + } + + /** + * @param qaQuestion + * The qaQuestion to set. + */ + public void setQaQuestion(QaQueContent qaQuestion) { + this.qaQuestion = qaQuestion; + } + + /** + * @return Returns the qaQueUsr. + */ + public QaQueUsr getQaQueUser() { + return qaQueUser; + } + + /** + * @param qaQueUsr + * The qaQueUsr to set. + */ + public void setQaQueUser(QaQueUsr qaQueUser) { + this.qaQueUser = qaQueUser; + } + + /** + * @return Returns the responseId. + */ + public Long getResponseId() { + return responseId; + } + + /** + * @param responseId + * The responseId to set. + */ + public void setResponseId(Long responseId) { + this.responseId = responseId; + } + + @Override + public int compareTo(Object o) { + QaUsrResp response = (QaUsrResp) o; + + if (responseId == null) { + return -1; + } + if (response.responseId == null) { + return 1; + } + + return (int) (responseId.longValue() - response.responseId.longValue()); + } + + /** + * @return Returns the timezone. + */ + public String getTimezone() { + return timezone; + } + + /** + * @param timezone + * The timezone to set. + */ + public void setTimezone(String timezone) { + this.timezone = timezone; + } + + /** + * @return Returns the visible. + */ + public boolean isVisible() { + return visible; + } + + /** + * @param visible + * The visible to set. + */ + public void setVisible(boolean visible) { + this.visible = visible; + } + + public ItemRatingDTO getItemRatingDto() { + return itemRatingDto; + } + + public void setItemRatingDto(ItemRatingDTO itemRatingDto) { + this.itemRatingDto = itemRatingDto; + } + + public Long getPortraitId() { + return portraitId; + } + + public void setPortraitId(Long portraitId) { + this.portraitId = portraitId; + } + +} Index: lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/service/IQaService.java =================================================================== diff -u -rf95c86fefb27fbad60e46af80e1a487bae53561a -r69092337b728f903f824a74377bd0ebf9391120c --- lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/service/IQaService.java (.../IQaService.java) (revision f95c86fefb27fbad60e46af80e1a487bae53561a) +++ lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/service/IQaService.java (.../IQaService.java) (revision 69092337b728f903f824a74377bd0ebf9391120c) @@ -33,13 +33,13 @@ import org.lamsfoundation.lams.tool.Tool; import org.lamsfoundation.lams.tool.exception.DataMissingException; import org.lamsfoundation.lams.tool.exception.ToolException; -import org.lamsfoundation.lams.tool.qa.QaCondition; -import org.lamsfoundation.lams.tool.qa.QaContent; -import org.lamsfoundation.lams.tool.qa.QaQueContent; -import org.lamsfoundation.lams.tool.qa.QaQueUsr; -import org.lamsfoundation.lams.tool.qa.QaSession; -import org.lamsfoundation.lams.tool.qa.QaUsrResp; import org.lamsfoundation.lams.tool.qa.dto.QaQuestionDTO; +import org.lamsfoundation.lams.tool.qa.model.QaCondition; +import org.lamsfoundation.lams.tool.qa.model.QaContent; +import org.lamsfoundation.lams.tool.qa.model.QaQueContent; +import org.lamsfoundation.lams.tool.qa.model.QaQueUsr; +import org.lamsfoundation.lams.tool.qa.model.QaSession; +import org.lamsfoundation.lams.tool.qa.model.QaUsrResp; import org.lamsfoundation.lams.tool.qa.util.QaApplicationException; /** Index: lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/service/QaImportContentVersionFilter.java =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -r69092337b728f903f824a74377bd0ebf9391120c --- lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/service/QaImportContentVersionFilter.java (.../QaImportContentVersionFilter.java) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/service/QaImportContentVersionFilter.java (.../QaImportContentVersionFilter.java) (revision 69092337b728f903f824a74377bd0ebf9391120c) @@ -23,8 +23,8 @@ package org.lamsfoundation.lams.tool.qa.service; import org.lamsfoundation.lams.learningdesign.service.ToolContentVersionFilter; -import org.lamsfoundation.lams.tool.qa.QaContent; -import org.lamsfoundation.lams.tool.qa.QaQueContent; +import org.lamsfoundation.lams.tool.qa.model.QaContent; +import org.lamsfoundation.lams.tool.qa.model.QaQueContent; /** * Import filter class for different versions of Q&A content. Index: lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/service/QaOutputFactory.java =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -r69092337b728f903f824a74377bd0ebf9391120c --- lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/service/QaOutputFactory.java (.../QaOutputFactory.java) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/service/QaOutputFactory.java (.../QaOutputFactory.java) (revision 69092337b728f903f824a74377bd0ebf9391120c) @@ -38,12 +38,12 @@ import org.lamsfoundation.lams.tool.ToolOutputDefinition; import org.lamsfoundation.lams.tool.exception.ToolException; import org.lamsfoundation.lams.tool.qa.QaAppConstants; -import org.lamsfoundation.lams.tool.qa.QaCondition; -import org.lamsfoundation.lams.tool.qa.QaContent; -import org.lamsfoundation.lams.tool.qa.QaQueContent; -import org.lamsfoundation.lams.tool.qa.QaQueUsr; -import org.lamsfoundation.lams.tool.qa.QaSession; -import org.lamsfoundation.lams.tool.qa.QaUsrResp; +import org.lamsfoundation.lams.tool.qa.model.QaCondition; +import org.lamsfoundation.lams.tool.qa.model.QaContent; +import org.lamsfoundation.lams.tool.qa.model.QaQueContent; +import org.lamsfoundation.lams.tool.qa.model.QaQueUsr; +import org.lamsfoundation.lams.tool.qa.model.QaSession; +import org.lamsfoundation.lams.tool.qa.model.QaUsrResp; /** * Output factory for Q&A tool. For conditions it provides only one type of output - a user answers represented by an Index: lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/service/QaService.java =================================================================== diff -u -rf95c86fefb27fbad60e46af80e1a487bae53561a -r69092337b728f903f824a74377bd0ebf9391120c --- lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/service/QaService.java (.../QaService.java) (revision f95c86fefb27fbad60e46af80e1a487bae53561a) +++ lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/service/QaService.java (.../QaService.java) (revision 69092337b728f903f824a74377bd0ebf9391120c) @@ -63,18 +63,18 @@ import org.lamsfoundation.lams.tool.exception.DataMissingException; import org.lamsfoundation.lams.tool.exception.ToolException; import org.lamsfoundation.lams.tool.qa.QaAppConstants; -import org.lamsfoundation.lams.tool.qa.QaCondition; -import org.lamsfoundation.lams.tool.qa.QaContent; -import org.lamsfoundation.lams.tool.qa.QaQueContent; -import org.lamsfoundation.lams.tool.qa.QaQueUsr; -import org.lamsfoundation.lams.tool.qa.QaSession; -import org.lamsfoundation.lams.tool.qa.QaUsrResp; import org.lamsfoundation.lams.tool.qa.dao.IQaContentDAO; import org.lamsfoundation.lams.tool.qa.dao.IQaQueUsrDAO; import org.lamsfoundation.lams.tool.qa.dao.IQaQuestionDAO; import org.lamsfoundation.lams.tool.qa.dao.IQaSessionDAO; import org.lamsfoundation.lams.tool.qa.dao.IQaUsrRespDAO; import org.lamsfoundation.lams.tool.qa.dto.QaQuestionDTO; +import org.lamsfoundation.lams.tool.qa.model.QaCondition; +import org.lamsfoundation.lams.tool.qa.model.QaContent; +import org.lamsfoundation.lams.tool.qa.model.QaQueContent; +import org.lamsfoundation.lams.tool.qa.model.QaQueUsr; +import org.lamsfoundation.lams.tool.qa.model.QaSession; +import org.lamsfoundation.lams.tool.qa.model.QaUsrResp; import org.lamsfoundation.lams.tool.qa.util.QaApplicationException; import org.lamsfoundation.lams.tool.service.ILamsToolService; import org.lamsfoundation.lams.usermanagement.User; Fisheye: Tag 69092337b728f903f824a74377bd0ebf9391120c refers to a dead (removed) revision in file `lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/service/QaServiceProxy.java'. Fisheye: No comparison available. Pass `N' to diff? Index: lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/util/LearningUtil.java =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -r69092337b728f903f824a74377bd0ebf9391120c --- lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/util/LearningUtil.java (.../LearningUtil.java) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/util/LearningUtil.java (.../LearningUtil.java) (revision 69092337b728f903f824a74377bd0ebf9391120c) @@ -29,12 +29,12 @@ import javax.servlet.http.HttpServletRequest; import org.lamsfoundation.lams.tool.qa.QaAppConstants; -import org.lamsfoundation.lams.tool.qa.QaContent; -import org.lamsfoundation.lams.tool.qa.QaQueContent; -import org.lamsfoundation.lams.tool.qa.QaQueUsr; -import org.lamsfoundation.lams.tool.qa.QaUsrResp; import org.lamsfoundation.lams.tool.qa.dto.GeneralLearnerFlowDTO; import org.lamsfoundation.lams.tool.qa.dto.QaQuestionDTO; +import org.lamsfoundation.lams.tool.qa.model.QaContent; +import org.lamsfoundation.lams.tool.qa.model.QaQueContent; +import org.lamsfoundation.lams.tool.qa.model.QaQueUsr; +import org.lamsfoundation.lams.tool.qa.model.QaUsrResp; import org.lamsfoundation.lams.tool.qa.service.IQaService; import org.lamsfoundation.lams.tool.qa.web.form.QaLearningForm; import org.lamsfoundation.lams.web.util.AttributeNames; @@ -64,7 +64,6 @@ GeneralLearnerFlowDTO generalLearnerFlowDTO = new GeneralLearnerFlowDTO(); generalLearnerFlowDTO.setActivityTitle(qaContent.getTitle()); generalLearnerFlowDTO.setActivityInstructions(qaContent.getInstructions()); - generalLearnerFlowDTO.setReportTitleLearner(qaContent.getReportTitle()); if (qaContent.isQuestionsSequenced()) { generalLearnerFlowDTO.setQuestionListingMode(QUESTION_LISTING_MODE_SEQUENTIAL); Index: lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/util/QaQueContentComparator.java =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -r69092337b728f903f824a74377bd0ebf9391120c --- lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/util/QaQueContentComparator.java (.../QaQueContentComparator.java) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/util/QaQueContentComparator.java (.../QaQueContentComparator.java) (revision 69092337b728f903f824a74377bd0ebf9391120c) @@ -2,7 +2,7 @@ import java.util.Comparator; -import org.lamsfoundation.lams.tool.qa.QaQueContent; +import org.lamsfoundation.lams.tool.qa.model.QaQueContent; /** * Comparator for QaQueContent. Only the display order is Index: lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/util/QaSessionComparator.java =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -r69092337b728f903f824a74377bd0ebf9391120c --- lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/util/QaSessionComparator.java (.../QaSessionComparator.java) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/util/QaSessionComparator.java (.../QaSessionComparator.java) (revision 69092337b728f903f824a74377bd0ebf9391120c) @@ -2,7 +2,7 @@ import java.util.Comparator; -import org.lamsfoundation.lams.tool.qa.QaSession; +import org.lamsfoundation.lams.tool.qa.model.QaSession; /** * McSessionComparator. Index: lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/util/QaUtils.java =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -r69092337b728f903f824a74377bd0ebf9391120c --- lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/util/QaUtils.java (.../QaUtils.java) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/util/QaUtils.java (.../QaUtils.java) (revision 69092337b728f903f824a74377bd0ebf9391120c) @@ -25,7 +25,6 @@ import javax.servlet.http.HttpServletRequest; -import org.apache.commons.lang.StringUtils; import org.lamsfoundation.lams.tool.ToolAccessMode; import org.lamsfoundation.lams.tool.qa.QaAppConstants; import org.lamsfoundation.lams.tool.qa.web.form.QaAuthoringForm; @@ -136,8 +135,6 @@ request.getSession().removeAttribute(QaAppConstants.TOTAL_QUESTION_COUNT); request.getSession().removeAttribute(QaAppConstants.MAP_ANSWERS); request.getSession().removeAttribute(QaAppConstants.USER_FEEDBACK); - request.getSession().removeAttribute(QaAppConstants.REPORT_TITLE); - request.getSession().removeAttribute(QaAppConstants.MONITORING_REPORT_TITLE); request.getSession().removeAttribute(QaAppConstants.REPORT_TITLE_LEARNER); request.getSession().removeAttribute(QaAppConstants.END_LEARNING_MESSAGE); request.getSession().removeAttribute(QaAppConstants.CHECK_ALL_SESSIONS_COMPLETED); Index: lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/web/controller/QaAuthoringConditionController.java =================================================================== diff -u -re0dcf97659b72435ef0f29c69a4999847ae11d5b -r69092337b728f903f824a74377bd0ebf9391120c --- lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/web/controller/QaAuthoringConditionController.java (.../QaAuthoringConditionController.java) (revision e0dcf97659b72435ef0f29c69a4999847ae11d5b) +++ lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/web/controller/QaAuthoringConditionController.java (.../QaAuthoringConditionController.java) (revision 69092337b728f903f824a74377bd0ebf9391120c) @@ -37,8 +37,8 @@ import org.apache.commons.lang.math.NumberUtils; import org.lamsfoundation.lams.learningdesign.TextSearchConditionComparator; import org.lamsfoundation.lams.tool.qa.QaAppConstants; -import org.lamsfoundation.lams.tool.qa.QaCondition; import org.lamsfoundation.lams.tool.qa.dto.QaQuestionDTO; +import org.lamsfoundation.lams.tool.qa.model.QaCondition; import org.lamsfoundation.lams.tool.qa.service.IQaService; import org.lamsfoundation.lams.tool.qa.web.form.QaConditionForm; import org.lamsfoundation.lams.util.MessageService; Index: lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/web/controller/QaAuthoringController.java =================================================================== diff -u -r8c7616b90a856fd5d40635a57f763d3768ae8cb9 -r69092337b728f903f824a74377bd0ebf9391120c --- lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/web/controller/QaAuthoringController.java (.../QaAuthoringController.java) (revision 8c7616b90a856fd5d40635a57f763d3768ae8cb9) +++ lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/web/controller/QaAuthoringController.java (.../QaAuthoringController.java) (revision 69092337b728f903f824a74377bd0ebf9391120c) @@ -43,10 +43,10 @@ import org.lamsfoundation.lams.rating.model.RatingCriteria; import org.lamsfoundation.lams.tool.ToolAccessMode; import org.lamsfoundation.lams.tool.qa.QaAppConstants; -import org.lamsfoundation.lams.tool.qa.QaCondition; -import org.lamsfoundation.lams.tool.qa.QaContent; -import org.lamsfoundation.lams.tool.qa.QaQueContent; import org.lamsfoundation.lams.tool.qa.dto.QaQuestionDTO; +import org.lamsfoundation.lams.tool.qa.model.QaCondition; +import org.lamsfoundation.lams.tool.qa.model.QaContent; +import org.lamsfoundation.lams.tool.qa.model.QaQueContent; import org.lamsfoundation.lams.tool.qa.service.IQaService; import org.lamsfoundation.lams.tool.qa.util.AuthoringUtil; import org.lamsfoundation.lams.tool.qa.util.QaApplicationException; Index: lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/web/controller/QaLearningController.java =================================================================== diff -u -r8846e87b362ce07b580e3750128c5826e667f7e5 -r69092337b728f903f824a74377bd0ebf9391120c --- lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/web/controller/QaLearningController.java (.../QaLearningController.java) (revision 8846e87b362ce07b580e3750128c5826e667f7e5) +++ lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/web/controller/QaLearningController.java (.../QaLearningController.java) (revision 69092337b728f903f824a74377bd0ebf9391120c) @@ -50,13 +50,13 @@ import org.lamsfoundation.lams.tool.ToolAccessMode; import org.lamsfoundation.lams.tool.exception.ToolException; import org.lamsfoundation.lams.tool.qa.QaAppConstants; -import org.lamsfoundation.lams.tool.qa.QaContent; -import org.lamsfoundation.lams.tool.qa.QaQueContent; -import org.lamsfoundation.lams.tool.qa.QaQueUsr; -import org.lamsfoundation.lams.tool.qa.QaSession; -import org.lamsfoundation.lams.tool.qa.QaUsrResp; import org.lamsfoundation.lams.tool.qa.dto.GeneralLearnerFlowDTO; import org.lamsfoundation.lams.tool.qa.dto.QaQuestionDTO; +import org.lamsfoundation.lams.tool.qa.model.QaContent; +import org.lamsfoundation.lams.tool.qa.model.QaQueContent; +import org.lamsfoundation.lams.tool.qa.model.QaQueUsr; +import org.lamsfoundation.lams.tool.qa.model.QaSession; +import org.lamsfoundation.lams.tool.qa.model.QaUsrResp; import org.lamsfoundation.lams.tool.qa.service.IQaService; import org.lamsfoundation.lams.tool.qa.util.LearningUtil; import org.lamsfoundation.lams.tool.qa.util.QaApplicationException; @@ -211,7 +211,6 @@ generalLearnerFlowDTO.setHttpSessionID(sessionMapId); generalLearnerFlowDTO.setToolSessionID(toolSessionID); generalLearnerFlowDTO.setToolContentID(qaContent.getQaContentId().toString()); - generalLearnerFlowDTO.setReportTitleLearner(qaContent.getReportTitle()); generalLearnerFlowDTO.setLockWhenFinished(new Boolean(lockWhenFinished).toString()); generalLearnerFlowDTO.setNoReeditAllowed(qaContent.isNoReeditAllowed()); Index: lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/web/controller/QaMonitoringController.java =================================================================== diff -u -rf2ad75cef0c507a64877942631fee13efbc6ed50 -r69092337b728f903f824a74377bd0ebf9391120c --- lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/web/controller/QaMonitoringController.java (.../QaMonitoringController.java) (revision f2ad75cef0c507a64877942631fee13efbc6ed50) +++ lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/web/controller/QaMonitoringController.java (.../QaMonitoringController.java) (revision 69092337b728f903f824a74377bd0ebf9391120c) @@ -44,14 +44,14 @@ import org.lamsfoundation.lams.rating.model.LearnerItemRatingCriteria; import org.lamsfoundation.lams.tool.exception.ToolException; import org.lamsfoundation.lams.tool.qa.QaAppConstants; -import org.lamsfoundation.lams.tool.qa.QaContent; -import org.lamsfoundation.lams.tool.qa.QaQueContent; -import org.lamsfoundation.lams.tool.qa.QaQueUsr; -import org.lamsfoundation.lams.tool.qa.QaSession; -import org.lamsfoundation.lams.tool.qa.QaUsrResp; import org.lamsfoundation.lams.tool.qa.dto.GroupDTO; import org.lamsfoundation.lams.tool.qa.dto.QaQuestionDTO; import org.lamsfoundation.lams.tool.qa.dto.QaStatsDTO; +import org.lamsfoundation.lams.tool.qa.model.QaContent; +import org.lamsfoundation.lams.tool.qa.model.QaQueContent; +import org.lamsfoundation.lams.tool.qa.model.QaQueUsr; +import org.lamsfoundation.lams.tool.qa.model.QaSession; +import org.lamsfoundation.lams.tool.qa.model.QaUsrResp; import org.lamsfoundation.lams.tool.qa.service.IQaService; import org.lamsfoundation.lams.tool.qa.util.QaApplicationException; import org.lamsfoundation.lams.tool.qa.util.QaSessionComparator; Index: lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/web/controller/QaPedagogicalPlannerController.java =================================================================== diff -u -r8846e87b362ce07b580e3750128c5826e667f7e5 -r69092337b728f903f824a74377bd0ebf9391120c --- lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/web/controller/QaPedagogicalPlannerController.java (.../QaPedagogicalPlannerController.java) (revision 8846e87b362ce07b580e3750128c5826e667f7e5) +++ lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/web/controller/QaPedagogicalPlannerController.java (.../QaPedagogicalPlannerController.java) (revision 69092337b728f903f824a74377bd0ebf9391120c) @@ -29,8 +29,8 @@ import javax.servlet.http.HttpServletResponse; import org.apache.commons.lang.StringUtils; -import org.lamsfoundation.lams.tool.qa.QaContent; -import org.lamsfoundation.lams.tool.qa.QaQueContent; +import org.lamsfoundation.lams.tool.qa.model.QaContent; +import org.lamsfoundation.lams.tool.qa.model.QaQueContent; import org.lamsfoundation.lams.tool.qa.service.IQaService; import org.lamsfoundation.lams.tool.qa.web.form.QaPedagogicalPlannerForm; import org.lamsfoundation.lams.util.WebUtil; Index: lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/web/form/QaConditionForm.java =================================================================== diff -u -r62aaf160878735888d077bf28fac3c1989bb8fbd -r69092337b728f903f824a74377bd0ebf9391120c --- lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/web/form/QaConditionForm.java (.../QaConditionForm.java) (revision 62aaf160878735888d077bf28fac3c1989bb8fbd) +++ lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/web/form/QaConditionForm.java (.../QaConditionForm.java) (revision 69092337b728f903f824a74377bd0ebf9391120c) @@ -24,8 +24,8 @@ import java.util.Map; -import org.lamsfoundation.lams.tool.qa.QaCondition; import org.lamsfoundation.lams.tool.qa.dto.QaQuestionDTO; +import org.lamsfoundation.lams.tool.qa.model.QaCondition; import org.lamsfoundation.lams.web.form.TextSearchForm; /** Index: lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/web/form/QaPedagogicalPlannerForm.java =================================================================== diff -u -r62aaf160878735888d077bf28fac3c1989bb8fbd -r69092337b728f903f824a74377bd0ebf9391120c --- lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/web/form/QaPedagogicalPlannerForm.java (.../QaPedagogicalPlannerForm.java) (revision 62aaf160878735888d077bf28fac3c1989bb8fbd) +++ lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/web/form/QaPedagogicalPlannerForm.java (.../QaPedagogicalPlannerForm.java) (revision 69092337b728f903f824a74377bd0ebf9391120c) @@ -28,8 +28,8 @@ import org.apache.commons.lang.StringUtils; import org.lamsfoundation.lams.planner.PedagogicalPlannerActivitySpringForm; -import org.lamsfoundation.lams.tool.qa.QaContent; -import org.lamsfoundation.lams.tool.qa.QaQueContent; +import org.lamsfoundation.lams.tool.qa.model.QaContent; +import org.lamsfoundation.lams.tool.qa.model.QaQueContent; import org.lamsfoundation.lams.util.MessageService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; Index: lams_tool_laqa/web/monitoring/SummaryContent.jsp =================================================================== diff -u -r658034e7f07579dd682db62112b9353b3a0d3f65 -r69092337b728f903f824a74377bd0ebf9391120c --- lams_tool_laqa/web/monitoring/SummaryContent.jsp (.../SummaryContent.jsp) (revision 658034e7f07579dd682db62112b9353b3a0d3f65) +++ lams_tool_laqa/web/monitoring/SummaryContent.jsp (.../SummaryContent.jsp) (revision 69092337b728f903f824a74377bd0ebf9391120c) @@ -51,7 +51,7 @@

-