diff --git a/src/main/java/org/olat/course/nodes/projectbroker/service/ProjectBrokerManagerImpl.java b/src/main/java/org/olat/course/nodes/projectbroker/service/ProjectBrokerManagerImpl.java index 37f275e82d2d08f57e2ea1926da6726e9b85bf9f..ad3c8fdf9dea1396c9e50a14d3d663bc3452b666 100644 --- a/src/main/java/org/olat/course/nodes/projectbroker/service/ProjectBrokerManagerImpl.java +++ b/src/main/java/org/olat/course/nodes/projectbroker/service/ProjectBrokerManagerImpl.java @@ -254,31 +254,33 @@ public class ProjectBrokerManagerImpl extends BasicManager implements ProjectBro * This method is cluster-save. * @see org.olat.course.nodes.projectbroker.service.ProjectBrokerManager#deleteProject(org.olat.course.nodes.projectbroker.datamodel.Project) */ + @Override public void deleteProject(final Project project, final boolean deleteGroup, final CourseEnvironment courseEnv, final CourseNode cNode) { logDebug("start deleteProject project=" + project); - final Long projectBrokerId = project.getProjectBroker().getKey(); - OLATResourceable projectBrokerOres = OresHelper.createOLATResourceableInstance(this.getClass(),projectBrokerId); - CoordinatorManager.getInstance().getCoordinator().getSyncer().doInSync( projectBrokerOres, new SyncerExecutor() { - public void execute() { - Project reloadedProject = (Project) dbInstance.loadObject(project, true); - // delete first candidate-group, project-group will be deleted after deleting project - SecurityGroup candidateGroup = reloadedProject.getCandidateGroup(); - if ( (courseEnv != null) && (cNode != null) ) { - deleteAllAttachmentFilesOfProject(reloadedProject, courseEnv, cNode); - deleteAllDropboxFilesOfProject(reloadedProject, courseEnv, cNode); - deleteAllReturnboxFilesOfProject(reloadedProject, courseEnv, cNode); - } - dbInstance.deleteObject(reloadedProject); - logInfo("deleteSecurityGroup(project.getCandidateGroup())=" + candidateGroup.getKey()); - securityManager.deleteSecurityGroup(candidateGroup); - // invalide with removing from cache - projectCache.remove(projectBrokerId.toString()); + Long projectBrokerId = project.getProjectBroker().getKey(); + OLATResourceable projectBrokerOres = OresHelper.createOLATResourceableInstance(this.getClass(), projectBrokerId); + + CoordinatorManager.getInstance().getCoordinator().getSyncer().doInSync( projectBrokerOres, () -> { + Project reloadedProject = (Project) dbInstance.loadObject(project, true); + BusinessGroup projectGroup = reloadedProject.getProjectGroup(); + // delete first candidate-group, project-group will be deleted after deleting project + SecurityGroup candidateGroup = reloadedProject.getCandidateGroup(); + if ( (courseEnv != null) && (cNode != null) ) { + deleteAllAttachmentFilesOfProject(reloadedProject, courseEnv, cNode); + deleteAllDropboxFilesOfProject(reloadedProject, courseEnv, cNode); + deleteAllReturnboxFilesOfProject(reloadedProject, courseEnv, cNode); + } + dbInstance.deleteObject(reloadedProject); + logInfo("deleteSecurityGroup(project.getCandidateGroup())=" + candidateGroup.getKey()); + securityManager.deleteSecurityGroup(candidateGroup); + // invalide with removing from cache + projectCache.remove(projectBrokerId.toString()); + if (deleteGroup) { + logDebug("start deleteProjectGroupFor project group=" + projectGroup); + businessGroupService.deleteBusinessGroup(projectGroup); } }); - if (deleteGroup) { - logDebug("start deleteProjectGroupFor project=" + project); - projectGroupManager.deleteProjectGroupFor(project); - } + logDebug("DONE deleteProjectGroupFor project=" + project); } diff --git a/src/main/java/org/olat/course/nodes/projectbroker/service/ProjectGroupManager.java b/src/main/java/org/olat/course/nodes/projectbroker/service/ProjectGroupManager.java index 777c557eb8d1e3ca2170b8ca3e6d0ae1abbb4177..57243d8b03dc1c8c28565f348c4904a5c3468487 100644 --- a/src/main/java/org/olat/course/nodes/projectbroker/service/ProjectGroupManager.java +++ b/src/main/java/org/olat/course/nodes/projectbroker/service/ProjectGroupManager.java @@ -146,7 +146,7 @@ public interface ProjectGroupManager { * @param project * @return */ - public abstract List<Identity> addCandidates(List<Identity> addIdentities, Project project); + public List<Identity> addCandidates(List<Identity> addIdentities, Project project); /** * Remove identities as candidates. @@ -161,7 +161,7 @@ public interface ProjectGroupManager { * @param courseResourceableId * @param identity */ - public abstract void sendGroupChangeEvent(Project project, Long courseResourceableId, Identity identity); + public void sendGroupChangeEvent(Project project, Long courseResourceableId, Identity identity); /** * Accept all candidates for a project broker as participants. @@ -170,14 +170,14 @@ public interface ProjectGroupManager { * @param autoSignOut * @param isAcceptSelectionManually */ - public abstract void acceptAllCandidates(Long projectBrokerId, Identity actionIdentity, boolean autoSignOut, boolean isAcceptSelectionManually); + public void acceptAllCandidates(Long projectBrokerId, Identity actionIdentity, boolean autoSignOut, boolean isAcceptSelectionManually); /** * Returns true when a certain project-broker has any candidates in any of his projects * @param projectBrokerId * @return */ - public abstract boolean hasProjectBrokerAnyCandidates(Long projectBrokerId); + public boolean hasProjectBrokerAnyCandidates(Long projectBrokerId); /** * Check if a certain identity has the role of project-manager for certain project. diff --git a/src/main/java/org/olat/course/nodes/projectbroker/service/ProjectGroupManagerImpl.java b/src/main/java/org/olat/course/nodes/projectbroker/service/ProjectGroupManagerImpl.java index 895c29cda27fe5c28b2e0702e69cde7828e18078..3589312976abe152ad900dc36572da223150d29c 100644 --- a/src/main/java/org/olat/course/nodes/projectbroker/service/ProjectGroupManagerImpl.java +++ b/src/main/java/org/olat/course/nodes/projectbroker/service/ProjectGroupManagerImpl.java @@ -185,6 +185,7 @@ public class ProjectGroupManagerImpl implements ProjectGroupManager { return false; } + @Override public void deleteAccountManagerGroup( CoursePropertyManager cpm, CourseNode courseNode) { log.debug("deleteAccountManagerGroup start..."); Property accountManagerGroupProperty = cpm.findCourseNodeProperty(courseNode, null, null, ProjectBrokerCourseNode.CONF_ACCOUNTMANAGER_GROUP_KEY); @@ -245,8 +246,7 @@ public class ProjectGroupManagerImpl implements ProjectGroupManager { @Override public void deleteProjectGroupFor(Project project) { - BusinessGroupService bgs = businessGroupService; - bgs.deleteBusinessGroup(project.getProjectGroup()); + businessGroupService.deleteBusinessGroup(project.getProjectGroup()); } /** @@ -256,9 +256,8 @@ public class ProjectGroupManagerImpl implements ProjectGroupManager { */ @Override public BusinessGroup changeProjectGroupName(Identity ureqIdentity, BusinessGroup projectGroup, String groupName, String groupDescription, OLATResource courseResource) { - BusinessGroupService bgs = businessGroupService; - BusinessGroup reloadedBusinessGroup = bgs.loadBusinessGroup(projectGroup); - return bgs.updateBusinessGroup(ureqIdentity, reloadedBusinessGroup, groupName, groupDescription, + BusinessGroup reloadedBusinessGroup = businessGroupService.loadBusinessGroup(projectGroup); + return businessGroupService.updateBusinessGroup(ureqIdentity, reloadedBusinessGroup, groupName, groupDescription, reloadedBusinessGroup.getExternalId(), reloadedBusinessGroup.getManagedFlagsString(), reloadedBusinessGroup.getMinParticipants(), reloadedBusinessGroup.getMaxParticipants()); }