Index: lams_tool_doku/src/java/org/lamsfoundation/lams/tool/dokumaran/service/DokumaranService.java =================================================================== diff -u -r368e60d0fd7df1a3e327670ef9d0f3487803110b -re0cdeed1959c06ed434e7a4abec0aa5722128c8b --- lams_tool_doku/src/java/org/lamsfoundation/lams/tool/dokumaran/service/DokumaranService.java (.../DokumaranService.java) (revision 368e60d0fd7df1a3e327670ef9d0f3487803110b) +++ lams_tool_doku/src/java/org/lamsfoundation/lams/tool/dokumaran/service/DokumaranService.java (.../DokumaranService.java) (revision e0cdeed1959c06ed434e7a4abec0aa5722128c8b) @@ -169,7 +169,7 @@ //in case current user is leader - store his leader status if (leaderUserId.equals(user.getUserId())) { user.setLeader(true); - saveUser(user); + saveOrUpdate(user); leaders.add(user); continue; } @@ -189,7 +189,7 @@ User leaderDto = (User) userManagementService.findById(User.class, leaderUserId.intValue()); DokumaranUser leader = new DokumaranUser(leaderDto.getUserDTO(), session); leader.setLeader(true); - saveUser(leader); + saveOrUpdate(leader); leaders.add(leader); } } @@ -210,7 +210,7 @@ log.debug("creating new user with userId: " + leaderUserId); User leaderDto = (User) userManagementService.findById(User.class, leaderUserId.intValue()); leader = new DokumaranUser(leaderDto.getUserDTO(), session); - saveUser(leader); + saveOrUpdate(leader); } // set group leader @@ -328,11 +328,6 @@ } @Override - public void saveUser(DokumaranUser dokumaranUser) { - dokumaranUserDao.saveObject(dokumaranUser); - } - - @Override public DokumaranUser getUserByIDAndContent(Long userId, Long contentId) { return dokumaranUserDao.getUserByUserIDAndContentID(userId, contentId); } @@ -356,8 +351,8 @@ } @Override - public void saveOrUpdateDokumaran(Dokumaran dokumaran) { - dokumaranDao.saveObject(dokumaran); + public void saveOrUpdate(Object entity) { + dokumaranDao.saveObject(entity); } @Override @@ -375,11 +370,6 @@ } @Override - public void saveOrUpdateDokumaranSession(DokumaranSession resSession) { - dokumaranSessionDao.saveObject(resSession); - } - - @Override public String finishToolSession(Long toolSessionId, Long userId) throws DokumaranApplicationException { DokumaranUser user = dokumaranUserDao.getUserByUserIDAndSessionID(userId, toolSessionId); user.setSessionFinished(true); @@ -434,28 +424,12 @@ Map itemRatingDtoMap = null; if (dokumaran.isGalleryWalkStarted()) { - // Dokumaran currently supports only one place for ratings. - // It is rating other groups' pads on results page. - // Criterion gets automatically created and there must be only one. - List criteria = ratingService.getCriteriasByToolContentId(contentId); - if (criteria.size() >= 2) { - throw new IllegalArgumentException("There can be only one criterion for a Dokumaran activity. " - + "If other criteria are introduced, the criterion for rating other groups' answers needs to become uniquely identifiable."); + if (!dokumaran.isGalleryWalkReadOnly()) { + // it should have been creating on lesson create, + // but in case Live Edit added Gallery Walk, we need to add it now, but just once + createGalleryWalkRatingCriterion(dokumaran.getContentId()); } - ToolActivityRatingCriteria criterion = null; - if (criteria.isEmpty()) { - criterion = (ToolActivityRatingCriteria) RatingCriteria - .getRatingCriteriaInstance(RatingCriteria.TOOL_ACTIVITY_CRITERIA_TYPE); - criterion.setTitle(messageService.getMessage("label.pad.rating.title")); - criterion.setOrderId(1); - criterion.setRatingStyle(RatingCriteria.RATING_STYLE_STAR); - criterion.setToolContentId(contentId); - userManagementService.save(criterion); - } else { - criterion = (ToolActivityRatingCriteria) criteria.get(0); - } - // Item IDs are DokumaranSession session IDs, i.e. a single Etherpad Set itemIds = sessionList.stream() .collect(Collectors.mapping(DokumaranSession::getSessionId, Collectors.toSet())); @@ -548,6 +522,29 @@ return (DokumaranUser) dokumaranUserDao.getObject(DokumaranUser.class, uid); } + private List createGalleryWalkRatingCriterion(long toolContentId) { + List criteria = ratingService.getCriteriasByToolContentId(toolContentId); + if (criteria.size() >= 2) { + // Dokumaran currently supports only one place for ratings. + // It is rating other groups' pads on results page. + // Criterion gets automatically created and there must be only one. + throw new IllegalArgumentException("There can be only one criterion for a Dokumaran activity. " + + "If other criteria are introduced, the criterion for rating other groups' answers needs to become uniquely identifiable."); + } + if (criteria.isEmpty()) { + ToolActivityRatingCriteria criterion = (ToolActivityRatingCriteria) RatingCriteria + .getRatingCriteriaInstance(RatingCriteria.TOOL_ACTIVITY_CRITERIA_TYPE); + criterion.setTitle(messageService.getMessage("label.pad.rating.title")); + criterion.setOrderId(1); + criterion.setRatingStyle(RatingCriteria.RATING_STYLE_STAR); + criterion.setToolContentId(toolContentId); + + dokumaranDao.insert(criterion); + criteria.add(criterion); + } + return criteria; + } + @Override public void startGalleryWalk(long toolContentId) throws IOException { Dokumaran dokumaran = getDokumaranByContentId(toolContentId); @@ -718,6 +715,10 @@ Dokumaran toContent = Dokumaran.newInstance(dokumaran, toContentId); dokumaranDao.saveObject(toContent); + + if (toContent.isGalleryWalkEnabled() && !toContent.isGalleryWalkReadOnly()) { + createGalleryWalkRatingCriterion(toContentId); + } } @Override @@ -1121,7 +1122,7 @@ dokumaran.setCreatedBy(dokumaranUser); - saveOrUpdateDokumaran(dokumaran); + saveOrUpdate(dokumaran); } } Index: lams_tool_doku/src/java/org/lamsfoundation/lams/tool/dokumaran/service/IDokumaranService.java =================================================================== diff -u -r368e60d0fd7df1a3e327670ef9d0f3487803110b -re0cdeed1959c06ed434e7a4abec0aa5722128c8b --- lams_tool_doku/src/java/org/lamsfoundation/lams/tool/dokumaran/service/IDokumaranService.java (.../IDokumaranService.java) (revision 368e60d0fd7df1a3e327670ef9d0f3487803110b) +++ lams_tool_doku/src/java/org/lamsfoundation/lams/tool/dokumaran/service/IDokumaranService.java (.../IDokumaranService.java) (revision e0cdeed1959c06ed434e7a4abec0aa5722128c8b) @@ -141,11 +141,6 @@ // ********** for user methods ************* /** - * Create a new user in database. - */ - void saveUser(DokumaranUser dokumaranUser); - - /** * Get user by given userID and toolContentID. * * @param long1 @@ -173,41 +168,22 @@ List getUsersBySession(Long toolSessionId); /** - * Save or update dokumaran into database. - * - * @param Dokumaran + * Save or update any object into database. */ - void saveOrUpdateDokumaran(Dokumaran Dokumaran); + void saveOrUpdate(Object entity); /** * Get dokumaran which is relative with the special toolSession. - * - * @param sessionId - * @return */ Dokumaran getDokumaranBySessionId(Long sessionId); /** * Get dokumaran toolSession by toolSessionId - * - * @param sessionId - * @return */ DokumaranSession getDokumaranSessionBySessionId(Long sessionId); /** - * Save or update dokumaran session. - * - * @param resSession - */ - void saveOrUpdateDokumaranSession(DokumaranSession resSession); - - /** * If success return next activity's url, otherwise return null. - * - * @param toolSessionId - * @param userId - * @return */ String finishToolSession(Long toolSessionId, Long userId) throws DokumaranApplicationException; Index: lams_tool_doku/src/java/org/lamsfoundation/lams/tool/dokumaran/web/controller/AuthoringController.java =================================================================== diff -u -r845b503553ad948cb5db7b89950f7c5251ada5d7 -re0cdeed1959c06ed434e7a4abec0aa5722128c8b --- lams_tool_doku/src/java/org/lamsfoundation/lams/tool/dokumaran/web/controller/AuthoringController.java (.../AuthoringController.java) (revision 845b503553ad948cb5db7b89950f7c5251ada5d7) +++ lams_tool_doku/src/java/org/lamsfoundation/lams/tool/dokumaran/web/controller/AuthoringController.java (.../AuthoringController.java) (revision e0cdeed1959c06ed434e7a4abec0aa5722128c8b) @@ -87,7 +87,7 @@ Dokumaran dokumaran = dokumaranService.getDokumaranByContentId(contentId); dokumaran.setDefineLater(true); - dokumaranService.saveOrUpdateDokumaran(dokumaran); + dokumaranService.saveOrUpdate(dokumaran); //audit log the teacher has started editing activity in monitor dokumaranService.auditLogStartEditingActivityInMonitor(contentId); @@ -185,7 +185,6 @@ dokumaranPO = dokumaran; dokumaranPO.setCreated(new Timestamp(new Date().getTime())); dokumaranPO.setUpdated(new Timestamp(new Date().getTime())); - } else { Long uid = dokumaranPO.getUid(); PropertyUtils.copyProperties(dokumaranPO, dokumaran); @@ -220,7 +219,7 @@ dokumaranPO.setCreatedBy(dokumaranUser); // ***************************** finally persist dokumaranPO again - dokumaranService.saveOrUpdateDokumaran(dokumaranPO); + dokumaranService.saveOrUpdate(dokumaranPO); authoringForm.setDokumaran(dokumaranPO); Index: lams_tool_doku/src/java/org/lamsfoundation/lams/tool/dokumaran/web/controller/LearningController.java =================================================================== diff -u -r368e60d0fd7df1a3e327670ef9d0f3487803110b -re0cdeed1959c06ed434e7a4abec0aa5722128c8b --- lams_tool_doku/src/java/org/lamsfoundation/lams/tool/dokumaran/web/controller/LearningController.java (.../LearningController.java) (revision 368e60d0fd7df1a3e327670ef9d0f3487803110b) +++ lams_tool_doku/src/java/org/lamsfoundation/lams/tool/dokumaran/web/controller/LearningController.java (.../LearningController.java) (revision e0cdeed1959c06ed434e7a4abec0aa5722128c8b) @@ -118,7 +118,7 @@ toolSessionId); if (user == null) { user = new DokumaranUser(currentUserDto, session); - dokumaranService.saveUser(user); + dokumaranService.saveOrUpdate(user); isFirstTimeAccess = true; } } @@ -210,7 +210,7 @@ // set contentInUse flag to true! dokumaran.setContentInUse(true); dokumaran.setDefineLater(false); - dokumaranService.saveOrUpdateDokumaran(dokumaran); + dokumaranService.saveOrUpdate(dokumaran); //time limit boolean isTimeLimitEnabled = hasEditRight && !finishedLock && dokumaran.getTimeLimit() != 0;