Index: lams_tool_task/conf/language/lams/ApplicationResources_en_AU.properties =================================================================== diff -u -rfd67b35d233f4ae667c65d43a42c382fb2cd58d4 -rdef4291c38fd0644305ee8a76ec6569ce391bc83 --- lams_tool_task/conf/language/lams/ApplicationResources_en_AU.properties (.../ApplicationResources_en_AU.properties) (revision fd67b35d233f4ae667c65d43a42c382fb2cd58d4) +++ lams_tool_task/conf/language/lams/ApplicationResources_en_AU.properties (.../ApplicationResources_en_AU.properties) (revision def4291c38fd0644305ee8a76ec6569ce391bc83) @@ -165,6 +165,7 @@ monitor.summary.date.restriction.removed =Deadline has been removed label.submit =Finish label.download =Download +label.confirm =Confirm #======= End labels: Exported 159 labels for en AU ===== Index: lams_tool_task/conf/xdoclet/struts-actions.xml =================================================================== diff -u -r8b97231e320c0c5b674f07c14da711f232ba9e1c -rdef4291c38fd0644305ee8a76ec6569ce391bc83 --- lams_tool_task/conf/xdoclet/struts-actions.xml (.../struts-actions.xml) (revision 8b97231e320c0c5b674f07c14da711f232ba9e1c) +++ lams_tool_task/conf/xdoclet/struts-actions.xml (.../struts-actions.xml) (revision def4291c38fd0644305ee8a76ec6569ce391bc83) @@ -254,18 +254,14 @@ parameter="setVerifiedByMonitor"> - - + parameter="getPagedUsers" > - - - + parameter="getPagedUsersByItem" > - Index: lams_tool_task/src/java/org/lamsfoundation/lams/tool/taskList/TaskListConstants.java =================================================================== diff -u -r8b97231e320c0c5b674f07c14da711f232ba9e1c -rdef4291c38fd0644305ee8a76ec6569ce391bc83 --- lams_tool_task/src/java/org/lamsfoundation/lams/tool/taskList/TaskListConstants.java (.../TaskListConstants.java) (revision 8b97231e320c0c5b674f07c14da711f232ba9e1c) +++ lams_tool_task/src/java/org/lamsfoundation/lams/tool/taskList/TaskListConstants.java (.../TaskListConstants.java) (revision def4291c38fd0644305ee8a76ec6569ce391bc83) @@ -25,7 +25,7 @@ public class TaskListConstants { public static final String TOOL_SIGNATURE = "latask10"; - public static final String RESOURCE_SERVICE = "lataskTaskListService"; + public static final String TASKLIST_SERVICE = "lataskTaskListService"; public static final String TOOL_CONTENT_HANDLER_NAME = "lataskTaskListToolContentHandler"; public static final int COMPLETED = 1; @@ -37,38 +37,31 @@ //for parameters' name public static final String PARAM_TOOL_CONTENT_ID = "toolContentID"; - public static final String PARAM_TOOL_SESSION_ID = "toolSessionID"; - public static final String PARAM_FILE_VERSION_ID = "fileVersionId"; - public static final String PARAM_FILE_UUID = "fileUuid"; + public static final String PARAM_TOOL_SESSION_ID = "toolSessionID"; public static final String PARAM_ITEM_INDEX = "itemIndex"; public static final String PARAM_SEQUENCE_ID = "sequenceId"; - public static final String PARAM_RESOURCE_ITEM_UID = "itemUid"; - public static final String PARAM_CURRENT_INSTRUCTION_INDEX = "insIdx"; - public static final String PARAM_OPEN_URL_POPUP = "popupUrl"; + public static final String PARAM_ITEM_UID = "itemUid"; public static final String PARAM_TITLE = "title"; //for request attribute name public static final String ATTR_TOOL_CONTENT_ID = "toolContentID"; public static final String ATTR_TOOL_SESSION_ID = "toolSessionID"; - public static final String ATTR_RESOURCE_ITEM_LIST = "taskListList"; + public static final String ATTR_TASKLIST_ITEM_LIST = "taskListList"; public static final String ATTR_CONDITION_LIST = "conditionList"; - public static final String ATTR_DELETED_RESOURCE_ITEM_LIST = "deleteTaskListList"; + public static final String ATTR_DELETED_TASKLIST_ITEM_LIST = "deleteTaskListList"; public static final String ATTR_DELETED_CONDITION_LIST = "deleteConditionList"; - public static final String ATT_LEARNING_OBJECT = "cpPackage"; - public static final String ATTR_RESOURCE_REVIEW_URL = "taskListItemReviewUrl"; - public static final String ATTR_RESOURCE = "taskList"; + public static final String ATTR_TASKLIST = "taskList"; public static final String ATTR_RUN_AUTO = "runAuto"; - public static final String ATTR_RESOURCE_ITEM_UID = "itemUid"; + public static final String ATTR_ITEM_UID = "itemUid"; public static final String ATTR_NEXT_ACTIVITY_URL = "nextActivityUrl"; - public static final String ATTR_SUMMARY_LIST = "summaryList"; + public static final String ATTR_MONITOR_VERIFICATION_REQUIRED = "monitorVerificationRequired"; + public static final String ATTR_SESSION_DTOS = "sessionDtos"; public static final String ATTR_ITEM_SUMMARY = "itemSummary"; public static final String ATTR_ITEM_SUMMARY_LIST = "itemSummaryList"; public static final String ATTR_USER_LIST = "userList"; public static final String ATTR_FINISH_LOCK = "finishedLock"; public static final String ATTR_SESSION_MAP_ID = "sessionMapID"; - public static final String ATTR_RESOURCE_FORM = "taskListForm"; - public static final String ATTR_TASKLIST_FORM = "taskListItemForm"; - public static final String ATTR_FILE_TYPE_FLAG = "fileTypeFlag"; + public static final String ATTR_TASKLIST_FORM = "taskListForm"; public static final String ATTR_TITLE = "title"; public static final String ATTR_USER_FINISHED = "userFinished"; public static final String ATTR_USER_VERIFIED_BY_MONITOR = "userVerifiedByMonitor"; @@ -96,7 +89,6 @@ public static final String ERROR_MSG_UPLOAD_FAILED = "error.upload.failed"; public static final String PAGE_EDITABLE = "isPageEditable"; - public static final String MODE_AUTHOR_SESSION = "author_session"; public static final String ATTR_REFLECTION_ON = "reflectOn"; public static final String ATTR_REFLECTION_INSTRUCTION = "reflectInstructions"; public static final String ATTR_REFLECTION_ENTRY = "reflectEntry"; Index: lams_tool_task/src/java/org/lamsfoundation/lams/tool/taskList/dao/hibernate/TaskListItemVisitDAOHibernate.java =================================================================== diff -u -r4227424058633c04349f03d61622e6ba22f5826c -rdef4291c38fd0644305ee8a76ec6569ce391bc83 --- lams_tool_task/src/java/org/lamsfoundation/lams/tool/taskList/dao/hibernate/TaskListItemVisitDAOHibernate.java (.../TaskListItemVisitDAOHibernate.java) (revision 4227424058633c04349f03d61622e6ba22f5826c) +++ lams_tool_task/src/java/org/lamsfoundation/lams/tool/taskList/dao/hibernate/TaskListItemVisitDAOHibernate.java (.../TaskListItemVisitDAOHibernate.java) (revision def4291c38fd0644305ee8a76ec6569ce391bc83) @@ -37,67 +37,52 @@ * @see org.lamsfoundation.lams.tool.taskList.dao.TaskListItemVisitDAO */ @Repository -public class TaskListItemVisitDAOHibernate extends LAMSBaseDAO implements TaskListItemVisitDAO{ - - private static final String FIND_BY_ITEM_AND_USER = "from " + TaskListItemVisitLog.class.getName() - + " as r where r.user.userId = ? and r.taskListItem.uid=?"; +public class TaskListItemVisitDAOHibernate extends LAMSBaseDAO implements TaskListItemVisitDAO { - private static final String FIND_BY_ITEM_BYSESSION = "from " + TaskListItemVisitLog.class.getName() - + " as r where r.sessionId = ? and r.taskListItem.uid=?"; - - private static final String FIND_TASKS_COMPLETED_COUNT_BY_USER = "select count(*) from " + TaskListItemVisitLog.class.getName() - + " as r where r.complete=true and r.sessionId=? and r.user.userId =?"; + private static final String FIND_BY_ITEM_AND_USER = "from " + TaskListItemVisitLog.class.getName() + + " as r where r.user.userId = ? and r.taskListItem.uid=?"; -// private static final String FIND_SUMMARY = "select v.taskListItem.uid, count(v.taskListItem) from " -// + TaskListItemVisitLog.class.getName() + " as v , " -// + TaskListSession.class.getName() + " as s, " -// + TaskList.class.getName() + " as r " -// +" where v.sessionId = s.sessionId " -// +" and s.taskList.uid = r.uid " -// +" and r.contentId =? " -// +" group by v.sessionId, v.taskListItem.uid "; - - /** - * {@inheritDoc} - */ - public TaskListItemVisitLog getTaskListItemLog(Long itemUid,Long userId){ - List list = doFind(FIND_BY_ITEM_AND_USER,new Object[]{userId,itemUid}); - if(list == null || list.size() ==0) - return null; - return (TaskListItemVisitLog) list.get(0); - } + private static final String FIND_BY_ITEM_BYSESSION = "from " + TaskListItemVisitLog.class.getName() + + " as r where r.sessionId = ? and r.taskListItem.uid=?"; - /** - * {@inheritDoc} - */ - public int getTasksCompletedCountByUser(Long toolSessionId ,Long userUid) { - List list = doFind(FIND_TASKS_COMPLETED_COUNT_BY_USER, new Object[]{toolSessionId, userUid}); - if(list == null || list.size() ==0) - return 0; - return ((Number) list.get(0)).intValue(); - } + private static final String FIND_COUNT_COMPLETED_TASKS_BY_USER = "select count(*) from " + + TaskListItemVisitLog.class.getName() + + " as r where r.complete=true and r.sessionId=? and r.user.userId =?"; -// public Map getSummary(Long contentId) { -// -// // Note: Hibernate 3.1 query.uniqueResult() returns Integer, Hibernate 3.2 query.uniqueResult() returns Long -// List result = doFind(FIND_SUMMARY,contentId); -// Map summaryList = new HashMap (result.size()); -// for(Object[] list : result){ -// if ( list[1] != null ) { -// summaryList.put((Long)list[0],new Integer(((Number)list[1]).intValue())); -// } -// } -// return summaryList; -// -// } + private static final String FIND_COUNT_COMPLETED_TASKS_BY_SESSION_AND_ITEM = "select count(*) from " + + TaskListItemVisitLog.class.getName() + + " as r where r.complete=true and r.sessionId=? and r.taskListItem.uid =?"; - /** - * {@inheritDoc} - */ - @SuppressWarnings("unchecked") - public List getTaskListItemLogBySession(Long sessionId, Long itemUid) { - - return (List) doFind(FIND_BY_ITEM_BYSESSION,new Object[]{sessionId,itemUid}); - } + @Override + public TaskListItemVisitLog getTaskListItemLog(Long itemUid, Long userId) { + List list = doFind(FIND_BY_ITEM_AND_USER, new Object[] { userId, itemUid }); + if (list == null || list.size() == 0) + return null; + return (TaskListItemVisitLog) list.get(0); + } + @Override + public int getCountCompletedTasksByUser(Long toolSessionId, Long userUid) { + List list = doFind(FIND_COUNT_COMPLETED_TASKS_BY_USER, new Object[] { toolSessionId, userUid }); + if (list == null || list.size() == 0) + return 0; + return ((Number) list.get(0)).intValue(); + } + + @Override + public int getCountCompletedTasksBySessionAndItem(Long toolSessionId, Long itemUid) { + List list = doFind(FIND_COUNT_COMPLETED_TASKS_BY_SESSION_AND_ITEM, + new Object[] { toolSessionId, itemUid }); + if (list == null || list.size() == 0) + return 0; + return ((Number) list.get(0)).intValue(); + } + + @Override + @SuppressWarnings("unchecked") + public List getTaskListItemLogBySession(Long sessionId, Long itemUid) { + + return (List) doFind(FIND_BY_ITEM_BYSESSION, new Object[] { sessionId, itemUid }); + } + } Index: lams_tool_task/src/java/org/lamsfoundation/lams/tool/taskList/dao/hibernate/TaskListUserDAOHibernate.java =================================================================== diff -u -r4227424058633c04349f03d61622e6ba22f5826c -rdef4291c38fd0644305ee8a76ec6569ce391bc83 --- lams_tool_task/src/java/org/lamsfoundation/lams/tool/taskList/dao/hibernate/TaskListUserDAOHibernate.java (.../TaskListUserDAOHibernate.java) (revision 4227424058633c04349f03d61622e6ba22f5826c) +++ lams_tool_task/src/java/org/lamsfoundation/lams/tool/taskList/dao/hibernate/TaskListUserDAOHibernate.java (.../TaskListUserDAOHibernate.java) (revision def4291c38fd0644305ee8a76ec6569ce391bc83) @@ -23,10 +23,19 @@ /* $$Id$$ */ package org.lamsfoundation.lams.tool.taskList.dao.hibernate; +import java.sql.Timestamp; +import java.util.Collection; +import java.util.Date; +import java.util.HashMap; +import java.util.LinkedHashMap; +import java.util.LinkedList; import java.util.List; +import org.hibernate.Query; +import org.hibernate.SQLQuery; import org.lamsfoundation.lams.dao.hibernate.LAMSBaseDAO; import org.lamsfoundation.lams.tool.taskList.dao.TaskListUserDAO; +import org.lamsfoundation.lams.tool.taskList.dto.TaskListUserDTO; import org.lamsfoundation.lams.tool.taskList.model.TaskListUser; import org.springframework.stereotype.Repository; @@ -37,38 +46,161 @@ * @see org.lamsfoundation.lams.tool.taskList.dao.TaskListUserDAO */ @Repository -public class TaskListUserDAOHibernate extends LAMSBaseDAO implements TaskListUserDAO{ +public class TaskListUserDAOHibernate extends LAMSBaseDAO implements TaskListUserDAO { + + private static final String FIND_BY_USER_ID_CONTENT_ID = "from " + TaskListUser.class.getName() + + " as u where u.userId =? and u.taskList.contentId=?"; + private static final String FIND_BY_USER_ID_SESSION_ID = "from " + TaskListUser.class.getName() + + " as u where u.userId =? and u.session.sessionId=?"; + private static final String FIND_BY_SESSION_ID = "from " + TaskListUser.class.getName() + + " as u where u.session.sessionId=?"; + + @Override + public TaskListUser getUserByUserIDAndSessionID(Long userID, Long sessionId) { + List list = this.doFind(FIND_BY_USER_ID_SESSION_ID, new Object[] { userID, sessionId }); + if (list == null || list.size() == 0) + return null; + return (TaskListUser) list.get(0); + } + + @Override + public TaskListUser getUserByUserIDAndContentID(Long userId, Long contentId) { + List list = this.doFind(FIND_BY_USER_ID_CONTENT_ID, new Object[] { userId, contentId }); + if (list == null || list.size() == 0) + return null; + return (TaskListUser) list.get(0); + } + + @Override + @SuppressWarnings("unchecked") + public List getBySessionID(Long sessionId) { + return (List) this.doFind(FIND_BY_SESSION_ID, sessionId); + } + + @Override + public Collection getPagedUsersBySession(Long sessionId, int page, int size, String sortBy, + String sortOrder, String searchString) { - private static final String FIND_BY_USER_ID_CONTENT_ID = "from " + TaskListUser.class.getName() + " as u where u.userId =? and u.taskList.contentId=?"; - private static final String FIND_BY_USER_ID_SESSION_ID = "from " + TaskListUser.class.getName() + " as u where u.userId =? and u.session.sessionId=?"; - private static final String FIND_BY_SESSION_ID = "from " + TaskListUser.class.getName() + " as u where u.session.sessionId=?"; + String LOAD_USERS = "SELECT user.uid, CONCAT(user.last_name, ' ', user.first_name), user.is_verified_by_monitor, visitLog.taskList_item_uid" + + " FROM tl_latask10_user user" + + " INNER JOIN tl_latask10_session session" + + " ON user.session_uid=session.uid" + + + " LEFT OUTER JOIN tl_latask10_item_log visitLog " + + " ON visitLog.user_uid = user.uid" + + " AND visitLog.complete = 1" + + + " WHERE session.session_id = :sessionId " + + " AND (CONCAT(user.last_name, ' ', user.first_name) LIKE CONCAT('%', :searchString, '%')) " + + " ORDER BY CONCAT(user.last_name, ' ', user.first_name) " + sortOrder; - /** - * {@inheritDoc} - */ - public TaskListUser getUserByUserIDAndSessionID(Long userID, Long sessionId) { - List list = this.doFind(FIND_BY_USER_ID_SESSION_ID,new Object[]{userID,sessionId}); - if(list == null || list.size() == 0) - return null; - return (TaskListUser) list.get(0); + SQLQuery query = getSession().createSQLQuery(LOAD_USERS); + query.setLong("sessionId", sessionId); + // support for custom search from a toolbar + searchString = searchString == null ? "" : searchString; + query.setString("searchString", searchString); + query.setFirstResult(page * size); + query.setMaxResults(size); + List list = query.list(); + + //group by userId as long as it returns all completed visitLogs for each user + HashMap userIdToUserDto = new LinkedHashMap(); + if (list != null && list.size() > 0) { + for (Object[] element : list) { + + Long userId = ((Number) element[0]).longValue(); + String fullName = (String) element[1]; + boolean isVerifiedByMonitor = new Boolean(((Byte) element[2]).intValue() == 1); + Long completedTaskUid = element[3] == null ? 0 : ((Number) element[3]).longValue(); + + TaskListUserDTO userDto = (userIdToUserDto.get(userId) == null) ? new TaskListUserDTO() + : userIdToUserDto.get(userId); + userDto.setUserId(userId); + userDto.setFullName(fullName); + userDto.setVerifiedByMonitor(isVerifiedByMonitor); + userDto.getCompletedTaskUids().add(completedTaskUid); + + userIdToUserDto.put(userId, userDto); + } } - /** - * {@inheritDoc} - */ - public TaskListUser getUserByUserIDAndContentID(Long userId, Long contentId) { - List list = this.doFind(FIND_BY_USER_ID_CONTENT_ID,new Object[]{userId,contentId}); - if(list == null || list.size() == 0) - return null; - return (TaskListUser) list.get(0); + return userIdToUserDto.values(); + } + + @Override + public Collection getPagedUsersBySessionAndItem(Long sessionId, Long taskListItemUid, int page, int size, String sortBy, + String sortOrder, String searchString) { + + String LOAD_USERS = "SELECT user.user_id, CONCAT(user.last_name, ' ', user.first_name), visitLog.complete, visitLog.access_date" + + " FROM tl_latask10_user user" + + " INNER JOIN tl_latask10_session session" + + " ON user.session_uid=session.uid" + + + " LEFT OUTER JOIN tl_latask10_item_log visitLog " + + " ON visitLog.user_uid = user.uid" + + " AND visitLog.taskList_item_uid = :taskListItemUid" + + + " WHERE session.session_id = :sessionId " + + " AND (CONCAT(user.last_name, ' ', user.first_name) LIKE CONCAT('%', :searchString, '%')) " + + " ORDER BY " + + " CASE " + + " WHEN :sortBy='userName' THEN CONCAT(user.last_name, ' ', user.first_name) " + + " WHEN :sortBy='completed' THEN visitLog.complete " + + " WHEN :sortBy='accessDate' THEN visitLog.access_date " + + " END " + sortOrder; + + SQLQuery query = getSession().createSQLQuery(LOAD_USERS); + query.setLong("sessionId", sessionId); + query.setLong("taskListItemUid", taskListItemUid); + // support for custom search from a toolbar + searchString = searchString == null ? "" : searchString; + query.setString("searchString", searchString); + query.setString("sortBy", sortBy); + query.setFirstResult(page * size); + query.setMaxResults(size); + List list = query.list(); + + Collection userDtos = new LinkedList(); + if (list != null && list.size() > 0) { + for (Object[] element : list) { + + Long userId = ((Number) element[0]).longValue(); + String fullName = (String) element[1]; + boolean isCompleted = element[2] == null ? false : new Boolean(((Byte) element[2]).intValue() == 1); + Date accessDate = element[3] == null ? null : new Date(((Timestamp) element[3]).getTime()); + + TaskListUserDTO userDto = new TaskListUserDTO(); + userDto.setUserId(userId); + userDto.setFullName(fullName); + userDto.setCompleted(isCompleted); + userDto.setAccessDate(accessDate);; + + userDtos.add(userDto); + } } - /** - * {@inheritDoc} - */ - @SuppressWarnings("unchecked") - public List getBySessionID(Long sessionId) { - return (List) this.doFind(FIND_BY_SESSION_ID,sessionId); + return userDtos; + } + + @Override + public int getCountPagedUsersBySession(Long sessionId, String searchString) { + + String LOAD_USERS_ORDERED_BY_NAME = "SELECT COUNT(*) FROM " + TaskListUser.class.getName() + " user" + + " WHERE user.session.sessionId = :sessionId " + + " AND (CONCAT(user.lastName, ' ', user.firstName) LIKE CONCAT('%', :searchString, '%')) "; + + Query query = getSession().createQuery(LOAD_USERS_ORDERED_BY_NAME); + query.setLong("sessionId", sessionId); + // support for custom search from a toolbar + searchString = searchString == null ? "" : searchString; + query.setString("searchString", searchString); + List list = query.list(); + + if ((list == null) || (list.size() == 0)) { + return 0; + } else { + return ((Number) list.get(0)).intValue(); } - + } + } Index: lams_tool_task/src/java/org/lamsfoundation/lams/tool/taskList/model/TaskListItemVisitLog.java =================================================================== diff -u -r9bd21433617c6dbccfacfb09752344c640570966 -rdef4291c38fd0644305ee8a76ec6569ce391bc83 --- lams_tool_task/src/java/org/lamsfoundation/lams/tool/taskList/model/TaskListItemVisitLog.java (.../TaskListItemVisitLog.java) (revision 9bd21433617c6dbccfacfb09752344c640570966) +++ lams_tool_task/src/java/org/lamsfoundation/lams/tool/taskList/model/TaskListItemVisitLog.java (.../TaskListItemVisitLog.java) (revision def4291c38fd0644305ee8a76ec6569ce391bc83) @@ -25,87 +25,93 @@ package org.lamsfoundation.lams.tool.taskList.model; import java.util.Date; + /** * TaskList - * @author Dapeng Ni + * + * @author Andrey Balan * - * @hibernate.class table="tl_latask10_item_log" - * + * @hibernate.class table="tl_latask10_item_log" */ public class TaskListItemVisitLog { - private Long uid; - private TaskListUser user; - private TaskListItem taskListItem; - private boolean complete; - private Date accessDate; - private Long sessionId; - - /** - * @hibernate.property column="access_date" - * @return - */ - public Date getAccessDate() { - return accessDate; - } - public void setAccessDate(Date accessDate) { - this.accessDate = accessDate; - } - /** - * @hibernate.many-to-one column="taskList_item_uid" - * cascade="none" - * @return - */ - public TaskListItem getTaskListItem() { - return taskListItem; - } - public void setTaskListItem(TaskListItem item) { - this.taskListItem = item; - } - - /** - * @hibernate.id generator-class="native" type="java.lang.Long" column="uid" - * @return Returns the log Uid. - */ - public Long getUid() { - return uid; - } - public void setUid(Long uid) { - this.uid = uid; - } - /** - * @hibernate.many-to-one column="user_uid" - * cascade="save-update" - * @return - */ - public TaskListUser getUser() { - return user; - } - public void setUser(TaskListUser user) { - this.user = user; - } - /** - * @hibernate.property column="complete" - * @return - */ - public boolean isComplete() { - return complete; - } - public void setComplete(boolean complete) { - this.complete = complete; - } - /** - * @hibernate.property column="session_id" - * @return - */ - public Long getSessionId() { - return sessionId; - } - public void setSessionId(Long sessionId) { - this.sessionId = sessionId; - } + private Long uid; + private TaskListUser user; + private TaskListItem taskListItem; + private boolean complete; + private Date accessDate; + private Long sessionId; + /** + * @hibernate.property column="access_date" + * @return + */ + public Date getAccessDate() { + return accessDate; + } - - + public void setAccessDate(Date accessDate) { + this.accessDate = accessDate; + } + + /** + * @hibernate.many-to-one column="taskList_item_uid" cascade="none" + * @return + */ + public TaskListItem getTaskListItem() { + return taskListItem; + } + + public void setTaskListItem(TaskListItem item) { + this.taskListItem = item; + } + + /** + * @hibernate.id generator-class="native" type="java.lang.Long" column="uid" + * @return Returns the log Uid. + */ + public Long getUid() { + return uid; + } + + public void setUid(Long uid) { + this.uid = uid; + } + + /** + * @hibernate.many-to-one column="user_uid" cascade="save-update" + * @return + */ + public TaskListUser getUser() { + return user; + } + + public void setUser(TaskListUser user) { + this.user = user; + } + + /** + * @hibernate.property column="complete" + * @return + */ + public boolean isComplete() { + return complete; + } + + public void setComplete(boolean complete) { + this.complete = complete; + } + + /** + * @hibernate.property column="session_id" + * @return + */ + public Long getSessionId() { + return sessionId; + } + + public void setSessionId(Long sessionId) { + this.sessionId = sessionId; + } + } Index: lams_tool_task/src/java/org/lamsfoundation/lams/tool/taskList/service/ITaskListService.java =================================================================== diff -u -r8b97231e320c0c5b674f07c14da711f232ba9e1c -rdef4291c38fd0644305ee8a76ec6569ce391bc83 --- lams_tool_task/src/java/org/lamsfoundation/lams/tool/taskList/service/ITaskListService.java (.../ITaskListService.java) (revision 8b97231e320c0c5b674f07c14da711f232ba9e1c) +++ lams_tool_task/src/java/org/lamsfoundation/lams/tool/taskList/service/ITaskListService.java (.../ITaskListService.java) (revision def4291c38fd0644305ee8a76ec6569ce391bc83) @@ -23,13 +23,16 @@ /* $$Id$$ */ package org.lamsfoundation.lams.tool.taskList.service; +import java.util.Collection; import java.util.List; import java.util.Set; import org.apache.struts.upload.FormFile; import org.lamsfoundation.lams.notebook.model.NotebookEntry; import org.lamsfoundation.lams.tool.taskList.dto.ItemSummary; -import org.lamsfoundation.lams.tool.taskList.dto.Summary; +import org.lamsfoundation.lams.tool.taskList.dto.ReflectDTO; +import org.lamsfoundation.lams.tool.taskList.dto.SessionDTO; +import org.lamsfoundation.lams.tool.taskList.dto.TaskListUserDTO; import org.lamsfoundation.lams.tool.taskList.model.TaskList; import org.lamsfoundation.lams.tool.taskList.model.TaskListItem; import org.lamsfoundation.lams.tool.taskList.model.TaskListItemAttachment; @@ -40,296 +43,348 @@ /** * Interface that defines the contract that all TaskLisk service providers must follow. * - * @author Dapeng.Ni * @author Andrey Balan */ public interface ITaskListService { - - - /** - * Returns number of tasks completed by user. Used in TaskListOutputFactory. - * - * @param toolSessionId - * @param userUid - * @return - */ - int getNumTasksCompletedByUser(Long toolSessionId, Long userUid); - - /** - * Checks current condition for matching. This condition belongs to the - * taskList from this particular toolSession.Used in - * TaskListOutputFactory. - * - * @param conditionName name of a condition - * @param toolSessionId session Id contains particular taskList - * @param userUid user for whom this condition is being checked - * @return - */ - boolean checkCondition(String conditionName, Long toolSessionId, Long userUid); - - /** - * Get TaskList by toolContentID. - * - * @param contentId - * @return - */ - TaskList getTaskListByContentId(Long contentId); - - /** - * Get a cloned copy of tool default tool content (TaskList) and assign the toolContentId of that copy as the - * given contentId - * - * @param contentId - * @return - * @throws TaskListException - */ - TaskList getDefaultContent(Long contentId) throws TaskListException; - - /** - * Get list of taskList items by given taskListUid. These taskList items must be created by author. - * - * @param taskListUid - * @return - */ - List getAuthoredItems(Long taskListUid); - - - /** - * Upload tasklistItem file to repository. - * - * @param uploadFile - * @param userLogin - * @return - * @throws UploadTaskListFileException - */ - TaskListItemAttachment uploadTaskListItemFile(FormFile uploadFile, TaskListUser user) throws UploadTaskListFileException; - - /** - * Returns Message service. It makes available to have access to message resources files. - * - * @return MessageService - */ - MessageService getMessageService(); - - //********** for user methods ************* - /** - * Create a new user in database. - */ - void createUser(TaskListUser taskListUser); - - /** - * Get user by given userID and toolContentID. - * - * @param long1 - * @return - */ - TaskListUser getUserByIDAndContent(Long userID, Long contentId); + /** + * Returns number of tasks completed by user. Used in TaskListOutputFactory. + * + * @param toolSessionId + * @param userUid + * @return + */ + int getNumTasksCompletedByUser(Long toolSessionId, Long userUid); - /** - * Get user by sessionID and UserID - * - * @param long1 - * @param sessionId - * @return - */ - TaskListUser getUserByIDAndSession(Long long1, Long sessionId); - - /** - * Get user list by sessionId and itemUid - * - * @param sessionId - * @param uid - * @return - */ - List getUserListBySessionItem(Long sessionId, Long itemUid); - - /** - * Get user list by sessionId. (thus users belonging to one group) - * - * @param sessionId - * @return - */ - List getUserListBySessionId(Long sessionId); + /** + * Checks current condition for matching. This condition belongs to the taskList from this particular + * toolSession.Used in TaskListOutputFactory. + * + * @param conditionName + * name of a condition + * @param toolSessionId + * session Id contains particular taskList + * @param userUid + * user for whom this condition is being checked + * @return + */ + boolean checkCondition(String conditionName, Long toolSessionId, Long userUid); - /** - * Get user by UID - * - * @param uid - * @return - */ - TaskListUser getUser(Long uid); + /** + * Get TaskList by toolContentID. + * + * @param contentId + * @return + */ + TaskList getTaskListByContentId(Long contentId); - //********** Repository methods *********************** + /** + * Get a cloned copy of tool default tool content (TaskList) and assign the toolContentId of that copy as the given + * contentId + * + * @param contentId + * @return + * @throws TaskListException + */ + TaskList getDefaultContent(Long contentId) throws TaskListException; - /** - * Save or update taskList into database. - * - * @param TaskList - */ - void saveOrUpdateTaskList(TaskList TaskList); - - /** - * Delete resoruce item from database. - * - * @param uid - */ - void deleteTaskListItem(Long uid); - - /** - * Delete tasklist condition from the database. - * - * @param uid - */ - void deleteTaskListCondition(Long uid); - - /** - * Get taskList which is relative with the special toolSession. - * - * @param sessionId - * @return - */ - TaskList getTaskListBySessionId(Long sessionId); - - /** - * Get taskList with the specified itemUid. - * - * @param itemUid - * @return - */ - TaskListItem getTaskListItemByUid(Long itemUid); - - /** - * Save/update current TaskListItem. - * - * @param item current TaskListItem - * @return - */ - void saveOrUpdateTaskListItem(TaskListItem item); - - /** - * Fill in taskListItemList's complete flags. - * - * @param taskListItemList - * @param user - */ - void retrieveComplete(Set taskListItemList, TaskListUser user); - - /** - * Mark taskListItem as completed. - * - * @param taskListItemUid - * @param userId - * @param sessionId - */ - void setItemComplete(Long taskListItemUid, Long userId , Long sessionId); - - - /** - * Creates a new TaskListItemVisitLog describing access to specifeid taskListItem. - * - * @param taskListItemUid Uid of the specified taskListItem - * @param userId Id of a user who accessed this taskListItem - * @param sessionId id of a session during which it occured - */ - void setItemAccess(Long taskListItemUid, Long userId, Long sessionId); - - /** - * Get taskList toolSession by toolSessionId - * - * @param sessionId - * @return - */ - TaskListSession getTaskListSessionBySessionId(Long sessionId); + /** + * Get list of taskList items by given taskListUid. These taskList items must be created by author. + * + * @param taskListUid + * @return + */ + List getAuthoredItems(Long taskListUid); - /** - * Save or update taskList session. - * - * @param resSession - */ - void saveOrUpdateTaskListSession(TaskListSession resSession); - - /** - * If success return next activity's url, otherwise return null. - * - * @param toolSessionId - * @param userId - * @return - */ - String finishToolSession(Long toolSessionId, Long userId) throws TaskListException; - - /** - * Create refection entry into notebook tool. - * - * @param sessionId - * @param notebook_tool - * @param tool_signature - * @param userId - * @param entryText - */ - Long createNotebookEntry(Long sessionId, Integer notebookToolType, String toolSignature, Integer userId, String entryText); - - /** - * Get reflection entry from notebook tool. - * - * @param sessionId - * @param idType - * @param signature - * @param userID - * @return - */ - NotebookEntry getEntry(Long sessionId, Integer idType, String signature, Integer userID); + /** + * Upload tasklistItem file to repository. + * + * @param uploadFile + * @param userLogin + * @return + * @throws UploadTaskListFileException + */ + TaskListItemAttachment uploadTaskListItemFile(FormFile uploadFile, TaskListUser user) + throws UploadTaskListFileException; - /** - * @param notebookEntry - */ - void updateEntry(NotebookEntry notebookEntry); - - //********** Export methods *********************** - - /** - * Make an export for the specified learner. - * - * @param sessionId - * @param learner user which portfolio is being exported - * - * @return - */ - List exportForLearner(Long contentUid, TaskListUser learner); - - /** - * Make an export for the whole TaskList. - * - * @param contentUid - * @return - */ - List exportForTeacher(Long contentUid); - - /** - * Return summary list for the specified TaskList. Used in monitoring. - * - * @param contentId specified TaskList uid - * @return - */ - List getSummary(Long contentId); - - /** - * Return task summary for the specified TaskListItem. Used in monitoring. - * - * @param contentId toolContenId - * @param taskListItemUid specified TaskListItem uid - * @param isExportProcessing true if this method called for export, false otherwise - * @return - */ - ItemSummary getItemSummary(Long contentId, Long taskListItemUid, boolean isExportProcessing); - - /** - * Returns whether activity is grouped and therefore it is expected more than one tool session. - * - * @param toolContentID - * @return - */ - boolean isGroupedActivity(long toolContentID); - -} + /** + * Returns Message service. It makes available to have access to message resources files. + * + * @return MessageService + */ + MessageService getMessageService(); + // ********** for user methods ************* + /** + * Create a new user in database. + */ + void createUser(TaskListUser taskListUser); + + /** + * Get user by given userID and toolContentID. + * + * @param long1 + * @return + */ + TaskListUser getUserByIDAndContent(Long userID, Long contentId); + + /** + * Get user by sessionID and UserID + * + * @param long1 + * @param sessionId + * @return + */ + TaskListUser getUserByIDAndSession(Long long1, Long sessionId); + + /** + * Get user list by sessionId and itemUid + * + * @param sessionId + * @param uid + * @return + */ + List getUserListBySessionItem(Long sessionId, Long itemUid); + + /** + * Get user list by sessionId. (thus users belonging to one group) + * + * @param sessionId + * @return + */ + List getUserListBySessionId(Long sessionId); + + /** + * Get user by UID + * + * @param uid + * @return + */ + TaskListUser getUser(Long uid); + + // ********** Repository methods *********************** + + /** + * Save or update taskList into database. + * + * @param TaskList + */ + void saveOrUpdateTaskList(TaskList TaskList); + + /** + * Delete resoruce item from database. + * + * @param uid + */ + void deleteTaskListItem(Long uid); + + /** + * Delete tasklist condition from the database. + * + * @param uid + */ + void deleteTaskListCondition(Long uid); + + /** + * Get taskList which is relative with the special toolSession. + * + * @param sessionId + * @return + */ + TaskList getTaskListBySessionId(Long sessionId); + + /** + * Get taskList with the specified itemUid. + * + * @param itemUid + * @return + */ + TaskListItem getTaskListItemByUid(Long itemUid); + + /** + * Save/update current TaskListItem. + * + * @param item + * current TaskListItem + * @return + */ + void saveOrUpdateTaskListItem(TaskListItem item); + + /** + * Fill in taskListItemList's complete flags. + * + * @param taskListItemList + * @param user + */ + void retrieveComplete(Set taskListItemList, TaskListUser user); + + /** + * Mark taskListItem as completed. + * + * @param taskListItemUid + * @param userId + * @param sessionId + */ + void setItemComplete(Long taskListItemUid, Long userId, Long sessionId); + + /** + * Creates a new TaskListItemVisitLog describing access to specifeid taskListItem. + * + * @param taskListItemUid + * Uid of the specified taskListItem + * @param userId + * Id of a user who accessed this taskListItem + * @param sessionId + * id of a session during which it occured + */ + void setItemAccess(Long taskListItemUid, Long userId, Long sessionId); + + /** + * Get all available sessions for contentId. + * + * @param contentId + * @return + */ + List getSessionsByContentId(Long contentId); + + /** + * Get taskList toolSession by toolSessionId + * + * @param sessionId + * @return + */ + TaskListSession getSessionBySessionId(Long sessionId); + + /** + * Save or update taskList session. + * + * @param resSession + */ + void saveOrUpdateSession(TaskListSession resSession); + + /** + * If success return next activity's url, otherwise return null. + * + * @param toolSessionId + * @param userId + * @return + */ + String finishToolSession(Long toolSessionId, Long userId) throws TaskListException; + + /** + * Create refection entry into notebook tool. + * + * @param sessionId + * @param notebook_tool + * @param tool_signature + * @param userId + * @param entryText + */ + Long createNotebookEntry(Long sessionId, Integer notebookToolType, String toolSignature, Integer userId, + String entryText); + + /** + * Get reflection entry from notebook tool. + * + * @param sessionId + * @param idType + * @param signature + * @param userID + * @return + */ + NotebookEntry getEntry(Long sessionId, Integer idType, String signature, Integer userID); + + /** + * @param notebookEntry + */ + void updateEntry(NotebookEntry notebookEntry); + + // ********** Export methods *********************** + + /** + * Make an export for the specified learner. + * + * @param sessionId + * @param learner + * user which portfolio is being exported + * + * @return + */ + List exportForLearner(Long contentUid, TaskListUser learner); + + /** + * Make an export for the whole TaskList. + * + * @param contentUid + * @return + */ + List exportForTeacher(Long contentUid); + + /** + * Returns paged users for jqGrid based on sessionId. + * + * @param sessionId + * @param page + * @param size + * @param sortBy + * @param sortOrder + * @param searchString + * @return + */ + Collection getPagedUsersBySession(Long sessionId, int page, int size, String sortBy, + String sortOrder, String searchString); + + /** + * Returns paged users for jqGrid based on sessionId and taskListItemUid. + * + * @param sessionId + * @param taskListItemUid + * @param page + * @param size + * @param sortBy + * @param sortOrder + * @param searchString + * @return + */ + Collection getPagedUsersBySessionAndItem(Long sessionId, Long taskListItemUid, int page, int size, String sortBy, + String sortOrder, String searchString); + + /** + * Returns total number of users in a specified session. + * + * @param sessionId + * @param searchString + * @return + */ + int getCountPagedUsersBySession(Long sessionId, String searchString); + + /** + * Return summary list for the specified TaskList. Used in monitoring. + * + * @param contentId + * specified TaskList uid + * @return + */ + List getSummary(Long contentId); + + NotebookEntry getEntry(Long sessionId, Integer userId); + + List getReflectList(Long contentId); + + /** + * Returns whether activity is grouped and therefore it is expected more than one tool session. + * + * @param toolContentID + * @return + */ + boolean isGroupedActivity(long toolContentID); + + /** + * Get localized message. + * + * @param key + * @return + */ + String getMessage(String key); + +} Index: lams_tool_task/src/java/org/lamsfoundation/lams/tool/taskList/service/TaskListServiceImpl.java =================================================================== diff -u -r708bd4d049ae0a59d70c964ef2f864d2b7a352e6 -rdef4291c38fd0644305ee8a76ec6569ce391bc83 --- lams_tool_task/src/java/org/lamsfoundation/lams/tool/taskList/service/TaskListServiceImpl.java (.../TaskListServiceImpl.java) (revision 708bd4d049ae0a59d70c964ef2f864d2b7a352e6) +++ lams_tool_task/src/java/org/lamsfoundation/lams/tool/taskList/service/TaskListServiceImpl.java (.../TaskListServiceImpl.java) (revision def4291c38fd0644305ee8a76ec6569ce391bc83) @@ -27,9 +27,11 @@ import java.io.IOException; import java.sql.Timestamp; import java.util.ArrayList; +import java.util.Collection; import java.util.Date; import java.util.Hashtable; import java.util.Iterator; +import java.util.LinkedList; import java.util.List; import java.util.Set; import java.util.SortedMap; @@ -68,8 +70,9 @@ import org.lamsfoundation.lams.tool.taskList.dto.GroupSummary; import org.lamsfoundation.lams.tool.taskList.dto.ItemSummary; import org.lamsfoundation.lams.tool.taskList.dto.ReflectDTO; -import org.lamsfoundation.lams.tool.taskList.dto.Summary; +import org.lamsfoundation.lams.tool.taskList.dto.SessionDTO; import org.lamsfoundation.lams.tool.taskList.dto.TaskListItemVisitLogSummary; +import org.lamsfoundation.lams.tool.taskList.dto.TaskListUserDTO; import org.lamsfoundation.lams.tool.taskList.model.TaskList; import org.lamsfoundation.lams.tool.taskList.model.TaskListCondition; import org.lamsfoundation.lams.tool.taskList.model.TaskListItem; @@ -87,7 +90,6 @@ /** * Class implements org.lamsfoundation.lams.tool.taskList.service.ITaskListService. * - * @author Dapeng.Ni * @author Andrey Balan * @see org.lamsfoundation.lams.tool.taskList.service.ITaskListService */ @@ -218,14 +220,19 @@ public TaskListItem getTaskListItemByUid(Long itemUid) { return taskListItemDao.getByUid(itemUid); } + + @Override + public List getSessionsByContentId(Long contentId) { + return taskListSessionDao.getByContentId(contentId); + } @Override - public TaskListSession getTaskListSessionBySessionId(Long sessionId) { + public TaskListSession getSessionBySessionId(Long sessionId) { return taskListSessionDao.getSessionBySessionId(sessionId); } @Override - public void saveOrUpdateTaskListSession(TaskListSession resSession) { + public void saveOrUpdateSession(TaskListSession resSession) { taskListSessionDao.saveObject(resSession); } @@ -293,69 +300,75 @@ } } } + + @Override + public Collection getPagedUsersBySession(Long sessionId, int page, int size, String sortBy, + String sortOrder, String searchString) { + return taskListUserDao.getPagedUsersBySession(sessionId, page, size, sortBy, sortOrder, searchString); + } + + @Override + public Collection getPagedUsersBySessionAndItem(Long sessionId, Long taskListItemUid, int page, int size, String sortBy, + String sortOrder, String searchString) { + return taskListUserDao.getPagedUsersBySessionAndItem(sessionId, taskListItemUid, page, size, sortBy, sortOrder, searchString); + } @Override - public List getSummary(Long contentId) { + public int getCountPagedUsersBySession(Long sessionId, String searchString) { + return taskListUserDao.getCountPagedUsersBySession(sessionId, searchString); + } - TaskList taskList = taskListDao.getByContentId(contentId); + @Override + public List getSummary(Long contentId) { + List sessionList = taskListSessionDao.getByContentId(contentId); - List summaryList = new ArrayList(); + List summaryList = new ArrayList(); // create the user list of all whom were started this task for (TaskListSession session : sessionList) { + Long toolSessionId = session.getSessionId(); - List itemList = getItemListForGroup(contentId, session.getSessionId()); + List itemList = getItemListForGroup(contentId, toolSessionId); + List userList = taskListUserDao.getBySessionID(toolSessionId); - List userList = taskListUserDao.getBySessionID(session.getSessionId()); - - // Fill up the copmletion table - boolean[][] complete = new boolean[userList.size()][itemList.size()]; // Fill up the array of visitNumbers int[] visitNumbers = new int[itemList.size()]; - for (int i = 0; i < userList.size(); i++) { - TaskListUser user = userList.get(i); + for (int j = 0; j < itemList.size(); j++) { + TaskListItem item = itemList.get(j); - for (int j = 0; j < itemList.size(); j++) { - TaskListItem item = itemList.get(j); - - // retreiving TaskListItemVisitLog for current taskList and user - TaskListItemVisitLog visitLog = taskListItemVisitDao.getTaskListItemLog(item.getUid(), - user.getUserId()); - if (visitLog != null) { - complete[i][j] = visitLog.isComplete(); - if (visitLog.isComplete()) { - visitNumbers[j]++; - } - } else { - complete[i][j] = false; - } - } + // retreiving TaskListItemVisitLog for current taskList and user + visitNumbers[j] = taskListItemVisitDao.getCountCompletedTasksBySessionAndItem(toolSessionId, item.getUid()); } - Summary summary = new Summary(session.getSessionName(), itemList, userList, complete, visitNumbers, - taskList.isMonitorVerificationRequired()); + SessionDTO summary = new SessionDTO(toolSessionId, session.getSessionName(), itemList, visitNumbers); summaryList.add(summary); } return summaryList; } - @Override - public ItemSummary getItemSummary(Long contentId, Long taskListItemUid, boolean isExportProcessing) { + /* + * Return task summary for the specified TaskListItem. Used in monitoring. + * + * @param contentId + * toolContenId + * @param item + * specified TaskListItem + * @return + */ + private ItemSummary exportItem(Long contentId, TaskListItem item) { - TaskListItem taskListItem = taskListItemDao.getByUid(taskListItemUid); - ItemSummary itemSummary = new ItemSummary(); - itemSummary.setTaskListItem(taskListItem); + itemSummary.setTaskListItem(item); List groupSummaries = itemSummary.getGroupSummaries(); - // create sessionList depending on if taskListItem created be author or created during learning + // create sessionList depending on if item created be author or created during learning List sessionList = new ArrayList(); - if (taskListItem.isCreateByAuthor()) { + if (item.isCreateByAuthor()) { sessionList = taskListSessionDao.getByContentId(contentId); } else { - TaskListSession userSession = taskListItem.getCreateBy().getSession(); + TaskListSession userSession = item.getCreateBy().getSession(); sessionList.add(userSession); } @@ -371,7 +384,7 @@ TaskListItemVisitLogSummary taskListItemVisitLogSummary = new TaskListItemVisitLogSummary(); taskListItemVisitLogSummary.setUser(user); - TaskListItemVisitLog visitLog = taskListItemVisitDao.getTaskListItemLog(taskListItem.getUid(), + TaskListItemVisitLog visitLog = taskListItemVisitDao.getTaskListItemLog(item.getUid(), user.getUserId()); // If TaskListItemVisitLog exists then fill up taskSummaryItem otherwise put false in a completed field if (visitLog != null) { @@ -381,14 +394,14 @@ } // fill up with comments and attachments made by this user - Set itemComments = taskListItem.getComments(); + Set itemComments = item.getComments(); for (TaskListItemComment comment : itemComments) { if (user.getUserId().equals(comment.getCreateBy().getUserId())) { taskListItemVisitLogSummary.getComments().add(comment); } } - Set itemAttachments = taskListItem.getAttachments(); + Set itemAttachments = item.getAttachments(); for (TaskListItemAttachment attachment : itemAttachments) { if (user.getUserId().equals(attachment.getCreateBy().getUserId())) { taskListItemVisitLogSummary.getAttachments().add(attachment); @@ -398,24 +411,19 @@ taskListItemVisitLogSummary.setCompleted(false); } - // if we're doing export then fill up all itemSummaries with reflection information - if (isExportProcessing) { - - NotebookEntry notebookEntry = getEntry(session.getSessionId(), CoreNotebookConstants.NOTEBOOK_TOOL, - TaskListConstants.TOOL_SIGNATURE, user.getUserId().intValue()); - - ReflectDTO reflectDTO = new ReflectDTO(user); - if (notebookEntry == null) { - reflectDTO.setFinishReflection(false); - reflectDTO.setReflect(null); - } else { - reflectDTO.setFinishReflection(true); - reflectDTO.setReflect(notebookEntry.getEntry()); - } - reflectDTO.setReflectInstructions(session.getTaskList().getReflectInstructions()); - - taskListItemVisitLogSummary.setReflectDTO(reflectDTO); + // fill up all itemSummaries with reflection information + NotebookEntry notebookEntry = getEntry(session.getSessionId(), CoreNotebookConstants.NOTEBOOK_TOOL, + TaskListConstants.TOOL_SIGNATURE, user.getUserId().intValue()); + ReflectDTO reflectDTO = new ReflectDTO(user); + if (notebookEntry == null) { + reflectDTO.setFinishReflection(false); + reflectDTO.setReflect(null); + } else { + reflectDTO.setFinishReflection(true); + reflectDTO.setReflect(notebookEntry.getEntry()); } + reflectDTO.setReflectInstructions(session.getTaskList().getReflectInstructions()); + taskListItemVisitLogSummary.setReflectDTO(reflectDTO); groupSummary.getTaskListItemVisitLogSummaries().add(taskListItemVisitLogSummary); } @@ -424,7 +432,45 @@ return itemSummary; } + + @Override + public NotebookEntry getEntry(Long sessionId, Integer userId) { + List list = coreNotebookService.getEntry(sessionId, CoreNotebookConstants.NOTEBOOK_TOOL, + TaskListConstants.TOOL_SIGNATURE, userId); + if ((list == null) || list.isEmpty()) { + return null; + } else { + return list.get(0); + } + } + + @Override + public List getReflectList(Long contentId) { + List reflectList = new LinkedList(); + List sessionList = taskListSessionDao.getByContentId(contentId); + for (TaskListSession session : sessionList) { + Long sessionId = session.getSessionId(); + // get all users in this session + List users = taskListUserDao.getBySessionID(sessionId); + for (TaskListUser user : users) { + + NotebookEntry entry = getEntry(sessionId, user.getUserId().intValue()); + if (entry != null) { + ReflectDTO ref = new ReflectDTO(user); + ref.setReflect(entry.getEntry()); + Date postedDate = (entry.getLastModified() != null) ? entry.getLastModified() + : entry.getCreateDate(); + ref.setDate(postedDate); + reflectList.add(ref); + } + + } + } + + return reflectList; + } + @Override public List exportForTeacher(Long contentId) { TaskList taskList = taskListDao.getByContentId(contentId); @@ -445,7 +491,7 @@ List itemSummaries = new ArrayList(); for (TaskListItem item : itemList) { - itemSummaries.add(getItemSummary(contentId, item.getUid(), true)); + itemSummaries.add(exportItem(contentId, item)); } return itemSummaries; @@ -460,7 +506,7 @@ List itemSummaries = new ArrayList(); for (TaskListItem item : itemList) { - itemSummaries.add(getItemSummary(contentId, item.getUid(), true)); + itemSummaries.add(exportItem(contentId, item)); } // get rid of information that doesn't belong to the current user @@ -487,8 +533,8 @@ } @Override - public int getNumTasksCompletedByUser(Long toolSessionId, Long userUid) { - return getTaskListItemVisitDao().getTasksCompletedCountByUser(toolSessionId, userUid); + public int getNumTasksCompletedByUser(Long toolSessionId, Long userId) { + return getTaskListItemVisitDao().getCountCompletedTasksByUser(toolSessionId, userId); } @Override @@ -571,6 +617,11 @@ public boolean isGroupedActivity(long toolContentID) { return toolService.isGroupedActivity(toolContentID); } + + @Override + public String getMessage(String key) { + return messageService.getMessage(key); + } // ***************************************************************************** // Set methods for Spring Bean @@ -826,6 +877,7 @@ coreNotebookService.deleteEntry(entry); } } + taskListDao.delete(taskList); } Index: lams_tool_task/src/java/org/lamsfoundation/lams/tool/taskList/service/TaskListServiceProxy.java =================================================================== diff -u -rf976c3bd40613835d2b5ac91a1eee6748afbe2c7 -rdef4291c38fd0644305ee8a76ec6569ce391bc83 --- lams_tool_task/src/java/org/lamsfoundation/lams/tool/taskList/service/TaskListServiceProxy.java (.../TaskListServiceProxy.java) (revision f976c3bd40613835d2b5ac91a1eee6748afbe2c7) +++ lams_tool_task/src/java/org/lamsfoundation/lams/tool/taskList/service/TaskListServiceProxy.java (.../TaskListServiceProxy.java) (revision def4291c38fd0644305ee8a76ec6569ce391bc83) @@ -62,7 +62,7 @@ private static Object getTaskListDomainService(ServletContext servletContext) { WebApplicationContext wac = WebApplicationContextUtils.getRequiredWebApplicationContext(servletContext); - return wac.getBean(TaskListConstants.RESOURCE_SERVICE); + return wac.getBean(TaskListConstants.TASKLIST_SERVICE); } } Index: lams_tool_task/src/java/org/lamsfoundation/lams/tool/taskList/web/action/AuthoringAction.java =================================================================== diff -u -r8b97231e320c0c5b674f07c14da711f232ba9e1c -rdef4291c38fd0644305ee8a76ec6569ce391bc83 --- lams_tool_task/src/java/org/lamsfoundation/lams/tool/taskList/web/action/AuthoringAction.java (.../AuthoringAction.java) (revision 8b97231e320c0c5b674f07c14da711f232ba9e1c) +++ lams_tool_task/src/java/org/lamsfoundation/lams/tool/taskList/web/action/AuthoringAction.java (.../AuthoringAction.java) (revision def4291c38fd0644305ee8a76ec6569ce391bc83) @@ -235,7 +235,7 @@ taskListItemList.clear(); taskListItemList.addAll(items); - sessionMap.put(TaskListConstants.ATTR_RESOURCE_FORM, taskListForm); + sessionMap.put(TaskListConstants.ATTR_TASKLIST_FORM, taskListForm); request.getSession().setAttribute(AttributeNames.PARAM_NOTIFY_CLOSE_URL, request.getParameter(AttributeNames.PARAM_NOTIFY_CLOSE_URL)); return mapping.findForward(TaskListConstants.SUCCESS); @@ -255,7 +255,7 @@ HttpServletResponse response) throws ServletException { String sessionMapID = WebUtil.readStrParam(request, TaskListConstants.ATTR_SESSION_MAP_ID); SessionMap sessionMap = (SessionMap) request.getSession().getAttribute(sessionMapID); - TaskListForm existForm = (TaskListForm) sessionMap.get(TaskListConstants.ATTR_RESOURCE_FORM); + TaskListForm existForm = (TaskListForm) sessionMap.get(TaskListConstants.ATTR_TASKLIST_FORM); TaskListForm taskListForm = (TaskListForm) form; try { @@ -619,7 +619,7 @@ private ITaskListService getTaskListService() { WebApplicationContext wac = WebApplicationContextUtils.getRequiredWebApplicationContext(getServlet() .getServletContext()); - return (ITaskListService) wac.getBean(TaskListConstants.RESOURCE_SERVICE); + return (ITaskListService) wac.getBean(TaskListConstants.TASKLIST_SERVICE); } /** @@ -630,10 +630,10 @@ */ private SortedSet getTaskListItemList(SessionMap sessionMap) { SortedSet list = (SortedSet) sessionMap - .get(TaskListConstants.ATTR_RESOURCE_ITEM_LIST); + .get(TaskListConstants.ATTR_TASKLIST_ITEM_LIST); if (list == null) { list = new TreeSet(new TaskListItemComparator()); - sessionMap.put(TaskListConstants.ATTR_RESOURCE_ITEM_LIST, list); + sessionMap.put(TaskListConstants.ATTR_TASKLIST_ITEM_LIST, list); } return list; } @@ -671,7 +671,7 @@ * @return */ private List getDeletedTaskListItemList(SessionMap sessionMap) { - return getListFromSession(sessionMap, TaskListConstants.ATTR_DELETED_RESOURCE_ITEM_LIST); + return getListFromSession(sessionMap, TaskListConstants.ATTR_DELETED_TASKLIST_ITEM_LIST); } /** Index: lams_tool_task/src/java/org/lamsfoundation/lams/tool/taskList/web/action/AuthoringTaskListConditionAction.java =================================================================== diff -u -rc80f5cfa126621b04cfe9254bc9fc6f1b487a288 -rdef4291c38fd0644305ee8a76ec6569ce391bc83 --- lams_tool_task/src/java/org/lamsfoundation/lams/tool/taskList/web/action/AuthoringTaskListConditionAction.java (.../AuthoringTaskListConditionAction.java) (revision c80f5cfa126621b04cfe9254bc9fc6f1b487a288) +++ lams_tool_task/src/java/org/lamsfoundation/lams/tool/taskList/web/action/AuthoringTaskListConditionAction.java (.../AuthoringTaskListConditionAction.java) (revision def4291c38fd0644305ee8a76ec6569ce391bc83) @@ -114,7 +114,7 @@ HttpServletResponse response) throws ServletException { String sessionMapID = WebUtil.readStrParam(request, TaskListConstants.ATTR_SESSION_MAP_ID); SessionMap sessionMap = (SessionMap) request.getSession().getAttribute(sessionMapID); - TaskListForm existForm = (TaskListForm) sessionMap.get(TaskListConstants.ATTR_RESOURCE_FORM); + TaskListForm existForm = (TaskListForm) sessionMap.get(TaskListConstants.ATTR_TASKLIST_FORM); TaskListForm taskListForm = (TaskListForm) form; try { @@ -328,7 +328,7 @@ private ITaskListService getTaskListService() { WebApplicationContext wac = WebApplicationContextUtils.getRequiredWebApplicationContext(getServlet() .getServletContext()); - return (ITaskListService) wac.getBean(TaskListConstants.RESOURCE_SERVICE); + return (ITaskListService) wac.getBean(TaskListConstants.TASKLIST_SERVICE); } /** @@ -355,10 +355,10 @@ */ private SortedSet getTaskListItemList(SessionMap sessionMap) { SortedSet list = (SortedSet) sessionMap - .get(TaskListConstants.ATTR_RESOURCE_ITEM_LIST); + .get(TaskListConstants.ATTR_TASKLIST_ITEM_LIST); if (list == null) { list = new TreeSet(new TaskListItemComparator()); - sessionMap.put(TaskListConstants.ATTR_RESOURCE_ITEM_LIST, list); + sessionMap.put(TaskListConstants.ATTR_TASKLIST_ITEM_LIST, list); } return list; } Index: lams_tool_task/src/java/org/lamsfoundation/lams/tool/taskList/web/action/LearningAction.java =================================================================== diff -u -r883c4cc054a636dc8017da1b244b89bdaf0ff974 -rdef4291c38fd0644305ee8a76ec6569ce391bc83 --- lams_tool_task/src/java/org/lamsfoundation/lams/tool/taskList/web/action/LearningAction.java (.../LearningAction.java) (revision 883c4cc054a636dc8017da1b244b89bdaf0ff974) +++ lams_tool_task/src/java/org/lamsfoundation/lams/tool/taskList/web/action/LearningAction.java (.../LearningAction.java) (revision def4291c38fd0644305ee8a76ec6569ce391bc83) @@ -350,7 +350,7 @@ } - sessionMap.put(TaskListConstants.ATTR_RESOURCE, taskList); + sessionMap.put(TaskListConstants.ATTR_TASKLIST, taskList); return mapping.findForward(TaskListConstants.SUCCESS); } @@ -399,7 +399,7 @@ // auto run mode, when use finish the only one taskList item, mark it as complete then finish this activity as // well. - String taskListItemUid = request.getParameter(TaskListConstants.PARAM_RESOURCE_ITEM_UID); + String taskListItemUid = request.getParameter(TaskListConstants.PARAM_ITEM_UID); if (taskListItemUid != null) { doComplete(request); // NOTE:So far this flag is useless(31/08/2006). @@ -481,7 +481,7 @@ item.setCreateBy(taskListUser); // setting SequenceId - TaskList taskList = (TaskList) sessionMap.get(TaskListConstants.ATTR_RESOURCE); + TaskList taskList = (TaskList) sessionMap.get(TaskListConstants.ATTR_TASKLIST); Set taskListItems = taskList.getTaskListItems(); int maxSeq = 0; for (TaskListItem dbItem : taskListItems) { @@ -533,7 +533,7 @@ comment.setCreateDate(new Timestamp(new Date().getTime())); // persist TaskListItem changes in DB - Long itemUid = new Long(request.getParameter(TaskListConstants.PARAM_RESOURCE_ITEM_UID)); + Long itemUid = new Long(request.getParameter(TaskListConstants.PARAM_ITEM_UID)); TaskListItem dbItem = service.getTaskListItemByUid(itemUid); Set dbComments = dbItem.getComments(); dbComments.add(comment); @@ -589,7 +589,7 @@ TaskListItemAttachment att = service.uploadTaskListItemFile(file, taskListUser); // persist TaskListItem changes in DB - Long itemUid = new Long(request.getParameter(TaskListConstants.PARAM_RESOURCE_ITEM_UID)); + Long itemUid = new Long(request.getParameter(TaskListConstants.PARAM_ITEM_UID)); TaskListItem dbItem = service.getTaskListItemByUid(itemUid); Set dbAttachments = dbItem.getAttachments(); dbAttachments.add(att); @@ -690,7 +690,7 @@ private ITaskListService getTaskListService() { WebApplicationContext wac = WebApplicationContextUtils.getRequiredWebApplicationContext(getServlet() .getServletContext()); - return (ITaskListService) wac.getBean(TaskListConstants.RESOURCE_SERVICE); + return (ITaskListService) wac.getBean(TaskListConstants.TASKLIST_SERVICE); } private TaskListUser getCurrentUser(ITaskListService service, Long sessionId) { @@ -701,7 +701,7 @@ TaskListUser taskListUser = service.getUserByIDAndSession(new Long(user.getUserID().intValue()), sessionId); if (taskListUser == null) { - TaskListSession session = service.getTaskListSessionBySessionId(sessionId); + TaskListSession session = service.getSessionBySessionId(sessionId); taskListUser = new TaskListUser(user, session); service.createUser(taskListUser); } @@ -764,7 +764,7 @@ String sessionMapID = request.getParameter(TaskListConstants.ATTR_SESSION_MAP_ID); SessionMap sessionMap = (SessionMap) request.getSession().getAttribute(sessionMapID); - Long taskListItemUid = new Long(request.getParameter(TaskListConstants.PARAM_RESOURCE_ITEM_UID)); + Long taskListItemUid = new Long(request.getParameter(TaskListConstants.PARAM_ITEM_UID)); ITaskListService service = getTaskListService(); HttpSession ss = SessionManager.getSession(); // get back login user DTO Index: lams_tool_task/src/java/org/lamsfoundation/lams/tool/taskList/web/action/MonitoringAction.java =================================================================== diff -u -r8b97231e320c0c5b674f07c14da711f232ba9e1c -rdef4291c38fd0644305ee8a76ec6569ce391bc83 --- lams_tool_task/src/java/org/lamsfoundation/lams/tool/taskList/web/action/MonitoringAction.java (.../MonitoringAction.java) (revision 8b97231e320c0c5b674f07c14da711f232ba9e1c) +++ lams_tool_task/src/java/org/lamsfoundation/lams/tool/taskList/web/action/MonitoringAction.java (.../MonitoringAction.java) (revision def4291c38fd0644305ee8a76ec6569ce391bc83) @@ -25,32 +25,44 @@ package org.lamsfoundation.lams.tool.taskList.web.action; import java.io.IOException; +import java.io.PrintWriter; +import java.text.DateFormat; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Collection; import java.util.Date; import java.util.List; +import java.util.Set; import java.util.TimeZone; import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; +import org.apache.commons.lang.StringEscapeUtils; import org.apache.log4j.Logger; import org.apache.struts.action.Action; import org.apache.struts.action.ActionForm; import org.apache.struts.action.ActionForward; import org.apache.struts.action.ActionMapping; -import org.apache.struts.action.ActionRedirect; -import org.lamsfoundation.lams.notebook.model.NotebookEntry; -import org.lamsfoundation.lams.notebook.service.CoreNotebookConstants; +import org.apache.tomcat.util.json.JSONArray; +import org.apache.tomcat.util.json.JSONException; +import org.apache.tomcat.util.json.JSONObject; import org.lamsfoundation.lams.tool.taskList.TaskListConstants; -import org.lamsfoundation.lams.tool.taskList.dto.ItemSummary; import org.lamsfoundation.lams.tool.taskList.dto.ReflectDTO; -import org.lamsfoundation.lams.tool.taskList.dto.Summary; +import org.lamsfoundation.lams.tool.taskList.dto.SessionDTO; +import org.lamsfoundation.lams.tool.taskList.dto.TaskListUserDTO; import org.lamsfoundation.lams.tool.taskList.model.TaskList; +import org.lamsfoundation.lams.tool.taskList.model.TaskListItem; +import org.lamsfoundation.lams.tool.taskList.model.TaskListItemAttachment; +import org.lamsfoundation.lams.tool.taskList.model.TaskListItemComment; import org.lamsfoundation.lams.tool.taskList.model.TaskListSession; import org.lamsfoundation.lams.tool.taskList.model.TaskListUser; import org.lamsfoundation.lams.tool.taskList.service.ITaskListService; import org.lamsfoundation.lams.usermanagement.dto.UserDTO; +import org.lamsfoundation.lams.util.Configuration; +import org.lamsfoundation.lams.util.ConfigurationKeys; import org.lamsfoundation.lams.util.DateUtil; import org.lamsfoundation.lams.util.WebUtil; import org.lamsfoundation.lams.web.session.SessionManager; @@ -60,148 +72,361 @@ import org.springframework.web.context.support.WebApplicationContextUtils; public class MonitoringAction extends Action { - public static Logger log = Logger.getLogger(MonitoringAction.class); - - public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { - String param = mapping.getParameter(); + public static Logger log = Logger.getLogger(MonitoringAction.class); + private static String TOOL_URL = Configuration.get(ConfigurationKeys.SERVER_URL) + "/tool/" + + TaskListConstants.TOOL_SIGNATURE + "/"; - if (param.equals("summary")) { - return summary(mapping, form, request, response); - } - if (param.equals("itemSummary")) { - return itemSummary(mapping, form, request, response); - } - if(param.equals("setVerifiedByMonitor")){ - return setVerifiedByMonitor(mapping, form, request, response); - } - if (param.equals("listuser")) { - return listuser(mapping, form, request, response); - } - if (param.equals("viewReflection")) { - return viewReflection(mapping, form, request, response); - } + public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, + HttpServletResponse response) throws IOException, ServletException, JSONException { + String param = mapping.getParameter(); - if (param.equals("setSubmissionDeadline")) { - return setSubmissionDeadline(mapping, form, request, response); - } - - return mapping.findForward(TaskListConstants.ERROR); + if (param.equals("summary")) { + return summary(mapping, form, request, response); } + if (param.equals("itemSummary")) { + return itemSummary(mapping, form, request, response); + } + if (param.equals("getPagedUsers")) { + return getPagedUsers(mapping, form, request, response); + } + if (param.equals("getPagedUsersByItem")) { + return getPagedUsersByItem(mapping, form, request, response); + } + if (param.equals("setVerifiedByMonitor")) { + return setVerifiedByMonitor(mapping, form, request, response); + } + if (param.equals("setSubmissionDeadline")) { + return setSubmissionDeadline(mapping, form, request, response); + } - private ActionForward summary(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) { - - //initial Session Map - SessionMap sessionMap = new SessionMap(); - request.getSession().setAttribute(sessionMap.getSessionID(), sessionMap); - - request.setAttribute(TaskListConstants.ATTR_SESSION_MAP_ID, sessionMap.getSessionID()); - request.setAttribute("initialTabId",WebUtil.readLongParam(request, AttributeNames.PARAM_CURRENT_TAB,true)); - Long contentId = WebUtil.readLongParam(request, AttributeNames.PARAM_TOOL_CONTENT_ID); - request.setAttribute(AttributeNames.PARAM_TOOL_CONTENT_ID, contentId); + return mapping.findForward(TaskListConstants.ERROR); + } - ITaskListService service = getTaskListService(); - TaskList taskList = service.getTaskListByContentId(contentId); - - List summaryList = service.getSummary(contentId); - - //cache into sessionMap - sessionMap.put(TaskListConstants.ATTR_SUMMARY_LIST, summaryList); - sessionMap.put(TaskListConstants.PAGE_EDITABLE, taskList.isContentInUse()); - sessionMap.put(TaskListConstants.ATTR_RESOURCE, taskList); - sessionMap.put(TaskListConstants.ATTR_TOOL_CONTENT_ID, contentId); - sessionMap.put(AttributeNames.PARAM_CONTENT_FOLDER_ID,WebUtil.readStrParam(request,AttributeNames.PARAM_CONTENT_FOLDER_ID)); + private ActionForward summary(ActionMapping mapping, ActionForm form, HttpServletRequest request, + HttpServletResponse response) { - if (taskList.getSubmissionDeadline() != null) { - Date submissionDeadline = taskList.getSubmissionDeadline(); - HttpSession ss = SessionManager.getSession(); - UserDTO teacher = (UserDTO) ss.getAttribute(AttributeNames.USER); - TimeZone teacherTimeZone = teacher.getTimeZone(); - Date tzSubmissionDeadline = DateUtil.convertToTimeZoneFromDefault(teacherTimeZone, submissionDeadline); - sessionMap.put(TaskListConstants.ATTR_SUBMISSION_DEADLINE, tzSubmissionDeadline.getTime()); - - } - - return mapping.findForward(TaskListConstants.SUCCESS); + // initial Session Map + SessionMap sessionMap = new SessionMap(); + request.getSession().setAttribute(sessionMap.getSessionID(), sessionMap); + + request.setAttribute(TaskListConstants.ATTR_SESSION_MAP_ID, sessionMap.getSessionID()); + request.setAttribute("initialTabId", WebUtil.readLongParam(request, AttributeNames.PARAM_CURRENT_TAB, true)); + Long contentId = WebUtil.readLongParam(request, AttributeNames.PARAM_TOOL_CONTENT_ID); + request.setAttribute(AttributeNames.PARAM_TOOL_CONTENT_ID, contentId); + + ITaskListService service = getTaskListService(); + TaskList taskList = service.getTaskListByContentId(contentId); + + List sessionDtos = service.getSummary(contentId); + + // cache into sessionMap + sessionMap.put(TaskListConstants.ATTR_SESSION_DTOS, sessionDtos); + sessionMap.put(TaskListConstants.ATTR_MONITOR_VERIFICATION_REQUIRED, taskList.isMonitorVerificationRequired()); + sessionMap.put(TaskListConstants.PAGE_EDITABLE, taskList.isContentInUse()); + sessionMap.put(TaskListConstants.ATTR_TASKLIST, taskList); + sessionMap.put(TaskListConstants.ATTR_TOOL_CONTENT_ID, contentId); + sessionMap.put(AttributeNames.PARAM_CONTENT_FOLDER_ID, + WebUtil.readStrParam(request, AttributeNames.PARAM_CONTENT_FOLDER_ID)); + sessionMap.put(TaskListConstants.ATTR_IS_GROUPED_ACTIVITY, service.isGroupedActivity(contentId)); + + if (taskList.getSubmissionDeadline() != null) { + Date submissionDeadline = taskList.getSubmissionDeadline(); + HttpSession ss = SessionManager.getSession(); + UserDTO teacher = (UserDTO) ss.getAttribute(AttributeNames.USER); + TimeZone teacherTimeZone = teacher.getTimeZone(); + Date tzSubmissionDeadline = DateUtil.convertToTimeZoneFromDefault(teacherTimeZone, submissionDeadline); + sessionMap.put(TaskListConstants.ATTR_SUBMISSION_DEADLINE, tzSubmissionDeadline.getTime()); } - private ActionForward itemSummary(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) { - ITaskListService service = getTaskListService(); + // Create reflectList if reflection is enabled. + if (taskList.isReflectOnActivity()) { + List reflectList = service.getReflectList(taskList.getContentId()); + // Add reflectList to sessionMap + sessionMap.put(TaskListConstants.ATTR_REFLECT_LIST, reflectList); + } + + return mapping.findForward(TaskListConstants.SUCCESS); + } + + private ActionForward itemSummary(ActionMapping mapping, ActionForm form, HttpServletRequest request, + HttpServletResponse response) { + ITaskListService service = getTaskListService(); + String sessionMapID = request.getParameter(TaskListConstants.ATTR_SESSION_MAP_ID); + SessionMap sessionMap = (SessionMap) request.getSession() + .getAttribute(sessionMapID); + request.setAttribute(TaskListConstants.ATTR_SESSION_MAP_ID, sessionMapID); + + Long contentId = WebUtil.readLongParam(request, AttributeNames.PARAM_TOOL_CONTENT_ID); + Long itemUid = WebUtil.readLongParam(request, TaskListConstants.PARAM_ITEM_UID); + + TaskListItem item = service.getTaskListItemByUid(itemUid); + + // create sessionList depending on whether the item was created by author or by learner + List sessionDtos = new ArrayList(); + if (item.isCreateByAuthor()) { + List sessionList = service.getSessionsByContentId(contentId); + for (TaskListSession session : sessionList) { + SessionDTO sessionDto = new SessionDTO(session); + sessionDtos.add(sessionDto); + } - Long contentId = WebUtil.readLongParam(request, AttributeNames.PARAM_TOOL_CONTENT_ID); - Long taskListItemId = WebUtil.readLongParam(request, TaskListConstants.ATTR_TASK_LIST_ITEM_UID); - ItemSummary ItemSummary = service.getItemSummary(contentId, taskListItemId, false); - - request.setAttribute(TaskListConstants.ATTR_ITEM_SUMMARY, ItemSummary); - request.setAttribute(TaskListConstants.ATTR_IS_GROUPED_ACTIVITY, service.isGroupedActivity(contentId)); - return mapping.findForward(TaskListConstants.SUCCESS); + } else { + TaskListSession userSession = item.getCreateBy().getSession(); + SessionDTO sessionDto = new SessionDTO(userSession); + sessionDtos.add(sessionDto); } + + request.setAttribute(TaskListConstants.ATTR_SESSION_DTOS, sessionDtos); + request.setAttribute(TaskListConstants.ATTR_TASK_LIST_ITEM, item); - /** - * Mark taskList item as complete status. - * - * @param mapping - * @param form - * @param request - * @param response - * @return - */ - private ActionForward setVerifiedByMonitor(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) { + return mapping.findForward(TaskListConstants.SUCCESS); + } - Long uid = WebUtil.readLongParam(request, TaskListConstants.ATTR_USER_UID); - ITaskListService service = getTaskListService(); - TaskListUser user = service.getUser(uid); - user.setVerifiedByMonitor(true); - service.createUser(user); + /** + * Refreshes user list. + */ + public ActionForward getPagedUsers(ActionMapping mapping, ActionForm form, HttpServletRequest request, + HttpServletResponse res) throws IOException, ServletException, JSONException { + ITaskListService service = getTaskListService(); + + String sessionMapID = request.getParameter(TaskListConstants.ATTR_SESSION_MAP_ID); + SessionMap sessionMap = (SessionMap) request.getSession() + .getAttribute(sessionMapID); + TaskList tasklist = (TaskList) sessionMap.get(TaskListConstants.ATTR_TASKLIST); + Long sessionId = WebUtil.readLongParam(request, AttributeNames.PARAM_TOOL_SESSION_ID); + List sessionDtos = (List) sessionMap.get(TaskListConstants.ATTR_SESSION_DTOS); + + //find according sessionDto + SessionDTO sessionDto = null; + for (SessionDTO sessionDtoIter : sessionDtos) { + if (sessionDtoIter.getSessionId().equals(sessionId)) { + sessionDto = sessionDtoIter; + } + } + List items = sessionDto.getTaskListItems(); - Long contentId = WebUtil.readLongParam(request, AttributeNames.PARAM_TOOL_CONTENT_ID); - String contentFolderID = WebUtil.readStrParam(request, AttributeNames.PARAM_CONTENT_FOLDER_ID); - - ActionRedirect redirect = new ActionRedirect(mapping.findForwardConfig(TaskListConstants.SUCCESS)); - redirect.addParameter(AttributeNames.PARAM_TOOL_CONTENT_ID, contentId); - redirect.addParameter(AttributeNames.PARAM_CONTENT_FOLDER_ID, contentFolderID); - return redirect; + // Getting the params passed in from the jqGrid + int page = WebUtil.readIntParam(request, AttributeNames.PARAM_PAGE); + int rowLimit = WebUtil.readIntParam(request, AttributeNames.PARAM_ROWS); + String sortOrder = WebUtil.readStrParam(request, AttributeNames.PARAM_SORD); + String sortBy = WebUtil.readStrParam(request, AttributeNames.PARAM_SIDX, true); + if (sortBy == "") { + sortBy = "userName"; } + String searchString = WebUtil.readStrParam(request, "userName", true); - private ActionForward listuser(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) { - Long sessionId = WebUtil.readLongParam(request, AttributeNames.PARAM_TOOL_SESSION_ID); - Long itemUid = WebUtil.readLongParam(request, TaskListConstants.PARAM_RESOURCE_ITEM_UID); + // Get the user list from the db + Collection userDtos = service.getPagedUsersBySession(sessionId, page - 1, rowLimit, sortBy, + sortOrder, searchString); + int countSessionUsers = service.getCountPagedUsersBySession(sessionId, searchString); - //get user list by given item uid - ITaskListService service = getTaskListService(); - List list = service.getUserListBySessionItem(sessionId, itemUid); - - //set to request - request.setAttribute(TaskListConstants.ATTR_USER_LIST, list); - return mapping.findForward(TaskListConstants.SUCCESS); + int totalPages = new Double( + Math.ceil(new Integer(countSessionUsers).doubleValue() / new Integer(rowLimit).doubleValue())) + .intValue(); + + JSONArray rows = new JSONArray(); + int i = 1; + for (TaskListUserDTO userDto : userDtos) { + + JSONArray userData = new JSONArray(); + userData.put(userDto.getUserId()); + String fullName = StringEscapeUtils.escapeHtml(userDto.getFullName()); + userData.put(fullName); + + Set completedTaskUids = userDto.getCompletedTaskUids(); + for (TaskListItem item : items) { + String completionImage = completedTaskUids.contains(item.getUid()) + ? "" + : ""; + userData.put(completionImage); + } + + if (tasklist.isMonitorVerificationRequired()) { + String label = StringEscapeUtils.escapeHtml(service.getMessage("label.confirm")); + + String verificationStatus = userDto.isVerifiedByMonitor() + ? "" + : "" + label + ""; + userData.put(verificationStatus); + } + + JSONObject userRow = new JSONObject(); + userRow.put("id", i++); + userRow.put("cell", userData); + + rows.put(userRow); } + + JSONObject responseJSON = new JSONObject(); + responseJSON.put("total", totalPages); + responseJSON.put("page", page); + responseJSON.put("records", countSessionUsers); + responseJSON.put("rows", rows); + + res.setContentType("application/json;charset=utf-8"); + res.getWriter().print(new String(responseJSON.toString())); + return null; + } + + /** + * Refreshes user list. + */ + public ActionForward getPagedUsersByItem(ActionMapping mapping, ActionForm form, HttpServletRequest request, + HttpServletResponse res) throws IOException, ServletException, JSONException { + ITaskListService service = getTaskListService(); - private ActionForward viewReflection(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) { + Long sessionId = WebUtil.readLongParam(request, AttributeNames.PARAM_TOOL_SESSION_ID); + Long itemUid = WebUtil.readLongParam(request, TaskListConstants.PARAM_ITEM_UID); + + // Getting the params passed in from the jqGrid + int page = WebUtil.readIntParam(request, AttributeNames.PARAM_PAGE); + int rowLimit = WebUtil.readIntParam(request, AttributeNames.PARAM_ROWS); + String sortOrder = WebUtil.readStrParam(request, AttributeNames.PARAM_SORD); + String sortBy = WebUtil.readStrParam(request, AttributeNames.PARAM_SIDX, true); + if (sortBy == "") { + sortBy = "userName"; + } + String searchString = WebUtil.readStrParam(request, "userName", true); + + // Get the user list from the db + Collection userDtos = service.getPagedUsersBySessionAndItem(sessionId, itemUid, page - 1, + rowLimit, sortBy, sortOrder, searchString); + int countSessionUsers = service.getCountPagedUsersBySession(sessionId, searchString); + + int totalPages = new Double( + Math.ceil(new Integer(countSessionUsers).doubleValue() / new Integer(rowLimit).doubleValue())) + .intValue(); + + //date formatters + DateFormat dateFormatter = new SimpleDateFormat("d-MMM-yyyy h:mm a"); + HttpSession ss = SessionManager.getSession(); + UserDTO monitorDto = (UserDTO) ss.getAttribute(AttributeNames.USER); + TimeZone monitorTimeZone = monitorDto.getTimeZone(); + + //get all comments and attachments + TaskListItem item = service.getTaskListItemByUid(itemUid); + Set itemComments = item.getComments(); + Set itemAttachments = item.getAttachments(); + String label = StringEscapeUtils.escapeHtml(service.getMessage("label.download")); + + int i = 0; + JSONArray rows = new JSONArray(); + for (TaskListUserDTO userDto : userDtos) { + + JSONArray userData = new JSONArray(); + String fullName = StringEscapeUtils.escapeHtml(userDto.getFullName()); + userData.put(fullName); + + String completionImage = userDto.isCompleted() + ? "" + : ""; + userData.put(completionImage); + + String accessDate = (userDto.getAccessDate() == null) ? "" : dateFormatter.format(DateUtil + .convertToTimeZoneFromDefault(monitorTimeZone, userDto.getAccessDate())); + userData.put(accessDate); + + // fill up with comments and attachments made by this user + if (item.isCommentsAllowed() || item.isFilesAllowed()) { + String commentsFiles = "
    "; - Long uid = WebUtil.readLongParam(request, TaskListConstants.ATTR_USER_UID); + ArrayList userComments = new ArrayList(); + for (TaskListItemComment comment : itemComments) { + if (userDto.getUserId().equals(comment.getCreateBy().getUserId())) { + userComments.add(comment.getComment()); + } + } + if (!userComments.isEmpty()) { + commentsFiles += "
  • "; + for (String userComment : userComments) { + commentsFiles += StringEscapeUtils.escapeHtml(userComment); + } + commentsFiles += "
  • "; + } + + ArrayList userAttachments = new ArrayList(); + for (TaskListItemAttachment attachment : itemAttachments) { + if (userDto.getUserId().equals(attachment.getCreateBy().getUserId())) { + userAttachments.add(attachment); + } + } + if (!userAttachments.isEmpty()) { + commentsFiles += "
  • "; + for (TaskListItemAttachment userAttachment : userAttachments) { + commentsFiles += StringEscapeUtils.escapeHtml(userAttachment.getFileName()) + " "; + commentsFiles += "" + label + ""; + } + commentsFiles += "
  • "; + } - ITaskListService service = getTaskListService(); - TaskListUser user = service.getUser(uid); - Long sessionID = user.getSession().getSessionId(); - NotebookEntry notebookEntry = service.getEntry(sessionID, - CoreNotebookConstants.NOTEBOOK_TOOL, - TaskListConstants.TOOL_SIGNATURE, user.getUserId().intValue()); + commentsFiles += "
