Index: lams_tool_larsrc/src/java/org/lamsfoundation/lams/tool/rsrc/ResourceConstants.java =================================================================== RCS file: /usr/local/cvsroot/lams_tool_larsrc/src/java/org/lamsfoundation/lams/tool/rsrc/ResourceConstants.java,v diff -u -r1.42 -r1.43 --- lams_tool_larsrc/src/java/org/lamsfoundation/lams/tool/rsrc/ResourceConstants.java 21 Jul 2014 18:19:18 -0000 1.42 +++ lams_tool_larsrc/src/java/org/lamsfoundation/lams/tool/rsrc/ResourceConstants.java 14 Dec 2015 22:02:11 -0000 1.43 @@ -121,6 +121,12 @@ public static final String ATTR_IS_GROUPED_ACTIVITY = "isGroupedActivity"; public static final String ATTR_IS_URL_ITEM_TYPE = "isUrlItemType"; + + // jqGrid parameters + public static final String PARAM_PAGE = "page"; + public static final String PARAM_ROWS = "rows"; + public static final String PARAM_SIDX = "sidx"; + public static final String PARAM_SORD = "sord"; // error message keys public static final String ERROR_MSG_TITLE_BLANK = "error.resource.item.title.blank"; Index: lams_tool_larsrc/src/java/org/lamsfoundation/lams/tool/rsrc/dao/ResourceItemVisitDAO.java =================================================================== RCS file: /usr/local/cvsroot/lams_tool_larsrc/src/java/org/lamsfoundation/lams/tool/rsrc/dao/ResourceItemVisitDAO.java,v diff -u -r1.7 -r1.8 --- lams_tool_larsrc/src/java/org/lamsfoundation/lams/tool/rsrc/dao/ResourceItemVisitDAO.java 17 Mar 2014 22:56:02 -0000 1.7 +++ lams_tool_larsrc/src/java/org/lamsfoundation/lams/tool/rsrc/dao/ResourceItemVisitDAO.java 14 Dec 2015 22:02:10 -0000 1.8 @@ -26,22 +26,28 @@ import java.util.List; import java.util.Map; +import org.lamsfoundation.lams.tool.rsrc.dto.VisitLogDTO; import org.lamsfoundation.lams.tool.rsrc.model.ResourceItemVisitLog; public interface ResourceItemVisitDAO extends DAO { - - public ResourceItemVisitLog getResourceItemLog(Long itemUid,Long userId); + ResourceItemVisitLog getResourceItemLog(Long itemUid, Long userId); - public int getUserViewLogCount(Long sessionId, Long userUid); - /** - * Return list which contains key pair which key is resource item uid, value is number view. - * - * @param contentId - * @return - */ - public Map getSummary(Long contentId); - - public List getResourceItemLogBySession(Long sessionId,Long itemUid); + int getUserViewLogCount(Long sessionId, Long userUid); + /** + * Return list which contains key pair which key is resource item uid, value is number view. + * + * @param contentId + * @return + */ + Map getSummary(Long contentId); + + List getResourceItemLogBySession(Long sessionId, Long itemUid); + + List getPagedVisitLogsBySessionAndItem(Long sessionId, Long itemUid, int page, int size, + String sortBy, String sortOrder, String searchString); + + int getCountVisitLogsBySessionAndItem(Long sessionId, Long itemUid, String searchString); + } Index: lams_tool_larsrc/src/java/org/lamsfoundation/lams/tool/rsrc/dao/hibernate/ResourceItemVisitDAOHibernate.java =================================================================== RCS file: /usr/local/cvsroot/lams_tool_larsrc/src/java/org/lamsfoundation/lams/tool/rsrc/dao/hibernate/ResourceItemVisitDAOHibernate.java,v diff -u -r1.11 -r1.12 --- lams_tool_larsrc/src/java/org/lamsfoundation/lams/tool/rsrc/dao/hibernate/ResourceItemVisitDAOHibernate.java 17 Mar 2014 22:56:02 -0000 1.11 +++ lams_tool_larsrc/src/java/org/lamsfoundation/lams/tool/rsrc/dao/hibernate/ResourceItemVisitDAOHibernate.java 14 Dec 2015 22:02:10 -0000 1.12 @@ -23,66 +23,142 @@ /* $$Id$$ */ package org.lamsfoundation.lams.tool.rsrc.dao.hibernate; +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; +import org.hibernate.Query; import org.lamsfoundation.lams.tool.rsrc.dao.ResourceItemVisitDAO; +import org.lamsfoundation.lams.tool.rsrc.dto.VisitLogDTO; import org.lamsfoundation.lams.tool.rsrc.model.Resource; import org.lamsfoundation.lams.tool.rsrc.model.ResourceItemVisitLog; import org.lamsfoundation.lams.tool.rsrc.model.ResourceSession; -public class ResourceItemVisitDAOHibernate extends BaseDAOHibernate implements ResourceItemVisitDAO{ - - private static final String FIND_BY_ITEM_AND_USER = "from " + ResourceItemVisitLog.class.getName() - + " as r where r.user.userId = ? and r.resourceItem.uid=?"; +public class ResourceItemVisitDAOHibernate extends BaseDAOHibernate implements ResourceItemVisitDAO { - private static final String FIND_BY_ITEM_BYSESSION = "from " + ResourceItemVisitLog.class.getName() - + " as r where r.sessionId = ? and r.resourceItem.uid=?"; - - private static final String FIND_VIEW_COUNT_BY_USER = "select count(*) from " + ResourceItemVisitLog.class.getName() - + " as r where r.sessionId=? and r.user.userId =?"; + private static final String FIND_BY_ITEM_AND_USER = "from " + ResourceItemVisitLog.class.getName() + + " as r where r.user.userId = ? and r.resourceItem.uid=?"; - private static final String FIND_SUMMARY = "select v.resourceItem.uid, count(v.resourceItem) from " - + ResourceItemVisitLog.class.getName() + " as v , " - + ResourceSession.class.getName() + " as s, " - + Resource.class.getName() + " as r " - +" where v.sessionId = s.sessionId " - +" and s.resource.uid = r.uid " - +" and r.contentId =? " - +" group by v.sessionId, v.resourceItem.uid "; - - public ResourceItemVisitLog getResourceItemLog(Long itemUid,Long userId){ - List list = getHibernateTemplate().find(FIND_BY_ITEM_AND_USER,new Object[]{userId,itemUid}); - if(list == null || list.size() ==0) - return null; - return (ResourceItemVisitLog) list.get(0); - } + private static final String FIND_BY_ITEM_BYSESSION = "from " + ResourceItemVisitLog.class.getName() + + " as r where r.sessionId = ? and r.resourceItem.uid=?"; - public int getUserViewLogCount(Long toolSessionId ,Long userUid) { - List list = getHibernateTemplate().find(FIND_VIEW_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_VIEW_COUNT_BY_USER = "select count(*) from " + + ResourceItemVisitLog.class.getName() + " as r where r.sessionId=? and r.user.userId =?"; + + private static final String FIND_SUMMARY = "select v.resourceItem.uid, count(v.resourceItem) from " + + ResourceItemVisitLog.class.getName() + " as v , " + ResourceSession.class.getName() + " as s, " + + Resource.class.getName() + " as r " + " where v.sessionId = s.sessionId " + + " and s.resource.uid = r.uid " + " and r.contentId =? " + " group by v.sessionId, v.resourceItem.uid "; + + @Override + public ResourceItemVisitLog getResourceItemLog(Long itemUid, Long userId) { + List list = getHibernateTemplate().find(FIND_BY_ITEM_AND_USER, new Object[] { userId, itemUid }); + if (list == null || list.size() == 0) + return null; + return (ResourceItemVisitLog) list.get(0); + } + + @Override + public int getUserViewLogCount(Long toolSessionId, Long userUid) { + List list = getHibernateTemplate().find(FIND_VIEW_COUNT_BY_USER, new Object[] { toolSessionId, userUid }); + if (list == null || list.size() == 0) + return 0; + return ((Number) list.get(0)).intValue(); + } + + @Override + public Map getSummary(Long contentId) { + + // Note: Hibernate 3.1 query.uniqueResult() returns Integer, Hibernate 3.2 query.uniqueResult() returns Long + List result = getHibernateTemplate().find(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; - public Map getSummary(Long contentId) { + } - // Note: Hibernate 3.1 query.uniqueResult() returns Integer, Hibernate 3.2 query.uniqueResult() returns Long - List result = getHibernateTemplate().find(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; + @Override + public List getResourceItemLogBySession(Long sessionId, Long itemUid) { + return getHibernateTemplate().find(FIND_BY_ITEM_BYSESSION, new Object[] { sessionId, itemUid }); + } + + @Override + public List getPagedVisitLogsBySessionAndItem(Long sessionId, Long itemUid, int page, int size, + String sortBy, String sortOrder, String searchString) { + String LOAD_USERS_ORDERED_BY_NAME = "SELECT visit.user.userId, CONCAT(visit.user.lastName, ' ', visit.user.firstName), visit.completeDate, visit.accessDate" + + " FROM " + ResourceItemVisitLog.class.getName() + " visit" + + " WHERE visit.sessionId = :sessionId " + + " AND visit.resourceItem.uid = :itemUid " + + " AND (CONCAT(visit.user.lastName, ' ', visit.user.firstName) LIKE CONCAT('%', :searchString, '%')) " + + " ORDER BY " + + " CASE " + + " WHEN :sortBy='userName' THEN CONCAT(user.lastName, ' ', user.firstName) " + + " WHEN :sortBy='startTime' THEN visit.accessDate " + + " WHEN :sortBy='completeTime' THEN visit.completeDate " + + " WHEN :sortBy='timeTaken' THEN TIMEDIFF(visit.completeDate,visit.accessDate) " + + " END " + sortOrder; + + Query query = getSession().createQuery(LOAD_USERS_ORDERED_BY_NAME); + query.setLong("sessionId", sessionId); + query.setLong("itemUid", itemUid); + // 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(); + + ArrayList visitLogDto = new ArrayList(); + if (list != null && list.size() > 0) { + for (Object[] element : list) { + Long userId = ((Number) element[0]).longValue(); + String userFullName = (String) element[1]; + Date completeDate = element[2] == null ? null : new Date(((Timestamp) element[2]).getTime()); + Date accessDate = element[3] == null ? null : new Date(((Timestamp) element[3]).getTime()); + Date timeTaken = (element[2] == null || element[3] == null) ? null : new Date(completeDate.getTime() + - accessDate.getTime()); + + VisitLogDTO userDto = new VisitLogDTO(); + userDto.setUserId(userId); + userDto.setUserFullName(userFullName); + userDto.setCompleteDate(completeDate); + userDto.setAccessDate(accessDate); + userDto.setTimeTaken(timeTaken);; + visitLogDto.add(userDto); + } } - public List getResourceItemLogBySession(Long sessionId, Long itemUid) { - - return getHibernateTemplate().find(FIND_BY_ITEM_BYSESSION,new Object[]{sessionId,itemUid}); + return visitLogDto; + } + + @Override + public int getCountVisitLogsBySessionAndItem(Long sessionId, Long itemUid, String searchString) { + String COUNT_USERS_BY_SESSION_AND_ITEM = "SELECT COUNT(*) FROM " + ResourceItemVisitLog.class.getName() + + " visit WHERE visit.sessionId = :sessionId AND visit.resourceItem.uid = :itemUid" + + " AND (CONCAT(visit.user.lastName, ' ', visit.user.firstName) LIKE CONCAT('%', :searchString, '%')) "; + + Query query = getSession().createQuery(COUNT_USERS_BY_SESSION_AND_ITEM); + query.setLong("sessionId", sessionId); + query.setLong("itemUid", itemUid); + // 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(); } + } } Fisheye: Tag 1.2 refers to a dead (removed) revision in file `lams_tool_larsrc/src/java/org/lamsfoundation/lams/tool/rsrc/dto/GroupSummary.java'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 1.2 refers to a dead (removed) revision in file `lams_tool_larsrc/src/java/org/lamsfoundation/lams/tool/rsrc/dto/ItemSummary.java'. Fisheye: No comparison available. Pass `N' to diff? Index: lams_tool_larsrc/src/java/org/lamsfoundation/lams/tool/rsrc/dto/ResourceItemDTO.java =================================================================== RCS file: /usr/local/cvsroot/lams_tool_larsrc/src/java/org/lamsfoundation/lams/tool/rsrc/dto/ResourceItemDTO.java,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ lams_tool_larsrc/src/java/org/lamsfoundation/lams/tool/rsrc/dto/ResourceItemDTO.java 14 Dec 2015 22:02:10 -0000 1.1 @@ -0,0 +1,238 @@ +/**************************************************************** + * Copyright (C) 2005 LAMS Foundation (http://lamsfoundation.org) + * ============================================================= + * License Information: http://lamsfoundation.org/licensing/lams/2.0/ + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2.0 + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA + * + * http://www.gnu.org/licenses/gpl.txt + * **************************************************************** + */ + +/* $Id: ResourceItemDTO.java,v 1.1 2015/12/14 22:02:10 andreyb Exp $ */ +package org.lamsfoundation.lams.tool.rsrc.dto; + +import java.util.ArrayList; +import java.util.List; +import java.util.Set; + +import org.lamsfoundation.lams.tool.rsrc.model.ResourceItem; +import org.lamsfoundation.lams.tool.rsrc.model.ResourceItemInstruction; +import org.lamsfoundation.lams.tool.rsrc.util.ResourceWebUtils; + +/** + * List contains following element:
+ * + *
  • ResourceItem.uid
  • + * ResourceItem.item_type
  • ResourceItem.create_by_author
  • + * ResourceItem.is_hide
  • ResourceItem.title
  • User.login_name
  • + *
  • count(resource_item_uid)
  • + * + * @author Steve.Ni + * + * @version $Revision: 1.1 $ + */ +public class ResourceItemDTO { + + private Long itemUid; + private short itemType; + private boolean itemCreateByAuthor; + private boolean itemHide; + private String itemTitle; + private List itemInstructions = new ArrayList(); + private String username; + private int viewNumber; + + // following is used for export portfolio programs: + private String url; + private Long fileUuid; + private Long fileVersionId; + private String fileName; + private String attachmentLocalUrl; + + // true: initial group item, false, belong to some group. + private boolean isInitGroup; + + public ResourceItemDTO() { + } + + /** + * Contruction method for monitoring summary function. + * + * Don't not set isInitGroup and viewNumber fields + * + * @param sessionName + * @param item + * @param isInitGroup + */ + public ResourceItemDTO(ResourceItem item) { + if (item != null) { + this.itemUid = item.getUid(); + this.itemType = item.getType(); + this.itemCreateByAuthor = item.isCreateByAuthor(); + this.itemHide = item.isHide(); + this.itemTitle = item.getTitle(); + this.username = item.getCreateBy() == null ? "" : item.getCreateBy().getLoginName(); + this.url = ResourceWebUtils.protocol(item.getUrl()); + this.fileName = item.getFileName(); + this.fileUuid = item.getFileUuid(); + this.fileVersionId = item.getFileVersionId(); + } else + this.itemUid = new Long(-1); + } + + /** + * Contruction method for export profolio function. + * + * Don't not set sessionId and viewNumber fields + * + * @param sessionName + * @param item + * @param isInitGroup + */ + public ResourceItemDTO(ResourceItem item, boolean isInitGroup) { + if (item != null) { + this.itemUid = item.getUid(); + this.itemType = item.getType(); + this.itemCreateByAuthor = item.isCreateByAuthor(); + this.itemHide = item.isHide(); + this.itemTitle = item.getTitle(); + this.username = item.getCreateBy() == null ? "" : item.getCreateBy().getLoginName(); + this.url = ResourceWebUtils.protocol(item.getUrl()); + this.fileName = item.getFileName(); + this.fileUuid = item.getFileUuid(); + this.fileVersionId = item.getFileVersionId(); + + for (ResourceItemInstruction instruction : (Set) item.getItemInstructions()) { + itemInstructions.add(instruction.getDescription()); + } + } else + this.itemUid = new Long(-1); + this.isInitGroup = isInitGroup; + } + + public boolean isItemCreateByAuthor() { + return itemCreateByAuthor; + } + + public void setItemCreateByAuthor(boolean itemCreateByAuthor) { + this.itemCreateByAuthor = itemCreateByAuthor; + } + + public boolean isItemHide() { + return itemHide; + } + + public void setItemHide(boolean itemHide) { + this.itemHide = itemHide; + } + + public String getItemTitle() { + return itemTitle; + } + + public void setItemTitle(String itemTitle) { + this.itemTitle = itemTitle; + } + + public short getItemType() { + return itemType; + } + + public void setItemType(short itemType) { + this.itemType = itemType; + } + + public Long getItemUid() { + return itemUid; + } + + public void setItemUid(Long itemUid) { + this.itemUid = itemUid; + } + + public String getUsername() { + return username; + } + + public void setUsername(String username) { + this.username = username; + } + + public int getViewNumber() { + return viewNumber; + } + + public void setViewNumber(int viewNumber) { + this.viewNumber = viewNumber; + } + + public Long getFileUuid() { + return fileUuid; + } + + public void setFileUuid(Long fileUuid) { + this.fileUuid = fileUuid; + } + + public Long getFileVersionId() { + return fileVersionId; + } + + public void setFileVersionId(Long fileVersionId) { + this.fileVersionId = fileVersionId; + } + + public String getUrl() { + return url; + } + + public void setUrl(String url) { + this.url = url; + } + + public boolean isInitGroup() { + return isInitGroup; + } + + public void setInitGroup(boolean isInitGroup) { + this.isInitGroup = isInitGroup; + } + + public String getAttachmentLocalUrl() { + return attachmentLocalUrl; + } + + public void setAttachmentLocalUrl(String attachmentLocalUrl) { + this.attachmentLocalUrl = attachmentLocalUrl; + } + + public String getFileName() { + return fileName; + } + + public void setFileName(String fileName) { + this.fileName = fileName; + } + + public List getItemInstructions() { + return itemInstructions; + } + + public void setItemInstructions(List itemInstructions) { + this.itemInstructions = itemInstructions; + } + +} Index: lams_tool_larsrc/src/java/org/lamsfoundation/lams/tool/rsrc/dto/SessionDTO.java =================================================================== RCS file: /usr/local/cvsroot/lams_tool_larsrc/src/java/org/lamsfoundation/lams/tool/rsrc/dto/SessionDTO.java,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ lams_tool_larsrc/src/java/org/lamsfoundation/lams/tool/rsrc/dto/SessionDTO.java 14 Dec 2015 22:02:10 -0000 1.1 @@ -0,0 +1,63 @@ +/**************************************************************** + * Copyright (C) 2005 LAMS Foundation (http://lamsfoundation.org) + * ============================================================= + * License Information: http://lamsfoundation.org/licensing/lams/2.0/ + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2.0 + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 * USA + * + * http://www.gnu.org/licenses/gpl.txt + * **************************************************************** + */ + +/* $Id: SessionDTO.java,v 1.1 2015/12/14 22:02:10 andreyb Exp $ */ +package org.lamsfoundation.lams.tool.rsrc.dto; + +import java.util.LinkedList; +import java.util.List; + +public class SessionDTO { + + private Long sessionId; + private String sessionName; + private List items; + + public SessionDTO () { + items = new LinkedList(); + } + + public Long getSessionId() { + return sessionId; + } + + public void setSessionId(Long sessionId) { + this.sessionId = sessionId; + } + + public String getSessionName() { + return sessionName; + } + + public void setSessionName(String sessionName) { + this.sessionName = sessionName; + } + + public List getItems() { + return items; + } + + public void setItems(List items) { + this.items = items; + } +} + Index: lams_tool_larsrc/src/java/org/lamsfoundation/lams/tool/rsrc/dto/VisitLogDTO.java =================================================================== RCS file: /usr/local/cvsroot/lams_tool_larsrc/src/java/org/lamsfoundation/lams/tool/rsrc/dto/VisitLogDTO.java,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ lams_tool_larsrc/src/java/org/lamsfoundation/lams/tool/rsrc/dto/VisitLogDTO.java 14 Dec 2015 22:02:10 -0000 1.1 @@ -0,0 +1,81 @@ +/**************************************************************** + * Copyright (C) 2005 LAMS Foundation (http://lamsfoundation.org) + * ============================================================= + * License Information: http://lamsfoundation.org/licensing/lams/2.0/ + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2.0 + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 * USA + * + * http://www.gnu.org/licenses/gpl.txt + * **************************************************************** + */ + +/* $Id: VisitLogDTO.java,v 1.1 2015/12/14 22:02:10 andreyb Exp $ */ +package org.lamsfoundation.lams.tool.rsrc.dto; + +import java.util.Date; + +public class VisitLogDTO { + + private Long userId; + + private String userFullName; + + // the user access some reousrce item date time. Use in monitoring summary page + private Date accessDate; + // resource item complete date. Use in monitoring summary page + private Date completeDate; + // difference between completeDate and accessDate + private Date timeTaken; + + public Long getUserId() { + return userId; + } + + public void setUserId(Long userId) { + this.userId = userId; + } + + public String getUserFullName() { + return userFullName; + } + + public void setUserFullName(String userFullName) { + this.userFullName = userFullName; + } + + public Date getAccessDate() { + return accessDate; + } + + public void setAccessDate(Date accessDate) { + this.accessDate = accessDate; + } + + public Date getCompleteDate() { + return completeDate; + } + + public void setCompleteDate(Date completeDate) { + this.completeDate = completeDate; + } + + public Date getTimeTaken() { + return timeTaken; + } + + public void setTimeTaken(Date timeTaken) { + this.timeTaken = timeTaken; + } + +} Index: lams_tool_larsrc/src/java/org/lamsfoundation/lams/tool/rsrc/model/Resource.java =================================================================== RCS file: /usr/local/cvsroot/lams_tool_larsrc/src/java/org/lamsfoundation/lams/tool/rsrc/model/Resource.java,v diff -u -r1.21 -r1.22 --- lams_tool_larsrc/src/java/org/lamsfoundation/lams/tool/rsrc/model/Resource.java 17 Jan 2014 22:06:34 -0000 1.21 +++ lams_tool_larsrc/src/java/org/lamsfoundation/lams/tool/rsrc/model/Resource.java 14 Dec 2015 22:02:10 -0000 1.22 @@ -39,422 +39,418 @@ /** * Resource + * * @author Dapeng Ni - * - * @hibernate.class table="tl_larsrc11_resource" - * + * + * @hibernate.class table="tl_larsrc11_resource" + * */ public class Resource implements Cloneable { - private static final Logger log = Logger.getLogger(Resource.class); + private static final Logger log = Logger.getLogger(Resource.class); - //key - private Long uid; + // key + private Long uid; - //tool contentID - private Long contentId; + // tool contentID + private Long contentId; - private String title; + private String title; - private String instructions; + private String instructions; - //advance + // advance - private boolean runAuto; + private boolean runAuto; - private int miniViewResourceNumber; + private int miniViewResourceNumber; - private boolean allowAddFiles; + private boolean allowAddFiles; - private boolean allowAddUrls; + private boolean allowAddUrls; - private boolean lockWhenFinished; + private boolean lockWhenFinished; - private boolean defineLater; + private boolean defineLater; - private boolean contentInUse; + private boolean contentInUse; - private boolean notifyTeachersOnAssigmentSumbit; + private boolean notifyTeachersOnAssigmentSumbit; - //general infomation - private Date created; + // general infomation + private Date created; - private Date updated; + private Date updated; - private ResourceUser createdBy; + private ResourceUser createdBy; - //resource Items - private Set resourceItems; + // resource Items + private Set resourceItems; - private boolean reflectOnActivity; + private boolean reflectOnActivity; - private String reflectInstructions; + private String reflectInstructions; - //*************** NON Persist Fields ******************** + // *************** NON Persist Fields ******************** - private String miniViewNumberStr; + private String miniViewNumberStr; - /** - * Default contruction method. - * - */ - public Resource() { - resourceItems = new HashSet(); - } + /** + * Default contruction method. + * + */ + public Resource() { + resourceItems = new HashSet(); + } - // ********************************************************** - // Function method for Resource - // ********************************************************** - public static Resource newInstance(Resource defaultContent, Long contentId) { - Resource toContent = new Resource(); - toContent = (Resource) defaultContent.clone(); - toContent.setContentId(contentId); + // ********************************************************** + // Function method for Resource + // ********************************************************** + public static Resource newInstance(Resource defaultContent, Long contentId) { + Resource toContent = new Resource(); + toContent = (Resource) defaultContent.clone(); + toContent.setContentId(contentId); - //reset user info as well - if (toContent.getCreatedBy() != null) { - toContent.getCreatedBy().setResource(toContent); - Set items = toContent.getResourceItems(); - for (ResourceItem item : items) { - item.setCreateBy(toContent.getCreatedBy()); - } - } - return toContent; + // reset user info as well + if (toContent.getCreatedBy() != null) { + toContent.getCreatedBy().setResource(toContent); + Set items = toContent.getResourceItems(); + for (ResourceItem item : items) { + item.setCreateBy(toContent.getCreatedBy()); + } } + return toContent; + } - @Override - public Object clone() { + @Override + public Object clone() { - Resource resource = null; - try { - resource = (Resource) super.clone(); - resource.setUid(null); - if (resourceItems != null) { - Iterator iter = resourceItems.iterator(); - Set set = new HashSet(); - while (iter.hasNext()) { - ResourceItem item = (ResourceItem) iter.next(); - ResourceItem newItem = (ResourceItem) item.clone(); - // just clone old file without duplicate it in repository - set.add(newItem); - } - resource.resourceItems = set; - } - //clone ReourceUser as well - if (createdBy != null) { - resource.setCreatedBy((ResourceUser) createdBy.clone()); - } + Resource resource = null; + try { + resource = (Resource) super.clone(); + resource.setUid(null); + if (resourceItems != null) { + Iterator iter = resourceItems.iterator(); + Set set = new HashSet(); + while (iter.hasNext()) { + ResourceItem item = (ResourceItem) iter.next(); + ResourceItem newItem = (ResourceItem) item.clone(); + // just clone old file without duplicate it in repository + set.add(newItem); } - catch (CloneNotSupportedException e) { - Resource.log.error("When clone " + Resource.class + " failed"); - } - - return resource; + resource.resourceItems = set; + } + // clone ReourceUser as well + if (createdBy != null) { + resource.setCreatedBy((ResourceUser) createdBy.clone()); + } + } catch (CloneNotSupportedException e) { + Resource.log.error("When clone " + Resource.class + " failed"); } - @Override - public boolean equals(Object o) { - if (this == o) { - return true; - } - if (!(o instanceof Resource)) { - return false; - } + return resource; + } - final Resource genericEntity = (Resource) o; - - return new EqualsBuilder().append(uid, genericEntity.uid).append(title, genericEntity.title).append(instructions, - genericEntity.instructions).append(created, genericEntity.created).append(updated, - genericEntity.updated).append(createdBy, genericEntity.createdBy).isEquals(); + @Override + public boolean equals(Object o) { + if (this == o) { + return true; } - - @Override - public int hashCode() { - return new HashCodeBuilder().append(uid).append(title).append(instructions).append(created).append(updated).append(createdBy).toHashCode(); + if (!(o instanceof Resource)) { + return false; } - /** - * Updates the modification data for this entity. - */ - public void updateModificationData() { + final Resource genericEntity = (Resource) o; - long now = System.currentTimeMillis(); - if (created == null) { - this.setCreated(new Date(now)); - } - this.setUpdated(new Date(now)); - } + return new EqualsBuilder().append(uid, genericEntity.uid).append(title, genericEntity.title) + .append(instructions, genericEntity.instructions).append(created, genericEntity.created) + .append(updated, genericEntity.updated).append(createdBy, genericEntity.createdBy).isEquals(); + } - //********************************************************** - // get/set methods - //********************************************************** - /** - * Returns the object's creation date - * - * @return date - * @hibernate.property column="create_date" - */ - public Date getCreated() { - return created; - } + @Override + public int hashCode() { + return new HashCodeBuilder().append(uid).append(title).append(instructions).append(created).append(updated) + .append(createdBy).toHashCode(); + } - /** - * Sets the object's creation date - * - * @param created - */ - public void setCreated(Date created) { - this.created = created; - } + /** + * Updates the modification data for this entity. + */ + public void updateModificationData() { - /** - * Returns the object's date of last update - * - * @return date updated - * @hibernate.property column="update_date" - */ - public Date getUpdated() { - return updated; + long now = System.currentTimeMillis(); + if (created == null) { + this.setCreated(new Date(now)); } + this.setUpdated(new Date(now)); + } - /** - * Sets the object's date of last update - * - * @param updated - */ - public void setUpdated(Date updated) { - this.updated = updated; - } + // ********************************************************** + // get/set methods + // ********************************************************** + /** + * Returns the object's creation date + * + * @return date + * @hibernate.property column="create_date" + */ + public Date getCreated() { + return created; + } - /** - * @return Returns the userid of the user who created the Share resources. - * - * @hibernate.many-to-one - * cascade="save-update" - * column="create_by" - * - */ - public ResourceUser getCreatedBy() { - return createdBy; - } + /** + * Sets the object's creation date + * + * @param created + */ + public void setCreated(Date created) { + this.created = created; + } - /** - * @param createdBy The userid of the user who created this Share resources. - */ - public void setCreatedBy(ResourceUser createdBy) { - this.createdBy = createdBy; - } + /** + * Returns the object's date of last update + * + * @return date updated + * @hibernate.property column="update_date" + */ + public Date getUpdated() { + return updated; + } - /** - * @hibernate.id column="uid" generator-class="native" - */ - public Long getUid() { - return uid; - } + /** + * Sets the object's date of last update + * + * @param updated + */ + public void setUpdated(Date updated) { + this.updated = updated; + } - public void setUid(Long uid) { - this.uid = uid; - } + /** + * @return Returns the userid of the user who created the Share resources. + * + * @hibernate.many-to-one cascade="save-update" column="create_by" + * + */ + public ResourceUser getCreatedBy() { + return createdBy; + } - /** - * @return Returns the title. - * - * @hibernate.property - * column="title" - * - */ - public String getTitle() { - return title; - } + /** + * @param createdBy + * The userid of the user who created this Share resources. + */ + public void setCreatedBy(ResourceUser createdBy) { + this.createdBy = createdBy; + } - /** - * @param title The title to set. - */ - public void setTitle(String title) { - this.title = title; - } + /** + * @hibernate.id column="uid" generator-class="native" + */ + public Long getUid() { + return uid; + } - /** - * @return Returns the lockWhenFinish. - * - * @hibernate.property - * column="lock_on_finished" - * - */ - public boolean getLockWhenFinished() { - return lockWhenFinished; - } + public void setUid(Long uid) { + this.uid = uid; + } - /** - * @param lockWhenFinished Set to true to lock the resource for finished users. - */ - public void setLockWhenFinished(boolean lockWhenFinished) { - this.lockWhenFinished = lockWhenFinished; - } + /** + * @return Returns the title. + * + * @hibernate.property column="title" + * + */ + public String getTitle() { + return title; + } - /** - * @return Returns the instructions set by the teacher. - * - * @hibernate.property - * column="instructions" - * type="text" - */ - public String getInstructions() { - return instructions; - } + /** + * @param title + * The title to set. + */ + public void setTitle(String title) { + this.title = title; + } - public void setInstructions(String instructions) { - this.instructions = instructions; - } + /** + * @return Returns the lockWhenFinish. + * + * @hibernate.property column="lock_on_finished" + * + */ + public boolean getLockWhenFinished() { + return lockWhenFinished; + } - /** - * - * - * @hibernate.set lazy="true" - * inverse="false" - * cascade="all" - * order-by="create_date desc" - * @hibernate.collection-key column="resource_uid" - * @hibernate.collection-one-to-many class="org.lamsfoundation.lams.tool.rsrc.model.ResourceItem" - * - * @return - */ - public Set getResourceItems() { - return resourceItems; - } + /** + * @param lockWhenFinished + * Set to true to lock the resource for finished users. + */ + public void setLockWhenFinished(boolean lockWhenFinished) { + this.lockWhenFinished = lockWhenFinished; + } - public void setResourceItems(Set resourceItems) { - this.resourceItems = resourceItems; - } + /** + * @return Returns the instructions set by the teacher. + * + * @hibernate.property column="instructions" type="text" + */ + public String getInstructions() { + return instructions; + } - /** - * @hibernate.property column="content_in_use" - * @return - */ - public boolean isContentInUse() { - return contentInUse; - } + public void setInstructions(String instructions) { + this.instructions = instructions; + } - public void setContentInUse(boolean contentInUse) { - this.contentInUse = contentInUse; - } + /** + * + * + * @hibernate.set lazy="true" inverse="false" cascade="all" order-by="create_date desc" + * @hibernate.collection-key column="resource_uid" + * @hibernate.collection-one-to-many class="org.lamsfoundation.lams.tool.rsrc.model.ResourceItem" + * + * @return + */ + public Set getResourceItems() { + return resourceItems; + } - /** - * @hibernate.property column="define_later" - * @return - */ - public boolean isDefineLater() { - return defineLater; - } + public void setResourceItems(Set resourceItems) { + this.resourceItems = resourceItems; + } - public void setDefineLater(boolean defineLater) { - this.defineLater = defineLater; - } + /** + * @hibernate.property column="content_in_use" + * @return + */ + public boolean isContentInUse() { + return contentInUse; + } - /** - * @hibernate.property column="content_id" unique="true" - * @return - */ - public Long getContentId() { - return contentId; - } + public void setContentInUse(boolean contentInUse) { + this.contentInUse = contentInUse; + } - public void setContentId(Long contentId) { - this.contentId = contentId; - } + /** + * @hibernate.property column="define_later" + * @return + */ + public boolean isDefineLater() { + return defineLater; + } - /** - * @hibernate.property column="allow_add_files" - * @return - */ - public boolean isAllowAddFiles() { - return allowAddFiles; - } + public void setDefineLater(boolean defineLater) { + this.defineLater = defineLater; + } - public void setAllowAddFiles(boolean allowAddFiles) { - this.allowAddFiles = allowAddFiles; - } + /** + * @hibernate.property column="content_id" unique="true" + * @return + */ + public Long getContentId() { + return contentId; + } - /** - * @hibernate.property column="allow_add_urls" - * @return - */ - public boolean isAllowAddUrls() { - return allowAddUrls; - } + public void setContentId(Long contentId) { + this.contentId = contentId; + } - public void setAllowAddUrls(boolean allowAddUrls) { - this.allowAddUrls = allowAddUrls; - } + /** + * @hibernate.property column="allow_add_files" + * @return + */ + public boolean isAllowAddFiles() { + return allowAddFiles; + } - /** - * @hibernate.property column="mini_view_resource_number" - * @return - */ - public int getMiniViewResourceNumber() { - return miniViewResourceNumber; - } + public void setAllowAddFiles(boolean allowAddFiles) { + this.allowAddFiles = allowAddFiles; + } - public void setMiniViewResourceNumber(int minViewResourceNumber) { - miniViewResourceNumber = minViewResourceNumber; - } + /** + * @hibernate.property column="allow_add_urls" + * @return + */ + public boolean isAllowAddUrls() { + return allowAddUrls; + } - /** - * @hibernate.property column="allow_auto_run" - * @return - */ - public boolean isRunAuto() { - return runAuto; - } + public void setAllowAddUrls(boolean allowAddUrls) { + this.allowAddUrls = allowAddUrls; + } - public void setRunAuto(boolean runAuto) { - this.runAuto = runAuto; - } + /** + * @hibernate.property column="mini_view_resource_number" + * @return + */ + public int getMiniViewResourceNumber() { + return miniViewResourceNumber; + } - /** - * For display use - * @return - */ - public String getMiniViewNumberStr() { - return miniViewNumberStr; - } + public void setMiniViewResourceNumber(int minViewResourceNumber) { + miniViewResourceNumber = minViewResourceNumber; + } - public void setMiniViewNumberStr(String minViewNumber) { - miniViewNumberStr = minViewNumber; - } + /** + * @hibernate.property column="allow_auto_run" + * @return + */ + public boolean isRunAuto() { + return runAuto; + } - /** - * @hibernate.property column="reflect_instructions" - * @return - */ - public String getReflectInstructions() { - return reflectInstructions; - } + public void setRunAuto(boolean runAuto) { + this.runAuto = runAuto; + } - public void setReflectInstructions(String reflectInstructions) { - this.reflectInstructions = reflectInstructions; - } + /** + * For display use + * + * @return + */ + public String getMiniViewNumberStr() { + return miniViewNumberStr; + } - /** - * @hibernate.property column="reflect_on_activity" - * @return - */ - public boolean isReflectOnActivity() { - return reflectOnActivity; - } + public void setMiniViewNumberStr(String minViewNumber) { + miniViewNumberStr = minViewNumber; + } - public void setReflectOnActivity(boolean reflectOnActivity) { - this.reflectOnActivity = reflectOnActivity; - } + /** + * @hibernate.property column="reflect_instructions" + * @return + */ + public String getReflectInstructions() { + return reflectInstructions; + } - /** - * @hibernate.property column="assigment_submit_notify" - * @return - */ - public boolean isNotifyTeachersOnAssigmentSumbit() { - return notifyTeachersOnAssigmentSumbit; - } + public void setReflectInstructions(String reflectInstructions) { + this.reflectInstructions = reflectInstructions; + } - public void setNotifyTeachersOnAssigmentSumbit(boolean notifyTeachersOnAssigmentSumbit) { - this.notifyTeachersOnAssigmentSumbit = notifyTeachersOnAssigmentSumbit; - } + /** + * @hibernate.property column="reflect_on_activity" + * @return + */ + public boolean isReflectOnActivity() { + return reflectOnActivity; + } + + public void setReflectOnActivity(boolean reflectOnActivity) { + this.reflectOnActivity = reflectOnActivity; + } + + /** + * @hibernate.property column="assigment_submit_notify" + * @return + */ + public boolean isNotifyTeachersOnAssigmentSumbit() { + return notifyTeachersOnAssigmentSumbit; + } + + public void setNotifyTeachersOnAssigmentSumbit(boolean notifyTeachersOnAssigmentSumbit) { + this.notifyTeachersOnAssigmentSumbit = notifyTeachersOnAssigmentSumbit; + } } Index: lams_tool_larsrc/src/java/org/lamsfoundation/lams/tool/rsrc/model/ResourceItemVisitLog.java =================================================================== RCS file: /usr/local/cvsroot/lams_tool_larsrc/src/java/org/lamsfoundation/lams/tool/rsrc/model/ResourceItemVisitLog.java,v diff -u -r1.9 -r1.10 --- lams_tool_larsrc/src/java/org/lamsfoundation/lams/tool/rsrc/model/ResourceItemVisitLog.java 10 Aug 2011 11:41:52 -0000 1.9 +++ lams_tool_larsrc/src/java/org/lamsfoundation/lams/tool/rsrc/model/ResourceItemVisitLog.java 14 Dec 2015 22:02:10 -0000 1.10 @@ -25,98 +25,107 @@ package org.lamsfoundation.lams.tool.rsrc.model; import java.util.Date; + /** * Resource + * * @author Dapeng Ni - * - * @hibernate.class table="tl_larsrc11_item_log" - * + * + * @hibernate.class table="tl_larsrc11_item_log" + * */ public class ResourceItemVisitLog { - private Long uid; - private ResourceUser user; - private ResourceItem resourceItem; - private boolean complete; - private Date completeDate; - 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.property column="complete_date" - * @return - */ - public Date getCompleteDate() { - return completeDate; - } - public void setCompleteDate(Date completeDate) { - this.completeDate = completeDate; - } - /** - * @hibernate.many-to-one column="resource_item_uid" - * cascade="none" - * @return - */ - public ResourceItem getResourceItem() { - return resourceItem; - } - public void setResourceItem(ResourceItem item) { - this.resourceItem = 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="none" - * @return - */ - public ResourceUser getUser() { - return user; - } - public void setUser(ResourceUser 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 ResourceUser user; + private ResourceItem resourceItem; + private boolean complete; + private Date completeDate; + 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.property column="complete_date" + * @return + */ + public Date getCompleteDate() { + return completeDate; + } + + public void setCompleteDate(Date completeDate) { + this.completeDate = completeDate; + } + + /** + * @hibernate.many-to-one column="resource_item_uid" cascade="none" + * @return + */ + public ResourceItem getResourceItem() { + return resourceItem; + } + + public void setResourceItem(ResourceItem item) { + this.resourceItem = 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="none" + * @return + */ + public ResourceUser getUser() { + return user; + } + + public void setUser(ResourceUser 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_larsrc/src/java/org/lamsfoundation/lams/tool/rsrc/model/ResourceSession.java =================================================================== RCS file: /usr/local/cvsroot/lams_tool_larsrc/src/java/org/lamsfoundation/lams/tool/rsrc/model/ResourceSession.java,v diff -u -r1.7 -r1.8 --- lams_tool_larsrc/src/java/org/lamsfoundation/lams/tool/rsrc/model/ResourceSession.java 24 Oct 2006 00:05:36 -0000 1.7 +++ lams_tool_larsrc/src/java/org/lamsfoundation/lams/tool/rsrc/model/ResourceSession.java 14 Dec 2015 22:02:10 -0000 1.8 @@ -30,129 +30,135 @@ /** * Resource + * * @author Dapeng Ni - * - * @hibernate.class table="tl_larsrc11_session" - * + * + * @hibernate.class table="tl_larsrc11_session" + * */ -public class ResourceSession{ - - private static Logger log = Logger.getLogger(ResourceSession.class); - - private Long uid; - private Long sessionId; - private String sessionName; - private Resource resource; - private Date sessionStartDate; - private Date sessionEndDate; - //finish or not - private int status; - //resource Items - private Set resourceItems; +public class ResourceSession { - -// ********************************************************** - // Get/Set methods -// ********************************************************** - /** - * @hibernate.id generator-class="native" type="java.lang.Long" column="uid" - * @return Returns the learnerID. - */ - public Long getUid() { - return uid; - } - public void setUid(Long uuid) { - this.uid = uuid; - } - - /** - * @hibernate.property column="session_end_date" - * @return - */ - public Date getSessionEndDate() { - return sessionEndDate; - } - public void setSessionEndDate(Date sessionEndDate) { - this.sessionEndDate = sessionEndDate; - } - /** - * @hibernate.property column="session_start_date" - * - * @return - */ - public Date getSessionStartDate() { - return sessionStartDate; - } - public void setSessionStartDate(Date sessionStartDate) { - this.sessionStartDate = sessionStartDate; - } - /** - * @hibernate.property - * @return - */ - public int getStatus() { - return status; - } - public void setStatus(int status) { - this.status = status; - } + private static Logger log = Logger.getLogger(ResourceSession.class); - /** - * @hibernate.many-to-one column="resource_uid" - * cascade="none" - * @return - */ - public Resource getResource() { - return resource; - } - public void setResource(Resource resource) { - this.resource = resource; - } - /** - * @hibernate.property column="session_id" - * @return - */ - public Long getSessionId() { - return sessionId; - } - public void setSessionId(Long sessionId) { - this.sessionId = sessionId; - } + private Long uid; + private Long sessionId; + private String sessionName; + private Resource resource; + private Date sessionStartDate; + private Date sessionEndDate; + // finish or not + private int status; + // resource Items + private Set resourceItems; - /** - * @hibernate.property column="session_name" length="250" - * @return Returns the session name - */ - public String getSessionName() { - return sessionName; - } + // ********************************************************** + // Get/Set methods + // ********************************************************** + /** + * @hibernate.id generator-class="native" type="java.lang.Long" column="uid" + * @return Returns the learnerID. + */ + public Long getUid() { + return uid; + } - /** - * - * @param sessionName The session name to set. - */ - public void setSessionName(String sessionName) { - this.sessionName = sessionName; - } + public void setUid(Long uuid) { + this.uid = uuid; + } - /** - * - * - * @hibernate.set lazy="true" - * inverse="false" - * cascade="all" - * order-by="create_date desc" - * @hibernate.collection-key column="session_uid" - * @hibernate.collection-one-to-many class="org.lamsfoundation.lams.tool.rsrc.model.ResourceItem" - * - * @return - */ - public Set getResourceItems() { - return resourceItems; - } - public void setResourceItems(Set resourceItems) { - this.resourceItems= resourceItems; - } + /** + * @hibernate.property column="session_end_date" + * @return + */ + public Date getSessionEndDate() { + return sessionEndDate; + } + public void setSessionEndDate(Date sessionEndDate) { + this.sessionEndDate = sessionEndDate; + } + /** + * @hibernate.property column="session_start_date" + * + * @return + */ + public Date getSessionStartDate() { + return sessionStartDate; + } + + public void setSessionStartDate(Date sessionStartDate) { + this.sessionStartDate = sessionStartDate; + } + + /** + * @hibernate.property + * @return + */ + public int getStatus() { + return status; + } + + public void setStatus(int status) { + this.status = status; + } + + /** + * @hibernate.many-to-one column="resource_uid" cascade="none" + * @return + */ + public Resource getResource() { + return resource; + } + + public void setResource(Resource resource) { + this.resource = resource; + } + + /** + * @hibernate.property column="session_id" + * @return + */ + public Long getSessionId() { + return sessionId; + } + + public void setSessionId(Long sessionId) { + this.sessionId = sessionId; + } + + /** + * @hibernate.property column="session_name" length="250" + * @return Returns the session name + */ + public String getSessionName() { + return sessionName; + } + + /** + * + * @param sessionName + * The session name to set. + */ + public void setSessionName(String sessionName) { + this.sessionName = sessionName; + } + + /** + * + * + * @hibernate.set lazy="true" inverse="false" cascade="all" order-by="create_date desc" + * @hibernate.collection-key column="session_uid" + * @hibernate.collection-one-to-many class="org.lamsfoundation.lams.tool.rsrc.model.ResourceItem" + * + * @return + */ + public Set getResourceItems() { + return resourceItems; + } + + public void setResourceItems(Set resourceItems) { + this.resourceItems = resourceItems; + } + } Index: lams_tool_larsrc/src/java/org/lamsfoundation/lams/tool/rsrc/model/ResourceUser.java =================================================================== RCS file: /usr/local/cvsroot/lams_tool_larsrc/src/java/org/lamsfoundation/lams/tool/rsrc/model/ResourceUser.java,v diff -u -r1.10 -r1.11 --- lams_tool_larsrc/src/java/org/lamsfoundation/lams/tool/rsrc/model/ResourceUser.java 10 Aug 2011 11:41:52 -0000 1.10 +++ lams_tool_larsrc/src/java/org/lamsfoundation/lams/tool/rsrc/model/ResourceUser.java 14 Dec 2015 22:02:10 -0000 1.11 @@ -29,207 +29,223 @@ import org.apache.commons.lang.builder.HashCodeBuilder; import org.apache.log4j.Logger; import org.lamsfoundation.lams.usermanagement.dto.UserDTO; + /** * Resource + * * @author Dapeng Ni - * - * @hibernate.class table="tl_larsrc11_user" - * + * + * @hibernate.class table="tl_larsrc11_user" */ -public class ResourceUser implements Cloneable{ - private static final long serialVersionUID = -7043502180037866257L; - private static Logger log = Logger.getLogger(ResourceUser.class); - +public class ResourceUser implements Cloneable { + private static final long serialVersionUID = -7043502180037866257L; + private static Logger log = Logger.getLogger(ResourceUser.class); + private Long uid; - private Long userId; - private String firstName; - private String lastName; - private String loginName; - private boolean sessionFinished; - - private ResourceSession session; - private Resource resource; - - //=============== NON Persisit value: for display use =========== - //the user access some reousrce item date time. Use in monitoring summary page - private Date accessDate; - //resource item complete date. Use in monitoring summary page - private Date completeDate; - //difference between completeDate and accessDate - private Date timeTaken; - - public ResourceUser(){ - } - public ResourceUser(UserDTO user, ResourceSession session){ - this.userId = new Long(user.getUserID().intValue()); - this.firstName = user.getFirstName(); - this.lastName = user.getLastName(); - this.loginName = user.getLogin(); - this.session = session; - this.resource = null; - this.sessionFinished = false; - } - public ResourceUser(UserDTO user, Resource content){ - this.userId = new Long(user.getUserID().intValue()); - this.firstName = user.getFirstName(); - this.lastName = user.getLastName(); - this.loginName = user.getLogin(); - this.session = null; - this.resource = content; - this.sessionFinished = false; - } - /** - * Clone method from java.lang.Object - */ - public Object clone(){ - - ResourceUser user = null; - try{ - user = (ResourceUser) super.clone(); - user.setUid(null); - //never clone session - user.setSession(null); - } catch (CloneNotSupportedException e) { - log.error("When clone " + ResourceUser.class + " failed"); - } - - return user; - } -// ********************************************************** - // Get/Set methods -// ********************************************************** - /** - * @hibernate.id generator-class="native" type="java.lang.Long" column="uid" - * @return Returns the uid. - */ - public Long getUid() { - return uid; - } - /** - * @param uid The uid to set. - */ - public void setUid(Long userID) { - this.uid = userID; - } + private Long userId; + private String firstName; + private String lastName; + private String loginName; + private boolean sessionFinished; - /** - * @hibernate.property column="user_id" length="20" - * @return Returns the userId. - */ - public Long getUserId() { - return userId; - } - /** - * @param userId - * The userId to set. - */ - public void setUserId(Long userID) { - this.userId = userID; - } + private ResourceSession session; + private Resource resource; - /** - * @hibernate.property length="255" column="last_name" - * @return - */ - public String getLastName() { - return lastName; - } - public void setLastName(String lastName) { - this.lastName = lastName; - } - /** - * @hibernate.property length="255" column="first_name" - * @return - */ - public String getFirstName() { - return firstName; - } - public void setFirstName(String firstName) { - this.firstName = firstName; - } - + // =============== NON Persisit value: for display use =========== + // the user access some reousrce item date time. Use in monitoring summary page + private Date accessDate; + // resource item complete date. Use in monitoring summary page + private Date completeDate; + // difference between completeDate and accessDate + private Date timeTaken; - /** - * @hibernate.property column="login_name" - * @return - */ - public String getLoginName() { - return loginName; - } + public ResourceUser() { + } - public void setLoginName(String loginName) { - this.loginName = loginName; - } - /** - * @hibernate.many-to-one column="session_uid" - * cascade="none" - * @return - */ - public ResourceSession getSession() { - return session; - } + public ResourceUser(UserDTO user, ResourceSession session) { + this.userId = new Long(user.getUserID().intValue()); + this.firstName = user.getFirstName(); + this.lastName = user.getLastName(); + this.loginName = user.getLogin(); + this.session = session; + this.resource = null; + this.sessionFinished = false; + } - public void setSession(ResourceSession session) { - this.session = session; - } - /** - * @hibernate.many-to-one column="resource_uid" - * cascade="none" - * @return - */ - public Resource getResource() { - return resource; - } - public void setResource(Resource content) { - this.resource = content; - } - /** - * @hibernate.property column="session_finished" - * @return - */ - public boolean isSessionFinished() { - return sessionFinished; - } + public ResourceUser(UserDTO user, Resource content) { + this.userId = new Long(user.getUserID().intValue()); + this.firstName = user.getFirstName(); + this.lastName = user.getLastName(); + this.loginName = user.getLogin(); + this.session = null; + this.resource = content; + this.sessionFinished = false; + } - public void setSessionFinished(boolean sessionFinished) { - this.sessionFinished = sessionFinished; - } - - public boolean equals(Object obj) { - if (this == obj) - return true; - if (!(obj instanceof ResourceUser)) - return false; + /** + * Clone method from java.lang.Object + */ + public Object clone() { - final ResourceUser user = (ResourceUser) obj; - - return new EqualsBuilder().append(this.uid, user.uid).append(this.firstName, user.firstName) - .append(this.lastName,user.lastName).append(this.loginName, user.loginName).isEquals(); - + ResourceUser user = null; + try { + user = (ResourceUser) super.clone(); + user.setUid(null); + // never clone session + user.setSession(null); + } catch (CloneNotSupportedException e) { + log.error("When clone " + ResourceUser.class + " failed"); } - public int hashCode() { - return new HashCodeBuilder().append(uid).append(firstName) - .append(lastName).append(loginName) - .toHashCode(); - } - public Date getAccessDate() { - return accessDate; - } - public void setAccessDate(Date accessDate) { - this.accessDate = accessDate; - } - public Date getCompleteDate() { - return completeDate; - } - public void setCompleteDate(Date completeDate) { - this.completeDate = completeDate; - } - public Date getTimeTaken() { - return timeTaken; - } - public void setTimeTaken(Date timeTaken) { - this.timeTaken = timeTaken; - } + return user; + } + // ********************************************************** + // Get/Set methods + // ********************************************************** + /** + * @hibernate.id generator-class="native" type="java.lang.Long" column="uid" + * @return Returns the uid. + */ + public Long getUid() { + return uid; + } + + /** + * @param uid + * The uid to set. + */ + public void setUid(Long userID) { + this.uid = userID; + } + + /** + * @hibernate.property column="user_id" length="20" + * @return Returns the userId. + */ + public Long getUserId() { + return userId; + } + + /** + * @param userId + * The userId to set. + */ + public void setUserId(Long userID) { + this.userId = userID; + } + + /** + * @hibernate.property length="255" column="last_name" + * @return + */ + public String getLastName() { + return lastName; + } + + public void setLastName(String lastName) { + this.lastName = lastName; + } + + /** + * @hibernate.property length="255" column="first_name" + * @return + */ + public String getFirstName() { + return firstName; + } + + public void setFirstName(String firstName) { + this.firstName = firstName; + } + + /** + * @hibernate.property column="login_name" + * @return + */ + public String getLoginName() { + return loginName; + } + + public void setLoginName(String loginName) { + this.loginName = loginName; + } + + /** + * @hibernate.many-to-one column="session_uid" cascade="none" + * @return + */ + public ResourceSession getSession() { + return session; + } + + public void setSession(ResourceSession session) { + this.session = session; + } + + /** + * @hibernate.many-to-one column="resource_uid" cascade="none" + * @return + */ + public Resource getResource() { + return resource; + } + + public void setResource(Resource content) { + this.resource = content; + } + + /** + * @hibernate.property column="session_finished" + * @return + */ + public boolean isSessionFinished() { + return sessionFinished; + } + + public void setSessionFinished(boolean sessionFinished) { + this.sessionFinished = sessionFinished; + } + + public boolean equals(Object obj) { + if (this == obj) + return true; + if (!(obj instanceof ResourceUser)) + return false; + + final ResourceUser user = (ResourceUser) obj; + + return new EqualsBuilder().append(this.uid, user.uid).append(this.firstName, user.firstName) + .append(this.lastName, user.lastName).append(this.loginName, user.loginName).isEquals(); + + } + + public int hashCode() { + return new HashCodeBuilder().append(uid).append(firstName).append(lastName).append(loginName).toHashCode(); + } + + public Date getAccessDate() { + return accessDate; + } + + public void setAccessDate(Date accessDate) { + this.accessDate = accessDate; + } + + public Date getCompleteDate() { + return completeDate; + } + + public void setCompleteDate(Date completeDate) { + this.completeDate = completeDate; + } + + public Date getTimeTaken() { + return timeTaken; + } + + public void setTimeTaken(Date timeTaken) { + this.timeTaken = timeTaken; + } + } Index: lams_tool_larsrc/src/java/org/lamsfoundation/lams/tool/rsrc/service/IResourceService.java =================================================================== RCS file: /usr/local/cvsroot/lams_tool_larsrc/src/java/org/lamsfoundation/lams/tool/rsrc/service/IResourceService.java,v diff -u -r1.30 -r1.31 --- lams_tool_larsrc/src/java/org/lamsfoundation/lams/tool/rsrc/service/IResourceService.java 17 Mar 2014 22:56:02 -0000 1.30 +++ lams_tool_larsrc/src/java/org/lamsfoundation/lams/tool/rsrc/service/IResourceService.java 14 Dec 2015 22:02:11 -0000 1.31 @@ -32,9 +32,10 @@ import org.lamsfoundation.lams.contentrepository.IVersionedNode; import org.lamsfoundation.lams.events.IEventNotificationService; import org.lamsfoundation.lams.notebook.model.NotebookEntry; -import org.lamsfoundation.lams.tool.rsrc.dto.GroupSummary; +import org.lamsfoundation.lams.tool.rsrc.dto.SessionDTO; import org.lamsfoundation.lams.tool.rsrc.dto.ReflectDTO; -import org.lamsfoundation.lams.tool.rsrc.dto.ItemSummary; +import org.lamsfoundation.lams.tool.rsrc.dto.ResourceItemDTO; +import org.lamsfoundation.lams.tool.rsrc.dto.VisitLogDTO; import org.lamsfoundation.lams.tool.rsrc.model.Resource; import org.lamsfoundation.lams.tool.rsrc.model.ResourceItem; import org.lamsfoundation.lams.tool.rsrc.model.ResourceSession; @@ -198,9 +199,14 @@ * @param contentId * @return */ - List getSummary(Long contentId); + List getSummary(Long contentId); List getUserListBySessionItem(Long sessionId, Long itemUid); + + List getPagedVisitLogsBySessionAndItem(Long sessionId, Long itemUid, int page, int size, + String sortBy, String sortOrder, String searchString); + + int getCountVisitLogsBySessionAndItem(Long sessionId, Long itemUid, String searchString); /** * Set a resource item visible or not. @@ -212,17 +218,17 @@ void setItemVisible(Long itemUid, boolean visible); /** - * Get resource item ItemSummary list according to sessionId and skipHide flag. + * Get resource item ResourceItemDTO list according to sessionId and skipHide flag. * * @param sessionId * @param skipHide * true, don't get resource item if its isHide flag is true. Otherwise, get all * resource item * @return */ - List exportBySessionId(Long sessionId, boolean skipHide); + List exportBySessionId(Long sessionId, boolean skipHide); - List> exportByContentId(Long contentId); + List> exportByContentId(Long contentId); /** * Create refection entry into notebook tool. Index: lams_tool_larsrc/src/java/org/lamsfoundation/lams/tool/rsrc/service/ResourceServiceImpl.java =================================================================== RCS file: /usr/local/cvsroot/lams_tool_larsrc/src/java/org/lamsfoundation/lams/tool/rsrc/service/ResourceServiceImpl.java,v diff -u -r1.81 -r1.82 --- lams_tool_larsrc/src/java/org/lamsfoundation/lams/tool/rsrc/service/ResourceServiceImpl.java 17 Jul 2015 11:23:42 -0000 1.81 +++ lams_tool_larsrc/src/java/org/lamsfoundation/lams/tool/rsrc/service/ResourceServiceImpl.java 14 Dec 2015 22:02:11 -0000 1.82 @@ -87,9 +87,10 @@ import org.lamsfoundation.lams.tool.rsrc.dao.ResourceItemVisitDAO; import org.lamsfoundation.lams.tool.rsrc.dao.ResourceSessionDAO; import org.lamsfoundation.lams.tool.rsrc.dao.ResourceUserDAO; -import org.lamsfoundation.lams.tool.rsrc.dto.GroupSummary; -import org.lamsfoundation.lams.tool.rsrc.dto.ItemSummary; +import org.lamsfoundation.lams.tool.rsrc.dto.SessionDTO; +import org.lamsfoundation.lams.tool.rsrc.dto.ResourceItemDTO; import org.lamsfoundation.lams.tool.rsrc.dto.ReflectDTO; +import org.lamsfoundation.lams.tool.rsrc.dto.VisitLogDTO; import org.lamsfoundation.lams.tool.rsrc.ims.IContentPackageConverter; import org.lamsfoundation.lams.tool.rsrc.ims.IMSManifestException; import org.lamsfoundation.lams.tool.rsrc.ims.ImscpApplicationException; @@ -318,22 +319,22 @@ } @Override - public List exportBySessionId(Long sessionId, boolean skipHide) { + public List exportBySessionId(Long sessionId, boolean skipHide) { ResourceSession session = resourceSessionDao.getSessionBySessionId(sessionId); if (session == null) { ResourceServiceImpl.log.error("Failed get ResourceSession by ID [" + sessionId + "]"); return null; } // initial resource items list - List itemList = new ArrayList(); + List itemList = new ArrayList(); Set resList = session.getResource().getResourceItems(); for (ResourceItem item : resList) { if (skipHide && item.isHide()) { continue; } // if item is create by author if (item.isCreateByAuthor()) { - ItemSummary sum = new ItemSummary(session.getSessionId(), session.getSessionName(), item, false); + ResourceItemDTO sum = new ResourceItemDTO(item, false); itemList.add(sum); } } @@ -347,7 +348,7 @@ // to skip all item create by author if (!item.isCreateByAuthor()) { - ItemSummary sum = new ItemSummary(session.getSessionId(), session.getSessionName(), item, false); + ResourceItemDTO sum = new ResourceItemDTO(item, false); itemList.add(sum); } } @@ -356,36 +357,36 @@ } @Override - public List> exportByContentId(Long contentId) { + public List> exportByContentId(Long contentId) { Resource resource = resourceDao.getByContentId(contentId); - List> groupList = new ArrayList(); + List> groupList = new ArrayList(); // create init resource items list - List initList = new ArrayList(); + List initList = new ArrayList(); groupList.add(initList); Set resList = resource.getResourceItems(); for (ResourceItem item : resList) { if (item.isCreateByAuthor()) { - ItemSummary sum = new ItemSummary(null, null, item, true); + ResourceItemDTO sum = new ResourceItemDTO(item, true); initList.add(sum); } } // session by session List sessionList = resourceSessionDao.getByContentId(contentId); for (ResourceSession session : sessionList) { - List group = new ArrayList(); + List group = new ArrayList(); // get this session's all resource items Set sessList = session.getResourceItems(); for (ResourceItem item : sessList) { // to skip all item create by author if (!item.isCreateByAuthor()) { - ItemSummary sum = new ItemSummary(session.getSessionId(), session.getSessionName(), item, false); + ResourceItemDTO sum = new ResourceItemDTO(item, false); group.add(sum); } } if (group.size() == 0) { - group.add(new ItemSummary(session.getSessionId(), session.getSessionName(), null, false)); + group.add(new ResourceItemDTO(null, false)); } groupList.add(group); } @@ -501,8 +502,8 @@ } @Override - public List getSummary(Long contentId) { - List groupList = new ArrayList(); + public List getSummary(Long contentId) { + List groupList = new ArrayList(); // get all item which is accessed by user Map visitCountMap = resourceItemVisitDao.getSummary(contentId); @@ -514,7 +515,7 @@ for (ResourceSession session : sessionList) { // one new group for one session. - GroupSummary group = new GroupSummary(); + SessionDTO group = new SessionDTO(); group.setSessionId(session.getSessionId()); group.setSessionName(session.getSessionName()); @@ -525,12 +526,12 @@ items.addAll(session.getResourceItems()); for (ResourceItem item : items) { - ItemSummary itemSummary = new ItemSummary(item); + ResourceItemDTO resourceItemDTO = new ResourceItemDTO(item); // set viewNumber according visit log if (visitCountMap.containsKey(item.getUid())) { - itemSummary.setViewNumber(visitCountMap.get(item.getUid()).intValue()); + resourceItemDTO.setViewNumber(visitCountMap.get(item.getUid()).intValue()); } - group.getItems().add(itemSummary); + group.getItems().add(resourceItemDTO); } groupList.add(group); @@ -583,6 +584,18 @@ } return userList; } + + @Override + public List getPagedVisitLogsBySessionAndItem(Long sessionId, Long itemUid, int page, int size, + String sortBy, String sortOrder, String searchString) { + return resourceItemVisitDao.getPagedVisitLogsBySessionAndItem(sessionId, itemUid, page, size, sortBy, + sortOrder, searchString); + } + + @Override + public int getCountVisitLogsBySessionAndItem(Long sessionId, Long itemUid, String searchString) { + return resourceItemVisitDao.getCountVisitLogsBySessionAndItem(sessionId, itemUid, searchString); + } @Override public void setItemVisible(Long itemUid, boolean visible) { Index: lams_tool_larsrc/src/java/org/lamsfoundation/lams/tool/rsrc/web/action/MonitoringAction.java =================================================================== RCS file: /usr/local/cvsroot/lams_tool_larsrc/src/java/org/lamsfoundation/lams/tool/rsrc/web/action/MonitoringAction.java,v diff -u -r1.23 -r1.24 --- lams_tool_larsrc/src/java/org/lamsfoundation/lams/tool/rsrc/web/action/MonitoringAction.java 20 Mar 2014 18:00:32 -0000 1.23 +++ lams_tool_larsrc/src/java/org/lamsfoundation/lams/tool/rsrc/web/action/MonitoringAction.java 14 Dec 2015 22:02:11 -0000 1.24 @@ -27,13 +27,15 @@ import java.io.IOException; import java.text.DateFormat; import java.text.SimpleDateFormat; -import java.util.Date; import java.util.List; +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; @@ -45,15 +47,17 @@ import org.lamsfoundation.lams.notebook.model.NotebookEntry; import org.lamsfoundation.lams.notebook.service.CoreNotebookConstants; import org.lamsfoundation.lams.tool.rsrc.ResourceConstants; -import org.lamsfoundation.lams.tool.rsrc.dto.GroupSummary; import org.lamsfoundation.lams.tool.rsrc.dto.ReflectDTO; -import org.lamsfoundation.lams.tool.rsrc.dto.ItemSummary; +import org.lamsfoundation.lams.tool.rsrc.dto.SessionDTO; +import org.lamsfoundation.lams.tool.rsrc.dto.VisitLogDTO; import org.lamsfoundation.lams.tool.rsrc.model.Resource; import org.lamsfoundation.lams.tool.rsrc.model.ResourceSession; import org.lamsfoundation.lams.tool.rsrc.model.ResourceUser; import org.lamsfoundation.lams.tool.rsrc.service.IResourceService; +import org.lamsfoundation.lams.usermanagement.dto.UserDTO; import org.lamsfoundation.lams.util.DateUtil; import org.lamsfoundation.lams.util.WebUtil; +import org.lamsfoundation.lams.web.session.SessionManager; import org.lamsfoundation.lams.web.util.AttributeNames; import org.lamsfoundation.lams.web.util.SessionMap; import org.springframework.web.context.WebApplicationContext; @@ -100,7 +104,7 @@ Long contentId = WebUtil.readLongParam(request, AttributeNames.PARAM_TOOL_CONTENT_ID); IResourceService service = getResourceService(); - List groupList = service.getSummary(contentId); + List groupList = service.getSummary(contentId); Resource resource = service.getResourceByContentId(contentId); @@ -135,42 +139,62 @@ private ActionForward getSubgridData(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws JSONException, IOException { + IResourceService service = getResourceService(); Long itemUid = WebUtil.readLongParam(request, ResourceConstants.ATTR_RESOURCE_ITEM_UID); Long sessionId = WebUtil.readLongParam(request, AttributeNames.PARAM_TOOL_SESSION_ID); + + // Getting the params passed in from the jqGrid + int page = WebUtil.readIntParam(request, ResourceConstants.PARAM_PAGE); + int rowLimit = WebUtil.readIntParam(request, ResourceConstants.PARAM_ROWS); + String sortOrder = WebUtil.readStrParam(request, ResourceConstants.PARAM_SORD); + String sortBy = WebUtil.readStrParam(request, ResourceConstants.PARAM_SIDX, true); + if (sortBy == "") { + sortBy = "userName"; + } + String searchString = WebUtil.readStrParam(request, "userName", true); - IResourceService service = getResourceService(); - List userList = service.getUserListBySessionItem(sessionId, itemUid); + List visitLogDtos = service.getPagedVisitLogsBySessionAndItem(sessionId, itemUid, page - 1, + rowLimit, sortBy, sortOrder, searchString); + int countVisitLogs = service.getCountVisitLogsBySessionAndItem(sessionId, itemUid, searchString); + + int totalPages = new Double(Math.ceil(new Integer(countVisitLogs).doubleValue() + / new Integer(rowLimit).doubleValue())).intValue(); JSONArray rows = new JSONArray(); - for (ResourceUser user : userList) { - DateFormat timeTakenFormatter = new SimpleDateFormat("H:mm:ss"); - DateFormat dateFormatter = new SimpleDateFormat("d-MMM-yyyy h:mm a"); - - JSONArray userData = new JSONArray(); - userData.put(user.getUserId()); - userData.put(user.getFirstName() + " " + user.getLastName()); - String accessDate = (user.getAccessDate() == null) ? "" : dateFormatter.format(DateUtil.convertToUTC(user - .getAccessDate())); - userData.put(accessDate); - String completeDate = (user.getCompleteDate() == null) ? "" : dateFormatter.format(DateUtil - .convertToUTC(user.getCompleteDate())); - userData.put(completeDate); - String timeTaken = (user.getTimeTaken() == null) ? "" : timeTakenFormatter.format(DateUtil - .convertToUTC(user.getTimeTaken())); - userData.put(timeTaken); - + DateFormat timeTakenFormatter = new SimpleDateFormat("H:mm:ss"); + DateFormat dateFormatter = new SimpleDateFormat("d-MMM-yyyy h:mm a"); + HttpSession ss = SessionManager.getSession(); + UserDTO learnerDto = (UserDTO) ss.getAttribute(AttributeNames.USER); + TimeZone monitorTimeZone = learnerDto.getTimeZone(); + int i = 1; + for (VisitLogDTO visitLogDto : visitLogDtos) { + + JSONArray visitLogData = new JSONArray(); + visitLogData.put(visitLogDto.getUserId()); + String fullName = StringEscapeUtils.escapeHtml(visitLogDto.getUserFullName()); + visitLogData.put(fullName); + String accessDate = (visitLogDto.getAccessDate() == null) ? "" : dateFormatter.format(DateUtil + .convertToTimeZoneFromDefault(monitorTimeZone, visitLogDto.getAccessDate())); + visitLogData.put(accessDate); + String completeDate = (visitLogDto.getCompleteDate() == null) ? "" : dateFormatter.format(DateUtil + .convertToTimeZoneFromDefault(monitorTimeZone, visitLogDto.getCompleteDate())); + visitLogData.put(completeDate); + String timeTaken = (visitLogDto.getTimeTaken() == null) ? "" : timeTakenFormatter.format(visitLogDto + .getTimeTaken()); + visitLogData.put(timeTaken); + JSONObject userRow = new JSONObject(); - userRow.put("id", user.getUserId()); - userRow.put("cell", userData); - + userRow.put("id", i++); + userRow.put("cell", visitLogData); + rows.put(userRow); } JSONObject responseJSON = new JSONObject(); - responseJSON.put("total", 1); - responseJSON.put("page", 1); - responseJSON.put("records", rows.length()); + responseJSON.put("total", totalPages); + responseJSON.put("page", page); + responseJSON.put("records", countVisitLogs); responseJSON.put("rows", rows); response.setContentType("application/json;charset=utf-8"); Index: lams_tool_larsrc/src/java/org/lamsfoundation/lams/tool/rsrc/web/servlet/ExportServlet.java =================================================================== RCS file: /usr/local/cvsroot/lams_tool_larsrc/src/java/org/lamsfoundation/lams/tool/rsrc/web/servlet/ExportServlet.java,v diff -u -r1.16 -r1.17 --- lams_tool_larsrc/src/java/org/lamsfoundation/lams/tool/rsrc/web/servlet/ExportServlet.java 17 Mar 2014 22:56:02 -0000 1.16 +++ lams_tool_larsrc/src/java/org/lamsfoundation/lams/tool/rsrc/web/servlet/ExportServlet.java 14 Dec 2015 22:02:10 -0000 1.17 @@ -30,9 +30,6 @@ import java.util.HashMap; import java.util.LinkedList; import java.util.List; -import java.util.Map; -import java.util.Set; -import java.util.TreeSet; import javax.servlet.ServletException; import javax.servlet.http.Cookie; @@ -46,14 +43,12 @@ import org.lamsfoundation.lams.tool.ToolAccessMode; import org.lamsfoundation.lams.tool.rsrc.ResourceConstants; import org.lamsfoundation.lams.tool.rsrc.dto.ReflectDTO; -import org.lamsfoundation.lams.tool.rsrc.dto.ItemSummary; +import org.lamsfoundation.lams.tool.rsrc.dto.ResourceItemDTO; import org.lamsfoundation.lams.tool.rsrc.model.Resource; -import org.lamsfoundation.lams.tool.rsrc.model.ResourceSession; import org.lamsfoundation.lams.tool.rsrc.model.ResourceUser; import org.lamsfoundation.lams.tool.rsrc.service.IResourceService; import org.lamsfoundation.lams.tool.rsrc.service.ResourceApplicationException; import org.lamsfoundation.lams.tool.rsrc.service.ResourceServiceProxy; -import org.lamsfoundation.lams.tool.rsrc.util.ReflectDTOComparator; import org.lamsfoundation.lams.tool.rsrc.util.ResourceToolContentHandler; import org.lamsfoundation.lams.util.FileUtil; import org.lamsfoundation.lams.util.WebUtil; @@ -140,10 +135,10 @@ } - List group = service.exportBySessionId(toolSessionID,true); + List group = service.exportBySessionId(toolSessionID,true); saveFileToLocal(group, directoryName); - List> groupList = new ArrayList>(); + List> groupList = new ArrayList>(); if(group.size() > 0) groupList.add(group); @@ -184,9 +179,9 @@ logger.error(error); throw new ResourceApplicationException(error); } - List> groupList = service.exportByContentId(toolContentID); + List> groupList = service.exportByContentId(toolContentID); if(groupList != null) { - for (List list : groupList) { + for (List list : groupList) { saveFileToLocal(list, directoryName); } } @@ -207,19 +202,19 @@ sessionMap.put(ResourceConstants.ATTR_SUMMARY_LIST, groupList); } - private void saveFileToLocal(List list, String directoryName) { + private void saveFileToLocal(List list, String directoryName) { handler = getToolContentHandler(); - for (ItemSummary itemSummary : list) { + for (ResourceItemDTO resourceItemDTO : list) { //for learning object, it just display "No offline package available" information. - if(itemSummary.getItemType() == ResourceConstants.RESOURCE_TYPE_LEARNING_OBJECT - || itemSummary.getItemType() == ResourceConstants.RESOURCE_TYPE_URL - || itemSummary.getItemType() == 0){ + if(resourceItemDTO.getItemType() == ResourceConstants.RESOURCE_TYPE_LEARNING_OBJECT + || resourceItemDTO.getItemType() == ResourceConstants.RESOURCE_TYPE_URL + || resourceItemDTO.getItemType() == 0){ continue; } try{ int idx= 1; - String userName = itemSummary.getUsername(); + String userName = resourceItemDTO.getUsername(); String localDir; while(true){ localDir = FileUtil.getFullPath(directoryName,userName + "/" + idx); @@ -230,8 +225,8 @@ } idx++; } - itemSummary.setAttachmentLocalUrl(userName + "/" + idx + "/" + itemSummary.getFileUuid() + '.' + FileUtil.getFileExtension(itemSummary.getFileName())); - handler.saveFile(itemSummary.getFileUuid(), FileUtil.getFullPath(directoryName, itemSummary.getAttachmentLocalUrl())); + resourceItemDTO.setAttachmentLocalUrl(userName + "/" + idx + "/" + resourceItemDTO.getFileUuid() + '.' + FileUtil.getFileExtension(resourceItemDTO.getFileName())); + handler.saveFile(resourceItemDTO.getFileUuid(), FileUtil.getFullPath(directoryName, resourceItemDTO.getAttachmentLocalUrl())); } catch (Exception e) { logger.error("Export forum topic attachment failed: " + e.toString()); } Index: lams_tool_larsrc/web/pages/monitoring/summary.jsp =================================================================== RCS file: /usr/local/cvsroot/lams_tool_larsrc/web/pages/monitoring/summary.jsp,v diff -u -r1.24 -r1.25 --- lams_tool_larsrc/web/pages/monitoring/summary.jsp 14 Oct 2015 23:10:50 -0000 1.24 +++ lams_tool_larsrc/web/pages/monitoring/summary.jsp 14 Dec 2015 22:02:11 -0000 1.25 @@ -32,7 +32,6 @@ autowidth: true, shrinkToFit: false, colNames:['#', - 'sessionId', 'itemUid', "", "", @@ -42,7 +41,6 @@ ], colModel:[ {name:'id', index:'id', width:0, sorttype:"int", hidden: true}, - {name:'sessionId', index:'sessionId', width:0, hidden: true}, {name:'itemUid', index:'itemUid', width:0, hidden: true}, {name:'title', index:'title', width:260}, {name:'type', index:'type', width:90, align:"center"}, @@ -54,18 +52,20 @@ subGrid: true, subGridRowExpanded: function(subgrid_id, row_id) { var subgridTableId = subgrid_id+"_t"; - var sessionId = jQuery("#group${groupSummary.sessionId}").getRowData(row_id)["sessionId"]; var itemUid = jQuery("#group${groupSummary.sessionId}").getRowData(row_id)["itemUid"]; - jQuery("#"+subgrid_id).html("
    "); + jQuery("#"+subgrid_id).html("
    " + + "
    ") jQuery("#"+subgridTableId).jqGrid({ datatype: "json", - loadonce: true, - rowNum: 10000, - url: "?itemUid=" + itemUid + '&toolSessionID=' + sessionId, + url: "?itemUid=" + itemUid + '&toolSessionID=${groupSummary.sessionId}', height: "100%", autowidth:true, + pager: 'pager-' + subgridTableId, + rowList:[10,20,30,40,50,100], + rowNum:10, + viewrecords:true, colNames: [ '', "", @@ -75,16 +75,20 @@ ], colModel:[ {name:'id', index:'id', hidden:true}, - {name:'userName',index:'userName'}, - {name:'startTime', index:'startTime', width:140, align:"center"}, - {name:'completeTime', index:'completeTime', width:140, align:"center"}, - {name:'timeTaken',index:'timeTaken', width:70, align:"center"} + {name:'userName',index:'userName', searchoptions: { clearSearch: false }}, + {name:'startTime', index:'startTime', width:140, align:"center", search:false}, + {name:'completeTime', index:'completeTime', width:140, align:"center", search:false}, + {name:'timeTaken',index:'timeTaken', width:70, align:"center", search:false} ], loadError: function(xhr,st,err) { jQuery("#"+subgridTableId).clearGridData(); info_dialog("", "", ""); } }) + .jqGrid('filterToolbar', { + searchOnEnter: false + }) + .navGrid("#pager-" + subgridTableId, {edit:false,add:false,del:false,search:false}); } }); @@ -119,7 +123,6 @@ jQuery("#group${groupSummary.sessionId}").addRowData(${i.index + 1}, { id: "${i.index + 1}", - sessionId: "${groupSummary.sessionId}", itemUid: "${item.itemUid}", title: "${itemTitle}", type: "${itemTypeLabel}",