Index: lams_tool_images/src/java/org/lamsfoundation/lams/tool/imageGallery/service/IImageGalleryService.java =================================================================== diff -u -r3a1cbcfc06aaf55285140e18e4336ca65db9e255 -r67f307991acb2b372c7fb9a33e2e422c1848d515 --- lams_tool_images/src/java/org/lamsfoundation/lams/tool/imageGallery/service/IImageGalleryService.java (.../IImageGalleryService.java) (revision 3a1cbcfc06aaf55285140e18e4336ca65db9e255) +++ lams_tool_images/src/java/org/lamsfoundation/lams/tool/imageGallery/service/IImageGalleryService.java (.../IImageGalleryService.java) (revision 67f307991acb2b372c7fb9a33e2e422c1848d515) @@ -137,12 +137,14 @@ void deleteImageGalleryItem(Long uid); /** - * Return all reource items within the given toolSessionID. + * Returns set of images from authoring + the tasks added by members of that particular group. * + * @param imageGallery * @param sessionId + * sessionId which defines Group * @return */ - List getImageGalleryItemsBySessionId(Long sessionId); + Set getImagesForGroup(ImageGallery imageGallery, Long sessionId); /** * Save/update current ImageGalleryItem. Index: lams_tool_images/src/java/org/lamsfoundation/lams/tool/imageGallery/service/ImageGalleryServiceImpl.java =================================================================== diff -u -r3a1cbcfc06aaf55285140e18e4336ca65db9e255 -r67f307991acb2b372c7fb9a33e2e422c1848d515 --- lams_tool_images/src/java/org/lamsfoundation/lams/tool/imageGallery/service/ImageGalleryServiceImpl.java (.../ImageGalleryServiceImpl.java) (revision 3a1cbcfc06aaf55285140e18e4336ca65db9e255) +++ lams_tool_images/src/java/org/lamsfoundation/lams/tool/imageGallery/service/ImageGalleryServiceImpl.java (.../ImageGalleryServiceImpl.java) (revision 67f307991acb2b372c7fb9a33e2e422c1848d515) @@ -334,23 +334,6 @@ imageGalleryItemDao.removeObject(ImageGalleryItem.class, uid); } - public List getImageGalleryItemsBySessionId(Long sessionId) { - ImageGallerySession session = imageGallerySessionDao.getSessionBySessionId(sessionId); - if (session == null) { - ImageGalleryServiceImpl.log.error("Failed get ImageGallerySession by ID [" + sessionId + "]"); - return null; - } - // add imageGallery items from Authoring - ImageGallery imageGallery = session.getImageGallery(); - List items = new ArrayList(); - items.addAll(imageGallery.getImageGalleryItems()); - - // add imageGallery items from ImageGallerySession - items.addAll(session.getImageGalleryItems()); - - return items; - } - public List exportBySessionId(Long sessionId, boolean skipHide) { ImageGallerySession session = imageGallerySessionDao.getSessionBySessionId(sessionId); if (session == null) { @@ -482,56 +465,30 @@ // get all item which is accessed by user Map visitCountMap = imageGalleryItemVisitDao.getSummary(contentId); - ImageGallery imageGallery = imageGalleryDao.getByContentId(contentId); - SortedSet resItemList = new TreeSet(new ImageGalleryItemComparator()); - resItemList.addAll(imageGallery.getImageGalleryItems()); - // get all sessions in a imageGallery and retrieve all imageGallery items under this session - // plus initial imageGallery items by author creating (resItemList) List sessionList = imageGallerySessionDao.getByContentId(contentId); for (ImageGallerySession session : sessionList) { // one new group for one session. group = new ArrayList(); - // firstly, put all initial imageGallery item into this group. - for (ImageGalleryItem item : resItemList) { - Summary sum = new Summary(session.getSessionId(), session.getSessionName(), item); + Set groupImages = getImagesForGroup(imageGallery, session.getSessionId()); + + for (ImageGalleryItem image : groupImages) { + Summary sum = new Summary(session.getSessionId(), session.getSessionName(), image); - int numberOfVotes = imageGalleryUserDao.getNumberOfVotes(item.getUid(), session.getUid()); + int numberOfVotes = imageGalleryUserDao.getNumberOfVotes(image.getUid(), session.getUid()); sum.setNumberOfVotes(numberOfVotes); - Object[] ratingForGroup = getRatingForGroup(item.getUid(),session.getSessionId()); + Object[] ratingForGroup = getRatingForGroup(image.getUid(),session.getSessionId()); sum.setNumberRatings(((Long)ratingForGroup[0]).intValue()); sum.setAverageRating(((Float)ratingForGroup[1]).floatValue()); // set viewNumber according visit log - if (visitCountMap.containsKey(item.getUid())) { - sum.setViewNumber(visitCountMap.get(item.getUid()).intValue()); + if (visitCountMap.containsKey(image.getUid())) { + sum.setViewNumber(visitCountMap.get(image.getUid()).intValue()); } group.add(sum); } - // get this session's all imageGallery items - SortedSet sessItemList = new TreeSet(new ImageGalleryItemComparator()); - sessItemList.addAll(session.getImageGalleryItems()); - for (ImageGalleryItem item : sessItemList) { - // to skip all item create by author - if (!item.isCreateByAuthor()) { - Summary sum = new Summary(session.getSessionId(), session.getSessionName(), item); - - int numberOfVotes = imageGalleryUserDao.getNumberOfVotes(item.getUid(), session.getUid()); - sum.setNumberOfVotes(numberOfVotes); - - Object[] ratingForGroup = getRatingForGroup(item.getUid(),session.getSessionId()); - sum.setNumberRatings(((Long)ratingForGroup[0]).intValue()); - sum.setAverageRating(((Float)ratingForGroup[1]).floatValue()); - - // set viewNumber according visit log - if (visitCountMap.containsKey(item.getUid())) { - sum.setViewNumber(visitCountMap.get(item.getUid()).intValue()); - } - group.add(sum); - } - } // if there is no any item available, then just put session name into Summary if (group.size() == 0) { group.add(new Summary(session.getSessionId(), session.getSessionName(), null)); @@ -546,18 +503,22 @@ List> imageSummary = new ArrayList>(); List group = new ArrayList(); ImageGalleryItem image = imageGalleryItemDao.getByUid(imageUid); - - // get all sessions in a imageGallery and retrieve all imageGallery items under this session - // plus initial imageGallery items by author creating (resItemList) - List sessionList = imageGallerySessionDao.getByContentId(contentId); + + List sessionList; + if (image.isCreateByAuthor()) { + sessionList = imageGallerySessionDao.getByContentId(contentId); + } else { + sessionList = new ArrayList(); + sessionList.add(image.getCreateBy().getSession()); + } + for (ImageGallerySession session : sessionList) { // one new group for one session. group = new ArrayList(); Object[] ratingForGroup = getRatingForGroup(image.getUid(),session.getSessionId()); int numberOfVotes = imageGalleryUserDao.getNumberOfVotes(image.getUid(), session.getUid()); List users = imageGalleryUserDao.getBySessionID(session.getSessionId()); - // firstly, put all initial imageGallery item into this group. for (ImageGalleryUser user : users) { UserImageContributionDTO sum = new UserImageContributionDTO(session.getSessionName(), user); @@ -1161,6 +1122,23 @@ imageGalleryConfigItemDAO.saveOrUpdate(item); } + public Set getImagesForGroup(ImageGallery imageGallery, Long sessionId) { + TreeSet images = new TreeSet(new ImageGalleryItemComparator()); + + List grouppedUsers = getUserListBySessionId(sessionId); + Set allImages = imageGallery.getImageGalleryItems(); + + for (ImageGalleryItem image : allImages) { + for (ImageGalleryUser grouppedUser : grouppedUsers) { + if (image.isCreateByAuthor() || grouppedUser.getUserId().equals(image.getCreateBy().getUserId())) { + images.add(image); + } + } + } + + return images; + } + 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/action/LearningAction.java =================================================================== diff -u -r3a1cbcfc06aaf55285140e18e4336ca65db9e255 -r67f307991acb2b372c7fb9a33e2e422c1848d515 --- lams_tool_images/src/java/org/lamsfoundation/lams/tool/imageGallery/web/action/LearningAction.java (.../LearningAction.java) (revision 3a1cbcfc06aaf55285140e18e4336ca65db9e255) +++ lams_tool_images/src/java/org/lamsfoundation/lams/tool/imageGallery/web/action/LearningAction.java (.../LearningAction.java) (revision 67f307991acb2b372c7fb9a33e2e422c1848d515) @@ -214,25 +214,26 @@ sessionMap.put(ImageGalleryConstants.PARAM_RUN_OFFLINE, false); } - // init imageGallery item list - List items = service.getImageGalleryItemsBySessionId(sessionId); - SortedSet imageGalleryItemList = new TreeSet( - new ImageGalleryItemComparator()); - if (items != null) { - for (ImageGalleryItem item : items) { + // Create set of images besides this filtering out items added by users from other groups + TreeSet images = new TreeSet(new ImageGalleryItemComparator()); + if (mode.isLearner()) { + Set groupImages = service.getImagesForGroup(imageGallery, sessionId); + for (ImageGalleryItem image : groupImages) { // becuase in webpage will use this login name. Here is just // initial it to avoid session close error in proxy object. - if (item.getCreateBy() != null) { - item.getCreateBy().getLoginName(); + if (image.getCreateBy() != null) { + image.getCreateBy().getLoginName(); } - // remove hidden items. - if (!item.isHide()) { - imageGalleryItemList.add(item); + // remove hidden items. + if (!image.isHide()) { + images.add(image); } } - } + } else { + images.addAll(imageGallery.getImageGalleryItems()); + } - sessionMap.put(ImageGalleryConstants.ATTR_RESOURCE_ITEM_LIST, imageGalleryItemList); + sessionMap.put(ImageGalleryConstants.ATTR_RESOURCE_ITEM_LIST, images); sessionMap.put(ImageGalleryConstants.ATTR_RESOURCE, imageGallery); return mapping.findForward(ImageGalleryConstants.SUCCESS); @@ -601,22 +602,6 @@ return (IImageGalleryService) wac.getBean(ImageGalleryConstants.RESOURCE_SERVICE); } - /** - * List save current imageGallery items. - * - * @param request - * @return - */ - private SortedSet getImageList(SessionMap sessionMap) { - SortedSet list = (SortedSet) sessionMap - .get(ImageGalleryConstants.ATTR_RESOURCE_ITEM_LIST); - if (list == null) { - list = new TreeSet(new ImageGalleryItemComparator()); - sessionMap.put(ImageGalleryConstants.ATTR_RESOURCE_ITEM_LIST, list); - } - return list; - } - private ImageGalleryUser getCurrentUser(IImageGalleryService service, Long sessionId) { // try to get form system session HttpSession ss = SessionManager.getSession();