"; - TaskListSession session = service.getTaskListSessionBySessionId(sessionID); - ReflectDTO refDTO = new ReflectDTO(user); - if(notebookEntry == null){ - refDTO.setFinishReflection(false); - refDTO.setReflect(null); - }else{ - refDTO.setFinishReflection(true); - refDTO.setReflect(notebookEntry.getEntry()); - } - refDTO.setReflectInstructions(session.getTaskList().getReflectInstructions()); - - request.setAttribute("userDTO", refDTO); - return mapping.findForward("success"); +// +// +//
  • +// +// +// +// +// +// +// +// +// +//
  • +//
    + userData.put(commentsFiles); + } + + JSONObject userRow = new JSONObject(); + userRow.put("id", i++); + userRow.put("cell", userData); + + rows.put(userRow); } + + JSONObject responseJSON = new JSONObject(); + responseJSON.put("total", totalPages); + responseJSON.put("page", page); + responseJSON.put("records", countSessionUsers); + responseJSON.put("rows", rows); + + res.setContentType("application/json;charset=utf-8"); + res.getWriter().print(new String(responseJSON.toString())); + return null; + } + + /** + * Mark taskList user as verified. + * + * @param mapping + * @param form + * @param request + * @param response + * @return + * @throws IOException + */ + private ActionForward setVerifiedByMonitor(ActionMapping mapping, ActionForm form, HttpServletRequest request, + HttpServletResponse response) throws IOException { + + Long userUid = WebUtil.readLongParam(request, TaskListConstants.ATTR_USER_UID); + ITaskListService service = getTaskListService(); + TaskListUser user = service.getUser(userUid); + user.setVerifiedByMonitor(true); + service.createUser(user); + response.setContentType("text/html"); + PrintWriter out = response.getWriter(); + out.write(userUid.toString()); + out.flush(); + out.close(); + return null; + } + /** * Set Submission Deadline * @@ -213,34 +438,33 @@ */ public ActionForward setSubmissionDeadline(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) { - - ITaskListService service = getTaskListService(); - Long contentID = WebUtil.readLongParam(request, AttributeNames.PARAM_TOOL_CONTENT_ID); - TaskList taskList = service.getTaskListByContentId(contentID); - - Long dateParameter = WebUtil.readLongParam(request, TaskListConstants.ATTR_SUBMISSION_DEADLINE, true); - Date tzSubmissionDeadline = null; - if (dateParameter != null) { - Date submissionDeadline = new Date(dateParameter); - HttpSession ss = SessionManager.getSession(); - org.lamsfoundation.lams.usermanagement.dto.UserDTO teacher = (org.lamsfoundation.lams.usermanagement.dto.UserDTO) ss.getAttribute(AttributeNames.USER); - TimeZone teacherTimeZone = teacher.getTimeZone(); - tzSubmissionDeadline = DateUtil.convertFromTimeZoneToDefault(teacherTimeZone, submissionDeadline); - } - taskList.setSubmissionDeadline(tzSubmissionDeadline); - service.saveOrUpdateTaskList(taskList); - return null; + + ITaskListService service = getTaskListService(); + Long contentID = WebUtil.readLongParam(request, AttributeNames.PARAM_TOOL_CONTENT_ID); + TaskList taskList = service.getTaskListByContentId(contentID); + + Long dateParameter = WebUtil.readLongParam(request, TaskListConstants.ATTR_SUBMISSION_DEADLINE, true); + Date tzSubmissionDeadline = null; + if (dateParameter != null) { + Date submissionDeadline = new Date(dateParameter); + HttpSession ss = SessionManager.getSession(); + org.lamsfoundation.lams.usermanagement.dto.UserDTO teacher = (org.lamsfoundation.lams.usermanagement.dto.UserDTO) ss + .getAttribute(AttributeNames.USER); + TimeZone teacherTimeZone = teacher.getTimeZone(); + tzSubmissionDeadline = DateUtil.convertFromTimeZoneToDefault(teacherTimeZone, submissionDeadline); + } + taskList.setSubmissionDeadline(tzSubmissionDeadline); + service.saveOrUpdateTaskList(taskList); + return null; } - - - - // ************************************************************************************* - // Private method - // ************************************************************************************* - private ITaskListService getTaskListService() { - WebApplicationContext wac = WebApplicationContextUtils.getRequiredWebApplicationContext(getServlet().getServletContext()); - return (ITaskListService) wac.getBean(TaskListConstants.RESOURCE_SERVICE); - } - + // ************************************************************************************* + // Private method + // ************************************************************************************* + private ITaskListService getTaskListService() { + WebApplicationContext wac = WebApplicationContextUtils + .getRequiredWebApplicationContext(getServlet().getServletContext()); + return (ITaskListService) wac.getBean(TaskListConstants.TASKLIST_SERVICE); + } + }