Index: lams_tool_images/src/java/org/lamsfoundation/lams/tool/imageGallery/ImageGalleryConstants.java =================================================================== diff -u -r3a1cbcfc06aaf55285140e18e4336ca65db9e255 -r7dac65b89adddab2b602b5d57d8e3ddd4cab2060 --- lams_tool_images/src/java/org/lamsfoundation/lams/tool/imageGallery/ImageGalleryConstants.java (.../ImageGalleryConstants.java) (revision 3a1cbcfc06aaf55285140e18e4336ca65db9e255) +++ lams_tool_images/src/java/org/lamsfoundation/lams/tool/imageGallery/ImageGalleryConstants.java (.../ImageGalleryConstants.java) (revision 7dac65b89adddab2b602b5d57d8e3ddd4cab2060) @@ -65,6 +65,7 @@ public static final String ATTR_RESOURCE_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_EXPORT_IMAGE_LIST = "exportImageList"; public static final String ATTR_IMAGE_SUMMARY = "imageSummary"; public static final String ATTR_USER_LIST = "userList"; public static final String ATTR_RESOURCE_INSTRUCTION = "instructions"; Index: lams_tool_images/src/java/org/lamsfoundation/lams/tool/imageGallery/dao/ImageGalleryItemVisitDAO.java =================================================================== diff -u -rfd6a44adca1e0d4ee031b0b8b442de4ee8974d74 -r7dac65b89adddab2b602b5d57d8e3ddd4cab2060 --- lams_tool_images/src/java/org/lamsfoundation/lams/tool/imageGallery/dao/ImageGalleryItemVisitDAO.java (.../ImageGalleryItemVisitDAO.java) (revision fd6a44adca1e0d4ee031b0b8b442de4ee8974d74) +++ lams_tool_images/src/java/org/lamsfoundation/lams/tool/imageGallery/dao/ImageGalleryItemVisitDAO.java (.../ImageGalleryItemVisitDAO.java) (revision 7dac65b89adddab2b602b5d57d8e3ddd4cab2060) @@ -34,13 +34,6 @@ public ImageGalleryItemVisitLog getImageGalleryItemLog(Long itemUid,Long userId); public int getUserViewLogCount(Long sessionId, Long userUid); - /** - * Return list which contains key pair which key is imageGallery item uid, value is number view. - * - * @param contentId - * @return - */ - public Map getSummary(Long contentId); public List getImageGalleryItemLogBySession(Long sessionId,Long itemUid); Index: lams_tool_images/src/java/org/lamsfoundation/lams/tool/imageGallery/dao/hibernate/ImageGalleryItemVisitDAOHibernate.java =================================================================== diff -u -ree0608cfdaec0a5cc246ac316091712268491fc6 -r7dac65b89adddab2b602b5d57d8e3ddd4cab2060 --- lams_tool_images/src/java/org/lamsfoundation/lams/tool/imageGallery/dao/hibernate/ImageGalleryItemVisitDAOHibernate.java (.../ImageGalleryItemVisitDAOHibernate.java) (revision ee0608cfdaec0a5cc246ac316091712268491fc6) +++ lams_tool_images/src/java/org/lamsfoundation/lams/tool/imageGallery/dao/hibernate/ImageGalleryItemVisitDAOHibernate.java (.../ImageGalleryItemVisitDAOHibernate.java) (revision 7dac65b89adddab2b602b5d57d8e3ddd4cab2060) @@ -42,12 +42,6 @@ private static final String FIND_VIEW_COUNT_BY_USER = "select count(*) from " + ImageGalleryItemVisitLog.class.getName() + " as r where r.sessionId=? and r.user.userId =?"; - - private static final String FIND_SUMMARY = "select v.imageGalleryItem.uid, count(v.imageGalleryItem) from " - + ImageGalleryItemVisitLog.class.getName() + " as v , " + ImageGallerySession.class.getName() + " as s, " - + ImageGallery.class.getName() + " as r " + " where v.sessionId = s.sessionId " - + " and s.imageGallery.uid = r.uid " + " and r.contentId =? " - + " group by v.sessionId, v.imageGalleryItem.uid "; public ImageGalleryItemVisitLog getImageGalleryItemLog(Long itemUid, Long userId) { List list = getHibernateTemplate().find(FIND_BY_ITEM_AND_USER, new Object[] { userId, itemUid }); @@ -63,20 +57,6 @@ return ((Number) list.get(0)).intValue(); } - 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 List getImageGalleryItemLogBySession(Long sessionId, Long itemUid) { return getHibernateTemplate().find(FIND_BY_ITEM_BYSESSION, new Object[] { sessionId, itemUid }); Index: lams_tool_images/src/java/org/lamsfoundation/lams/tool/imageGallery/dto/Summary.java =================================================================== diff -u -r61d4059adb8c5e6551b4be868e5a0d265d2eacf6 -r7dac65b89adddab2b602b5d57d8e3ddd4cab2060 --- lams_tool_images/src/java/org/lamsfoundation/lams/tool/imageGallery/dto/Summary.java (.../Summary.java) (revision 61d4059adb8c5e6551b4be868e5a0d265d2eacf6) +++ lams_tool_images/src/java/org/lamsfoundation/lams/tool/imageGallery/dto/Summary.java (.../Summary.java) (revision 7dac65b89adddab2b602b5d57d8e3ddd4cab2060) @@ -53,7 +53,6 @@ private boolean itemHide; private String itemTitle; private String username; - private int viewNumber; private int numberOfVotes; private float averageRating; private int numberRatings; @@ -190,14 +189,6 @@ this.username = username; } - public int getViewNumber() { - return viewNumber; - } - - public void setViewNumber(int viewNumber) { - this.viewNumber = viewNumber; - } - public int getNumberOfVotes() { return numberOfVotes; } Index: lams_tool_images/src/java/org/lamsfoundation/lams/tool/imageGallery/dto/UserImageContributionDTO.java =================================================================== diff -u -r3a1cbcfc06aaf55285140e18e4336ca65db9e255 -r7dac65b89adddab2b602b5d57d8e3ddd4cab2060 --- lams_tool_images/src/java/org/lamsfoundation/lams/tool/imageGallery/dto/UserImageContributionDTO.java (.../UserImageContributionDTO.java) (revision 3a1cbcfc06aaf55285140e18e4336ca65db9e255) +++ lams_tool_images/src/java/org/lamsfoundation/lams/tool/imageGallery/dto/UserImageContributionDTO.java (.../UserImageContributionDTO.java) (revision 7dac65b89adddab2b602b5d57d8e3ddd4cab2060) @@ -26,6 +26,7 @@ import java.util.Set; import org.lamsfoundation.lams.tool.imageGallery.model.ImageComment; +import org.lamsfoundation.lams.tool.imageGallery.model.ImageGalleryItem; import org.lamsfoundation.lams.tool.imageGallery.model.ImageGalleryUser; /** @@ -52,6 +53,9 @@ private boolean isVotedForThisImage; private Set comments; + + //only for export needs + private ImageGalleryItem image; public UserImageContributionDTO() { } @@ -164,7 +168,15 @@ public void setComments(Set comments) { this.comments = comments; } + + public ImageGalleryItem getImage() { + return image; + } + public void setImage(ImageGalleryItem image) { + this.image = image; + } + } \ No newline at end of file Index: lams_tool_images/src/java/org/lamsfoundation/lams/tool/imageGallery/model/ImageGalleryItem.java =================================================================== diff -u -r3bc514681593b0694c54d0c77da015388362c196 -r7dac65b89adddab2b602b5d57d8e3ddd4cab2060 --- lams_tool_images/src/java/org/lamsfoundation/lams/tool/imageGallery/model/ImageGalleryItem.java (.../ImageGalleryItem.java) (revision 3bc514681593b0694c54d0c77da015388362c196) +++ lams_tool_images/src/java/org/lamsfoundation/lams/tool/imageGallery/model/ImageGalleryItem.java (.../ImageGalleryItem.java) (revision 7dac65b89adddab2b602b5d57d8e3ddd4cab2060) @@ -74,6 +74,9 @@ private float averageRating; private int numberRatings; + + //*************** NON Persist Field (only for exporting) ******************** + private String attachmentLocalUrl; /** * Default contruction method. @@ -389,4 +392,11 @@ public void setThumbnailFile(ImageGalleryAttachment thumbnailFile) { this.thumbnailFile = thumbnailFile; } + + public String getAttachmentLocalUrl() { + return attachmentLocalUrl; + } + public void setAttachmentLocalUrl(String attachmentLocalUrl) { + this.attachmentLocalUrl = attachmentLocalUrl; + } } Index: lams_tool_images/src/java/org/lamsfoundation/lams/tool/imageGallery/service/IImageGalleryService.java =================================================================== diff -u -r67f307991acb2b372c7fb9a33e2e422c1848d515 -r7dac65b89adddab2b602b5d57d8e3ddd4cab2060 --- lams_tool_images/src/java/org/lamsfoundation/lams/tool/imageGallery/service/IImageGalleryService.java (.../IImageGalleryService.java) (revision 67f307991acb2b372c7fb9a33e2e422c1848d515) +++ lams_tool_images/src/java/org/lamsfoundation/lams/tool/imageGallery/service/IImageGalleryService.java (.../IImageGalleryService.java) (revision 7dac65b89adddab2b602b5d57d8e3ddd4cab2060) @@ -277,9 +277,9 @@ * imageGallery item * @return */ - public List exportBySessionId(Long sessionId, boolean skipHide); + public List>> exportBySessionId(Long sessionId, ImageGalleryUser user, boolean skipHide); - public List> exportByContentId(Long contentId); + public List>> exportByContentId(Long contentId); /** * Create refection entry into notebook tool. Index: lams_tool_images/src/java/org/lamsfoundation/lams/tool/imageGallery/service/ImageGalleryServiceImpl.java =================================================================== diff -u -r67f307991acb2b372c7fb9a33e2e422c1848d515 -r7dac65b89adddab2b602b5d57d8e3ddd4cab2060 --- lams_tool_images/src/java/org/lamsfoundation/lams/tool/imageGallery/service/ImageGalleryServiceImpl.java (.../ImageGalleryServiceImpl.java) (revision 67f307991acb2b372c7fb9a33e2e422c1848d515) +++ lams_tool_images/src/java/org/lamsfoundation/lams/tool/imageGallery/service/ImageGalleryServiceImpl.java (.../ImageGalleryServiceImpl.java) (revision 7dac65b89adddab2b602b5d57d8e3ddd4cab2060) @@ -334,80 +334,6 @@ imageGalleryItemDao.removeObject(ImageGalleryItem.class, uid); } - public List exportBySessionId(Long sessionId, boolean skipHide) { - ImageGallerySession session = imageGallerySessionDao.getSessionBySessionId(sessionId); - if (session == null) { - ImageGalleryServiceImpl.log.error("Failed get ImageGallerySession by ID [" + sessionId + "]"); - return null; - } - // initial imageGallery items list - List itemList = new ArrayList(); - Set resList = session.getImageGallery().getImageGalleryItems(); - for (ImageGalleryItem item : resList) { - if (skipHide && item.isHide()) { - continue; - } - // if item is create by author - if (item.isCreateByAuthor()) { - Summary sum = new Summary(session.getSessionId(), session.getSessionName(), item, false); - itemList.add(sum); - } - } - - // get this session's all imageGallery items - Set sessList = session.getImageGalleryItems(); - for (ImageGalleryItem item : sessList) { - if (skipHide && item.isHide()) { - continue; - } - - // to skip all item create by author - if (!item.isCreateByAuthor()) { - Summary sum = new Summary(session.getSessionId(), session.getSessionName(), item, false); - itemList.add(sum); - } - } - - return itemList; - } - - public List> exportByContentId(Long contentId) { - ImageGallery imageGallery = imageGalleryDao.getByContentId(contentId); - List> groupList = new ArrayList(); - - // create init imageGallery items list - List initList = new ArrayList(); - groupList.add(initList); - Set resList = imageGallery.getImageGalleryItems(); - for (ImageGalleryItem item : resList) { - if (item.isCreateByAuthor()) { - Summary sum = new Summary(null, null, item, true); - initList.add(sum); - } - } - - // session by session - List sessionList = imageGallerySessionDao.getByContentId(contentId); - for (ImageGallerySession session : sessionList) { - List group = new ArrayList(); - // get this session's all imageGallery items - Set sessList = session.getImageGalleryItems(); - for (ImageGalleryItem item : sessList) { - // to skip all item create by author - if (!item.isCreateByAuthor()) { - Summary sum = new Summary(session.getSessionId(), session.getSessionName(), item, false); - group.add(sum); - } - } - if (group.size() == 0) { - group.add(new Summary(session.getSessionId(), session.getSessionName(), null, false)); - } - groupList.add(group); - } - - return groupList; - } - public ImageGallery getImageGalleryBySessionId(Long sessionId) { ImageGallerySession session = imageGallerySessionDao.getSessionBySessionId(sessionId); // to skip CGLib problem @@ -458,13 +384,62 @@ } return nextUrl; } + + public List getUserListBySessionId(Long sessionId) { + return imageGalleryUserDao.getBySessionID(sessionId); + } + public void setItemVisible(Long itemUid, boolean visible) { + ImageGalleryItem item = imageGalleryItemDao.getByUid(itemUid); + if (item != null) { + // createBy should be null for system default value. + Long userId = 0L; + String loginName = "No user"; + if (item.getCreateBy() != null) { + userId = item.getCreateBy().getUserId(); + loginName = item.getCreateBy().getLoginName(); + } + if (visible) { + auditService.logShowEntry(ImageGalleryConstants.TOOL_SIGNATURE, userId, loginName, item.toString()); + } else { + auditService.logHideEntry(ImageGalleryConstants.TOOL_SIGNATURE, userId, loginName, item.toString()); + } + item.setHide(!visible); + imageGalleryItemDao.saveObject(item); + } + } + + public Long createNotebookEntry(Long sessionId, Integer notebookToolType, String toolSignature, Integer userId, + String entryText) { + return coreNotebookService.createNotebookEntry(sessionId, notebookToolType, toolSignature, userId, "", + entryText); + } + + public NotebookEntry getEntry(Long sessionId, Integer idType, String signature, Integer userID) { + List list = coreNotebookService.getEntry(sessionId, idType, signature, userID); + if ((list == null) || list.isEmpty()) { + return null; + } else { + return list.get(0); + } + } + + /** + * @param notebookEntry + */ + public void updateEntry(NotebookEntry notebookEntry) { + coreNotebookService.updateEntry(notebookEntry); + } + + public ImageGalleryUser getUser(Long uid) { + return (ImageGalleryUser) imageGalleryUserDao.getObject(ImageGalleryUser.class, uid); + } + public List> getSummary(Long contentId) { List> groupList = new ArrayList>(); List group = new ArrayList(); // get all item which is accessed by user - Map visitCountMap = imageGalleryItemVisitDao.getSummary(contentId); ImageGallery imageGallery = imageGalleryDao.getByContentId(contentId); List sessionList = imageGallerySessionDao.getByContentId(contentId); @@ -483,10 +458,6 @@ sum.setNumberRatings(((Long)ratingForGroup[0]).intValue()); sum.setAverageRating(((Float)ratingForGroup[1]).floatValue()); - // set viewNumber according visit log - if (visitCountMap.containsKey(image.getUid())) { - sum.setViewNumber(visitCountMap.get(image.getUid()).intValue()); - } group.add(sum); } // if there is no any item available, then just put session name into Summary @@ -520,31 +491,8 @@ List users = imageGalleryUserDao.getBySessionID(session.getSessionId()); for (ImageGalleryUser user : users) { - UserImageContributionDTO sum = new UserImageContributionDTO(session.getSessionName(), user); - - sum.setNumberOfVotes(numberOfVotes); - - sum.setNumberRatings(((Long)ratingForGroup[0]).intValue()); - sum.setAverageRating(((Float)ratingForGroup[1]).floatValue()); - - ImageRating rating = imageRatingDao.getImageRatingByImageAndUser(image.getUid(), user.getUserId()); - if (rating != null) { - sum.setRating(rating.getRating()); - } - - boolean isVotedForThisImage = (image.getUid().equals(user.getVotedImageUid())); - sum.setVotedForThisImage(isVotedForThisImage); - - Set dbComments = image.getComments(); - TreeSet comments = new TreeSet(new ImageCommentComparator()); - for (ImageComment comment : dbComments) { - if (comment.getCreateBy().getUserId().equals(user.getUserId())) { - comments.add(comment); - } - } - sum.setComments(comments); - - group.add(sum); + UserImageContributionDTO userContribution = createUserContribution(image, user, session, numberOfVotes, ratingForGroup); + group.add(userContribution); } imageSummary.add(group); @@ -583,81 +531,68 @@ return map; } + + public List>> exportBySessionId(Long sessionId, ImageGalleryUser user, boolean skipHide) { + ImageGallerySession session = imageGallerySessionDao.getSessionBySessionId(sessionId); + if (session == null) { + ImageGalleryServiceImpl.log.error("Failed get ImageGallerySession by ID [" + sessionId + "]"); + return null; + } + + //imageList-->sessionList-->contributionList + ImageGallery imageGallery = session.getImageGallery(); + List>> imageList = new ArrayList(); - public List getUserListBySessionId(Long sessionId) { - return imageGalleryUserDao.getBySessionID(sessionId); - } - - public void setItemVisible(Long itemUid, boolean visible) { - ImageGalleryItem item = imageGalleryItemDao.getByUid(itemUid); - if (item != null) { - // createBy should be null for system default value. - Long userId = 0L; - String loginName = "No user"; - if (item.getCreateBy() != null) { - userId = item.getCreateBy().getUserId(); - loginName = item.getCreateBy().getLoginName(); + Set dbImages = imageGallery.getImageGalleryItems(); + for (ImageGalleryItem image : dbImages) { + if (skipHide && image.isHide()) { + continue; } - if (visible) { - auditService.logShowEntry(ImageGalleryConstants.TOOL_SIGNATURE, userId, loginName, item.toString()); - } else { - auditService.logHideEntry(ImageGalleryConstants.TOOL_SIGNATURE, userId, loginName, item.toString()); - } - item.setHide(!visible); - imageGalleryItemDao.saveObject(item); - } - } - public Long createNotebookEntry(Long sessionId, Integer notebookToolType, String toolSignature, Integer userId, - String entryText) { - return coreNotebookService.createNotebookEntry(sessionId, notebookToolType, toolSignature, userId, "", - entryText); - } + List> sessionList = new ArrayList(); + + List userContributionList = new ArrayList(); - public NotebookEntry getEntry(Long sessionId, Integer idType, String signature, Integer userID) { - List list = coreNotebookService.getEntry(sessionId, idType, signature, userID); - if ((list == null) || list.isEmpty()) { - return null; - } else { - return list.get(0); + Object[] ratingForGroup = getRatingForGroup(image.getUid(), session.getSessionId()); + int numberOfVotes = imageGalleryUserDao.getNumberOfVotes(image.getUid(), session.getUid()); + UserImageContributionDTO userContribution = createUserContribution(image, user, session, numberOfVotes, ratingForGroup); + userContribution.setImage(image); + userContributionList.add(userContribution); + sessionList.add(userContributionList); + imageList.add(sessionList); } - } - /** - * @param notebookEntry - */ - public void updateEntry(NotebookEntry notebookEntry) { - coreNotebookService.updateEntry(notebookEntry); + return imageList; } - public ImageGalleryUser getUser(Long uid) { - return (ImageGalleryUser) imageGalleryUserDao.getObject(ImageGalleryUser.class, uid); - } + public List>> exportByContentId(Long contentId) { + ImageGallery imageGallery = imageGalleryDao.getByContentId(contentId); + List>> imageList = new ArrayList(); + + Set dbImages = imageGallery.getImageGalleryItems(); + for (ImageGalleryItem image : dbImages) { - // ***************************************************************************** - // private methods - // ***************************************************************************** - private ImageGallery getDefaultImageGallery() throws ImageGalleryException { - Long defaultImageGalleryId = getToolDefaultContentIdBySignature(ImageGalleryConstants.TOOL_SIGNATURE); - ImageGallery defaultImageGallery = getImageGalleryByContentId(defaultImageGalleryId); - if (defaultImageGallery == null) { - String error = messageService.getMessage("error.msg.default.content.not.find"); - ImageGalleryServiceImpl.log.error(error); - throw new ImageGalleryException(error); - } + List> sessionList = new ArrayList(); + List imageGallerySessionList = imageGallerySessionDao.getByContentId(contentId); + for(ImageGallerySession imageSession : imageGallerySessionList) { + List userContributionList = new ArrayList(); + Object[] ratingForGroup = getRatingForGroup(image.getUid(), imageSession.getSessionId()); + int numberOfVotes = imageGalleryUserDao.getNumberOfVotes(image.getUid(), imageSession.getUid()); + + List userList = imageGalleryUserDao.getBySessionID(imageSession.getSessionId()); + for (ImageGalleryUser user : userList) { + UserImageContributionDTO userContribution = createUserContribution(image, user, imageSession, numberOfVotes, ratingForGroup); + userContribution.setImage(image); + userContributionList.add(userContribution); + } + sessionList.add(userContributionList); + + } - return defaultImageGallery; - } + imageList.add(sessionList); + } - private Long getToolDefaultContentIdBySignature(String toolSignature) throws ImageGalleryException { - Long contentId = null; - contentId = new Long(toolService.getToolDefaultContentIdBySignature(toolSignature)); - if (contentId == null) { - String error = messageService.getMessage("error.msg.default.content.not.find"); - ImageGalleryServiceImpl.log.error(error); - throw new ImageGalleryException(error); - } - return contentId; + return imageList; } public void uploadImageGalleryItemFile(ImageGalleryItem image, FormFile file) @@ -1139,6 +1074,66 @@ return images; } + // ***************************************************************************** + // private methods + // ***************************************************************************** + private ImageGallery getDefaultImageGallery() throws ImageGalleryException { + Long defaultImageGalleryId = getToolDefaultContentIdBySignature(ImageGalleryConstants.TOOL_SIGNATURE); + ImageGallery defaultImageGallery = getImageGalleryByContentId(defaultImageGalleryId); + if (defaultImageGallery == null) { + String error = messageService.getMessage("error.msg.default.content.not.find"); + ImageGalleryServiceImpl.log.error(error); + throw new ImageGalleryException(error); + } + + return defaultImageGallery; + } + + private Long getToolDefaultContentIdBySignature(String toolSignature) throws ImageGalleryException { + Long contentId = null; + contentId = new Long(toolService.getToolDefaultContentIdBySignature(toolSignature)); + if (contentId == null) { + String error = messageService.getMessage("error.msg.default.content.not.find"); + ImageGalleryServiceImpl.log.error(error); + throw new ImageGalleryException(error); + } + return contentId; + } + + private UserImageContributionDTO createUserContribution(ImageGalleryItem image, ImageGalleryUser user, ImageGallerySession session, int numberOfVotes, Object[] ratingForGroup) { + UserImageContributionDTO userContribution = new UserImageContributionDTO(session.getSessionName(), user); + + userContribution.setNumberOfVotes(numberOfVotes); + userContribution.setNumberRatings(((Long)ratingForGroup[0]).intValue()); + userContribution.setAverageRating(((Float)ratingForGroup[1]).floatValue()); + + ImageRating rating = imageRatingDao.getImageRatingByImageAndUser(image.getUid(), user.getUserId()); + if (rating != null) { + userContribution.setRating(rating.getRating()); + } + + boolean isVotedForThisImage = (image.getUid().equals(user.getVotedImageUid())); + userContribution.setVotedForThisImage(isVotedForThisImage); + + Set dbComments = image.getComments(); + TreeSet comments = new TreeSet(new ImageCommentComparator()); + for (ImageComment comment : dbComments) { + if (comment.getCreateBy().getUserId().equals(user.getUserId())) { + comments.add(comment); + } + } + userContribution.setComments(comments); + + return userContribution; + } + + /** + * Calculates average rating and number of rating for the current group. + * + * @param imageUid + * @param sessionId + * @return + */ private Object[] getRatingForGroup(Long imageUid, Long sessionId) { List users = imageGalleryUserDao.getBySessionID(sessionId); Long numberRatings = new Long(0); Index: lams_tool_images/src/java/org/lamsfoundation/lams/tool/imageGallery/web/servlet/ExportServlet.java =================================================================== diff -u -r3a1cbcfc06aaf55285140e18e4336ca65db9e255 -r7dac65b89adddab2b602b5d57d8e3ddd4cab2060 --- lams_tool_images/src/java/org/lamsfoundation/lams/tool/imageGallery/web/servlet/ExportServlet.java (.../ExportServlet.java) (revision 3a1cbcfc06aaf55285140e18e4336ca65db9e255) +++ lams_tool_images/src/java/org/lamsfoundation/lams/tool/imageGallery/web/servlet/ExportServlet.java (.../ExportServlet.java) (revision 7dac65b89adddab2b602b5d57d8e3ddd4cab2060) @@ -26,6 +26,7 @@ package org.lamsfoundation.lams.tool.imageGallery.web.servlet; import java.io.File; +import java.io.IOException; import java.util.ArrayList; import java.util.HashMap; import java.util.List; @@ -46,7 +47,9 @@ import org.lamsfoundation.lams.tool.imageGallery.ImageGalleryConstants; import org.lamsfoundation.lams.tool.imageGallery.dto.ReflectDTO; import org.lamsfoundation.lams.tool.imageGallery.dto.Summary; +import org.lamsfoundation.lams.tool.imageGallery.dto.UserImageContributionDTO; import org.lamsfoundation.lams.tool.imageGallery.model.ImageGallery; +import org.lamsfoundation.lams.tool.imageGallery.model.ImageGalleryItem; import org.lamsfoundation.lams.tool.imageGallery.model.ImageGallerySession; import org.lamsfoundation.lams.tool.imageGallery.model.ImageGalleryUser; import org.lamsfoundation.lams.tool.imageGallery.service.IImageGalleryService; @@ -62,220 +65,226 @@ import org.springframework.web.context.support.WebApplicationContextUtils; /** - * Export portfolio servlet to export all shared imageGallery into offline HTML - * package. + * Export portfolio servlet to export all images into offline HTML package. * - * @author Steve.Ni + * @author Andrey Balan * * @version $Revision$ */ public class ExportServlet extends AbstractExportPortfolioServlet { - private static final long serialVersionUID = -4529093489007108143L; + private static final long serialVersionUID = -4529093489007108143L; - private static Logger logger = Logger.getLogger(ExportServlet.class); + private static Logger logger = Logger.getLogger(ExportServlet.class); - private final String FILENAME = "shared_imageGallery_main.html"; + private final String FILENAME = "imageGallery_main.html"; - private ImageGalleryToolContentHandler handler; - - private IImageGalleryService service; - - @Override - public void init() throws ServletException { - service = ImageGalleryServiceProxy.getImageGalleryService(getServletContext()); - super.init(); + private ImageGalleryToolContentHandler handler; + + private IImageGalleryService service; + + @Override + public void init() throws ServletException { + service = ImageGalleryServiceProxy.getImageGalleryService(getServletContext()); + super.init(); + } + + public String doExport(HttpServletRequest request, HttpServletResponse response, String directoryName, + Cookie[] cookies) { + + // initial sessionMap + SessionMap sessionMap = new SessionMap(); + request.getSession().setAttribute(sessionMap.getSessionID(), sessionMap); + + try { + if (StringUtils.equals(mode, ToolAccessMode.LEARNER.toString())) { + sessionMap.put(AttributeNames.ATTR_MODE, ToolAccessMode.LEARNER); + learner(request, response, directoryName, cookies, sessionMap); + } else if (StringUtils.equals(mode, ToolAccessMode.TEACHER.toString())) { + sessionMap.put(AttributeNames.ATTR_MODE, ToolAccessMode.TEACHER); + teacher(request, response, directoryName, cookies, sessionMap); + } + } catch (ImageGalleryException e) { + logger.error("Cannot perform export for imageGallery tool."); } - - public String doExport(HttpServletRequest request, HttpServletResponse response, String directoryName, Cookie[] cookies) { -// initial sessionMap - SessionMap sessionMap = new SessionMap(); - request.getSession().setAttribute(sessionMap.getSessionID(), sessionMap); - - try { - if (StringUtils.equals(mode, ToolAccessMode.LEARNER.toString())) { - sessionMap.put(AttributeNames.ATTR_MODE,ToolAccessMode.LEARNER); - learner(request, response, directoryName, cookies,sessionMap); - } else if (StringUtils.equals(mode, ToolAccessMode.TEACHER.toString())) { - sessionMap.put(AttributeNames.ATTR_MODE,ToolAccessMode.TEACHER); - teacher(request, response, directoryName, cookies,sessionMap); - } - } catch (ImageGalleryException e) { - logger.error("Cannot perform export for imageGallery tool."); - } + String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + + request.getContextPath(); + writeResponseToFile(basePath + "/pages/export/exportportfolio.jsp?sessionMapID=" + sessionMap.getSessionID(), + directoryName, FILENAME, cookies); - String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() - + request.getContextPath(); - writeResponseToFile(basePath + "/pages/export/exportportfolio.jsp?sessionMapID="+sessionMap.getSessionID() - , directoryName, FILENAME, cookies); + return FILENAME; + } - return FILENAME; + protected String doOfflineExport(HttpServletRequest request, HttpServletResponse response, String directoryName, + Cookie[] cookies) { + if (toolContentID == null && toolSessionID == null) { + logger.error("Tool content Id or and session Id are null. Unable to activity title"); + } else { + + ImageGallery content = null; + if (toolContentID != null) { + content = service.getImageGalleryByContentId(toolContentID); + } else { + ImageGallerySession session = service.getImageGallerySessionBySessionId(toolSessionID); + if (session != null) + content = session.getImageGallery(); + } + if (content != null) { + activityTitle = content.getTitle(); + } } - - protected String doOfflineExport(HttpServletRequest request, HttpServletResponse response, String directoryName, Cookie[] cookies) { - if (toolContentID == null && toolSessionID == null) { - logger.error("Tool content Id or and session Id are null. Unable to activity title"); - } else { + return super.doOfflineExport(request, response, directoryName, cookies); + } - ImageGallery content = null; - if ( toolContentID != null ) { - content = service.getImageGalleryByContentId(toolContentID); - } else { - ImageGallerySession session=service.getImageGallerySessionBySessionId(toolSessionID); - if ( session != null ) - content = session.getImageGallery(); - } - if ( content != null ) { - activityTitle = content.getTitle(); - } - } - return super.doOfflineExport(request, response, directoryName, cookies); + public void learner(HttpServletRequest request, HttpServletResponse response, String directoryName, + Cookie[] cookies, HashMap sessionMap) throws ImageGalleryException { + + if (userID == null || toolSessionID == null) { + String error = "Tool session Id or user Id is null. Unable to continue"; + logger.error(error); + throw new ImageGalleryException(error); } + ImageGalleryUser learner = service.getUserByIDAndSession(userID, toolSessionID); + if (learner == null) { + String error = "The user with user id " + userID + " does not exist."; + logger.error(error); + throw new ImageGalleryException(error); + } - public void learner(HttpServletRequest request, HttpServletResponse response, String directoryName, Cookie[] cookies, HashMap sessionMap) - throws ImageGalleryException { + ImageGallery content = service.getImageGalleryBySessionId(toolSessionID); - if (userID == null || toolSessionID == null) { - String error = "Tool session Id or user Id is null. Unable to continue"; - logger.error(error); - throw new ImageGalleryException(error); - } + if (content == null) { + String error = "The content for this activity has not been defined yet."; + logger.error(error); + throw new ImageGalleryException(error); + } - ImageGalleryUser learner = service.getUserByIDAndSession(userID,toolSessionID); + List>> exportImageList = service.exportBySessionId(toolSessionID, learner, true); + saveFileToLocal(exportImageList, directoryName); - if (learner == null) { - String error = "The user with user id " + userID + " does not exist."; - logger.error(error); - throw new ImageGalleryException(error); - } + // Add flag to indicate whether to render user notebook entries + sessionMap.put(ImageGalleryConstants.ATTR_REFLECTION_ON, content.isReflectOnActivity()); - ImageGallery content = service.getImageGalleryBySessionId(toolSessionID); + // Create reflectList if reflection is enabled. + if (content.isReflectOnActivity()) { + // Create reflectList, need to follow same structure used in teacher + // see service.getReflectList(); + Map> map = new HashMap>(); + Set reflectDTOSet = new TreeSet(new ReflectDTOComparator()); + reflectDTOSet.add(getReflectionEntry(learner)); + map.put(toolSessionID, reflectDTOSet); - if (content == null) { - String error = "The content for this activity has not been defined yet."; - logger.error(error); - throw new ImageGalleryException(error); - } - - - List group = service.exportBySessionId(toolSessionID,true); - saveFileToLocal(group, directoryName); - - List groupList = new ArrayList(); - if(group.size() > 0) - groupList.add(group); - - // Add flag to indicate whether to render user notebook entries - sessionMap.put(ImageGalleryConstants.ATTR_REFLECTION_ON, content.isReflectOnActivity()); - - // Create reflectList if reflection is enabled. - if (content.isReflectOnActivity()) { - // Create reflectList, need to follow same structure used in teacher - // see service.getReflectList(); - Map> map = new HashMap>(); - Set reflectDTOSet = new TreeSet(new ReflectDTOComparator()); - reflectDTOSet.add(getReflectionEntry(learner)); - map.put(toolSessionID, reflectDTOSet); - - // Add reflectList to sessionMap - sessionMap.put(ImageGalleryConstants.ATTR_REFLECT_LIST, map); - } - - sessionMap.put(ImageGalleryConstants.ATTR_TITLE, content.getTitle()); - sessionMap.put(ImageGalleryConstants.ATTR_INSTRUCTIONS, content.getInstructions()); - sessionMap.put(ImageGalleryConstants.ATTR_SUMMARY_LIST, groupList); + // Add reflectList to sessionMap + sessionMap.put(ImageGalleryConstants.ATTR_REFLECT_LIST, map); } - public void teacher(HttpServletRequest request, HttpServletResponse response, String directoryName, Cookie[] cookies, HashMap sessionMap) - throws ImageGalleryException { + sessionMap.put(ImageGalleryConstants.ATTR_RESOURCE, content); + sessionMap.put(ImageGalleryConstants.ATTR_TITLE, content.getTitle()); + sessionMap.put(ImageGalleryConstants.ATTR_INSTRUCTIONS, content.getInstructions()); + sessionMap.put(ImageGalleryConstants.ATTR_EXPORT_IMAGE_LIST, exportImageList); + } - // check if toolContentId exists in db or not - if (toolContentID == null) { - String error = "Tool Content Id is missing. Unable to continue"; - logger.error(error); - throw new ImageGalleryException(error); - } + public void teacher(HttpServletRequest request, HttpServletResponse response, String directoryName, + Cookie[] cookies, HashMap sessionMap) throws ImageGalleryException { - ImageGallery content = service.getImageGalleryByContentId(toolContentID); + // check if toolContentId exists in db or not + if (toolContentID == null) { + String error = "Tool Content Id is missing. Unable to continue"; + logger.error(error); + throw new ImageGalleryException(error); + } - if (content == null) { - String error = "Data is missing from the database. Unable to Continue"; - logger.error(error); - throw new ImageGalleryException(error); - } - List> groupList = service.exportByContentId(toolContentID); - if(groupList != null) { - for (List list : groupList) { - saveFileToLocal(list, directoryName); - } - } - - // Add flag to indicate whether to render user notebook entries - sessionMap.put(ImageGalleryConstants.ATTR_REFLECTION_ON, content.isReflectOnActivity()); - - // Create reflectList if reflection is enabled. - if (content.isReflectOnActivity()) { - Map> reflectList = service.getReflectList(content.getContentId(), true); - // Add reflectList to sessionMap - sessionMap.put(ImageGalleryConstants.ATTR_REFLECT_LIST, reflectList); - } - - // put it into HTTPSession - sessionMap.put(ImageGalleryConstants.ATTR_TITLE, content.getTitle()); - sessionMap.put(ImageGalleryConstants.ATTR_INSTRUCTIONS, content.getInstructions()); - sessionMap.put(ImageGalleryConstants.ATTR_SUMMARY_LIST, groupList); + ImageGallery content = service.getImageGalleryByContentId(toolContentID); + + if (content == null) { + String error = "Data is missing from the database. Unable to Continue"; + logger.error(error); + throw new ImageGalleryException(error); } + List>> exportImageList = service.exportByContentId(toolContentID); + saveFileToLocal(exportImageList, directoryName); - private void saveFileToLocal(List list, String directoryName) { - handler = getToolContentHandler(); - for (Summary summary : list) { -// BYYYY MEEEE -// //for learning object, it just display "No offlice pakcage avaliable" information. -// if(summary.getItemType() == ImageGalleryConstants.RESOURCE_TYPE_LEARNING_OBJECT -// || summary.getItemType() == ImageGalleryConstants.RESOURCE_TYPE_URL) -// continue; - try{ - int idx= 1; - String userName = summary.getUsername(); - String localDir; - while(true){ - localDir = FileUtil.getFullPath(directoryName,userName + "/" + idx); - File local = new File(localDir); - if(!local.exists()){ - local.mkdirs(); - break; - } - idx++; - } - summary.setAttachmentLocalUrl(userName + "/" + idx + "/" + summary.getFileUuid() + '.' + FileUtil.getFileExtension(summary.getFileName())); - handler.saveFile(summary.getFileUuid(), FileUtil.getFullPath(directoryName, summary.getAttachmentLocalUrl())); - } catch (Exception e) { - logger.error("Export forum topic attachment failed: " + e.toString()); + // Add flag to indicate whether to render user notebook entries + sessionMap.put(ImageGalleryConstants.ATTR_REFLECTION_ON, content.isReflectOnActivity()); + + // Create reflectList if reflection is enabled. + if (content.isReflectOnActivity()) { + Map> reflectList = service.getReflectList(content.getContentId(), true); + // Add reflectList to sessionMap + sessionMap.put(ImageGalleryConstants.ATTR_REFLECT_LIST, reflectList); + } + + // put it into HTTPSession + sessionMap.put(ImageGalleryConstants.ATTR_RESOURCE, content); + sessionMap.put(ImageGalleryConstants.ATTR_TITLE, content.getTitle()); + sessionMap.put(ImageGalleryConstants.ATTR_INSTRUCTIONS, content.getInstructions()); + sessionMap.put(ImageGalleryConstants.ATTR_EXPORT_IMAGE_LIST, exportImageList); + } + + /** + * Create download links for every attachment. + * + * @param taskSummaries + * @param directoryName + * @throws IOException + */ + private void saveFileToLocal(List>> exportImageList, String directoryName) { + handler = getToolContentHandler(); + + for (List> sessionList : exportImageList) { + for (List userContributionList : sessionList) { + for (UserImageContributionDTO userContribution : userContributionList) { + try { + ImageGalleryItem image = userContribution.getImage(); + int idx = 1; + String userName = image.getCreateBy().getLoginName(); + String localDir; + while (true) { + localDir = FileUtil.getFullPath(directoryName, userName + "/" + idx); + File local = new File(localDir); + if (!local.exists()) { + local.mkdirs(); + break; + } + idx++; } + image.setAttachmentLocalUrl(userName + "/" + idx + "/" + image.getThumbnailFileUuid() + '.' + + FileUtil.getFileExtension(image.getFileName())); + handler.saveFile(image.getThumbnailFileUuid(), FileUtil.getFullPath(directoryName, image + .getAttachmentLocalUrl())); + } catch (Exception e) { + logger.error("Export forum topic attachment failed: " + e.toString()); + } + break; } - + break; + } } - private ImageGalleryToolContentHandler getToolContentHandler() { - if ( handler == null ) { - WebApplicationContext wac = WebApplicationContextUtils.getRequiredWebApplicationContext(this.getServletContext()); - handler = (ImageGalleryToolContentHandler) wac.getBean(ImageGalleryConstants.TOOL_CONTENT_HANDLER_NAME); - } - return handler; + } + + private ImageGalleryToolContentHandler getToolContentHandler() { + if (handler == null) { + WebApplicationContext wac = WebApplicationContextUtils.getRequiredWebApplicationContext(this + .getServletContext()); + handler = (ImageGalleryToolContentHandler) wac.getBean(ImageGalleryConstants.TOOL_CONTENT_HANDLER_NAME); } - - private ReflectDTO getReflectionEntry(ImageGalleryUser imageGalleryUser) { - ReflectDTO reflectDTO = new ReflectDTO(imageGalleryUser); - NotebookEntry notebookEntry = service.getEntry(imageGalleryUser.getSession().getSessionId(), CoreNotebookConstants.NOTEBOOK_TOOL, - ImageGalleryConstants.TOOL_SIGNATURE, imageGalleryUser.getUserId().intValue()); - - // check notebookEntry is not null - if (notebookEntry != null) { - reflectDTO.setReflect(notebookEntry.getEntry()); - logger.debug("Could not find notebookEntry for ImageGalleryUser: " + imageGalleryUser.getUid()); - } - return reflectDTO; + return handler; + } + + private ReflectDTO getReflectionEntry(ImageGalleryUser imageGalleryUser) { + ReflectDTO reflectDTO = new ReflectDTO(imageGalleryUser); + NotebookEntry notebookEntry = service.getEntry(imageGalleryUser.getSession().getSessionId(), + CoreNotebookConstants.NOTEBOOK_TOOL, ImageGalleryConstants.TOOL_SIGNATURE, imageGalleryUser.getUserId() + .intValue()); + + // check notebookEntry is not null + if (notebookEntry != null) { + reflectDTO.setReflect(notebookEntry.getEntry()); + logger.debug("Could not find notebookEntry for ImageGalleryUser: " + imageGalleryUser.getUid()); } + return reflectDTO; + } } Index: lams_tool_images/web/pages/export/exportimage.jsp =================================================================== diff -u --- lams_tool_images/web/pages/export/exportimage.jsp (revision 0) +++ lams_tool_images/web/pages/export/exportimage.jsp (revision 7dac65b89adddab2b602b5d57d8e3ddd4cab2060) @@ -0,0 +1,114 @@ + + + +
+ +

+ +

+ +

+ +

+
+
+ + + + +

${userContribution.sessionName}

+ + + +
    +
  • + : ${userContribution.numberRatings} +
  • +
  • + : ${userContribution.averageRating} +
  • +
+
+
+ +
    +
  • + : ${userContribution.numberOfVotes} +
  • +
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + +
+ ${userContribution.user.loginName} + + + + + + + + + + + + ${userImageContribution.rating} + + +
    + +
  • + +
  • +
    +
+ +
+ +

+
+ Index: lams_tool_images/web/pages/export/exportportfolio.jsp =================================================================== diff -u -r8a7c47632a6a93892f015f068d12adb376c0ae2d -r7dac65b89adddab2b602b5d57d8e3ddd4cab2060 --- lams_tool_images/web/pages/export/exportportfolio.jsp (.../exportportfolio.jsp) (revision 8a7c47632a6a93892f015f068d12adb376c0ae2d) +++ lams_tool_images/web/pages/export/exportportfolio.jsp (.../exportportfolio.jsp) (revision 7dac65b89adddab2b602b5d57d8e3ddd4cab2060) @@ -1,220 +1,71 @@ <%@ include file="/common/taglibs.jsp"%> - - - - - - + + + + + + - - <fmt:message key="export.title" /> - - - - - - - - - - - - -
- -

- ${title} -

- -
- ${instructions} -
- - - -

- - - - - - - ${group[0].sessionName} - - -

- - - - - - - - - - - - - - - - - <%-- Bold styling is to indicate an item created by the author --%> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + +
- - - - - - - - - - - -
-
- -
-
- - - - - - - - - - - - - - - - ${item.itemTitle} - - - -
    - -
  1. - ${itemInstruction} -
  2. -
    -
-
- -   - -
-
- ${item.username} - - - - - - - - - - - - - - - - - - - + + <fmt:message key="export.title" /> + + + + + + + + + +
+ +

${title}

+ + + + + + + + + - - - - -
+ <%@ include file="exportimage.jsp"%>
- - <%-- Display reflection entries --%> - - - - <%-- End all answers for this question --%> -

- -

- - -

- ${reflectDTO.fullName} -

-

- -

-
-
- -
- - - -
- - - - - - +
+ <%-- Display reflection entries --%> + +

+ +

+ + +

+ ${reflectDTO.fullName} +

+ +
+
+
+ + + + +
+ +
+ +
+ + +
+ + + +