From 695e9e05e9310b25c6d53016924c8a7687866ab5 Mon Sep 17 00:00:00 2001 From: srosse <stephane.rosse@frentix.com> Date: Tue, 30 Jun 2020 09:20:26 +0200 Subject: [PATCH] OO-4765: remove in db mode to group / area and curriculum element --- .../assessment/AssessmentModeManager.java | 8 +++++- .../manager/AssessmentModeManagerImpl.java | 16 ++++++++++++ .../ui/mode/AssessmentModeEditController.java | 25 +++++++++++-------- 3 files changed, 38 insertions(+), 11 deletions(-) diff --git a/src/main/java/org/olat/course/assessment/AssessmentModeManager.java b/src/main/java/org/olat/course/assessment/AssessmentModeManager.java index 5d839fe46ea..e6f3736c2a5 100644 --- a/src/main/java/org/olat/course/assessment/AssessmentModeManager.java +++ b/src/main/java/org/olat/course/assessment/AssessmentModeManager.java @@ -64,6 +64,8 @@ public interface AssessmentModeManager { */ public AssessmentModeToGroup createAssessmentModeToGroup(AssessmentMode mode, BusinessGroup group); + public void deleteAssessmentModeToGroup(AssessmentModeToGroup mode); + /** * Create and persist a relation between the specified assessment mode * and an area. @@ -74,6 +76,8 @@ public interface AssessmentModeManager { */ public AssessmentModeToArea createAssessmentModeToArea(AssessmentMode mode, BGArea area); + public void deleteAssessmentModeToArea(AssessmentModeToArea modeToArea); + /** * Create and persist a relation between the specified assessment mode * and a curriculum element. @@ -84,7 +88,9 @@ public interface AssessmentModeManager { */ public AssessmentModeToCurriculumElement createAssessmentModeToCurriculumElement(AssessmentMode mode, CurriculumElement curriculumElement); - + public void deleteAssessmentModeToCurriculumElement(AssessmentModeToCurriculumElement modeToCurriculumElement); + + public AssessmentMode persist(AssessmentMode assessmentMode); /** diff --git a/src/main/java/org/olat/course/assessment/manager/AssessmentModeManagerImpl.java b/src/main/java/org/olat/course/assessment/manager/AssessmentModeManagerImpl.java index 6338aaa3ecf..a9b1534b440 100644 --- a/src/main/java/org/olat/course/assessment/manager/AssessmentModeManagerImpl.java +++ b/src/main/java/org/olat/course/assessment/manager/AssessmentModeManagerImpl.java @@ -452,6 +452,12 @@ public class AssessmentModeManagerImpl implements AssessmentModeManager { return modeToGroup; } + @Override + public void deleteAssessmentModeToGroup(AssessmentModeToGroup modeToGroup) { + dbInstance.getCurrentEntityManager().remove(modeToGroup); + } + + @Override public AssessmentModeToArea createAssessmentModeToArea(AssessmentMode mode, BGArea area) { AssessmentModeToAreaImpl modeToArea = new AssessmentModeToAreaImpl(); @@ -461,6 +467,11 @@ public class AssessmentModeManagerImpl implements AssessmentModeManager { return modeToArea; } + @Override + public void deleteAssessmentModeToArea(AssessmentModeToArea modeToArea) { + dbInstance.getCurrentEntityManager().remove(modeToArea); + } + @Override public AssessmentModeToCurriculumElement createAssessmentModeToCurriculumElement(AssessmentMode mode, CurriculumElement curriculumElement) { AssessmentModeToCurriculumElementImpl modeToElement = new AssessmentModeToCurriculumElementImpl(); @@ -469,6 +480,11 @@ public class AssessmentModeManagerImpl implements AssessmentModeManager { dbInstance.getCurrentEntityManager().persist(modeToElement); return modeToElement; } + + @Override + public void deleteAssessmentModeToCurriculumElement(AssessmentModeToCurriculumElement modeToCurriculumElement) { + dbInstance.getCurrentEntityManager().remove(modeToCurriculumElement); + } @Override public boolean isNodeInUse(RepositoryEntryRef entry, CourseNode node) { diff --git a/src/main/java/org/olat/course/assessment/ui/mode/AssessmentModeEditController.java b/src/main/java/org/olat/course/assessment/ui/mode/AssessmentModeEditController.java index 754ddc393b5..1005314260f 100644 --- a/src/main/java/org/olat/course/assessment/ui/mode/AssessmentModeEditController.java +++ b/src/main/java/org/olat/course/assessment/ui/mode/AssessmentModeEditController.java @@ -22,7 +22,6 @@ package org.olat.course.assessment.ui.mode; import java.util.ArrayList; import java.util.Date; import java.util.HashSet; -import java.util.Iterator; import java.util.List; import java.util.Set; @@ -693,10 +692,12 @@ public class AssessmentModeEditController extends FormBasicController { } } else { Set<Long> currentKeys = new HashSet<>(); - for(Iterator<AssessmentModeToGroup> modeToGroupIt=assessmentMode.getGroups().iterator(); modeToGroupIt.hasNext(); ) { - Long currentKey = modeToGroupIt.next().getBusinessGroup().getKey(); + List<AssessmentModeToGroup> currentGroups = new ArrayList<>(assessmentMode.getGroups()); + for(AssessmentModeToGroup modeToGroup:currentGroups) { + Long currentKey = modeToGroup.getBusinessGroup().getKey(); if(!groupKeys.contains(currentKey)) { - modeToGroupIt.remove(); + assessmentMode.getGroups().remove(modeToGroup); + assessmentModeMgr.deleteAssessmentModeToGroup(modeToGroup); } else { currentKeys.add(currentKey); } @@ -718,10 +719,12 @@ public class AssessmentModeEditController extends FormBasicController { } } else { Set<Long> currentKeys = new HashSet<>(); - for(Iterator<AssessmentModeToArea> modeToAreaIt=assessmentMode.getAreas().iterator(); modeToAreaIt.hasNext(); ) { - Long currentKey = modeToAreaIt.next().getArea().getKey(); + List<AssessmentModeToArea> currentAreas = new ArrayList<>(assessmentMode.getAreas()); + for(AssessmentModeToArea modeToArea:currentAreas) { + Long currentKey = modeToArea.getArea().getKey(); if(!areaKeys.contains(currentKey)) { - modeToAreaIt.remove(); + assessmentMode.getAreas().remove(modeToArea); + assessmentModeMgr.deleteAssessmentModeToArea(modeToArea); } else { currentKeys.add(currentKey); } @@ -743,10 +746,12 @@ public class AssessmentModeEditController extends FormBasicController { } } else { Set<Long> currentKeys = new HashSet<>(); - for(Iterator<AssessmentModeToCurriculumElement> modeToElementIt=assessmentMode.getCurriculumElements().iterator(); modeToElementIt.hasNext(); ) { - Long currentKey = modeToElementIt.next().getCurriculumElement().getKey(); + List<AssessmentModeToCurriculumElement> currentElements = new ArrayList<>(assessmentMode.getCurriculumElements()); + for(AssessmentModeToCurriculumElement modeToElement:currentElements) { + Long currentKey = modeToElement.getCurriculumElement().getKey(); if(!curriculumElementKeys.contains(currentKey)) { - modeToElementIt.remove(); + assessmentMode.getCurriculumElements().remove(modeToElement); + assessmentModeMgr.deleteAssessmentModeToCurriculumElement(modeToElement); } else { currentKeys.add(currentKey); } -- GitLab