Fisheye: Tag dcdc1487609bd4f00afaa93c09272d84ab0cd325 refers to a dead (removed) revision in file `lams_tool_assessment/conf/hibernate/mappings/org/lamsfoundation/lams/tool/assessment/model/Assessment.hbm.xml'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag dcdc1487609bd4f00afaa93c09272d84ab0cd325 refers to a dead (removed) revision in file `lams_tool_assessment/conf/hibernate/mappings/org/lamsfoundation/lams/tool/assessment/model/AssessmentOptionAnswer.hbm.xml'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag dcdc1487609bd4f00afaa93c09272d84ab0cd325 refers to a dead (removed) revision in file `lams_tool_assessment/conf/hibernate/mappings/org/lamsfoundation/lams/tool/assessment/model/AssessmentOverallFeedback.hbm.xml'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag dcdc1487609bd4f00afaa93c09272d84ab0cd325 refers to a dead (removed) revision in file `lams_tool_assessment/conf/hibernate/mappings/org/lamsfoundation/lams/tool/assessment/model/AssessmentQuestion.hbm.xml'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag dcdc1487609bd4f00afaa93c09272d84ab0cd325 refers to a dead (removed) revision in file `lams_tool_assessment/conf/hibernate/mappings/org/lamsfoundation/lams/tool/assessment/model/AssessmentQuestionOption.hbm.xml'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag dcdc1487609bd4f00afaa93c09272d84ab0cd325 refers to a dead (removed) revision in file `lams_tool_assessment/conf/hibernate/mappings/org/lamsfoundation/lams/tool/assessment/model/AssessmentQuestionResult.hbm.xml'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag dcdc1487609bd4f00afaa93c09272d84ab0cd325 refers to a dead (removed) revision in file `lams_tool_assessment/conf/hibernate/mappings/org/lamsfoundation/lams/tool/assessment/model/AssessmentResult.hbm.xml'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag dcdc1487609bd4f00afaa93c09272d84ab0cd325 refers to a dead (removed) revision in file `lams_tool_assessment/conf/hibernate/mappings/org/lamsfoundation/lams/tool/assessment/model/AssessmentSession.hbm.xml'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag dcdc1487609bd4f00afaa93c09272d84ab0cd325 refers to a dead (removed) revision in file `lams_tool_assessment/conf/hibernate/mappings/org/lamsfoundation/lams/tool/assessment/model/AssessmentUnit.hbm.xml'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag dcdc1487609bd4f00afaa93c09272d84ab0cd325 refers to a dead (removed) revision in file `lams_tool_assessment/conf/hibernate/mappings/org/lamsfoundation/lams/tool/assessment/model/AssessmentUser.hbm.xml'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag dcdc1487609bd4f00afaa93c09272d84ab0cd325 refers to a dead (removed) revision in file `lams_tool_assessment/conf/hibernate/mappings/org/lamsfoundation/lams/tool/assessment/model/QuestionReference.hbm.xml'. Fisheye: No comparison available. Pass `N' to diff? Index: lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/assessmentApplicationContext.xml =================================================================== diff -u -r62aaf160878735888d077bf28fac3c1989bb8fbd -rdcdc1487609bd4f00afaa93c09272d84ab0cd325 --- lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/assessmentApplicationContext.xml (.../assessmentApplicationContext.xml) (revision 62aaf160878735888d077bf28fac3c1989bb8fbd) +++ lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/assessmentApplicationContext.xml (.../assessmentApplicationContext.xml) (revision dcdc1487609bd4f00afaa93c09272d84ab0cd325) @@ -149,7 +149,7 @@ PROPAGATION_REQUIRED,+java.lang.Exception PROPAGATION_REQUIRED,+java.lang.Exception PROPAGATION_REQUIRED,+java.lang.Exception - + readOnly, PROPAGATION_REQUIRED,+java.lang.Exception Index: lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/dao/AssessmentQuestionDAO.java =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -rdcdc1487609bd4f00afaa93c09272d84ab0cd325 --- lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/dao/AssessmentQuestionDAO.java (.../AssessmentQuestionDAO.java) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/dao/AssessmentQuestionDAO.java (.../AssessmentQuestionDAO.java) (revision dcdc1487609bd4f00afaa93c09272d84ab0cd325) @@ -29,6 +29,4 @@ AssessmentQuestion getByUid(Long assessmentQuestionUid); - void evict(Object o); - } Index: lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/dao/hibernate/AssessmentDAOHibernate.java =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -rdcdc1487609bd4f00afaa93c09272d84ab0cd325 --- lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/dao/hibernate/AssessmentDAOHibernate.java (.../AssessmentDAOHibernate.java) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/dao/hibernate/AssessmentDAOHibernate.java (.../AssessmentDAOHibernate.java) (revision dcdc1487609bd4f00afaa93c09272d84ab0cd325) @@ -33,8 +33,6 @@ /** * * @author Andrey Balan - * - * @version $Revision$ */ @Repository public class AssessmentDAOHibernate extends LAMSBaseDAO implements AssessmentDAO { Index: lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/dao/hibernate/AssessmentQuestionDAOHibernate.java =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -rdcdc1487609bd4f00afaa93c09272d84ab0cd325 --- lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/dao/hibernate/AssessmentQuestionDAOHibernate.java (.../AssessmentQuestionDAOHibernate.java) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/dao/hibernate/AssessmentQuestionDAOHibernate.java (.../AssessmentQuestionDAOHibernate.java) (revision dcdc1487609bd4f00afaa93c09272d84ab0cd325) @@ -23,8 +23,6 @@ package org.lamsfoundation.lams.tool.assessment.dao.hibernate; -import java.util.List; - import org.lamsfoundation.lams.dao.hibernate.LAMSBaseDAO; import org.lamsfoundation.lams.tool.assessment.dao.AssessmentQuestionDAO; import org.lamsfoundation.lams.tool.assessment.model.AssessmentQuestion; @@ -38,9 +36,4 @@ return (AssessmentQuestion) this.getObject(AssessmentQuestion.class, assessmentQuestionUid); } - @Override - public void evict(Object o) { - getSession().evict(o); - } - } Index: lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/dao/hibernate/AssessmentQuestionResultDAOHibernate.java =================================================================== diff -u -r70d1adeee6d96136e69aa91bb50d94c4a3b826d2 -rdcdc1487609bd4f00afaa93c09272d84ab0cd325 --- lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/dao/hibernate/AssessmentQuestionResultDAOHibernate.java (.../AssessmentQuestionResultDAOHibernate.java) (revision 70d1adeee6d96136e69aa91bb50d94c4a3b826d2) +++ lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/dao/hibernate/AssessmentQuestionResultDAOHibernate.java (.../AssessmentQuestionResultDAOHibernate.java) (revision dcdc1487609bd4f00afaa93c09272d84ab0cd325) @@ -77,14 +77,13 @@ } @Override - public Float getQuestionResultMark(Long assessmentUid, Long userId, int questionSequenceId) { - Query q = getSession().createQuery(GET_ANSWER_MARK); + public Float getQuestionResultMark(final Long assessmentUid, final Long userId, final int questionSequenceId) { + Query q = getSession().createQuery(GET_ANSWER_MARK, Number.class); q.setParameter("assessmentUid", assessmentUid); q.setParameter("userId", userId); q.setParameter("questionSequenceId", questionSequenceId); q.setMaxResults(1); - Object result = q.uniqueResult(); - return result != null ? ((Number) result).floatValue() : null; - + Number result = q.uniqueResult(); + return result != null ? result.floatValue() : null; } } Index: lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/dao/hibernate/AssessmentResultDAOHibernate.java =================================================================== diff -u -rceb74e3b4097cf6461280448f904fa21a176aaa4 -rdcdc1487609bd4f00afaa93c09272d84ab0cd325 --- lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/dao/hibernate/AssessmentResultDAOHibernate.java (.../AssessmentResultDAOHibernate.java) (revision ceb74e3b4097cf6461280448f904fa21a176aaa4) +++ lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/dao/hibernate/AssessmentResultDAOHibernate.java (.../AssessmentResultDAOHibernate.java) (revision dcdc1487609bd4f00afaa93c09272d84ab0cd325) @@ -40,16 +40,16 @@ public class AssessmentResultDAOHibernate extends LAMSBaseDAO implements AssessmentResultDAO { private static final String FIND_LAST_BY_ASSESSMENT_AND_USER = "FROM " + AssessmentResult.class.getName() - + " AS r WHERE r.user.userId = :userId AND r.assessment.uid=:uid AND r.latest=1"; + + " AS r WHERE r.user.userId =:userId AND r.assessment.uid=:assessmentUid AND r.latest=1"; private static final String FIND_WHETHER_LAST_RESULT_FINISHED = "SELECT (r.finishDate IS NOT NULL) FROM " + AssessmentResult.class.getName() - + " AS r WHERE r.user.userId = :userId AND r.assessment.uid=:uid AND r.latest=1"; + + " AS r WHERE r.user.userId =:userId AND r.assessment.uid=:assessmentUid AND r.latest=1"; private static final String FIND_BY_ASSESSMENT_AND_USER_AND_FINISHED = "FROM " + AssessmentResult.class.getName() + " AS r WHERE r.user.userId = ? AND r.assessment.uid=? AND (r.finishDate != null) ORDER BY r.startDate ASC"; private static final String FIND_LAST_FINISHED_BY_ASSESSMENT_AND_USER = "FROM " + AssessmentResult.class.getName() - + " AS r WHERE r.user.userId = :userId AND r.assessment.uid=:uid AND (r.finishDate != null) AND r.latest=1"; + + " AS r WHERE r.user.userId = :userId AND r.assessment.uid=:assessmentUid AND (r.finishDate != null) AND r.latest=1"; private static final String FIND_BY_SESSION_AND_USER = "FROM " + AssessmentResult.class.getName() + " AS r WHERE r.user.userId = ? AND r.sessionId=?"; @@ -68,7 +68,7 @@ + " AS r WHERE r.user.userId=? AND r.assessment.uid=? AND (r.finishDate != null)"; private static final String LAST_ASSESSMENT_RESULT_GRADE = "select r.grade FROM " + AssessmentResult.class.getName() - + " AS r WHERE r.user.userId=:userId AND r.assessment.uid=:uid AND (r.finishDate != null) AND r.latest=1"; + + " AS r WHERE r.user.userId=:userId AND r.assessment.uid=:assessmentUid AND (r.finishDate != null) AND r.latest=1"; private static final String LAST_ASSESSMENT_RESULT_GRADES_BY_CONTENT_ID = "select r.user.userId, r.grade FROM " + AssessmentResult.class.getName() @@ -120,40 +120,38 @@ @Override public AssessmentResult getLastAssessmentResult(Long assessmentUid, Long userId) { - Query q = getSession().createQuery(FIND_LAST_BY_ASSESSMENT_AND_USER); + Query q = getSession().createQuery(FIND_LAST_BY_ASSESSMENT_AND_USER, AssessmentResult.class); q.setParameter("userId", userId); - q.setParameter("uid", assessmentUid); - return (AssessmentResult) q.uniqueResult(); + q.setParameter("assessmentUid", assessmentUid); + return q.uniqueResult(); } @Override public Boolean isLastAttemptFinishedByUser(AssessmentUser user) { Assessment assessment = user.getAssessment() == null ? user.getSession().getAssessment() : user.getAssessment(); - - Query q = getSession().createQuery(FIND_WHETHER_LAST_RESULT_FINISHED); + Query q = getSession().createQuery(FIND_WHETHER_LAST_RESULT_FINISHED, Boolean.class); q.setParameter("userId", user.getUserId()); - q.setParameter("uid", assessment.getUid()); - return (Boolean) q.uniqueResult(); + q.setParameter("assessmentUid", assessment.getUid()); + return q.uniqueResult(); } @Override public AssessmentResult getLastFinishedAssessmentResult(Long assessmentUid, Long userId) { - - Query q = getSession().createQuery(FIND_LAST_FINISHED_BY_ASSESSMENT_AND_USER); + Query q = getSession().createQuery(FIND_LAST_FINISHED_BY_ASSESSMENT_AND_USER, + AssessmentResult.class); q.setParameter("userId", userId); - q.setParameter("uid", assessmentUid); + q.setParameter("assessmentUid", assessmentUid); return (AssessmentResult) q.uniqueResult(); } @Override public Float getLastTotalScoreByUser(Long assessmentUid, Long userId) { - - Query q = getSession().createQuery(LAST_ASSESSMENT_RESULT_GRADE); + Query q = getSession().createQuery(LAST_ASSESSMENT_RESULT_GRADE, Float.class); q.setParameter("userId", userId); - q.setParameter("uid", assessmentUid); - Object lastTotalScore = q.uniqueResult(); + q.setParameter("assessmentUid", assessmentUid); + Float lastTotalScore = q.uniqueResult(); - return (lastTotalScore == null) ? 0 : (Float)lastTotalScore; + return lastTotalScore == null ? 0 : lastTotalScore; } @Override @@ -165,10 +163,10 @@ @Override public Float getBestTotalScoreByUser(Long sessionId, Long userId) { - Query q = getSession().createQuery(BEST_SCORE_BY_SESSION_AND_USER); + Query q = getSession().createQuery(BEST_SCORE_BY_SESSION_AND_USER, Float.class); q.setParameter("userId", userId); q.setParameter("sessionId", sessionId); - return ((Float) q.uniqueResult()); + return q.uniqueResult(); } @Override @@ -179,11 +177,11 @@ @Override public Float getFirstTotalScoreByUser(Long sessionId, Long userId) { - Query q = getSession().createQuery(FIRST_SCORE_BY_SESSION_AND_USER); + Query q = getSession().createQuery(FIRST_SCORE_BY_SESSION_AND_USER, Float.class); q.setParameter("userId", userId); q.setParameter("sessionId", sessionId); q.setMaxResults(1); - return ((Float) q.uniqueResult()); + return q.uniqueResult(); } @Override @@ -195,19 +193,20 @@ + "INNER JOIN (SELECT user_uid, MIN(start_date) AS startDate FROM tl_laasse10_assessment_result WHERE finish_date IS NOT NULL GROUP BY user_uid) firstRes " + "ON (res.user_uid = firstRes.user_uid AND res.start_date = firstRes.startDate) GROUP BY res.user_uid"; - NativeQuery query = getSession().createNativeQuery(FIRST_SCORES_BY_CONTENT_ID); + NativeQuery query = getSession().createNativeQuery(FIRST_SCORES_BY_CONTENT_ID); query.setParameter("contentId", toolContentId); - List list = query.list(); + @SuppressWarnings("unchecked") + List list = (List) query.list(); return convertResultsToAssessmentUserDTOList(list); } @Override public Float getAvergeTotalScoreByUser(Long sessionId, Long userId) { - Query q = getSession().createQuery(AVERAGE_SCORE_BY_SESSION_AND_USER); + Query q = getSession().createQuery(AVERAGE_SCORE_BY_SESSION_AND_USER, Double.class); q.setParameter("userId", userId); q.setParameter("sessionId", sessionId); - Object result = q.uniqueResult(); - return result == null ? null : ((Double) result).floatValue(); + Double result = q.uniqueResult(); + return result == null ? null : result.floatValue(); } @Override @@ -229,10 +228,11 @@ @Override public AssessmentResult getLastFinishedAssessmentResultByUser(Long sessionId, Long userId) { - Query q = getSession().createQuery(FIND_LAST_FINISHED_BY_SESSION_AND_USER); + Query q = getSession().createQuery(FIND_LAST_FINISHED_BY_SESSION_AND_USER, + AssessmentResult.class); q.setParameter("userId", userId); q.setParameter("sessionId", sessionId); - return (AssessmentResult) q.uniqueResult(); + return q.uniqueResult(); } @Override @@ -283,7 +283,7 @@ + "JOIN tl_laasse10_option_answer AS optionAnswer ON questionResult.uid = optionAnswer.question_result_uid AND optionAnswer.answer_boolean=1 AND optionAnswer.question_option_uid = :optionUid " + "WHERE (result.finish_date IS NOT NULL) AND result.latest=1"; - NativeQuery query = getSession().createNativeQuery(COUNT_ATTEMPTS_BY_OPTION_UID); + NativeQuery query = getSession().createNativeQuery(COUNT_ATTEMPTS_BY_OPTION_UID); query.setParameter("optionUid", optionUid); List list = query.list(); if (list == null || list.size() == 0) { @@ -293,8 +293,8 @@ } private List convertResultsToAssessmentUserDTOList(List list) { - List lastTotalScores = new ArrayList(); + if (list != null && list.size() > 0) { for (Object[] element : list) { @@ -311,7 +311,6 @@ userDto.setGrade(grade); lastTotalScores.add(userDto); } - } return lastTotalScores; Index: lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/dao/hibernate/AssessmentSessionDAOHibernate.java =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -rdcdc1487609bd4f00afaa93c09272d84ab0cd325 --- lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/dao/hibernate/AssessmentSessionDAOHibernate.java (.../AssessmentSessionDAOHibernate.java) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/dao/hibernate/AssessmentSessionDAOHibernate.java (.../AssessmentSessionDAOHibernate.java) (revision dcdc1487609bd4f00afaa93c09272d84ab0cd325) @@ -26,6 +26,7 @@ import java.util.List; import org.lamsfoundation.lams.dao.hibernate.LAMSBaseDAO; +import org.lamsfoundation.lams.gradebook.GradebookUserActivity; import org.lamsfoundation.lams.tool.assessment.dao.AssessmentSessionDAO; import org.lamsfoundation.lams.tool.assessment.model.AssessmentSession; import org.springframework.stereotype.Repository; @@ -35,22 +36,25 @@ private static final String FIND_BY_SESSION_ID = "from " + AssessmentSession.class.getName() + " as p where p.sessionId=?"; - private static final String FIND_BY_CONTENT_ID = "from " + AssessmentSession.class.getName() - + " as p where p.assessment.contentId=? order by p.sessionName asc"; + @SuppressWarnings("unchecked") @Override public AssessmentSession getSessionBySessionId(Long sessionId) { - List list = doFind(FIND_BY_SESSION_ID, sessionId); + List list = (List) doFind(FIND_BY_SESSION_ID, sessionId); if (list == null || list.size() == 0) { return null; } return (AssessmentSession) list.get(0); } @Override - @SuppressWarnings("unchecked") public List getByContentId(Long toolContentId) { - return (List) doFind(FIND_BY_CONTENT_ID, toolContentId); + final String FIND_BY_CONTENT_ID = "from " + AssessmentSession.class.getName() + + " as p where p.assessment.contentId=:contectId order by p.sessionName asc"; + + List result = getSession().createQuery(FIND_BY_CONTENT_ID, AssessmentSession.class) + .setParameter("contectId", toolContentId).list(); + return result; } @Override Index: lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/dao/hibernate/AssessmentUserDAOHibernate.java =================================================================== diff -u -rceb74e3b4097cf6461280448f904fa21a176aaa4 -rdcdc1487609bd4f00afaa93c09272d84ab0cd325 --- lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/dao/hibernate/AssessmentUserDAOHibernate.java (.../AssessmentUserDAOHibernate.java) (revision ceb74e3b4097cf6461280448f904fa21a176aaa4) +++ lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/dao/hibernate/AssessmentUserDAOHibernate.java (.../AssessmentUserDAOHibernate.java) (revision dcdc1487609bd4f00afaa93c09272d84ab0cd325) @@ -115,7 +115,6 @@ @Override public List getPagedUsersBySession(Long sessionId, int page, int size, String sortBy, String sortOrder, String searchString, IUserManagementService userManagementService) { - String[] portraitStrings = userManagementService.getPortraitSQL("user.user_id"); StringBuilder bldr = new StringBuilder(LOAD_USERS_ORDERED_BY_SESSION_SELECT) @@ -167,8 +166,7 @@ @SuppressWarnings("rawtypes") @Override public int getCountUsersBySession(Long sessionId, String searchString) { - - String LOAD_USERS_ORDERED_BY_NAME = "SELECT COUNT(*) FROM " + AssessmentUser.class.getName() + " user" + final String LOAD_USERS_ORDERED_BY_NAME = "SELECT COUNT(*) FROM " + AssessmentUser.class.getName() + " user" + " WHERE user.session.sessionId = :sessionId " + " AND (CONCAT(user.lastName, ' ', user.firstName) LIKE CONCAT('%', :searchString, '%')) "; @@ -188,25 +186,17 @@ @Override public int getCountUsersByContentId(Long contentId) { - - String LOAD_USERS_ORDERED_BY_NAME = "SELECT COUNT(*) FROM " + AssessmentUser.class.getName() + " user" + final String LOAD_USERS_ORDERED_BY_NAME = "SELECT COUNT(*) FROM " + AssessmentUser.class.getName() + " user" + " WHERE user.session.assessment.contentId = :contentId "; - Query query = getSession().createQuery(LOAD_USERS_ORDERED_BY_NAME); + Query query = getSession().createQuery(LOAD_USERS_ORDERED_BY_NAME, Number.class); query.setParameter("contentId", contentId); - List list = query.list(); - - if ((list == null) || (list.size() == 0)) { - return 0; - } else { - return ((Number) list.get(0)).intValue(); - } + return query.uniqueResult().intValue(); } @SuppressWarnings("rawtypes") @Override public Object[] getStatsMarksBySession(Long sessionId) { - Query query = getSession().createNativeQuery(FIND_MARK_STATS_FOR_SESSION) .addScalar("min_grade", FloatType.INSTANCE) .addScalar("avg_grade", FloatType.INSTANCE) @@ -220,11 +210,10 @@ } } - @SuppressWarnings("rawtypes") + @SuppressWarnings("unchecked") @Override public Object[] getStatsMarksForLeaders(Long toolContentId) { - - Query query = getSession().createNativeQuery(FIND_MARK_STATS_FOR_LEADERS) + NativeQuery query = getSession().createNativeQuery(FIND_MARK_STATS_FOR_LEADERS) .addScalar("min_grade", FloatType.INSTANCE) .addScalar("avg_grade", FloatType.INSTANCE) .addScalar("max_grade", FloatType.INSTANCE) @@ -238,7 +227,6 @@ } } - private static String LOAD_USERS_ORDERED_BY_SESSION_QUESTION_SELECT = "SELECT DISTINCT question_result.uid, user.last_name, user.first_name, user.login_name, question_result.mark"; private static String LOAD_USERS_ORDERED_BY_SESSION_QUESTION_FROM = " FROM tl_laasse10_user user"; private static String LOAD_USERS_ORDERED_BY_SESSION_QUESTION_JOIN = " INNER JOIN tl_laasse10_session session" @@ -309,21 +297,19 @@ return userDtos; } - @SuppressWarnings("unchecked") @Override public List getRawUserMarksBySession(Long sessionId) { - - NativeQuery query = getSession().createNativeQuery(LOAD_MARKS_FOR_SESSION); + @SuppressWarnings("unchecked") + NativeQuery query = getSession().createNativeQuery(LOAD_MARKS_FOR_SESSION); query.setParameter("sessionId", sessionId); List list = query.list(); return list; } - @SuppressWarnings("unchecked") @Override public List getRawLeaderMarksByToolContentId(Long toolContentId) { - - NativeQuery query = getSession().createNativeQuery(LOAD_MARKS_FOR_LEADERS); + @SuppressWarnings("unchecked") + NativeQuery query = getSession().createNativeQuery(LOAD_MARKS_FOR_LEADERS); query.setParameter("toolContentId", toolContentId); List list = query.list(); return list; Index: lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/model/Assessment.java =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -rdcdc1487609bd4f00afaa93c09272d84ab0cd325 --- lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/model/Assessment.java (.../Assessment.java) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/model/Assessment.java (.../Assessment.java) (revision dcdc1487609bd4f00afaa93c09272d84ab0cd325) @@ -28,98 +28,144 @@ import java.util.Set; import java.util.TreeSet; +import javax.persistence.CascadeType; +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.FetchType; +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.OrderBy; +import javax.persistence.Table; + import org.apache.commons.lang.builder.EqualsBuilder; import org.apache.commons.lang.builder.HashCodeBuilder; import org.apache.log4j.Logger; +import org.hibernate.annotations.Cascade; import org.lamsfoundation.lams.tool.assessment.util.SequencableComparator; /** * Assessment * * @author Andrey Balan */ +@Entity +@Table(name = "tl_laasse10_assessment") public class Assessment implements Cloneable { - private static final Logger log = Logger.getLogger(Assessment.class); - // key + @Id + @Column + @GeneratedValue(strategy = GenerationType.IDENTITY) private Long uid; - // tool contentID + @Column(name = "content_id") private Long contentId; + @Column private String title; + @Column private String instructions; - // advance + // *** advance tab *** + + @Column(name = "use_select_leader_tool_ouput") private boolean useSelectLeaderToolOuput; + @Column(name = "time_limit") private int timeLimit; + @Column(name = "questions_per_page") private int questionsPerPage; + @Column(name = "attempts_allowed") private int attemptsAllowed; + @Column(name = "passing_mark") private int passingMark; + @Column private boolean shuffled; + @Column private boolean numbered; + @Column(name = "allow_question_feedback") private boolean allowQuestionFeedback; + @Column(name = "allow_overall_feedback") private boolean allowOverallFeedbackAfterQuestion; + @Column(name = "allow_disclose_answers") private boolean allowDiscloseAnswers; + @Column(name = "allow_right_answers") private boolean allowRightAnswersAfterQuestion; + @Column(name = "allow_wrong_answers") private boolean allowWrongAnswersAfterQuestion; + @Column(name = "allow_grades_after_attempt") private boolean allowGradesAfterAttempt; + @Column(name = "enable_confidence_levels") private boolean enableConfidenceLevels; + @Column(name = "allow_history_responses") private boolean allowHistoryResponses; + @Column(name = "display_summary") private boolean displaySummary; - + + @Column(name = "define_later") private boolean defineLater; + @Column(name = "attempt_completion_notify") private boolean notifyTeachersOnAttemptCompletion; + @Column(name = "reflect_on_activity") private boolean reflectOnActivity; + @Column(name = "reflect_instructions") private String reflectInstructions; - // general infomation + // general information + + @Column(name = "create_date") private Date created; + @Column(name = "update_date") private Date updated; + @Column(name = "submission_deadline") private Date submissionDeadline; + @ManyToOne + @Cascade(org.hibernate.annotations.CascadeType.SAVE_UPDATE) + @JoinColumn(name = "create_by") private AssessmentUser createdBy; // Question bank questions - private Set questions; + @OneToMany(cascade = CascadeType.ALL) + @JoinColumn(name = "assessment_uid") + @OrderBy("sequence_id ASC") + private Set questions = new TreeSet<>(new SequencableComparator()); // assessment questions references that form question list - private Set questionReferences; + @OneToMany(cascade = CascadeType.ALL) + @JoinColumn(name = "assessment_uid") + @OrderBy("sequence_id ASC") + private Set questionReferences = new TreeSet<>(new SequencableComparator()); - private Set overallFeedbacks; + @OneToMany(cascade = CascadeType.ALL, fetch = FetchType.EAGER) + @JoinColumn(name = "assessment_uid") + @OrderBy("sequence_id ASC") + private Set overallFeedbacks = new TreeSet<>(new SequencableComparator()); - /** - * Default contruction method. - * - */ - public Assessment() { - questions = new TreeSet(new SequencableComparator()); - questionReferences = new TreeSet(new SequencableComparator()); - overallFeedbacks = new TreeSet(new SequencableComparator()); - } - // ********************************************************** // Function method for Assessment // ********************************************************** @@ -145,10 +191,10 @@ // clone questions if (questions != null) { - Iterator iter = questions.iterator(); - TreeSet set = new TreeSet(new SequencableComparator()); + Iterator iter = questions.iterator(); + TreeSet set = new TreeSet<>(new SequencableComparator()); while (iter.hasNext()) { - AssessmentQuestion question = (AssessmentQuestion) iter.next(); + AssessmentQuestion question = iter.next(); AssessmentQuestion newQuestion = (AssessmentQuestion) question.clone(); // just clone old file without duplicate it in repository set.add(newQuestion); @@ -158,15 +204,15 @@ // clone questionReferences if (questionReferences != null) { - Iterator iter = questionReferences.iterator(); - Set set = new TreeSet(new SequencableComparator()); + Iterator iter = questionReferences.iterator(); + Set set = new TreeSet<>(new SequencableComparator()); while (iter.hasNext()) { - QuestionReference questionReference = (QuestionReference) iter.next(); + QuestionReference questionReference = iter.next(); QuestionReference newQuestionReference = (QuestionReference) questionReference.clone(); // update questionReferences with new cloned question if (newQuestionReference.getQuestion() != null) { - for (AssessmentQuestion newQuestion : (Set) assessment.questions) { + for (AssessmentQuestion newQuestion : assessment.questions) { if (newQuestion.getSequenceId() == newQuestionReference.getQuestion().getSequenceId()) { newQuestionReference.setQuestion(newQuestion); break; @@ -181,11 +227,10 @@ // clone OverallFeedbacks if (overallFeedbacks != null) { - Iterator iter = overallFeedbacks.iterator(); - Set set = new TreeSet( - new SequencableComparator()); + Iterator iter = overallFeedbacks.iterator(); + Set set = new TreeSet<>(new SequencableComparator()); while (iter.hasNext()) { - AssessmentOverallFeedback overallFeedback = (AssessmentOverallFeedback) iter.next(); + AssessmentOverallFeedback overallFeedback = iter.next(); AssessmentOverallFeedback newOverallFeedback = (AssessmentOverallFeedback) overallFeedback.clone(); // just clone old file without duplicate it in repository set.add(newOverallFeedback); @@ -197,7 +242,7 @@ assessment.setCreatedBy((AssessmentUser) createdBy.clone()); } } catch (CloneNotSupportedException e) { - Assessment.log.error("When clone " + Assessment.class + " failed"); + log.error("When clone " + Assessment.class + " failed"); } return assessment; @@ -253,7 +298,7 @@ */ public boolean hasRandomQuestion() { boolean hasRandomQuestion = false; - for (QuestionReference reference : (Set) questionReferences) { + for (QuestionReference reference : questionReferences) { hasRandomQuestion |= reference.isRandomQuestion(); } return hasRandomQuestion; @@ -334,9 +379,6 @@ this.createdBy = createdBy; } - /** - * - */ public Long getUid() { return uid; } @@ -399,58 +441,33 @@ this.instructions = instructions; } - /** - * - * - * - * - * - * @return - */ - public Set getQuestions() { + public Set getQuestions() { return questions; } - public void setQuestions(Set questions) { + public void setQuestions(Set questions) { this.questions = questions; } - /** - * - * - * - * - * - * @return - */ - public Set getQuestionReferences() { + public Set getQuestionReferences() { return questionReferences; } - public void setQuestionReferences(Set questionReferences) { + public void setQuestionReferences(Set questionReferences) { this.questionReferences = questionReferences; } /** - * - * - * - * - * * @return a set of OverallFeedbacks for this Assessment. */ - public Set getOverallFeedbacks() { + public Set getOverallFeedbacks() { return overallFeedbacks; } - public void setOverallFeedbacks(Set assessmentOverallFeedbacks) { + public void setOverallFeedbacks(Set assessmentOverallFeedbacks) { this.overallFeedbacks = assessmentOverallFeedbacks; } - /** - * - * @return - */ public boolean isDefineLater() { return defineLater; } @@ -459,10 +476,6 @@ this.defineLater = defineLater; } - /** - * - * @return - */ public Long getContentId() { return contentId; } @@ -471,10 +484,6 @@ this.contentId = contentId; } - /** - * - * @return - */ public boolean isAllowQuestionFeedback() { return allowQuestionFeedback; } @@ -483,10 +492,6 @@ this.allowQuestionFeedback = allowQuestionFeedback; } - /** - * - * @return - */ public boolean isAllowOverallFeedbackAfterQuestion() { return allowOverallFeedbackAfterQuestion; } @@ -503,10 +508,6 @@ this.allowDiscloseAnswers = tblReleaseAnswers; } - /** - * - * @return - */ public boolean isAllowRightAnswersAfterQuestion() { return allowRightAnswersAfterQuestion; } @@ -515,10 +516,6 @@ this.allowRightAnswersAfterQuestion = allowRightAnswersAfterQuestion; } - /** - * - * @return - */ public boolean isAllowWrongAnswersAfterQuestion() { return allowWrongAnswersAfterQuestion; } @@ -527,10 +524,6 @@ this.allowWrongAnswersAfterQuestion = allowWrongAnswersAfterQuestion; } - /** - * - * @return - */ public boolean isAllowGradesAfterAttempt() { return allowGradesAfterAttempt; } @@ -539,10 +532,6 @@ this.allowGradesAfterAttempt = allowGradesAfterAttempt; } - /** - * - * @return - */ public boolean isEnableConfidenceLevels() { return enableConfidenceLevels; } @@ -551,10 +540,6 @@ this.enableConfidenceLevels = enableConfidenceLevels; } - /** - * - * @return - */ public boolean isAllowHistoryResponses() { return allowHistoryResponses; } @@ -563,10 +548,6 @@ this.allowHistoryResponses = allowHistoryResponses; } - /** - * - * @return - */ public boolean isDisplaySummary() { return displaySummary; } @@ -575,10 +556,6 @@ this.displaySummary = displaySummary; } - /** - * - * @return - */ public int getQuestionsPerPage() { return questionsPerPage; } @@ -590,7 +567,6 @@ /** * number of allow students attempts * - * * @return */ public int getAttemptsAllowed() { @@ -604,7 +580,6 @@ /** * passing mark based on which we decide either user has failed or passed * - * * @return */ public int getPassingMark() { @@ -615,10 +590,6 @@ this.passingMark = passingMark; } - /** - * - * @return - */ public boolean isShuffled() { return shuffled; } @@ -630,7 +601,6 @@ /** * If this is checked, then in learner we display the numbering for learners. * - * * @return */ public boolean isNumbered() { @@ -641,10 +611,6 @@ this.numbered = numbered; } - /** - * - * @return - */ public boolean isNotifyTeachersOnAttemptCompletion() { return notifyTeachersOnAttemptCompletion; } @@ -653,10 +619,6 @@ this.notifyTeachersOnAttemptCompletion = notifyTeachersOnAttemptCompletion; } - /** - * - * @return - */ public String getReflectInstructions() { return reflectInstructions; } @@ -665,10 +627,6 @@ this.reflectInstructions = reflectInstructions; } - /** - * - * @return - */ public boolean isReflectOnActivity() { return reflectOnActivity; } Index: lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/model/AssessmentOptionAnswer.java =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -rdcdc1487609bd4f00afaa93c09272d84ab0cd325 --- lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/model/AssessmentOptionAnswer.java (.../AssessmentOptionAnswer.java) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/model/AssessmentOptionAnswer.java (.../AssessmentOptionAnswer.java) (revision dcdc1487609bd4f00afaa93c09272d84ab0cd325) @@ -23,32 +23,40 @@ package org.lamsfoundation.lams.tool.assessment.model; -import org.apache.log4j.Logger; +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.Table; /** * AssessmentOptionAnswer * * @author Andrey Balan */ +@Entity +@Table(name = "tl_laasse10_option_answer") public class AssessmentOptionAnswer implements Cloneable { - private static final Logger log = Logger.getLogger(AssessmentOptionAnswer.class); + @Id + @Column + @GeneratedValue(strategy = GenerationType.IDENTITY) private Long uid; + @Column(name = "question_option_uid") private Long optionUid; + @Column(name = "answer_int") private int answerInt; + @Column(name = "answer_boolean") private boolean answerBoolean; // ********************************************************** // Get/Set methods // ********************************************************** - /** - * - * @return Returns the answer ID. - */ public Long getUid() { return uid; } Index: lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/model/AssessmentOverallFeedback.java =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -rdcdc1487609bd4f00afaa93c09272d84ab0cd325 --- lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/model/AssessmentOverallFeedback.java (.../AssessmentOverallFeedback.java) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/model/AssessmentOverallFeedback.java (.../AssessmentOverallFeedback.java) (revision dcdc1487609bd4f00afaa93c09272d84ab0cd325) @@ -23,24 +23,52 @@ package org.lamsfoundation.lams.tool.assessment.model; +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.Table; + import org.apache.log4j.Logger; /** * AssessmentOverallFeedback * * @author Andrey Balan */ +@Entity +@Table(name = "tl_laasse10_assessment_overall_feedback") public class AssessmentOverallFeedback implements Cloneable, Sequencable { private static final Logger log = Logger.getLogger(AssessmentOverallFeedback.class); + @Id + @Column + @GeneratedValue(strategy = GenerationType.IDENTITY) private Long uid; + @Column(name = "sequence_id") private Integer sequenceId; + @Column(name = "grade_boundary") private Integer gradeBoundary; + @Column private String feedback; + @Override + public Object clone() { + AssessmentOverallFeedback obj = null; + try { + obj = (AssessmentOverallFeedback) super.clone(); + obj.setUid(null); + } catch (CloneNotSupportedException e) { + AssessmentOverallFeedback.log.error("When clone " + AssessmentOverallFeedback.class + " failed"); + } + + return obj; + } + // ********************************************************** // Get/Set methods // ********************************************************** @@ -105,17 +133,4 @@ public void setFeedback(String feedback) { this.feedback = feedback; } - - @Override - public Object clone() { - AssessmentOverallFeedback obj = null; - try { - obj = (AssessmentOverallFeedback) super.clone(); - obj.setUid(null); - } catch (CloneNotSupportedException e) { - AssessmentOverallFeedback.log.error("When clone " + AssessmentOverallFeedback.class + " failed"); - } - - return obj; - } } Index: lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/model/AssessmentQuestion.java =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -rdcdc1487609bd4f00afaa93c09272d84ab0cd325 --- lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/model/AssessmentQuestion.java (.../AssessmentQuestion.java) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/model/AssessmentQuestion.java (.../AssessmentQuestion.java) (revision dcdc1487609bd4f00afaa93c09272d84ab0cd325) @@ -27,6 +27,19 @@ import java.util.Set; import java.util.TreeSet; +import javax.persistence.CascadeType; +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.FetchType; +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 javax.persistence.Transient; + import org.apache.commons.lang.builder.EqualsBuilder; import org.apache.commons.lang.builder.HashCodeBuilder; import org.apache.commons.lang.builder.ToStringBuilder; @@ -39,83 +52,115 @@ * * @author Andrey Balan */ -public class AssessmentQuestion implements Cloneable, Sequencable, Comparable { - +@Entity +@Table(name = "tl_laasse10_assessment_question") +public class AssessmentQuestion implements Cloneable, Sequencable, Comparable { private static final Logger log = Logger.getLogger(AssessmentQuestion.class); + @Id + @Column + @GeneratedValue(strategy = GenerationType.IDENTITY) private Long uid; + @Column(name = "question_type") private short type; + @Column private String title; + @Column private String question; /** * It stores sha1(question) value that allows us to search for the AssessmentQuestions with the same question */ + @Column(name = "question_hash") private String questionHash; + @Column(name = "sequence_id") private int sequenceId; /** * Default grade set in author. */ + @Column(name = "default_grade") private int defaultGrade; + @Column(name = "penalty_factor") private float penaltyFactor; + @Column(name = "answer_required") private boolean answerRequired; + @Column(name = "general_feedback") private String generalFeedback; + @Column private String feedback; + @Column(name = "multiple_answers_allowed") private boolean multipleAnswersAllowed; + @Column(name = "incorrect_answer_nullifies_mark") private boolean incorrectAnswerNullifiesMark; + @Column(name = "feedback_on_correct") private String feedbackOnCorrect; + @Column(name = "feedback_on_partially_correct") private String feedbackOnPartiallyCorrect; + @Column(name = "feedback_on_incorrect") private String feedbackOnIncorrect; // only one of shuffle and prefixAnswersWithLetters should be on. Both may be off + @Column private boolean shuffle; + + @Column(name = "prefix_answers_with_letters") private boolean prefixAnswersWithLetters; + @Column(name = "case_sensitive") private boolean caseSensitive; + @Column(name = "correct_answer") private boolean correctAnswer; + @Column(name = "allow_rich_editor") private boolean allowRichEditor; - private Set options; - - private Set units; - // only for essay type of question + @Column(name = "max_words_limit") private int maxWordsLimit; + // only for essay type of question + @Column(name = "min_words_limit") private int minWordsLimit; // only for hedging mark type of question + @Column(name = "hedging_justification_enabled") private boolean hedgingJustificationEnabled; + @Column(name = "correct_answers_disclosed") private boolean correctAnswersDisclosed; + @Column(name = "groups_answers_disclosed") private boolean groupsAnswersDisclosed; - // *************** NON Persist Fields used in monitoring ******************** + @OneToMany(cascade = CascadeType.ALL, fetch = FetchType.EAGER) + @JoinColumn(name = "question_uid") + @OrderBy("sequence_id ASC") + private Set options = new TreeSet<>(new SequencableComparator()); + @OneToMany(cascade = CascadeType.ALL, fetch = FetchType.EAGER) + @JoinColumn(name = "question_uid") + @OrderBy("sequence_id ASC") + private Set units = new TreeSet<>(new SequencableComparator()); + + // *************** NON Persist Fields used in monitoring ******************** + @Transient private String titleEscaped; - public AssessmentQuestion() { - options = new TreeSet(new SequencableComparator()); - units = new TreeSet(new SequencableComparator()); - } - @Override public Object clone() { AssessmentQuestion obj = null; @@ -126,7 +171,7 @@ // clone options if (options != null) { Iterator iter = options.iterator(); - Set set = new TreeSet(new SequencableComparator()); + Set set = new TreeSet<>(new SequencableComparator()); while (iter.hasNext()) { AssessmentQuestionOption answerOption = iter.next(); AssessmentQuestionOption newAnswerOption = (AssessmentQuestionOption) answerOption.clone(); @@ -138,7 +183,7 @@ // clone units if (units != null) { Iterator iter = units.iterator(); - Set set = new TreeSet(new SequencableComparator()); + Set set = new TreeSet<>(new SequencableComparator()); while (iter.hasNext()) { AssessmentUnit unit = iter.next(); AssessmentUnit newUnit = (AssessmentUnit) unit.clone(); @@ -170,13 +215,8 @@ } @Override - public int compareTo(Object o) { - if ((o != null) && o instanceof AssessmentQuestion) { - AssessmentQuestion anotherQuestion = (AssessmentQuestion) o; - return sequenceId - anotherQuestion.getSequenceId(); - } else { - return 1; - } + public int compareTo(AssessmentQuestion anotherQuestion) { + return sequenceId - anotherQuestion.getSequenceId(); } @Override @@ -198,18 +238,10 @@ // ********************************************************** // Get/Set methods // ********************************************************** - /** - * - * @return Returns the uid. - */ public Long getUid() { return uid; } - /** - * @param uid - * The uid to set. - */ public void setUid(Long userID) { this.uid = userID; } @@ -473,6 +505,14 @@ this.groupsAnswersDisclosed = groupsAnswersDisclosed; } + public boolean isPrefixAnswersWithLetters() { + return prefixAnswersWithLetters; + } + + public void setPrefixAnswersWithLetters(boolean prefixAnswersWithLetters) { + this.prefixAnswersWithLetters = prefixAnswersWithLetters; + } + // *************** NON Persist Fields used in monitoring ******************** public String getTitleEscaped() { @@ -482,12 +522,4 @@ public void setTitleEscaped(String titleEscaped) { this.titleEscaped = titleEscaped; } - - public boolean isPrefixAnswersWithLetters() { - return prefixAnswersWithLetters; - } - - public void setPrefixAnswersWithLetters(boolean prefixAnswersWithLetters) { - this.prefixAnswersWithLetters = prefixAnswersWithLetters; - } } Index: lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/model/AssessmentQuestionOption.java =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -rdcdc1487609bd4f00afaa93c09272d84ab0cd325 --- lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/model/AssessmentQuestionOption.java (.../AssessmentQuestionOption.java) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/model/AssessmentQuestionOption.java (.../AssessmentQuestionOption.java) (revision dcdc1487609bd4f00afaa93c09272d84ab0cd325) @@ -23,50 +23,80 @@ package org.lamsfoundation.lams.tool.assessment.model; +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.Table; +import javax.persistence.Transient; + import org.apache.log4j.Logger; /** * AssessmentQuestionOption * * @author Andrey Balan */ +@Entity +@Table(name = "tl_laasse10_question_option") public class AssessmentQuestionOption implements Cloneable, Sequencable { private static final Logger log = Logger.getLogger(AssessmentQuestionOption.class); + @Id + @Column + @GeneratedValue(strategy = GenerationType.IDENTITY) private Long uid; + @Column(name = "sequence_id") private Integer sequenceId; + @Column private String question; + @Column(name = "option_string") private String optionString; + @Column(name = "option_float") private float optionFloat; + @Column(name = "accepted_error") private float acceptedError; + @Column private float grade; + @Column private boolean correct; + @Column private String feedback; // *************** DTO fields (used in monitoring) ******************** - + @Transient private String questionEscaped; - + @Transient private String optionStringEscaped; - + @Transient private float percentage; + @Override + public Object clone() { + AssessmentQuestionOption obj = null; + try { + obj = (AssessmentQuestionOption) super.clone(); + obj.setUid(null); + } catch (CloneNotSupportedException e) { + AssessmentQuestionOption.log.error("When clone " + AssessmentQuestionOption.class + " failed"); + } + + return obj; + } + // ********************************************************** // Get/Set methods // ********************************************************** - /** - * - * @return Returns the answer ID. - */ public Long getUid() { return uid; } @@ -76,11 +106,7 @@ } /** - * Returns option's sequence number. - * * @return option's sequence number - * - * */ @Override public int getSequenceId() { @@ -219,17 +245,4 @@ public void setPercentage(float percentage) { this.percentage = percentage; } - - @Override - public Object clone() { - AssessmentQuestionOption obj = null; - try { - obj = (AssessmentQuestionOption) super.clone(); - obj.setUid(null); - } catch (CloneNotSupportedException e) { - AssessmentQuestionOption.log.error("When clone " + AssessmentQuestionOption.class + " failed"); - } - - return obj; - } } Index: lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/model/AssessmentQuestionResult.java =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -rdcdc1487609bd4f00afaa93c09272d84ab0cd325 --- lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/model/AssessmentQuestionResult.java (.../AssessmentQuestionResult.java) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/model/AssessmentQuestionResult.java (.../AssessmentQuestionResult.java) (revision dcdc1487609bd4f00afaa93c09272d84ab0cd325) @@ -28,6 +28,19 @@ import java.util.LinkedHashSet; import java.util.Set; +import javax.persistence.CascadeType; +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.FetchType; +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 javax.persistence.Transient; + import org.apache.commons.lang.builder.EqualsBuilder; import org.apache.commons.lang.builder.HashCodeBuilder; @@ -36,30 +49,61 @@ * * @author Andrey Balan */ +@Entity +@Table(name = "tl_laasse10_question_result") public class AssessmentQuestionResult { + @Id + @Column + @GeneratedValue(strategy = GenerationType.IDENTITY) private Long uid; - private AssessmentQuestion assessmentQuestion; - private AssessmentResult assessmentResult; + + @Column(name = "answer_string") private String answerString; + + @Column(name = "answer_float") private float answerFloat; + + @Column(name = "answer_boolean") private boolean answerBoolean; + + @Column(name = "submitted_option_uid") private Long submittedOptionUid; + + @Column private float mark; + + @Column(name = "max_mark") private Float maxMark; + + @Column private float penalty; - private Set optionAnswers; + + @Column(name = "finish_date") private Date finishDate; + + @Column(name = "confidence_level") private int confidenceLevel; + + @ManyToOne + @JoinColumn(name = "assessment_question_uid") + private AssessmentQuestion assessmentQuestion; + + @ManyToOne + @JoinColumn(name = "result_uid") + private AssessmentResult assessmentResult; + + @OneToMany(cascade = CascadeType.ALL, fetch = FetchType.EAGER) + @JoinColumn(name = "question_result_uid") + private Set optionAnswers = new LinkedHashSet<>(); - // DTO fields: + // *************** NON Persist Fields ******************** + + @Transient private AssessmentUser user; + @Transient private String answerStringEscaped; - public AssessmentQuestionResult() { - optionAnswers = new LinkedHashSet(); - } - @Override public int hashCode() { return new HashCodeBuilder().append(getUid()).toHashCode(); @@ -78,10 +122,6 @@ return new EqualsBuilder().append(this.getUid(), genericEntity.getUid()).isEquals(); } - /** - * - * @return Returns the result Uid. - */ public Long getUid() { return uid; } @@ -90,10 +130,6 @@ this.uid = uid; } - /** - * - * @return - */ public AssessmentQuestion getAssessmentQuestion() { return assessmentQuestion; } @@ -102,10 +138,6 @@ this.assessmentQuestion = question; } - /** - * - * @return - */ public AssessmentResult getAssessmentResult() { return assessmentResult; } @@ -115,8 +147,6 @@ } /** - * - * * @return Returns the possible answer. */ public String getAnswerString() { @@ -128,8 +158,6 @@ } /** - * - * * @return Returns the possible answer. */ public float getAnswerFloat() { @@ -141,8 +169,6 @@ } /** - * - * * @return Returns the possible answer. */ public boolean getAnswerBoolean() { @@ -153,11 +179,6 @@ this.answerBoolean = answerBoolean; } - /** - * - * - * @return Returns submittedOptionUid. - */ public Long getSubmittedOptionUid() { return submittedOptionUid; } @@ -166,11 +187,6 @@ this.submittedOptionUid = submittedOptionUid; } - /** - * - * - * @return Returns the mark. - */ public Float getMark() { return mark; } @@ -183,8 +199,6 @@ * Maximum mark user could have scored for this question. (It is stored in AssessmentQuestionResult class due to * existence of random questions which makes it's impossible to obtain this info from question) * - * - * * @return Returns the mark. */ public Float getMaxMark() { @@ -196,8 +210,6 @@ } /** - * - * * @return Returns the possible numeric answer. */ public Float getPenalty() { @@ -209,30 +221,16 @@ } /** - * - * - * - * - * * @return a set of answerOptions to this AssessmentQuestion. */ public Set getOptionAnswers() { return optionAnswers; } - /** - * @param answerOptions - * answerOptions to set. - */ public void setOptionAnswers(Set answers) { this.optionAnswers = answers; } - /** - * - * - * @return Returns submittedOptionUid. - */ public Date getFinishDate() { return finishDate; } Index: lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/model/AssessmentResult.java =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -rdcdc1487609bd4f00afaa93c09272d84ab0cd325 --- lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/model/AssessmentResult.java (.../AssessmentResult.java) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/model/AssessmentResult.java (.../AssessmentResult.java) (revision dcdc1487609bd4f00afaa93c09272d84ab0cd325) @@ -27,39 +27,77 @@ import java.util.Set; import java.util.TreeSet; +import javax.persistence.CascadeType; +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.FetchType; +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 javax.persistence.Transient; + import org.lamsfoundation.lams.tool.assessment.util.AssessmentQuestionResultComparator; /** * Assessment Result * * @author Andrey Balan */ +@Entity +@Table(name = "tl_laasse10_assessment_result") public class AssessmentResult { + @Id + @Column + @GeneratedValue(strategy = GenerationType.IDENTITY) private Long uid; - private Assessment assessment; + + @Column(name = "start_date") private Date startDate; + //date when user has started activity (pressed start button) that has time limitation + @Column(name = "time_limit_launched_date") private Date timeLimitLaunchedDate; + //indicates the latest retry - private Boolean isLatest; + @Column + private Boolean latest; + + @Column(name = "finish_date") private Date finishDate; - private AssessmentUser user; + + @Column(name = "session_id") private Long sessionId; + + @Column(name = "maximum_grade") private int maximumGrade; + + @Column private float grade; - private Set questionResults; + + @ManyToOne + @JoinColumn(name = "assessment_uid") + private Assessment assessment; + + @ManyToOne + @JoinColumn(name = "user_uid") + private AssessmentUser user; + + @OneToMany(cascade = CascadeType.ALL, fetch = FetchType.EAGER) + @JoinColumn(name = "result_uid") + private Set questionResults = new TreeSet<>(new AssessmentQuestionResultComparator()); - // DTO fields: + // *************** NON Persist Fields ******************** + @Transient private Date timeTaken; + @Transient private String overallFeedback; - public AssessmentResult() { - questionResults = new TreeSet(new AssessmentQuestionResultComparator()); - } - /** - * * @return Returns the result Uid. */ public Long getUid() { @@ -70,10 +108,6 @@ this.uid = uid; } - /** - * - * @return - */ public Assessment getAssessment() { return assessment; } @@ -82,10 +116,6 @@ this.assessment = assessment; } - /** - * - * @return - */ public AssessmentUser getUser() { return user; } @@ -94,10 +124,6 @@ this.user = user; } - /** - * - * @return - */ public Date getStartDate() { return startDate; } @@ -106,10 +132,6 @@ this.startDate = startDate; } - /** - * - * @return - */ public Date getTimeLimitLaunchedDate() { return timeLimitLaunchedDate; } @@ -118,22 +140,14 @@ this.timeLimitLaunchedDate = timeLimitLaunchedDate; } - /** - * - * @return - */ public Boolean isLatest() { - return isLatest; + return latest; } - public void setLatest(Boolean isLatest) { - this.isLatest = isLatest; + public void setLatest(Boolean latest) { + this.latest = latest; } - /** - * - * @return - */ public Date getFinishDate() { return finishDate; } @@ -142,10 +156,6 @@ this.finishDate = finishDate; } - /** - * - * @return - */ public Long getSessionId() { return sessionId; } @@ -154,10 +164,6 @@ this.sessionId = sessionId; } - /** - * - * @return - */ public int getMaximumGrade() { return maximumGrade; } @@ -187,10 +193,6 @@ /** * - * - * - * - * * @return a set of answerOptions to this AssessmentQuestion. */ public Set getQuestionResults() { Index: lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/model/AssessmentSession.java =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -rdcdc1487609bd4f00afaa93c09272d84ab0cd325 --- lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/model/AssessmentSession.java (.../AssessmentSession.java) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/model/AssessmentSession.java (.../AssessmentSession.java) (revision dcdc1487609bd4f00afaa93c09272d84ab0cd325) @@ -24,39 +24,68 @@ package org.lamsfoundation.lams.tool.assessment.model; import java.util.Date; +import java.util.HashSet; import java.util.Set; -import org.apache.log4j.Logger; +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.OrderBy; +import javax.persistence.Table; /** * Assessment session * * @author Andrey Balan */ +@Entity +@Table(name = "tl_laasse10_session") public class AssessmentSession { - private static Logger log = Logger.getLogger(AssessmentSession.class); - + @Id + @Column + @GeneratedValue(strategy = GenerationType.IDENTITY) private Long uid; + + @Column(name = "session_id") private Long sessionId; + + @Column(name = "session_name") private String sessionName; + + @ManyToOne + @JoinColumn(name = "assessment_uid") private Assessment assessment; + + @Column(name = "session_start_date") private Date sessionStartDate; + + @Column(name = "session_end_date") private Date sessionEndDate; + // finish or not + @Column private int status; - // assessment Questions - private Set assessmentQuestions; - private Set assessmentUsers; + + @OneToMany(cascade = CascadeType.ALL) + @JoinColumn(name = "session_uid") + @OrderBy("last_name ASC") + private Set assessmentUsers = new HashSet<>(); + + @ManyToOne(cascade = CascadeType.ALL) + @JoinColumn(name = "group_leader_uid") private AssessmentUser groupLeader; // ********************************************************** // Get/Set methods // ********************************************************** - /** - * - * @return Returns the learnerID. - */ + public Long getUid() { return uid; } @@ -65,10 +94,6 @@ this.uid = uuid; } - /** - * - * @return - */ public Date getSessionEndDate() { return sessionEndDate; } @@ -77,11 +102,6 @@ this.sessionEndDate = sessionEndDate; } - /** - * - * - * @return - */ public Date getSessionStartDate() { return sessionStartDate; } @@ -90,10 +110,6 @@ this.sessionStartDate = sessionStartDate; } - /** - * - * @return - */ public int getStatus() { return status; } @@ -102,10 +118,6 @@ this.status = status; } - /** - * - * @return - */ public Assessment getAssessment() { return assessment; } @@ -114,10 +126,6 @@ this.assessment = assessment; } - /** - * - * @return - */ public Long getSessionId() { return sessionId; } @@ -142,20 +150,6 @@ this.sessionName = sessionName; } - /** - * @return - */ - public Set getAssessmentQuestions() { - return assessmentQuestions; - } - - public void setAssessmentQuestions(Set assessmentQuestions) { - this.assessmentQuestions = assessmentQuestions; - } - - /** - * @return - */ public Set getAssessmentUsers() { return assessmentUsers; } @@ -164,10 +158,6 @@ this.assessmentUsers = assessmentUsers; } - /** - * - * @return - */ public AssessmentUser getGroupLeader() { return this.groupLeader; } Index: lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/model/AssessmentUnit.java =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -rdcdc1487609bd4f00afaa93c09272d84ab0cd325 --- lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/model/AssessmentUnit.java (.../AssessmentUnit.java) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/model/AssessmentUnit.java (.../AssessmentUnit.java) (revision dcdc1487609bd4f00afaa93c09272d84ab0cd325) @@ -23,22 +23,37 @@ package org.lamsfoundation.lams.tool.assessment.model; +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.Table; + import org.apache.log4j.Logger; /** * AssessmentUnit * * @author Andrey Balan */ +@Entity +@Table(name = "tl_laasse10_assessment_unit") public class AssessmentUnit implements Cloneable, Sequencable { private static final Logger log = Logger.getLogger(AssessmentUnit.class); + @Id + @Column + @GeneratedValue(strategy = GenerationType.IDENTITY) private Long uid; + @Column(name = "sequence_id") private Integer sequenceId; + @Column private String unit; + @Column private float multiplier; // ********************************************************** Index: lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/model/AssessmentUser.java =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -rdcdc1487609bd4f00afaa93c09272d84ab0cd325 --- lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/model/AssessmentUser.java (.../AssessmentUser.java) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/model/AssessmentUser.java (.../AssessmentUser.java) (revision dcdc1487609bd4f00afaa93c09272d84ab0cd325) @@ -25,6 +25,16 @@ 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.log4j.Logger; @@ -35,29 +45,50 @@ * * @author Andrey Balan */ +@Entity +@Table(name = "tl_laasse10_user") public class AssessmentUser implements Cloneable { - private static final long serialVersionUID = -7043502180037866257L; private static Logger log = Logger.getLogger(AssessmentUser.class); + @Id + @Column + @GeneratedValue(strategy = GenerationType.IDENTITY) private Long uid; + + @Column(name = "user_id") private Long userId; + + @Column(name = "first_name") private String firstName; + + @Column(name = "last_name") private String lastName; + + @Column(name = "login_name") private String loginName; + + @Column(name = "session_finished") private boolean sessionFinished; + @ManyToOne + @JoinColumn(name = "session_uid") private AssessmentSession session; + + @ManyToOne + @JoinColumn(name = "assessment_uid") private Assessment assessment; - // =============== NON Persisit value: for display use =========== + // *************** NON Persist Fields ******************** + // the user access some reousrce question date time. Use in monitoring summary page + @Transient private Date accessDate; public AssessmentUser() { } public AssessmentUser(UserDTO user, AssessmentSession session) { - this.userId = new Long(user.getUserID().intValue()); + this.userId = user.getUserID().longValue(); this.firstName = user.getFirstName(); this.lastName = user.getLastName(); this.loginName = user.getLogin(); @@ -67,7 +98,7 @@ } public AssessmentUser(UserDTO user, Assessment content) { - this.userId = new Long(user.getUserID().intValue()); + this.userId = user.getUserID().longValue(); this.firstName = user.getFirstName(); this.lastName = user.getLastName(); this.loginName = user.getLogin(); Index: lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/model/QuestionReference.java =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -rdcdc1487609bd4f00afaa93c09272d84ab0cd325 --- lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/model/QuestionReference.java (.../QuestionReference.java) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/model/QuestionReference.java (.../QuestionReference.java) (revision dcdc1487609bd4f00afaa93c09272d84ab0cd325) @@ -23,32 +23,50 @@ package org.lamsfoundation.lams.tool.assessment.model; +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.log4j.Logger; /** * Reference to the Question * * @author Andrey Balan */ +@Entity +@Table(name = "tl_laasse10_question_reference") public class QuestionReference implements Cloneable, Sequencable { private static final Logger log = Logger.getLogger(QuestionReference.class); + @Id + @Column + @GeneratedValue(strategy = GenerationType.IDENTITY) private Long uid; - private AssessmentQuestion question; - + @Column(name = "question_type") private short type; + @Column private String title; + @Column(name = "sequence_id") private int sequenceId; + @Column(name = "default_grade") private int defaultGrade; + @Column(name = "random_question") private boolean randomQuestion; - // *********************************************** - // Non persistant fields: + @ManyToOne + @JoinColumn(name = "question_uid") + private AssessmentQuestion question; @Override public Object clone() { @@ -72,27 +90,15 @@ // ********************************************************** // Get/Set methods // ********************************************************** - /** - * - * @return Returns the uid. - */ + public Long getUid() { return uid; } - /** - * @param uid - * The uid to set. - */ public void setUid(Long userID) { this.uid = userID; } - /** - * - * - * @return - */ public AssessmentQuestion getQuestion() { return question; } @@ -101,10 +107,6 @@ this.question = question; } - /** - * - * @return - */ public short getType() { return type; } @@ -113,10 +115,6 @@ this.type = type; } - /** - * - * @return - */ public String getTitle() { return title; } @@ -148,11 +146,6 @@ this.sequenceId = sequenceId; } - /** - * - * - * @return - */ public int getDefaultGrade() { return defaultGrade; } @@ -161,10 +154,6 @@ this.defaultGrade = defaultGrade; } - /** - * - * @return - */ public boolean isRandomQuestion() { return randomQuestion; } Index: lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/service/AssessmentOutputFactory.java =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -rdcdc1487609bd4f00afaa93c09272d84ab0cd325 --- lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/service/AssessmentOutputFactory.java (.../AssessmentOutputFactory.java) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/service/AssessmentOutputFactory.java (.../AssessmentOutputFactory.java) (revision dcdc1487609bd4f00afaa93c09272d84ab0cd325) @@ -52,47 +52,46 @@ TreeMap definitionMap = new TreeMap(); ToolOutputDefinition definition = buildRangeDefinition(AssessmentConstants.OUTPUT_NAME_LEARNER_NUMBER_ATTEMPTS, - new Long(0), null); + 0L, null); definitionMap.put(AssessmentConstants.OUTPUT_NAME_LEARNER_NUMBER_ATTEMPTS, definition); - definition = buildRangeDefinition(AssessmentConstants.OUTPUT_NAME_LEARNER_TIME_TAKEN, new Long(0), null); + definition = buildRangeDefinition(AssessmentConstants.OUTPUT_NAME_LEARNER_TIME_TAKEN, 0L, null); definitionMap.put(AssessmentConstants.OUTPUT_NAME_LEARNER_TIME_TAKEN, definition); if (toolContentObject != null) { Assessment assessment = (Assessment) toolContentObject; Set questionReferences = new TreeSet(new SequencableComparator()); questionReferences.addAll(assessment.getQuestionReferences()); - Long totalMarksPossible = new Long(0); + Long totalMarksPossible = 0L; for (QuestionReference questionReference : questionReferences) { totalMarksPossible += questionReference.getDefaultGrade(); } - ; - definition = buildRangeDefinition(AssessmentConstants.OUTPUT_NAME_LEARNER_TOTAL_SCORE, new Long(0), + definition = buildRangeDefinition(AssessmentConstants.OUTPUT_NAME_LEARNER_TOTAL_SCORE, 0L, totalMarksPossible, true); definition.setWeightable(true); definitionMap.put(AssessmentConstants.OUTPUT_NAME_LEARNER_TOTAL_SCORE, definition); - definition = buildRangeDefinition(AssessmentConstants.OUTPUT_NAME_BEST_SCORE, new Long(0), - totalMarksPossible, false); + definition = buildRangeDefinition(AssessmentConstants.OUTPUT_NAME_BEST_SCORE, 0L, totalMarksPossible, + false); definition.setWeightable(true); definitionMap.put(AssessmentConstants.OUTPUT_NAME_BEST_SCORE, definition); - definition = buildRangeDefinition(AssessmentConstants.OUTPUT_NAME_FIRST_SCORE, new Long(0), - totalMarksPossible, false); + definition = buildRangeDefinition(AssessmentConstants.OUTPUT_NAME_FIRST_SCORE, 0L, totalMarksPossible, + false); definition.setWeightable(true); definitionMap.put(AssessmentConstants.OUTPUT_NAME_FIRST_SCORE, definition); - definition = buildRangeDefinition(AssessmentConstants.OUTPUT_NAME_AVERAGE_SCORE, new Long(0), - totalMarksPossible, false); + definition = buildRangeDefinition(AssessmentConstants.OUTPUT_NAME_AVERAGE_SCORE, 0L, totalMarksPossible, + false); definition.setWeightable(true); definitionMap.put(AssessmentConstants.OUTPUT_NAME_AVERAGE_SCORE, definition); int randomQuestionsCount = 1; for (QuestionReference questionReference : questionReferences) { Long markAvailable = null; if (questionReference.getDefaultGrade() != 0) { - markAvailable = new Long(questionReference.getDefaultGrade()); + markAvailable = Long.valueOf(questionReference.getDefaultGrade()); } String description = getI18NText("output.user.score.for.question", false); @@ -103,8 +102,7 @@ description += questionReference.getQuestion().getTitle(); } - definition = buildRangeDefinition(String.valueOf(questionReference.getSequenceId()), new Long(0), - markAvailable); + definition = buildRangeDefinition(String.valueOf(questionReference.getSequenceId()), 0L, markAvailable); definition.setDescription(description); definitionMap.put(String.valueOf(questionReference.getSequenceId()), definition); } Index: lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/service/AssessmentServiceImpl.java =================================================================== diff -u -rbddec51eae5eadd831676c4ea28eadcf446c32bd -rdcdc1487609bd4f00afaa93c09272d84ab0cd325 --- lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/service/AssessmentServiceImpl.java (.../AssessmentServiceImpl.java) (revision bddec51eae5eadd831676c4ea28eadcf446c32bd) +++ lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/service/AssessmentServiceImpl.java (.../AssessmentServiceImpl.java) (revision dcdc1487609bd4f00afaa93c09272d84ab0cd325) @@ -189,10 +189,8 @@ // create new user in a DB if (leader == null) { - AssessmentServiceImpl.log.debug("creating new user with userId: " + leaderUserId); + log.debug("creating new user with userId: " + leaderUserId); User leaderDto = (User) userManagementService.findById(User.class, leaderUserId.intValue()); - String userName = leaderDto.getLogin(); - String fullName = leaderDto.getFirstName() + " " + leaderDto.getLastName(); leader = new AssessmentUser(leaderDto.getUserDTO(), assessmentSession); createUser(leader); } @@ -376,7 +374,7 @@ public Assessment getDefaultContent(Long contentId) throws AssessmentApplicationException { if (contentId == null) { String error = messageService.getMessage("error.msg.default.content.not.find"); - AssessmentServiceImpl.log.error(error); + log.error(error); throw new AssessmentApplicationException(error); } @@ -440,7 +438,24 @@ @Override public void releaseFromCache(Object object) { - assessmentQuestionDao.evict(object); + assessmentDao.releaseFromCache(object); + + if (object instanceof AssessmentQuestion) { + AssessmentQuestion question = (AssessmentQuestion) object; + for (AssessmentQuestionOption option : question.getOptions()) { + assessmentDao.releaseFromCache(option); + } + for (AssessmentUnit unit : question.getUnits()) { + assessmentDao.releaseFromCache(unit); + } + } + + if (object instanceof QuestionReference) { + QuestionReference reference = (QuestionReference) object; + if (reference.getQuestion() != null) { + assessmentDao.releaseFromCache(reference.getQuestion()); + } + } } @Override @@ -450,6 +465,12 @@ @Override public void deleteQuestionReference(Long uid) { + //releaseFromCache associated AssessmentQuestion, otherwise it's treated as "A different object with the same identifier value was already associated with the session: AssessmentQuestion" + QuestionReference reference = (QuestionReference) assessmentQuestionDao.getObject(QuestionReference.class, uid); + if (reference.getQuestion() != null) { + assessmentDao.releaseFromCache(reference.getQuestion()); + } + assessmentQuestionDao.removeObject(QuestionReference.class, uid); } @@ -484,7 +505,7 @@ //check all required questionResults exist, it can be missing in case of random question - create new one then Set questionResults = lastResult.getQuestionResults(); - Set updatedQuestionResults = new TreeSet( + Set updatedQuestionResults = new TreeSet<>( new AssessmentQuestionResultComparator()); for (AssessmentQuestion question : questions) { @@ -948,11 +969,11 @@ //in case user played tricks with accessing Assessment using two tabs, finishedResult can be null and thus we need to request the last *not finished* result if (finishedResult == null) { AssessmentResult notFinishedResult = getLastAssessmentResult(assessmentUid, userId); - assessmentQuestionDao.evict(notFinishedResult); + assessmentDao.releaseFromCache(notFinishedResult); return getLastAssessmentResult(assessmentUid, userId); } else { - assessmentQuestionDao.evict(finishedResult); + assessmentDao.releaseFromCache(finishedResult); return getLastFinishedAssessmentResult(assessmentUid, userId); } } @@ -1551,7 +1572,7 @@ .getQuestionResultsPerSession(); int markCount = 0; - Float markTotal = new Float(0.0); + Float markTotal = 0.0F; int timeTakenCount = 0; int timeTakenTotal = 0; for (List resultList : allResultsForQuestion) { @@ -1564,9 +1585,9 @@ userResultRow[count++] = new ExcelCell( getQuestionTypeLanguageLabel(questionResult.getAssessmentQuestion().getType()), false); userResultRow[count++] = new ExcelCell( - new Float(questionResult.getAssessmentQuestion().getPenaltyFactor()), false); + Float.valueOf(questionResult.getAssessmentQuestion().getPenaltyFactor()), false); Float maxMark = (questionResult.getMaxMark() == null) ? 0 - : new Float(questionResult.getMaxMark()); + : Float.valueOf(questionResult.getMaxMark()); userResultRow[count++] = new ExcelCell(maxMark, false); if (showUserNames) { userResultRow[count++] = new ExcelCell(questionResult.getUser().getLoginName(), false); @@ -1635,26 +1656,26 @@ averageRow[7] = new ExcelCell(getMessage("label.export.average"), true); if (timeTakenTotal > 0) { - averageRow[8] = new ExcelCell(new Long(timeTakenTotal / timeTakenCount), false); + averageRow[8] = new ExcelCell(Long.valueOf(timeTakenTotal / timeTakenCount), false); } if (markTotal > 0) { - Float averageMark = new Float(markTotal / markCount); + Float averageMark = Float.valueOf(markTotal / markCount); averageRow[9] = new ExcelCell(averageMark, false); } else { - averageRow[9] = new ExcelCell(new Float(0.0), false); + averageRow[9] = new ExcelCell(0.0F, false); } } else { averageRow = new ExcelCell[9]; averageRow[6] = new ExcelCell(getMessage("label.export.average"), true); if (timeTakenTotal > 0) { - averageRow[7] = new ExcelCell(new Long(timeTakenTotal / timeTakenCount), false); + averageRow[7] = new ExcelCell(Long.valueOf(timeTakenTotal / timeTakenCount), false); } if (markTotal > 0) { - Float averageMark = new Float(markTotal / markCount); + Float averageMark = Float.valueOf(markTotal / markCount); averageRow[8] = new ExcelCell(averageMark, false); } else { - averageRow[8] = new ExcelCell(new Float(0.0), false); + averageRow[8] = new ExcelCell(0.0F, false); } } @@ -1690,8 +1711,8 @@ summaryRowTitle[4] = new ExcelCell(getMessage("label.monitoring.question.summary.average.mark"), true, ExcelCell.BORDER_STYLE_BOTTOM_THIN); userSummaryTab.add(summaryRowTitle); - Float totalGradesPossible = new Float(0); - Float totalAverage = new Float(0); + Float totalGradesPossible = 0F; + Float totalAverage = 0F; if (assessment.getQuestionReferences() != null) { Set questionReferences = new TreeSet<>(new SequencableComparator()); questionReferences.addAll(assessment.getQuestionReferences()); @@ -2029,7 +2050,7 @@ .getAssessmentQuestionResultList(assessment.getUid(), userId, questionUid); if ((questionResults == null) || questionResults.isEmpty()) { - AssessmentServiceImpl.log.warn("User with uid: " + user.getUid() + log.warn("User with uid: " + user.getUid() + " doesn't have any results despite the fact group leader has some."); continue; } @@ -2045,7 +2066,7 @@ assessmentResultDao.saveObject(result); // propagade changes to Gradebook - toolService.updateActivityMark(new Double(totalMark), null, userId.intValue(), toolSessionId, false); + toolService.updateActivityMark(Double.valueOf(totalMark), null, userId.intValue(), toolSessionId, false); // records mark change with audit service logEventService.logMarkChange(userId, user.getLoginName(), assessment.getContentId(), "" + oldMark, @@ -2055,14 +2076,15 @@ } @Override - public void recalculateUserAnswers(Assessment assessment, Set oldQuestions, - Set newQuestions, List deletedQuestions, - Set oldReferences, Set newReferences, - List deletedReferences) { + public void recalculateUserAnswers(final Long assessmentUid, final Long toolContentId, + Set oldQuestions, Set newQuestions, + List deletedQuestions, Set oldReferences, + Set newReferences, List deletedReferences) { // create list of modified questions List modifiedQuestions = new ArrayList<>(); for (AssessmentQuestion oldQuestion : oldQuestions) { + for (AssessmentQuestion newQuestion : newQuestions) { if (oldQuestion.getUid().equals(newQuestion.getUid())) { @@ -2134,21 +2156,21 @@ } } - List sessionList = assessmentSessionDao.getByContentId(assessment.getContentId()); + List sessionList = assessmentSessionDao.getByContentId(toolContentId); for (AssessmentSession session : sessionList) { Long toolSessionId = session.getSessionId(); Set sessionUsers = session.getAssessmentUsers(); for (AssessmentUser user : sessionUsers) { // get all finished user results - List assessmentResults = assessmentResultDao.getAssessmentResults(assessment.getUid(), + List assessmentResults = assessmentResultDao.getAssessmentResults(assessmentUid, user.getUserId()); AssessmentResult lastFinishedAssessmentResult = (assessmentResults.isEmpty()) ? null : assessmentResults.get(assessmentResults.size() - 1); //add autosave assessmentResult as well - AssessmentResult lastAssessmentResult = getLastAssessmentResult(assessment.getUid(), user.getUserId()); + AssessmentResult lastAssessmentResult = getLastAssessmentResult(assessmentUid, user.getUserId()); if (lastAssessmentResult != null && lastAssessmentResult.getFinishDate() == null) { assessmentResults.add(lastAssessmentResult); } @@ -2314,7 +2336,7 @@ // if this is the last finished assessment result - propagade total mark to Gradebook if (lastFinishedAssessmentResult != null && lastFinishedAssessmentResult.getUid().equals(assessmentResult.getUid())) { - toolService.updateActivityMark(new Double(assessmentMark), null, + toolService.updateActivityMark(Double.valueOf(assessmentMark), null, user.getUserId().intValue(), toolSessionId, false); } } @@ -2445,19 +2467,18 @@ Assessment defaultAssessment = getAssessmentByContentId(defaultAssessmentId); if (defaultAssessment == null) { String error = messageService.getMessage("error.msg.default.content.not.find"); - AssessmentServiceImpl.log.error(error); + log.error(error); throw new AssessmentApplicationException(error); } return defaultAssessment; } private Long getToolDefaultContentIdBySignature(String toolSignature) throws AssessmentApplicationException { - Long contentId = null; - contentId = new Long(toolService.getToolDefaultContentIdBySignature(toolSignature)); + Long contentId = toolService.getToolDefaultContentIdBySignature(toolSignature); if (contentId == null) { String error = messageService.getMessage("error.msg.default.content.not.find"); - AssessmentServiceImpl.log.error(error); + log.error(error); throw new AssessmentApplicationException(error); } return contentId; @@ -2552,15 +2573,15 @@ // reset it to new toolContentId toolContentObj.setContentId(toolContentId); - AssessmentUser user = assessmentUserDao.getUserCreatedAssessment(new Long(newUserUid.longValue()), + AssessmentUser user = assessmentUserDao.getUserCreatedAssessment(newUserUid.longValue(), toolContentId); if (user == null) { user = new AssessmentUser(); UserDTO sysUser = ((User) userManagementService.findById(User.class, newUserUid)).getUserDTO(); user.setFirstName(sysUser.getFirstName()); user.setLastName(sysUser.getLastName()); user.setLoginName(sysUser.getLogin()); - user.setUserId(new Long(newUserUid.longValue())); + user.setUserId(newUserUid.longValue()); user.setAssessment(toolContentObj); } toolContentObj.setCreatedBy(user); @@ -2616,8 +2637,7 @@ public void removeToolContent(Long toolContentId) throws ToolException { Assessment assessment = assessmentDao.getByContentId(toolContentId); if (assessment == null) { - AssessmentServiceImpl.log - .warn("Can not remove the tool content as it does not exist, ID: " + toolContentId); + log.warn("Can not remove the tool content as it does not exist, ID: " + toolContentId); return; } @@ -2634,9 +2654,8 @@ @Override public void removeLearnerContent(Long toolContentId, Integer userId) throws ToolException { - if (AssessmentServiceImpl.log.isDebugEnabled()) { - AssessmentServiceImpl.log - .debug("Removing Assessment results for user ID " + userId + " and toolContentId " + toolContentId); + if (log.isDebugEnabled()) { + log.debug("Removing Assessment results for user ID " + userId + " and toolContentId " + toolContentId); } List sessions = assessmentSessionDao.getByContentId(toolContentId); @@ -2683,11 +2702,11 @@ @Override public String leaveToolSession(Long toolSessionId, Long learnerId) throws DataMissingException, ToolException { if (toolSessionId == null) { - AssessmentServiceImpl.log.error("Fail to leave tool Session based on null tool session id."); + log.error("Fail to leave tool Session based on null tool session id."); throw new ToolException("Fail to remove tool Session based on null tool session id."); } if (learnerId == null) { - AssessmentServiceImpl.log.error("Fail to leave tool Session based on null learner."); + log.error("Fail to leave tool Session based on null learner."); throw new ToolException("Fail to remove tool Session based on null learner."); } @@ -2696,8 +2715,8 @@ session.setStatus(AssessmentConstants.COMPLETED); assessmentSessionDao.saveObject(session); } else { - AssessmentServiceImpl.log.error("Fail to leave tool Session.Could not find shared assessment " - + "session by given session id: " + toolSessionId); + log.error("Fail to leave tool Session.Could not find shared assessment " + "session by given session id: " + + toolSessionId); throw new DataMissingException("Fail to leave tool Session." + "Could not find shared assessment session by given session id: " + toolSessionId); } @@ -2711,7 +2730,7 @@ } @Override - public ToolSessionExportOutputData exportToolSession(List toolSessionIds) + public ToolSessionExportOutputData exportToolSession(List toolSessionIds) throws DataMissingException, ToolException { return null; } @@ -2900,7 +2919,7 @@ } @Override - public Class[] getSupportedToolOutputDefinitionClasses(int definitionType) { + public Class[] getSupportedToolOutputDefinitionClasses(int definitionType) { return getAssessmentOutputFactory().getSupportedDefinitionClasses(definitionType); } @@ -2955,7 +2974,6 @@ * * @throws IOException */ - @SuppressWarnings("unchecked") @Override public void createRestToolContent(Integer userID, Long toolContentID, ObjectNode toolContentJSON) throws IOException { @@ -3015,7 +3033,7 @@ // **************************** Set the question bank ********************* ArrayNode questions = JsonUtil.optArray(toolContentJSON, "questions"); - Set newQuestionSet = assessment.getQuestions(); // the Assessment constructor will set up the collection + Set newQuestionSet = assessment.getQuestions(); // the Assessment constructor will set up the collection for (JsonNode questionJSONData : questions) { AssessmentQuestion question = new AssessmentQuestion(); short type = JsonUtil.optInt(questionJSONData, "type").shortValue(); @@ -3077,7 +3095,7 @@ // **************************** Now set up the references to the questions in the bank ********************* ArrayNode references = JsonUtil.optArray(toolContentJSON, "references"); - Set newReferenceSet = assessment.getQuestionReferences(); // the Assessment constructor will set up the + Set newReferenceSet = assessment.getQuestionReferences(); // the Assessment constructor will set up the ;// collection for (JsonNode referenceJSONData : references) { Index: lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/service/IAssessmentService.java =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -rdcdc1487609bd4f00afaa93c09272d84ab0cd325 --- lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/service/IAssessmentService.java (.../IAssessmentService.java) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/service/IAssessmentService.java (.../IAssessmentService.java) (revision dcdc1487609bd4f00afaa93c09272d84ab0cd325) @@ -521,20 +521,12 @@ String getLearnerContentFolder(Long toolSessionId, Long userId); /** - * Recalculate marks after editing content from monitoring. - * - * @param assessment - * @param oldQuestions - * @param newQuestions - * @param deletedQuestions - * @param oldReferences - * @param newReferences - * @param deletedReferences + * Recalculate marks after editing content from monitoring */ - void recalculateUserAnswers(Assessment assessment, Set oldQuestions, - Set newQuestions, List deletedQuestions, - Set oldReferences, Set newReferences, - List deletedReferences); + void recalculateUserAnswers(final Long assessmentUid, final Long toolContentId, + Set oldQuestions, Set newQuestions, + List deletedQuestions, Set oldReferences, + Set newReferences, List deletedReferences); void releaseFromCache(Object object); Fisheye: Tag dcdc1487609bd4f00afaa93c09272d84ab0cd325 refers to a dead (removed) revision in file `lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/service/UploadAssessmentFileException.java'. Fisheye: No comparison available. Pass `N' to diff? Index: lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/web/controller/AuthoringController.java =================================================================== diff -u -rfd067e2f01c881d99c717983bdeb4ce64df77db2 -rdcdc1487609bd4f00afaa93c09272d84ab0cd325 --- lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/web/controller/AuthoringController.java (.../AuthoringController.java) (revision fd067e2f01c881d99c717983bdeb4ce64df77db2) +++ lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/web/controller/AuthoringController.java (.../AuthoringController.java) (revision dcdc1487609bd4f00afaa93c09272d84ab0cd325) @@ -122,7 +122,7 @@ public String definelater(@ModelAttribute("assessmentForm") AssessmentForm assessmentForm, HttpServletRequest request) throws ServletException { // update define later flag to true - Long contentId = new Long(WebUtil.readLongParam(request, AttributeNames.PARAM_TOOL_CONTENT_ID)); + Long contentId = WebUtil.readLongParam(request, AttributeNames.PARAM_TOOL_CONTENT_ID); Assessment assessment = service.getAssessmentByContentId(contentId); assessment.setDefineLater(true); @@ -140,7 +140,7 @@ */ private String showStartPage(AssessmentForm assessmentForm, HttpServletRequest request) throws ServletException { // save toolContentID into HTTPSession - Long contentId = new Long(WebUtil.readLongParam(request, AssessmentConstants.PARAM_TOOL_CONTENT_ID)); + Long contentId = WebUtil.readLongParam(request, AssessmentConstants.PARAM_TOOL_CONTENT_ID); List questions = null; Assessment assessment = null; @@ -164,7 +164,7 @@ assessmentForm.setAssessment(assessment); } catch (Exception e) { - AuthoringController.log.error(e); + log.error(e); throw new ServletException(e); } @@ -199,9 +199,7 @@ @RequestMapping("/init") public String init(@ModelAttribute("assessmentForm") AssessmentForm assessmentForm, HttpServletRequest request) throws ServletException { - String sessionMapID = WebUtil.readStrParam(request, AssessmentConstants.ATTR_SESSION_MAP_ID); - SessionMap sessionMap = (SessionMap) request.getSession() - .getAttribute(sessionMapID); + SessionMap sessionMap = getSessionMap(request); AssessmentForm existForm = (AssessmentForm) sessionMap.get(AssessmentConstants.ATTR_ASSESSMENT_FORM); try { @@ -220,6 +218,7 @@ * This method will persist all inforamtion in this authoring page, include all assessment question, information * etc. */ + @SuppressWarnings("unchecked") @RequestMapping("/updateContent") public String updateContent(@ModelAttribute("assessmentForm") AssessmentForm assessmentForm, HttpServletRequest request) throws Exception { @@ -228,27 +227,26 @@ .getAttribute(assessmentForm.getSessionMapID()); ToolAccessMode mode = WebUtil.readToolAccessModeAuthorDefaulted(request); Assessment assessment = assessmentForm.getAssessment(); - - // **********************************Get Assessment PO********************* Assessment assessmentPO = service.getAssessmentByContentId(assessmentForm.getAssessment().getContentId()); + Set oldQuestions = (assessmentPO == null) ? new HashSet<>() : assessmentPO.getQuestions(); + Set oldReferences = (assessmentPO == null) ? new HashSet<>() + : assessmentPO.getQuestionReferences(); + //allow using old and modified questions and references altogether if (mode.isTeacher()) { - for (AssessmentQuestion question : (Set) assessment.getQuestions()) { + for (AssessmentQuestion question : oldQuestions) { service.releaseFromCache(question); } - for (QuestionReference reference : (Set) assessment.getQuestionReferences()) { + for (QuestionReference reference : oldReferences) { service.releaseFromCache(reference); } } - - Set oldQuestions = (assessmentPO == null) ? new HashSet<>() : assessmentPO.getQuestions(); - Set oldReferences = (assessmentPO == null) ? new HashSet<>() - : assessmentPO.getQuestionReferences(); + AssessmentUser assessmentUser = null; if (assessmentPO == null) { - // new Assessment, create it. + // new Assessment, create it assessmentPO = assessment; assessmentPO.setCreated(new Timestamp(new Date().getTime())); @@ -269,7 +267,6 @@ assessmentPO.setDefineLater(false); assessmentPO.setUpdated(new Timestamp(new Date().getTime())); } - } // *******************************Handle user******************* @@ -278,7 +275,7 @@ HttpSession ss = SessionManager.getSession(); // get back login user DTO UserDTO user = (UserDTO) ss.getAttribute(AttributeNames.USER); - assessmentUser = service.getUserCreatedAssessment(new Long(user.getUserID().intValue()), + assessmentUser = service.getUserCreatedAssessment(user.getUserID().longValue(), assessmentPO.getContentId()); if (assessmentUser == null) { assessmentUser = new AssessmentUser(user, assessmentPO); @@ -287,22 +284,20 @@ assessmentPO.setCreatedBy(assessmentUser); // ************************* Handle assessment questions ******************* - // Handle assessment questions - Set questions = new LinkedHashSet<>(); Set newQuestions = getQuestionList(sessionMap); for (AssessmentQuestion question : newQuestions) { removeNewLineCharacters(question); - questions.add(question); } - assessmentPO.setQuestions(questions); + assessmentPO.setQuestions(newQuestions); List deletedQuestions = getDeletedQuestionList(sessionMap); Set newReferences = updateQuestionReferencesGrades(request, sessionMap, true); List deletedReferences = getDeletedQuestionReferences(sessionMap); + //recalculate results in case content is edited from monitoring if (mode.isTeacher()) { - service.recalculateUserAnswers(assessmentPO, oldQuestions, newQuestions, deletedQuestions, oldReferences, - newReferences, deletedReferences); + service.recalculateUserAnswers(assessmentPO.getUid(), assessmentPO.getContentId(), oldQuestions, + newQuestions, deletedQuestions, oldReferences, newReferences, deletedReferences); } // delete References from database. @@ -350,8 +345,7 @@ public String newQuestionInit(@ModelAttribute("assessmentQuestionForm") AssessmentQuestionForm questionForm, HttpServletRequest request) { String sessionMapID = WebUtil.readStrParam(request, AssessmentConstants.ATTR_SESSION_MAP_ID); - SessionMap sessionMap = (SessionMap) request.getSession() - .getAttribute(sessionMapID); + SessionMap sessionMap = getSessionMap(request); updateQuestionReferencesGrades(request, sessionMap, false); String contentFolderID = (String) sessionMap.get(AttributeNames.PARAM_CONTENT_FOLDER_ID); questionForm.setSessionMapID(sessionMapID); @@ -394,11 +388,7 @@ @RequestMapping("/editQuestion") public String editQuestion(@ModelAttribute("assessmentQuestionForm") AssessmentQuestionForm questionForm, HttpServletRequest request) { - - // get back sessionMAP - String sessionMapID = WebUtil.readStrParam(request, AssessmentConstants.ATTR_SESSION_MAP_ID); - SessionMap sessionMap = (SessionMap) request.getSession() - .getAttribute(sessionMapID); + SessionMap sessionMap = getSessionMap(request); updateQuestionReferencesGrades(request, sessionMap, false); String contentFolderID = (String) sessionMap.get(AttributeNames.PARAM_CONTENT_FOLDER_ID); @@ -424,6 +414,7 @@ * HttpSession temporarily. Only they will be persist when the entire authoring page is being * persisted. */ + @SuppressWarnings("unchecked") @RequestMapping("/saveOrUpdateQuestion") public String saveOrUpdateQuestion(@ModelAttribute("assessmentQuestionForm") AssessmentQuestionForm questionForm, HttpServletRequest request) { @@ -441,12 +432,9 @@ /** * Parses questions extracted from IMS QTI file and adds them as new items. */ - @SuppressWarnings("rawtypes") @RequestMapping("/saveQTI") public String saveQTI(HttpServletRequest request) throws UnsupportedEncodingException { - String sessionMapId = request.getParameter(AssessmentConstants.ATTR_SESSION_MAP_ID); - SessionMap sessionMap = (SessionMap) request.getSession() - .getAttribute(sessionMapId); + SessionMap sessionMap = getSessionMap(request); String contentFolderID = (String) sessionMap.get(AttributeNames.PARAM_CONTENT_FOLDER_ID); SortedSet questionList = getQuestionList(sessionMap); @@ -498,8 +486,7 @@ String answerText = QuestionParser.processHTMLField(answer.getText(), false, contentFolderID, question.getResourcesFolderPath()); if ((correctAnswer != null) && correctAnswer.equals(answerText)) { - AuthoringController.log - .warn("Skipping an answer with same text as the correct answer: " + answerText); + log.warn("Skipping an answer with same text as the correct answer: " + answerText); continue; } AssessmentQuestionOption assessmentAnswer = new AssessmentQuestionOption(); @@ -511,14 +498,13 @@ // for fill in blanks question all answers are correct and get full grade if (!isMultipleChoice && !isMarkHedgingType || correctAnswer == null) { // whatever the correct answer holds, it becomes the question score - questionGrade = new Double(Math.ceil(answer.getScore())).intValue(); + questionGrade = Double.valueOf(Math.ceil(answer.getScore())).intValue(); // 100% goes to the correct answer assessmentAnswer.setGrade(1); correctAnswer = answerText; } else { - AuthoringController.log - .warn("Choosing only first correct answer, despite another one was found: " - + answerText); + log.warn("Choosing only first correct answer, despite another one was found: " + + answerText); assessmentAnswer.setGrade(0); } } else { @@ -532,7 +518,7 @@ } if (correctAnswer == null) { - AuthoringController.log.warn("No correct answer found for question: " + question.getText()); + log.warn("No correct answer found for question: " + question.getText()); continue; } @@ -550,7 +536,7 @@ totalScore += answer.getScore(); } } - questionGrade = new Double(Math.round(totalScore)).intValue(); + questionGrade = Double.valueOf(Math.round(totalScore)).intValue(); TreeSet optionList = new TreeSet<>(new SequencableComparator()); int orderId = 1; @@ -578,13 +564,13 @@ assessmentQuestion.setType(AssessmentConstants.QUESTION_TYPE_TRUE_FALSE); if (question.getAnswers() == null) { - AuthoringController.log.warn("Answers missing from true-false question: " + question.getText()); + log.warn("Answers missing from true-false question: " + question.getText()); continue; } else { for (Answer answer : question.getAnswers()) { if ((answer.getScore() != null) && (answer.getScore() > 0)) { assessmentQuestion.setCorrectAnswer(Boolean.parseBoolean(answer.getText())); - questionGrade = new Double(Math.ceil(answer.getScore())).intValue(); + questionGrade = Double.valueOf(Math.ceil(answer.getScore())).intValue(); } if (!StringUtils.isBlank(answer.getFeedback())) { // set feedback for true/false answers @@ -608,7 +594,7 @@ totalScore += answer.getScore(); } } - questionGrade = new Double(Math.round(totalScore)).intValue(); + questionGrade = Double.valueOf(Math.round(totalScore)).intValue(); TreeSet optionList = new TreeSet<>(new SequencableComparator()); int orderId = 1; @@ -650,8 +636,7 @@ String answerText = QuestionParser.processHTMLField(answer.getText(), false, contentFolderID, question.getResourcesFolderPath()); if ((correctAnswer != null) && correctAnswer.equals(answerText)) { - AuthoringController.log - .warn("Skipping an answer with same text as the correct answer: " + answerText); + log.warn("Skipping an answer with same text as the correct answer: " + answerText); continue; } AssessmentQuestionOption assessmentAnswer = new AssessmentQuestionOption(); @@ -663,14 +648,13 @@ // for fill in blanks question all answers are correct and get full grade if (correctAnswer == null) { // whatever the correct answer holds, it becomes the question score - questionGrade = new Double(Math.ceil(answer.getScore())).intValue(); + questionGrade = Double.valueOf(Math.ceil(answer.getScore())).intValue(); // 100% goes to the correct answer assessmentAnswer.setGrade(1); correctAnswer = answerText; } else { - AuthoringController.log - .warn("Choosing only first correct answer, despite another one was found: " - + answerText); + log.warn("Choosing only first correct answer, despite another one was found: " + + answerText); assessmentAnswer.setGrade(0); } } else { @@ -684,40 +668,35 @@ } if (correctAnswer == null) { - AuthoringController.log.warn("No correct answer found for question: " + question.getText()); + log.warn("No correct answer found for question: " + question.getText()); continue; } } else { - AuthoringController.log.warn("Unknow QTI question type: " + question.getType()); + log.warn("Unknow QTI question type: " + question.getType()); continue; } assessmentQuestion.setDefaultGrade(questionGrade); questionList.add(assessmentQuestion); - if (AuthoringController.log.isDebugEnabled()) { - AuthoringController.log.debug("Added question: " + assessmentQuestion.getTitle()); + if (log.isDebugEnabled()) { + log.debug("Added question: " + assessmentQuestion.getTitle()); } } reinitializeAvailableQuestions(sessionMap); - // set session map ID so that questionlist.jsp can get sessionMAP - request.setAttribute(AssessmentConstants.ATTR_SESSION_MAP_ID, sessionMapId); return "pages/authoring/parts/questionlist"; } /** * Prepares Assessment content for QTI packing */ - @SuppressWarnings("rawtypes") @RequestMapping("/exportQTI") public String exportQTI(HttpServletRequest request, HttpServletResponse response) throws UnsupportedEncodingException { - String sessionMapID = WebUtil.readStrParam(request, AssessmentConstants.ATTR_SESSION_MAP_ID); - SessionMap sessionMap = (SessionMap) request.getSession() - .getAttribute(sessionMapID); + SessionMap sessionMap = getSessionMap(request); SortedSet questionList = getQuestionList(sessionMap); List questions = new LinkedList<>(); @@ -740,11 +719,11 @@ } Float correctAnswerScore = correctAnswerCount > 0 - ? new Integer(100 / correctAnswerCount).floatValue() + ? Integer.valueOf(100 / correctAnswerCount).floatValue() : null; int incorrectAnswerCount = assessmentQuestion.getOptions().size() - correctAnswerCount; Float incorrectAnswerScore = incorrectAnswerCount > 0 - ? new Integer(-100 / incorrectAnswerCount).floatValue() + ? Integer.valueOf(-100 / incorrectAnswerCount).floatValue() : null; for (AssessmentQuestionOption assessmentAnswer : assessmentQuestion.getOptions()) { @@ -768,7 +747,7 @@ answer.setText(assessmentAnswer.getOptionString()); answer.setScore( - isCorrectAnswer ? new Integer(assessmentQuestion.getDefaultGrade()).floatValue() + isCorrectAnswer ? Integer.valueOf(assessmentQuestion.getDefaultGrade()).floatValue() : 0); answer.setFeedback(isCorrectAnswer ? assessmentQuestion.getFeedbackOnCorrect() : assessmentQuestion.getFeedbackOnIncorrect()); @@ -786,7 +765,7 @@ if (assessmentAnswer.getGrade() > 0) { Answer answer = new Answer(); answer.setText(assessmentAnswer.getOptionString()); - answer.setScore(new Integer(assessmentQuestion.getDefaultGrade()).floatValue()); + answer.setScore(Integer.valueOf(assessmentQuestion.getDefaultGrade()).floatValue()); answers.add(answer); } @@ -801,15 +780,15 @@ Answer trueAnswer = new Answer(); trueAnswer.setText("True"); trueAnswer.setScore( - isTrueCorrect ? new Integer(assessmentQuestion.getDefaultGrade()).floatValue() : 0); + isTrueCorrect ? Integer.valueOf(assessmentQuestion.getDefaultGrade()).floatValue() : 0); trueAnswer.setFeedback(isTrueCorrect ? assessmentQuestion.getFeedbackOnCorrect() : assessmentQuestion.getFeedbackOnIncorrect()); answers.add(trueAnswer); Answer falseAnswer = new Answer(); falseAnswer.setText("False"); falseAnswer.setScore( - !isTrueCorrect ? new Integer(assessmentQuestion.getDefaultGrade()).floatValue() : 0); + !isTrueCorrect ? Integer.valueOf(assessmentQuestion.getDefaultGrade()).floatValue() : 0); falseAnswer.setFeedback(!isTrueCorrect ? assessmentQuestion.getFeedbackOnCorrect() : assessmentQuestion.getFeedbackOnIncorrect()); answers.add(falseAnswer); @@ -855,7 +834,7 @@ answer.setText(assessmentAnswer.getOptionString()); answer.setScore( - isCorrectAnswer ? new Integer(assessmentQuestion.getDefaultGrade()).floatValue() : 0); + isCorrectAnswer ? Integer.valueOf(assessmentQuestion.getDefaultGrade()).floatValue() : 0); answer.setFeedback(isCorrectAnswer ? assessmentQuestion.getFeedbackOnCorrect() : assessmentQuestion.getFeedbackOnIncorrect()); @@ -888,11 +867,7 @@ */ @RequestMapping("/removeQuestion") public String removeQuestion(HttpServletRequest request) { - - // get back sessionMAP - String sessionMapID = WebUtil.readStrParam(request, AssessmentConstants.ATTR_SESSION_MAP_ID); - SessionMap sessionMap = (SessionMap) request.getSession() - .getAttribute(sessionMapID); + SessionMap sessionMap = getSessionMap(request); updateQuestionReferencesGrades(request, sessionMap, false); int questionIdx = NumberUtils.toInt(request.getParameter(AssessmentConstants.PARAM_QUESTION_INDEX), -1); @@ -936,7 +911,6 @@ reinitializeAvailableQuestions(sessionMap); - request.setAttribute(AssessmentConstants.ATTR_SESSION_MAP_ID, sessionMapID); return "pages/authoring/parts/questionlist"; } @@ -946,10 +920,7 @@ */ @RequestMapping("/addQuestionReference") public String addQuestionReference(HttpServletRequest request) { - // get back sessionMAP - String sessionMapID = WebUtil.readStrParam(request, AssessmentConstants.ATTR_SESSION_MAP_ID); - SessionMap sessionMap = (SessionMap) request.getSession() - .getAttribute(sessionMapID); + SessionMap sessionMap = getSessionMap(request); updateQuestionReferencesGrades(request, sessionMap, false); SortedSet references = getQuestionReferences(sessionMap); @@ -987,7 +958,6 @@ reinitializeAvailableQuestions(sessionMap); - request.setAttribute(AssessmentConstants.ATTR_SESSION_MAP_ID, sessionMapID); return "pages/authoring/parts/questionlist"; } @@ -997,11 +967,7 @@ */ @RequestMapping("/removeQuestionReference") public String removeQuestionReference(HttpServletRequest request) { - - // get back sessionMAP - String sessionMapID = WebUtil.readStrParam(request, AssessmentConstants.ATTR_SESSION_MAP_ID); - SessionMap sessionMap = (SessionMap) request.getSession() - .getAttribute(sessionMapID); + SessionMap sessionMap = getSessionMap(request); updateQuestionReferencesGrades(request, sessionMap, false); int questionReferenceIdx = NumberUtils @@ -1019,7 +985,6 @@ reinitializeAvailableQuestions(sessionMap); - request.setAttribute(AssessmentConstants.ATTR_SESSION_MAP_ID, sessionMapID); return "pages/authoring/parts/questionlist"; } @@ -1040,10 +1005,7 @@ } private String switchQuestionReferences(HttpServletRequest request, boolean up) { - // get back sessionMAP - String sessionMapID = WebUtil.readStrParam(request, AssessmentConstants.ATTR_SESSION_MAP_ID); - SessionMap sessionMap = (SessionMap) request.getSession() - .getAttribute(sessionMapID); + SessionMap sessionMap = getSessionMap(request); updateQuestionReferencesGrades(request, sessionMap, false); int questionReferenceIdx = NumberUtils @@ -1068,7 +1030,6 @@ references.addAll(rList); } - request.setAttribute(AssessmentConstants.ATTR_SESSION_MAP_ID, sessionMapID); return "pages/authoring/parts/questionlist"; } @@ -1086,12 +1047,10 @@ /** * Imports questions into question bank from uploaded xml file. */ + @SuppressWarnings("unchecked") @RequestMapping("/importQuestions") public String importQuestions(@RequestParam("UPLOAD_FILE") MultipartFile file, HttpServletRequest request) throws ServletException { - String sessionMapID = WebUtil.readStrParam(request, AssessmentConstants.ATTR_SESSION_MAP_ID); - SessionMap sessionMap = (SessionMap) request.getSession() - .getAttribute(sessionMapID); - request.setAttribute(AssessmentConstants.ATTR_SESSION_MAP_ID, sessionMapID); + SessionMap sessionMap = getSessionMap(request); SortedSet oldQuestions = getQuestionList(sessionMap); List toolsErrorMsgs = new ArrayList<>(); @@ -1127,7 +1086,7 @@ } } catch (Exception e) { - AuthoringController.log.error("Error occured during import", e); + log.error("Error occured during import", e); toolsErrorMsgs.add(e.getClass().getName() + " " + e.getMessage()); } @@ -1144,9 +1103,7 @@ */ @RequestMapping("/exportQuestions") public String exportQuestions(HttpServletRequest request, HttpServletResponse response) { - String sessionMapID = request.getParameter(AssessmentConstants.ATTR_SESSION_MAP_ID); - SessionMap sessionMap = (SessionMap) request.getSession() - .getAttribute(sessionMapID); + SessionMap sessionMap = getSessionMap(request); AssessmentForm assessmentForm = (AssessmentForm) sessionMap.get(AssessmentConstants.ATTR_ASSESSMENT_FORM); Assessment assessment = assessmentForm.getAssessment(); @@ -1168,33 +1125,32 @@ response.setContentType("application/x-download"); response.setHeader("Content-Disposition", "attachment;filename=" + AssessmentConstants.EXPORT_QUESTIONS_FILENAME); - AuthoringController.log.debug("Exporting assessment questions to an xml: " + assessment.getContentId()); + log.debug("Exporting assessment questions to an xml: " + assessment.getContentId()); OutputStream out = null; try { out = response.getOutputStream(); out.write(resultedXml.getBytes()); int count = resultedXml.getBytes().length; - AuthoringController.log.debug("Wrote out " + count + " bytes"); + log.debug("Wrote out " + count + " bytes"); response.setContentLength(count); out.flush(); } catch (Exception e) { - AuthoringController.log.error("Exception occured writing out file:" + e.getMessage()); + log.error("Exception occured writing out file:" + e.getMessage()); throw new ExportToolContentException(e); } finally { try { if (out != null) { out.close(); } } catch (Exception e) { - AuthoringController.log - .error("Error Closing file. File already written out - no exception being thrown.", e); + log.error("Error Closing file. File already written out - no exception being thrown.", e); } } } catch (Exception e) { errors = "Unable to export tool content: " + e.toString(); - AuthoringController.log.error(errors); + log.error(errors); } } @@ -1242,7 +1198,7 @@ int optionIndex = NumberUtils.toInt(request.getParameter(AssessmentConstants.PARAM_OPTION_INDEX), -1); if (optionIndex != -1) { List rList = new ArrayList<>(optionList); - AssessmentQuestionOption question = rList.remove(optionIndex); + rList.remove(optionIndex); optionList.clear(); optionList.addAll(rList); } @@ -1328,9 +1284,7 @@ */ @RequestMapping("/initOverallFeedback") public String initOverallFeedback(HttpServletRequest request) { - String sessionMapID = WebUtil.readStrParam(request, AssessmentConstants.ATTR_SESSION_MAP_ID); - SessionMap sessionMap = (SessionMap) request.getSession() - .getAttribute(sessionMapID); + SessionMap sessionMap = getSessionMap(request); AssessmentForm assessmentForm = (AssessmentForm) sessionMap.get(AssessmentConstants.ATTR_ASSESSMENT_FORM); Assessment assessment = assessmentForm.getAssessment(); @@ -1381,6 +1335,7 @@ * * @param sessionMap */ + @SuppressWarnings("unchecked") private void reinitializeAvailableQuestions(SessionMap sessionMap) { SortedSet bankQuestions = getQuestionList(sessionMap); SortedSet references = getQuestionReferences(sessionMap); @@ -1401,6 +1356,7 @@ * @param request * @return */ + @SuppressWarnings("unchecked") private SortedSet getQuestionList(SessionMap sessionMap) { SortedSet list = (SortedSet) sessionMap .get(AssessmentConstants.ATTR_QUESTION_LIST); @@ -1413,10 +1369,8 @@ /** * List save current question references. - * - * @param request - * @return */ + @SuppressWarnings("unchecked") private SortedSet getQuestionReferences(SessionMap sessionMap) { SortedSet list = (SortedSet) sessionMap .get(AssessmentConstants.ATTR_QUESTION_REFERENCES); @@ -1429,46 +1383,35 @@ /** * List save deleted assessment questions, which could be persisted or non-persisted questions. - * - * @param request - * @return + */ + @SuppressWarnings("unchecked") private List getDeletedQuestionList(SessionMap sessionMap) { - return getListFromSession(sessionMap, AssessmentConstants.ATTR_DELETED_QUESTION_LIST); + return (List) getListFromSession(sessionMap, AssessmentConstants.ATTR_DELETED_QUESTION_LIST); } /** * List save deleted assessment questions, which could be persisted or non-persisted questions. - * - * @param request - * @return */ + @SuppressWarnings("unchecked") private List getDeletedQuestionReferences(SessionMap sessionMap) { - return getListFromSession(sessionMap, AssessmentConstants.ATTR_DELETED_QUESTION_REFERENCES); + return (List) getListFromSession(sessionMap, AssessmentConstants.ATTR_DELETED_QUESTION_REFERENCES); } /** * Get java.util.List from HttpSession by given name. - * - * @param request - * @param name - * @return */ - private List getListFromSession(SessionMap sessionMap, String name) { - List list = (List) sessionMap.get(name); + private List getListFromSession(SessionMap sessionMap, String name) { + List list = (List) sessionMap.get(name); if (list == null) { - list = new ArrayList(); + list = new ArrayList<>(); sessionMap.put(name, list); } return list; } /** * Get back jsp name. - * - * @param type - * @param mapping - * @return */ private String findForward(short type) { String forward; @@ -1506,11 +1449,6 @@ /** * This method will populate assessment question information to its form for edit use. - * - * @param questionIdx - * @param question - * @param form - * @param request */ private void populateQuestionToForm(int questionIdx, AssessmentQuestion question, AssessmentQuestionForm form, HttpServletRequest request) { @@ -1535,7 +1473,7 @@ form.setMinWordsLimit(question.getMinWordsLimit()); form.setHedgingJustificationEnabled(question.isHedgingJustificationEnabled()); if (questionIdx >= 0) { - form.setQuestionIndex(new Integer(questionIdx).toString()); + form.setQuestionIndex(String.valueOf(questionIdx)); } short questionType = question.getType(); @@ -1557,6 +1495,7 @@ /** * Extract web form content to assessment question. */ + @SuppressWarnings("unchecked") private void extractFormToAssessmentQuestion(HttpServletRequest request, AssessmentQuestionForm questionForm) { /* * BE CAREFUL: This method will copy nessary info from request form to an old or new AssessmentQuestion @@ -1680,12 +1619,12 @@ AssessmentConstants.PARAM_GRADE + questionReference.getSequenceId()); } else { String gradeStr = paramMap.get(AssessmentConstants.PARAM_GRADE + questionReference.getSequenceId()); - grade = new Integer(gradeStr); + grade = Integer.valueOf(gradeStr); } questionReference.setDefaultGrade(grade); } catch (Exception e) { - AuthoringController.log.debug(e.getMessage()); + log.debug(e.getMessage()); } } @@ -1786,7 +1725,7 @@ String sequenceId = paramMap.get(AssessmentConstants.ATTR_OPTION_SEQUENCE_ID_PREFIX + i); option.setSequenceId(NumberUtils.toInt(sequenceId)); option.setOptionString(optionString); - if ((correctOptionIndex != null) && correctOptionIndex.equals(new Integer(sequenceId))) { + if ((correctOptionIndex != null) && correctOptionIndex.equals(Integer.valueOf(sequenceId))) { option.setCorrect(true); } option.setFeedback(paramMap.get(AssessmentConstants.ATTR_OPTION_FEEDBACK_PREFIX + i)); @@ -1911,7 +1850,7 @@ try { paramMap.put(pair[0], URLDecoder.decode(pair[1], "UTF-8")); } catch (UnsupportedEncodingException e) { - AuthoringController.log.error("Error occurs when decode instruction string:" + e.toString()); + log.error("Error occurs when decode instruction string:" + e.toString()); } } return paramMap; @@ -1940,4 +1879,11 @@ } } + + @SuppressWarnings("unchecked") + private SessionMap getSessionMap(HttpServletRequest request) { + String sessionMapID = WebUtil.readStrParam(request, AssessmentConstants.ATTR_SESSION_MAP_ID); + request.setAttribute(AssessmentConstants.ATTR_SESSION_MAP_ID, sessionMapID); + return (SessionMap) request.getSession().getAttribute(sessionMapID); + } } Index: lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/web/controller/LearningController.java =================================================================== diff -u -rc955e015d6401904e2dd7c662436047392caedfd -rdcdc1487609bd4f00afaa93c09272d84ab0cd325 --- lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/web/controller/LearningController.java (.../LearningController.java) (revision c955e015d6401904e2dd7c662436047392caedfd) +++ lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/web/controller/LearningController.java (.../LearningController.java) (revision dcdc1487609bd4f00afaa93c09272d84ab0cd325) @@ -40,7 +40,6 @@ import java.util.SortedSet; import java.util.TimeZone; import java.util.TreeSet; -import java.util.Vector; import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; @@ -52,7 +51,6 @@ import org.apache.commons.lang.math.NumberUtils; import org.apache.log4j.Logger; import org.lamsfoundation.lams.learningdesign.dto.ActivityPositionDTO; -import org.lamsfoundation.lams.learningdesign.dto.ValidationErrorDTO; import org.lamsfoundation.lams.notebook.model.NotebookEntry; import org.lamsfoundation.lams.tool.ToolAccessMode; import org.lamsfoundation.lams.tool.assessment.AssessmentConstants; @@ -117,7 +115,6 @@ * * This method will avoid read database again and lost un-saved resouce question lost when user "refresh page". */ - @SuppressWarnings("unchecked") @RequestMapping("/start") public String start(HttpServletRequest request) throws ServletException, IllegalAccessException, InstantiationException, InvocationTargetException, NoSuchMethodException { @@ -128,9 +125,8 @@ // save toolContentID into HTTPSession ToolAccessMode mode = WebUtil.readToolAccessModeParam(request, AttributeNames.PARAM_MODE, true); + Long toolSessionId = WebUtil.readLongParam(request, AssessmentConstants.PARAM_TOOL_SESSION_ID); - Long toolSessionId = new Long(request.getParameter(AssessmentConstants.PARAM_TOOL_SESSION_ID)); - request.setAttribute(AssessmentConstants.ATTR_SESSION_MAP_ID, sessionMap.getSessionID()); request.setAttribute(AttributeNames.ATTR_MODE, mode); request.setAttribute(AttributeNames.PARAM_TOOL_SESSION_ID, toolSessionId); @@ -150,13 +146,13 @@ // support for leader select feature AssessmentUser groupLeader = assessment.isUseSelectLeaderToolOuput() - ? service.checkLeaderSelectToolForSessionLeader(user, new Long(toolSessionId).longValue()) + ? service.checkLeaderSelectToolForSessionLeader(user, toolSessionId) : null; if (assessment.isUseSelectLeaderToolOuput() && !mode.isTeacher()) { // forwards to the leaderSelection page if (groupLeader == null) { - List groupUsers = service.getUsersBySession(new Long(toolSessionId).longValue()); + List groupUsers = service.getUsersBySession(toolSessionId); request.setAttribute(AssessmentConstants.ATTR_GROUP_USERS, groupUsers); request.setAttribute(AssessmentConstants.ATTR_ASSESSMENT, assessment); @@ -198,7 +194,7 @@ } sessionMap.put(AssessmentConstants.ATTR_GROUP_LEADER, groupLeader); - boolean isUserLeader = service.isUserGroupLeader(user, new Long(toolSessionId)); + boolean isUserLeader = service.isUserGroupLeader(user, toolSessionId); sessionMap.put(AssessmentConstants.ATTR_IS_USER_LEADER, isUserLeader); Set questionReferences = new TreeSet<>(new SequencableComparator()); @@ -418,12 +414,12 @@ * page number with questions required to be answered * @return */ + @SuppressWarnings("unchecked") private String nextPage(HttpServletRequest request, boolean isAnswersValidationFailed, int pageNumberWithUnasweredQuestions) throws ServletException, IllegalAccessException, InvocationTargetException, NoSuchMethodException { String sessionMapID = WebUtil.readStrParam(request, AssessmentConstants.ATTR_SESSION_MAP_ID); - SessionMap sessionMap = (SessionMap) request.getSession() - .getAttribute(sessionMapID); + SessionMap sessionMap = getSessionMap(request); Assessment assessment = (Assessment) sessionMap.get(AssessmentConstants.ATTR_ASSESSMENT); AssessmentUser user = (AssessmentUser) sessionMap.get(AssessmentConstants.ATTR_USER); int oldPageNumber = (Integer) sessionMap.get(AssessmentConstants.ATTR_PAGE_NUMBER); @@ -483,10 +479,7 @@ @ResponseBody public String getSecondsLeft(HttpServletRequest request, HttpServletResponse response) throws ServletException, IllegalAccessException, InvocationTargetException, NoSuchMethodException, IOException { - - String sessionMapID = WebUtil.readStrParam(request, AssessmentConstants.ATTR_SESSION_MAP_ID); - SessionMap sessionMap = (SessionMap) request.getSession() - .getAttribute(sessionMapID); + SessionMap sessionMap = getSessionMap(request); Assessment assessment = (Assessment) sessionMap.get(AssessmentConstants.ATTR_ASSESSMENT); AssessmentUser user = (AssessmentUser) sessionMap.get(AssessmentConstants.ATTR_USER); long secondsLeft = service.getSecondsLeft(assessment, user); @@ -497,18 +490,13 @@ } /** - * Handling submittion of MarkHedging type of Questions (in case of leader aware tool). - * - * @throws NoSuchMethodException - * @throws InvocationTargetException - * @throws IllegalAccessException + * Handling submittion of MarkHedging type of Questions (in case of leader aware tool) */ + @SuppressWarnings("unchecked") @RequestMapping("/submitSingleMarkHedgingQuestion") public String submitSingleMarkHedgingQuestion(HttpServletRequest request) throws ServletException, IllegalAccessException, InvocationTargetException, NoSuchMethodException { - String sessionMapID = WebUtil.readStrParam(request, AssessmentConstants.ATTR_SESSION_MAP_ID); - SessionMap sessionMap = (SessionMap) request.getSession() - .getAttribute(sessionMapID); + SessionMap sessionMap = getSessionMap(request); int pageNumber = (Integer) sessionMap.get(AssessmentConstants.ATTR_PAGE_NUMBER); List> pagedQuestionDtos = (List>) sessionMap .get(AssessmentConstants.ATTR_PAGED_QUESTION_DTOS); @@ -563,9 +551,7 @@ @RequestMapping("/submitAll") public String submitAll(HttpServletRequest request) throws ServletException, IllegalAccessException, InvocationTargetException, NoSuchMethodException { - String sessionMapID = WebUtil.readStrParam(request, AssessmentConstants.ATTR_SESSION_MAP_ID); - SessionMap sessionMap = (SessionMap) request.getSession() - .getAttribute(sessionMapID); + SessionMap sessionMap = getSessionMap(request); int pageNumber = (Integer) sessionMap.get(AssessmentConstants.ATTR_PAGE_NUMBER); //get user answers from request and store them into sessionMap @@ -605,10 +591,7 @@ */ @RequestMapping("/resubmit") public String resubmit(HttpServletRequest request) throws ServletException { - - String sessionMapID = WebUtil.readStrParam(request, AssessmentConstants.ATTR_SESSION_MAP_ID); - SessionMap sessionMap = (SessionMap) request.getSession() - .getAttribute(sessionMapID); + SessionMap sessionMap = getSessionMap(request); Long toolSessionId = (Long) sessionMap.get(AssessmentConstants.ATTR_TOOL_SESSION_ID); ToolAccessMode mode = (ToolAccessMode) sessionMap.get(AttributeNames.ATTR_MODE); Assessment assessment = service.getAssessmentBySessionId(toolSessionId); @@ -631,11 +614,9 @@ //otherwise use data from SessionMap } else { - sessionMap.put(AssessmentConstants.ATTR_SHOW_RESULTS, false); sessionMap.put(AssessmentConstants.ATTR_PAGE_NUMBER, 1); sessionMap.put(AssessmentConstants.ATTR_QUESTION_NUMBERING_OFFSET, 1); - request.setAttribute(AssessmentConstants.ATTR_SESSION_MAP_ID, sessionMapID); // clear isUserFailed indicator sessionMap.put(AssessmentConstants.ATTR_IS_USER_FAILED, false); @@ -653,21 +634,18 @@ */ @RequestMapping("/finish") public String finish(HttpServletRequest request) { - // get back SessionMap - String sessionMapID = request.getParameter(AssessmentConstants.ATTR_SESSION_MAP_ID); - SessionMap sessionMap = (SessionMap) request.getSession() - .getAttribute(sessionMapID); + SessionMap sessionMap = getSessionMap(request); String nextActivityUrl = null; try { HttpSession ss = SessionManager.getSession(); UserDTO user = (UserDTO) ss.getAttribute(AttributeNames.USER); - Long userID = new Long(user.getUserID().longValue()); + Long userID = user.getUserID().longValue(); Long sessionId = (Long) sessionMap.get(AttributeNames.PARAM_TOOL_SESSION_ID); nextActivityUrl = service.finishToolSession(sessionId, userID); request.setAttribute(AssessmentConstants.ATTR_NEXT_ACTIVITY_URL, nextActivityUrl); } catch (AssessmentApplicationException e) { - LearningController.log.error("Failed get next activity url:" + e.getMessage()); + log.error("Failed get next activity url:" + e.getMessage()); } return "pages/learning/finish"; @@ -689,15 +667,14 @@ return switchOption(request, false); } + @SuppressWarnings("unchecked") private String switchOption(HttpServletRequest request, boolean up) { - String sessionMapID = WebUtil.readStrParam(request, AssessmentConstants.ATTR_SESSION_MAP_ID); - SessionMap sessionMap = (SessionMap) request.getSession() - .getAttribute(sessionMapID); + SessionMap sessionMap = getSessionMap(request); int pageNumber = (Integer) sessionMap.get(AssessmentConstants.ATTR_PAGE_NUMBER); List> pagedQuestionDtos = (List>) sessionMap .get(AssessmentConstants.ATTR_PAGED_QUESTION_DTOS); Set questionsForOnePage = pagedQuestionDtos.get(pageNumber - 1); - Long questionUid = new Long(request.getParameter(AssessmentConstants.PARAM_QUESTION_UID)); + Long questionUid = WebUtil.readLongParam(request, AssessmentConstants.PARAM_QUESTION_UID); QuestionDTO questionDto = null; for (QuestionDTO questionDtoIter : questionsForOnePage) { @@ -727,7 +704,6 @@ } request.setAttribute(AssessmentConstants.ATTR_QUESTION_FOR_ORDERING, questionDto); - request.setAttribute(AssessmentConstants.ATTR_SESSION_MAP_ID, sessionMapID); return "pages/learning/parts/ordering"; } @@ -738,9 +714,7 @@ @ResponseStatus(HttpStatus.OK) public void autoSaveAnswers(HttpServletRequest request) throws IllegalAccessException, InvocationTargetException, NoSuchMethodException { - String sessionMapID = WebUtil.readStrParam(request, AssessmentConstants.ATTR_SESSION_MAP_ID); - SessionMap sessionMap = (SessionMap) request.getSession() - .getAttribute(sessionMapID); + SessionMap sessionMap = getSessionMap(request); int pageNumber = (Integer) sessionMap.get(AssessmentConstants.ATTR_PAGE_NUMBER); //get user answers from request and store them into sessionMap @@ -755,9 +729,7 @@ @RequestMapping("/launchTimeLimit") @ResponseStatus(HttpStatus.OK) public void launchTimeLimit(HttpServletRequest request) { - String sessionMapID = WebUtil.readStrParam(request, AssessmentConstants.ATTR_SESSION_MAP_ID); - SessionMap sessionMap = (SessionMap) request.getSession() - .getAttribute(sessionMapID); + SessionMap sessionMap = getSessionMap(request); Long assessmentUid = ((Assessment) sessionMap.get(AssessmentConstants.ATTR_ASSESSMENT)).getUid(); Long userId = ((AssessmentUser) sessionMap.get(AssessmentConstants.ATTR_USER)).getUserId(); @@ -781,8 +753,8 @@ refForm.setSessionMapID(sessionMapID); // get the existing reflection entry - SessionMap map = (SessionMap) request.getSession().getAttribute(sessionMapID); - Long toolSessionID = (Long) map.get(AttributeNames.PARAM_TOOL_SESSION_ID); + SessionMap sessionMap = getSessionMap(request); + Long toolSessionID = (Long) sessionMap.get(AttributeNames.PARAM_TOOL_SESSION_ID); NotebookEntry entry = service.getEntry(toolSessionID, user.getUserID()); if (entry != null) { @@ -800,9 +772,7 @@ HttpServletRequest request) { Integer userId = refForm.getUserID(); - String sessionMapID = WebUtil.readStrParam(request, AssessmentConstants.ATTR_SESSION_MAP_ID); - SessionMap sessionMap = (SessionMap) request.getSession() - .getAttribute(sessionMapID); + SessionMap sessionMap = getSessionMap(request); Long sessionId = (Long) sessionMap.get(AttributeNames.PARAM_TOOL_SESSION_ID); // check for existing notebook entry @@ -832,10 +802,9 @@ * @param pageNumber * number of the page to process */ + @SuppressWarnings("unchecked") private void storeUserAnswersIntoSessionMap(HttpServletRequest request, int pageNumber) { - String sessionMapID = WebUtil.readStrParam(request, AssessmentConstants.ATTR_SESSION_MAP_ID); - SessionMap sessionMap = (SessionMap) request.getSession() - .getAttribute(sessionMapID); + SessionMap sessionMap = getSessionMap(request); Assessment assessment = (Assessment) sessionMap.get(AssessmentConstants.ATTR_ASSESSMENT); List> pagedQuestionDtos = (List>) sessionMap .get(AssessmentConstants.ATTR_PAGED_QUESTION_DTOS); @@ -939,6 +908,7 @@ * @param sessionMap * @return 0 if all questions were answered OK, or a number of the first page that contains questions with issues */ + @SuppressWarnings("unchecked") private int validateAnswers(SessionMap sessionMap) { List> pagedQuestionDtos = (List>) sessionMap @@ -1038,6 +1008,7 @@ /** * Prepare data for displaying results page */ + @SuppressWarnings("unchecked") private void showResults(HttpServletRequest request, SessionMap sessionMap) { List> pagedQuestionDtos = (List>) sessionMap .get(AssessmentConstants.ATTR_PAGED_QUESTION_DTOS); @@ -1136,6 +1107,7 @@ sessionMap.put(AssessmentConstants.ATTR_IS_RESUBMIT_ALLOWED, isResubmitAllowed); } + @SuppressWarnings("unchecked") private void loadupLastAttempt(SessionMap sessionMap) { List> pagedQuestionDtos = (List>) sessionMap .get(AssessmentConstants.ATTR_PAGED_QUESTION_DTOS); @@ -1223,11 +1195,8 @@ /** * Store user answers in DB in last unfinished attempt and notify teachers about it. - * - * @throws NoSuchMethodException - * @throws InvocationTargetException - * @throws IllegalAccessException */ + @SuppressWarnings("unchecked") private boolean storeUserAnswersIntoDatabase(SessionMap sessionMap, boolean isAutosave) throws IllegalAccessException, InvocationTargetException, NoSuchMethodException { @@ -1256,7 +1225,7 @@ HttpSession ss = SessionManager.getSession(); // get back login user DTO UserDTO user = (UserDTO) ss.getAttribute(AttributeNames.USER); - AssessmentUser assessmentUser = service.getUserByIDAndSession(new Long(user.getUserID().intValue()), sessionId); + AssessmentUser assessmentUser = service.getUserByIDAndSession(user.getUserID().longValue(), sessionId); if (assessmentUser == null) { AssessmentSession session = service.getSessionBySessionId(sessionId); @@ -1267,13 +1236,18 @@ } private AssessmentUser getSpecifiedUser(IAssessmentService service, Long sessionId, Integer userId) { - AssessmentUser assessmentUser = service.getUserByIDAndSession(new Long(userId.intValue()), sessionId); + AssessmentUser assessmentUser = service.getUserByIDAndSession(userId.longValue(), sessionId); if (assessmentUser == null) { - LearningController.log.error( - "Unable to find specified user for assessment activity. Screens are likely to fail. SessionId=" - + sessionId + " UserId=" + userId); + log.error("Unable to find specified user for assessment activity. Screens are likely to fail. SessionId=" + + sessionId + " UserId=" + userId); } return assessmentUser; } + @SuppressWarnings("unchecked") + private SessionMap getSessionMap(HttpServletRequest request) { + String sessionMapID = WebUtil.readStrParam(request, AssessmentConstants.ATTR_SESSION_MAP_ID); + request.setAttribute(AssessmentConstants.ATTR_SESSION_MAP_ID, sessionMapID); + return (SessionMap) request.getSession().getAttribute(sessionMapID); + } } Index: lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/web/controller/MonitoringController.java =================================================================== diff -u -rc955e015d6401904e2dd7c662436047392caedfd -rdcdc1487609bd4f00afaa93c09272d84ab0cd325 --- lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/web/controller/MonitoringController.java (.../MonitoringController.java) (revision c955e015d6401904e2dd7c662436047392caedfd) +++ lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/web/controller/MonitoringController.java (.../MonitoringController.java) (revision dcdc1487609bd4f00afaa93c09272d84ab0cd325) @@ -112,7 +112,6 @@ // use the unconverted time, as convertToStringForJSON() does the timezone conversion if needed request.setAttribute(AssessmentConstants.ATTR_SUBMISSION_DEADLINE_DATESTRING, DateUtil.convertToStringForJSON(submissionDeadline, request.getLocale())); - } // Create reflectList if reflection is enabled. @@ -171,10 +170,7 @@ @RequestMapping("/questionSummary") public String questionSummary(HttpServletRequest request, HttpServletResponse response) { - String sessionMapID = request.getParameter(AssessmentConstants.ATTR_SESSION_MAP_ID); - SessionMap sessionMap = (SessionMap) request.getSession() - .getAttribute(sessionMapID); - request.setAttribute(AssessmentConstants.ATTR_SESSION_MAP_ID, sessionMap.getSessionID()); + SessionMap sessionMap = getSessionMap(request); Long questionUid = WebUtil.readLongParam(request, AssessmentConstants.PARAM_QUESTION_UID); if (questionUid.equals(-1l)) { @@ -189,10 +185,7 @@ @RequestMapping("/userSummary") public String userSummary(HttpServletRequest request, HttpServletResponse response) { - String sessionMapID = request.getParameter(AssessmentConstants.ATTR_SESSION_MAP_ID); - SessionMap sessionMap = (SessionMap) request.getSession() - .getAttribute(sessionMapID); - request.setAttribute(AssessmentConstants.ATTR_SESSION_MAP_ID, sessionMap.getSessionID()); + SessionMap sessionMap = getSessionMap(request); Long userId = WebUtil.readLongParam(request, AttributeNames.PARAM_USER_ID); Long sessionId = WebUtil.readLongParam(request, AssessmentConstants.PARAM_SESSION_ID); @@ -246,23 +239,12 @@ /** * Set tool's activityEvaluation - * - * @param mapping - * @param form - * @param request - * @param response - * @return - * @throws JSONException - * @throws IOException */ @RequestMapping("/setActivityEvaluation") @ResponseBody public String setActivityEvaluation(HttpServletRequest request, HttpServletResponse response) throws IOException { + SessionMap sessionMap = getSessionMap(request); - String sessionMapID = request.getParameter(AssessmentConstants.ATTR_SESSION_MAP_ID); - SessionMap sessionMap = (SessionMap) request.getSession() - .getAttribute(sessionMapID); - Long contentID = (Long) sessionMap.get(AssessmentConstants.ATTR_TOOL_CONTENT_ID); String activityEvaluation = WebUtil.readStrParam(request, AssessmentConstants.ATTR_ACTIVITY_EVALUATION, true); service.setActivityEvaluation(contentID, activityEvaluation); @@ -282,9 +264,7 @@ */ @RequestMapping("/getUsers") public String getUsers(HttpServletRequest request, HttpServletResponse res) throws IOException, ServletException { - String sessionMapID = request.getParameter(AssessmentConstants.ATTR_SESSION_MAP_ID); - SessionMap sessionMap = (SessionMap) request.getSession() - .getAttribute(sessionMapID); + SessionMap sessionMap = getSessionMap(request); Assessment assessment = (Assessment) sessionMap.get(AssessmentConstants.ATTR_ASSESSMENT); Long sessionId = WebUtil.readLongParam(request, "sessionId"); @@ -328,9 +308,8 @@ countSessionUsers = service.getCountUsersBySession(sessionId, searchString); } - int totalPages = new Double( - Math.ceil(new Integer(countSessionUsers).doubleValue() / new Integer(rowLimit).doubleValue())) - .intValue(); + int totalPages = Double.valueOf(Math.ceil(Double.valueOf(countSessionUsers) / Double.valueOf(rowLimit))) + .intValue(); ArrayNode rows = JsonNodeFactory.instance.arrayNode(); int i = 1; @@ -370,9 +349,7 @@ @RequestMapping("/getUsersByQuestion") public String getUsersByQuestion(HttpServletRequest request, HttpServletResponse res) throws IOException, ServletException { - String sessionMapID = request.getParameter(AssessmentConstants.ATTR_SESSION_MAP_ID); - SessionMap sessionMap = (SessionMap) request.getSession() - .getAttribute(sessionMapID); + SessionMap sessionMap = getSessionMap(request); Assessment assessment = (Assessment) sessionMap.get(AssessmentConstants.ATTR_ASSESSMENT); Long sessionId = WebUtil.readLongParam(request, "sessionId"); @@ -425,9 +402,8 @@ countSessionUsers = service.getCountUsersBySession(sessionId, searchString); } - int totalPages = new Double( - Math.ceil(new Integer(countSessionUsers).doubleValue() / new Integer(rowLimit).doubleValue())) - .intValue(); + int totalPages = Double.valueOf(Math.ceil(Double.valueOf(countSessionUsers) / Double.valueOf(rowLimit))) + .intValue(); ArrayNode rows = JsonNodeFactory.instance.arrayNode(); int i = 1; @@ -490,12 +466,8 @@ @RequestMapping("/getMarkChartData") public String getMarkChartData(HttpServletRequest request, HttpServletResponse res) throws IOException, ServletException { + SessionMap sessionMap = getSessionMap(request); - String sessionMapID = request.getParameter(AssessmentConstants.ATTR_SESSION_MAP_ID); - SessionMap sessionMap = (SessionMap) request.getSession() - .getAttribute(sessionMapID); - request.setAttribute(AssessmentConstants.ATTR_SESSION_MAP_ID, sessionMap.getSessionID()); - Long contentId = (Long) sessionMap.get(AttributeNames.PARAM_TOOL_CONTENT_ID); Assessment assessment = service.getAssessmentByContentId(contentId); List results = null; @@ -525,6 +497,7 @@ /** * Excel Summary Export. */ + @SuppressWarnings("unchecked") @RequestMapping("/exportSummary") public String exportSummary(HttpServletRequest request, HttpServletResponse response) throws IOException { String sessionMapID = request.getParameter(AssessmentConstants.ATTR_SESSION_MAP_ID); @@ -579,10 +552,7 @@ @RequestMapping("/statistic") public String statistic(HttpServletRequest request, HttpServletResponse response) { - String sessionMapID = request.getParameter(AssessmentConstants.ATTR_SESSION_MAP_ID); - SessionMap sessionMap = (SessionMap) request.getSession() - .getAttribute(sessionMapID); - request.setAttribute(AssessmentConstants.ATTR_SESSION_MAP_ID, sessionMap.getSessionID()); + SessionMap sessionMap = getSessionMap(request); Long contentId = WebUtil.readLongParam(request, AttributeNames.PARAM_TOOL_CONTENT_ID); Assessment assessment = service.getAssessmentByContentId(contentId); @@ -637,5 +607,12 @@ + " and question ID " + questionUid); } } + + @SuppressWarnings("unchecked") + private SessionMap getSessionMap(HttpServletRequest request) { + String sessionMapID = WebUtil.readStrParam(request, AssessmentConstants.ATTR_SESSION_MAP_ID); + request.setAttribute(AssessmentConstants.ATTR_SESSION_MAP_ID, sessionMapID); + return (SessionMap) request.getSession().getAttribute(sessionMapID); + } } Index: lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/web/controller/TblMonitoringController.java =================================================================== diff -u -r4353f26f9509808acdf41d0deef6cf5fd458a2b7 -rdcdc1487609bd4f00afaa93c09272d84ab0cd325 --- lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/web/controller/TblMonitoringController.java (.../TblMonitoringController.java) (revision 4353f26f9509808acdf41d0deef6cf5fd458a2b7) +++ lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/web/controller/TblMonitoringController.java (.../TblMonitoringController.java) (revision dcdc1487609bd4f00afaa93c09272d84ab0cd325) @@ -11,7 +11,6 @@ import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; -import org.apache.log4j.Logger; import org.lamsfoundation.lams.tool.assessment.AssessmentConstants; import org.lamsfoundation.lams.tool.assessment.dto.AssessmentResultDTO; import org.lamsfoundation.lams.tool.assessment.dto.QuestionSummary; @@ -39,7 +38,6 @@ @Controller @RequestMapping("/tblmonitoring") public class TblMonitoringController { - private static Logger logger = Logger.getLogger(TblMonitoringController.class.getName()); @Autowired @Qualifier("laasseAssessmentService") @@ -304,7 +302,7 @@ return sb.toString(); case AssessmentConstants.QUESTION_TYPE_TRUE_FALSE: - return new Boolean(question.getCorrectAnswer()).toString(); + return String.valueOf(question.getCorrectAnswer()); case AssessmentConstants.QUESTION_TYPE_MARK_HEDGING: for (AssessmentQuestionOption option : question.getOptions()) {