From 2fc17485b6983505512c17b28b444cd286ca4391 Mon Sep 17 00:00:00 2001 From: srosse <none@none> Date: Wed, 12 Mar 2014 16:39:42 +0100 Subject: [PATCH] OO-1000: springuified project broker with annotations --- .../datamodel/ProjectBrokerImpl.java | 1 + .../service/ProjectBrokerMailerImpl.java | 32 ++++--- .../service/ProjectBrokerManagerImpl.java | 90 +++++++++---------- .../service/ProjectGroupManagerImpl.java | 64 ++++++------- 4 files changed, 98 insertions(+), 89 deletions(-) diff --git a/src/main/java/org/olat/course/nodes/projectbroker/datamodel/ProjectBrokerImpl.java b/src/main/java/org/olat/course/nodes/projectbroker/datamodel/ProjectBrokerImpl.java index 91a16c6ddca..a55f538f649 100644 --- a/src/main/java/org/olat/course/nodes/projectbroker/datamodel/ProjectBrokerImpl.java +++ b/src/main/java/org/olat/course/nodes/projectbroker/datamodel/ProjectBrokerImpl.java @@ -36,6 +36,7 @@ import org.olat.core.util.resource.OresHelper; */ public class ProjectBrokerImpl extends PersistentObject implements ProjectBroker { + private static final long serialVersionUID = -6007111791449152666L; private List<Project> projectList; /* (non-Javadoc) diff --git a/src/main/java/org/olat/course/nodes/projectbroker/service/ProjectBrokerMailerImpl.java b/src/main/java/org/olat/course/nodes/projectbroker/service/ProjectBrokerMailerImpl.java index fa73752cd98..f41f6f8630d 100644 --- a/src/main/java/org/olat/course/nodes/projectbroker/service/ProjectBrokerMailerImpl.java +++ b/src/main/java/org/olat/course/nodes/projectbroker/service/ProjectBrokerMailerImpl.java @@ -32,7 +32,6 @@ import java.util.UUID; import org.apache.velocity.VelocityContext; import org.olat.basesecurity.GroupRoles; -import org.olat.core.CoreSpringFactory; import org.olat.core.gui.translator.Translator; import org.olat.core.id.Identity; import org.olat.core.id.UserConstants; @@ -52,6 +51,7 @@ import org.olat.course.run.environment.CourseEnvironment; import org.olat.group.BusinessGroup; import org.olat.group.BusinessGroupService; import org.olat.properties.Property; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -91,6 +91,10 @@ public class ProjectBrokerMailerImpl implements ProjectBrokerMailer { private static final String KEY_REMOVE_PARTICIPANT_EMAIL_BODY = "mail.remove.participant.body"; private OLog log = Tracing.createLoggerFor(this.getClass()); + @Autowired + private MailManager mailManager; + @Autowired + private BusinessGroupService businessGroupService; // For Enrollment @@ -101,7 +105,7 @@ public class ProjectBrokerMailerImpl implements ProjectBrokerMailer { } public MailerResult sendEnrolledEmailToManager(Identity enrolledIdentity, Project project, Translator pT) { - List<Identity> coaches = CoreSpringFactory.getImpl(BusinessGroupService.class) + List<Identity> coaches = businessGroupService .getMembers(project.getProjectGroup(), GroupRoles.coach.name()); return sendEmailToGroup(coaches, enrolledIdentity, project, pT.translate(KEY_ENROLLED_EMAIL_TO_MANAGER_SUBJECT), @@ -116,7 +120,7 @@ public class ProjectBrokerMailerImpl implements ProjectBrokerMailer { } public MailerResult sendCancelEnrollmentEmailToManager(Identity enrolledIdentity, Project project, Translator pT) { - List<Identity> coaches = CoreSpringFactory.getImpl(BusinessGroupService.class) + List<Identity> coaches = businessGroupService .getMembers(project.getProjectGroup(), GroupRoles.coach.name()); return sendEmailToGroup(coaches, enrolledIdentity, project, pT.translate(KEY_CANCEL_ENROLLMENT_EMAIL_TO_MANAGER_SUBJECT), @@ -125,7 +129,7 @@ public class ProjectBrokerMailerImpl implements ProjectBrokerMailer { // Project change public MailerResult sendProjectChangedEmailToParticipants(Identity changer, Project project, Translator pT) { - List<Identity> participants = CoreSpringFactory.getImpl(BusinessGroupService.class) + List<Identity> participants = businessGroupService .getMembers(project.getProjectGroup(), GroupRoles.participant.name()); return sendEmailProjectChanged(participants, changer, project, pT.translate(KEY_PROJECT_CHANGED_EMAIL_TO_PARTICIPANT_SUBJECT), @@ -133,7 +137,7 @@ public class ProjectBrokerMailerImpl implements ProjectBrokerMailer { } public MailerResult sendProjectDeletedEmailToParticipants(Identity changer, Project project, Translator pT) { - List<Identity> participants = CoreSpringFactory.getImpl(BusinessGroupService.class) + List<Identity> participants = businessGroupService .getMembers(project.getProjectGroup(), GroupRoles.participant.name()); return sendEmailProjectChanged(participants, changer, project, pT.translate(KEY_PROJECT_DELETED_EMAIL_TO_PARTICIPANT_SUBJECT), @@ -141,7 +145,7 @@ public class ProjectBrokerMailerImpl implements ProjectBrokerMailer { } public MailerResult sendProjectDeletedEmailToManager(Identity changer, Project project, Translator pT) { - List<Identity> coaches = CoreSpringFactory.getImpl(BusinessGroupService.class) + List<Identity> coaches = businessGroupService .getMembers(project.getProjectGroup(), GroupRoles.coach.name()); return sendEmailProjectChanged(coaches, changer, project, pT.translate(KEY_PROJECT_DELETED_EMAIL_TO_PARTICIPANT_SUBJECT), @@ -156,8 +160,8 @@ public class ProjectBrokerMailerImpl implements ProjectBrokerMailer { groupKey = accountManagerGroupProperty.getLongValue(); } if (groupKey != null) { - BusinessGroup accountManagerGroup = CoreSpringFactory.getImpl(BusinessGroupService.class).loadBusinessGroup(groupKey); - List<Identity> participants = CoreSpringFactory.getImpl(BusinessGroupService.class) + BusinessGroup accountManagerGroup = businessGroupService.loadBusinessGroup(groupKey); + List<Identity> participants = businessGroupService .getMembers(accountManagerGroup, GroupRoles.participant.name()); return sendEmailProjectChanged(participants, changer, project, pT.translate(KEY_PROJECT_DELETED_EMAIL_TO_PARTICIPANT_SUBJECT), @@ -194,9 +198,9 @@ public class ProjectBrokerMailerImpl implements ProjectBrokerMailer { MailTemplate enrolledMailTemplate = createMailTemplate(project, enrolledIdentity, subject, body, locale ); MailContext context = new MailContextImpl(project.getProjectBroker(), null, null); MailerResult result = new MailerResult(); - MailBundle bundle = CoreSpringFactory.getImpl(MailManager.class).makeMailBundle(context, enrolledIdentity, enrolledMailTemplate, null, null, result); + MailBundle bundle = mailManager.makeMailBundle(context, enrolledIdentity, enrolledMailTemplate, null, null, result); if(bundle != null) { - CoreSpringFactory.getImpl(MailManager.class).sendMessage(bundle); + mailManager.sendMessage(bundle); } log.audit("ProjectBroker: sendEmail to identity.name=" + enrolledIdentity.getName() + " , mailerResult.returnCode=" + result.getReturnCode()); return result; @@ -214,8 +218,8 @@ public class ProjectBrokerMailerImpl implements ProjectBrokerMailer { String metaId = UUID.randomUUID().toString().replace("-", ""); MailerResult result = new MailerResult(); - MailBundle[] bundles = CoreSpringFactory.getImpl(MailManager.class).makeMailBundles(context, group, enrolledMailTemplate, null, metaId, result); - result.append(CoreSpringFactory.getImpl(MailManager.class).sendMessage(bundles)); + MailBundle[] bundles = mailManager.makeMailBundles(context, group, enrolledMailTemplate, null, metaId, result); + result.append(mailManager.sendMessage(bundles)); log.audit("ProjectBroker: sendEmailToGroup: identities=" + identityNames.toString() + " , mailerResult.returnCode=" + result.getReturnCode()); return result; } @@ -230,8 +234,8 @@ public class ProjectBrokerMailerImpl implements ProjectBrokerMailer { } MailContext context = new MailContextImpl(project.getProjectBroker(), null, null); MailerResult result = new MailerResult(); - MailBundle[] bundles = CoreSpringFactory.getImpl(MailManager.class).makeMailBundles(context, group, enrolledMailTemplate, null, null, result); - result.append(CoreSpringFactory.getImpl(MailManager.class).sendMessage(bundles)); + MailBundle[] bundles = mailManager.makeMailBundles(context, group, enrolledMailTemplate, null, null, result); + result.append(mailManager.sendMessage(bundles)); log.audit("ProjectBroker: sendEmailToGroup: identities=" + identityNames.toString() + " , mailerResult.returnCode=" + result.getReturnCode()); return result; } 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 6fcc228ab85..2ad221ba314 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 @@ -35,13 +35,11 @@ import java.util.List; import java.util.StringTokenizer; import org.hibernate.type.StandardBasicTypes; -import org.hibernate.type.Type; -import org.olat.basesecurity.BaseSecurityManager; +import org.olat.basesecurity.BaseSecurity; import org.olat.basesecurity.GroupRoles; import org.olat.basesecurity.SecurityGroup; -import org.olat.core.CoreSpringFactory; import org.olat.core.commons.modules.bc.vfs.OlatRootFolderImpl; -import org.olat.core.commons.persistence.DBFactory; +import org.olat.core.commons.persistence.DB; import org.olat.core.id.Identity; import org.olat.core.id.OLATResourceable; import org.olat.core.manager.BasicManager; @@ -82,8 +80,16 @@ import org.springframework.stereotype.Service; @Service public class ProjectBrokerManagerImpl extends BasicManager implements ProjectBrokerManager { + @Autowired + private DB dbInstance; + @Autowired + private BaseSecurity securityManager; @Autowired private ProjectGroupManager projectGroupManager; + @Autowired + private BusinessGroupService businessGroupService; + @Autowired + private BusinessGroupRelationDAO businessGroupRelationDao; private static final String ATTACHEMENT_DIR_NAME = "projectbroker_attach"; private CacheWrapper<String,ProjectBroker> projectCache; @@ -122,7 +128,7 @@ public class ProjectBrokerManagerImpl extends BasicManager implements ProjectBro public ProjectBroker createAndSaveProjectBroker() { ProjectBroker projectBroker = new ProjectBrokerImpl(); - DBFactory.getInstance().saveObject(projectBroker); + dbInstance.saveObject(projectBroker); return projectBroker; } @@ -131,7 +137,7 @@ public class ProjectBrokerManagerImpl extends BasicManager implements ProjectBro final Project project = new ProjectImpl(title, description, projectGroup, getProjectBroker(projectBrokerId)); CoordinatorManager.getInstance().getCoordinator().getSyncer().doInSync( projectBrokerOres, new SyncerExecutor() { public void execute() { - DBFactory.getInstance().saveObject(project); + dbInstance.saveObject(project); ProjectBroker projectBroker = getOrLoadProjectBoker(projectBrokerId); if(!projectBroker.getProjects().contains(project)) { projectBroker.getProjects().add(project); @@ -143,10 +149,8 @@ public class ProjectBrokerManagerImpl extends BasicManager implements ProjectBro } public int getSelectedPlaces(Project project) { - BusinessGroupService bgs = CoreSpringFactory.getImpl(BusinessGroupService.class); - - return bgs.countMembers(project.getProjectGroup(), GroupRoles.participant.name()) + - BaseSecurityManager.getInstance().countIdentitiesOfSecurityGroup(project.getCandidateGroup()); + return businessGroupService.countMembers(project.getProjectGroup(), GroupRoles.participant.name()) + + securityManager.countIdentitiesOfSecurityGroup(project.getCandidateGroup()); } @@ -161,7 +165,7 @@ public class ProjectBrokerManagerImpl extends BasicManager implements ProjectBro } public boolean existsProject(Long projectKey) { - return DBFactory.getInstance().findObject(ProjectImpl.class, projectKey) != null; + return dbInstance.findObject(ProjectImpl.class, projectKey) != null; } public boolean enrollProjectParticipant(final Identity identity, final Project project, final ProjectBrokerModuleConfiguration moduleConfig, final int nbrSelectedProjects, final boolean isParticipantInAnyProject) { @@ -172,19 +176,18 @@ public class ProjectBrokerManagerImpl extends BasicManager implements ProjectBro public Boolean execute() { if ( existsProject( project.getKey() ) ) { // For cluster-safe : reload project object here another node might have changed this in the meantime - Project reloadedProject = (Project) DBFactory.getInstance().loadObject(project, true); + Project reloadedProject = (Project) dbInstance.loadObject(project, true); logDebug("enrollProjectParticipant: project.getMaxMembers()=" + reloadedProject.getMaxMembers()); logDebug("enrollProjectParticipant: project.getSelectedPlaces()=" + reloadedProject.getSelectedPlaces()); if (canBeProjectSelectedBy(identity, reloadedProject, moduleConfig, nbrSelectedProjects, isParticipantInAnyProject) ) { if (moduleConfig.isAcceptSelectionManually() ) { - BaseSecurityManager.getInstance().addIdentityToSecurityGroup(identity, reloadedProject.getCandidateGroup()); + securityManager.addIdentityToSecurityGroup(identity, reloadedProject.getCandidateGroup()); logAudit("ProjectBroker: Add as candidate identity=" + identity + " to project=" + reloadedProject); if (isLogDebugEnabled()) { logDebug("ProjectBroker: Add as candidate reloadedProject=" + reloadedProject + " CandidateGroup=" + reloadedProject.getCandidateGroup() ); } } else { - BusinessGroupRelationDAO businessGroupRelationDao = CoreSpringFactory.getImpl(BusinessGroupRelationDAO.class); businessGroupRelationDao.addRole(identity, reloadedProject.getProjectGroup(), GroupRoles.participant.name()); logAudit("ProjectBroker: Add as participant identity=" + identity + " to project=" + reloadedProject); if (isLogDebugEnabled()) { @@ -217,12 +220,11 @@ public class ProjectBrokerManagerImpl extends BasicManager implements ProjectBro public Boolean execute() { if ( existsProject( project.getKey() ) ) { // For cluster-safe : reload project object here another node might have changed this in the meantime - Project reloadedProject = (Project) DBFactory.getInstance().loadObject(project, true); + Project reloadedProject = (Project) dbInstance.loadObject(project, true); // User can only cancel enrollment, when state is 'NOT_ASSIGNED' if (canBeCancelEnrollmentBy(identity, project, moduleConfig)) { - BusinessGroupRelationDAO businessGroupRelationDao = CoreSpringFactory.getImpl(BusinessGroupRelationDAO.class); businessGroupRelationDao.removeRole(identity, reloadedProject.getProjectGroup(), GroupRoles.participant.name()); - BaseSecurityManager.getInstance().removeIdentityFromSecurityGroup(identity, reloadedProject.getCandidateGroup()); + securityManager.removeIdentityFromSecurityGroup(identity, reloadedProject.getCandidateGroup()); logAudit("ProjectBroker: Remove (as participant or waitinglist) identity=" + identity + " from project=" + project); if (isLogDebugEnabled()) { logDebug("ProjectBroker: Remove as participant reloadedProject=" + reloadedProject + " ParticipantGroup=" + reloadedProject.getProjectGroup() + " CandidateGroup=" + reloadedProject.getCandidateGroup()); @@ -256,7 +258,7 @@ public class ProjectBrokerManagerImpl extends BasicManager implements ProjectBro OLATResourceable projectBrokerOres = OresHelper.createOLATResourceableInstance(this.getClass(),projectBrokerId); CoordinatorManager.getInstance().getCoordinator().getSyncer().doInSync( projectBrokerOres, new SyncerExecutor() { public void execute() { - Project reloadedProject = (Project) DBFactory.getInstance().loadObject(project, true); + 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) ) { @@ -264,9 +266,9 @@ public class ProjectBrokerManagerImpl extends BasicManager implements ProjectBro deleteAllDropboxFilesOfProject(reloadedProject, courseEnv, cNode); deleteAllReturnboxFilesOfProject(reloadedProject, courseEnv, cNode); } - DBFactory.getInstance().deleteObject(reloadedProject); + dbInstance.deleteObject(reloadedProject); logInfo("deleteSecurityGroup(project.getCandidateGroup())=" + candidateGroup.getKey()); - BaseSecurityManager.getInstance().deleteSecurityGroup(candidateGroup); + securityManager.deleteSecurityGroup(candidateGroup); // invalide with removing from cache projectCache.remove(projectBrokerId.toString()); } @@ -282,9 +284,8 @@ public class ProjectBrokerManagerImpl extends BasicManager implements ProjectBro int selectedCounter = 0; for (Iterator<Project> iterator = projectList.iterator(); iterator.hasNext();) { Project project = iterator.next(); - BusinessGroupService businessGroupService = CoreSpringFactory.getImpl(BusinessGroupService.class); if (businessGroupService.hasRoles(identity, project.getProjectGroup(), GroupRoles.participant.name()) || - BaseSecurityManager.getInstance().isIdentityInSecurityGroup(identity, project.getCandidateGroup()) ) { + securityManager.isIdentityInSecurityGroup(identity, project.getCandidateGroup()) ) { selectedCounter++; } } @@ -304,16 +305,15 @@ public class ProjectBrokerManagerImpl extends BasicManager implements ProjectBro return false; } // 2. check number of max project members - BusinessGroupService businessGroupService = CoreSpringFactory.getImpl(BusinessGroupService.class); int projectMembers = businessGroupService.countMembers(project.getProjectGroup(), GroupRoles.participant.name()) + - BaseSecurityManager.getInstance().countIdentitiesOfSecurityGroup(project.getCandidateGroup()); + securityManager.countIdentitiesOfSecurityGroup(project.getCandidateGroup()); if ( (project.getMaxMembers() != Project.MAX_MEMBERS_UNLIMITED) && (projectMembers >= project.getMaxMembers()) ) { logDebug("canBeSelectedBy: return false because projectMembers >= getMaxMembers()"); return false; } // 3. number of selected topic per user int nbrOfParticipantsPerTopicValue = moduleConfig.getNbrParticipantsPerTopic(); - if ( (nbrOfParticipantsPerTopicValue != moduleConfig.NBR_PARTICIPANTS_UNLIMITED) && + if ( (nbrOfParticipantsPerTopicValue != ProjectBrokerModuleConfiguration.NBR_PARTICIPANTS_UNLIMITED) && (nbrSelectedProjects >= nbrOfParticipantsPerTopicValue) ) { logDebug("canBeSelectedBy: return false because number of selected topic per user is " + nbrOfParticipantsPerTopicValue); return false; @@ -364,7 +364,7 @@ public class ProjectBrokerManagerImpl extends BasicManager implements ProjectBro // loop over all identities for (Iterator<Identity> iterator2 = chosenIdentities.iterator(); iterator2.hasNext();) { Identity identity = iterator2.next(); - BaseSecurityManager.getInstance().removeIdentityFromSecurityGroup(identity, project.getCandidateGroup()); + securityManager.removeIdentityFromSecurityGroup(identity, project.getCandidateGroup()); logAudit("ProjectBroker: AutoSignOut: identity=" + identity + " from project=" + project); } } @@ -380,7 +380,7 @@ public class ProjectBrokerManagerImpl extends BasicManager implements ProjectBro if (project.getState().equals(Project.STATE_ASSIGNED)) { return Project.STATE_ASSIGNED_ACCOUNT_MANAGER; } else { - if (BaseSecurityManager.getInstance().countIdentitiesOfSecurityGroup(project.getCandidateGroup()) > 0) { + if (securityManager.countIdentitiesOfSecurityGroup(project.getCandidateGroup()) > 0) { return Project.STATE_NOT_ASSIGNED_ACCOUNT_MANAGER; } else { return Project.STATE_NOT_ASSIGNED_ACCOUNT_MANAGER_NO_CANDIDATE; @@ -428,8 +428,8 @@ public class ProjectBrokerManagerImpl extends BasicManager implements ProjectBro } logDebug("All projects are deleted for ProjectBroker=" + projectBroker); projectGroupManager.deleteAccountManagerGroup(courseEnvironment.getCoursePropertyManager(), courseNode); - ProjectBroker reloadedProjectBroker = (ProjectBroker) DBFactory.getInstance().loadObject(projectBroker, true); - DBFactory.getInstance().deleteObject(reloadedProjectBroker); + ProjectBroker reloadedProjectBroker = (ProjectBroker) dbInstance.loadObject(projectBroker, true); + dbInstance.deleteObject(reloadedProjectBroker); // invalide with removing from cache projectCache.remove(projectBrokerId.toString()); logAudit("ProjectBroker: Deleted ProjectBroker=" + projectBroker); @@ -518,7 +518,7 @@ public class ProjectBrokerManagerImpl extends BasicManager implements ProjectBro sb.append("select distinct project from ").append(ProjectImpl.class.getName()).append(" as project ") .append(" where project.projectBroker.key=:projectBrokerKey"); - List<Project> projectList = DBFactory.getInstance().getCurrentEntityManager().createQuery(sb.toString(), Project.class) + List<Project> projectList = dbInstance.getCurrentEntityManager().createQuery(sb.toString(), Project.class) .setParameter("projectBrokerKey", projectBrokerId) .getResultList(); projectBroker = getProjectBroker(projectBrokerId); @@ -529,7 +529,7 @@ public class ProjectBrokerManagerImpl extends BasicManager implements ProjectBro } public ProjectBroker getProjectBroker(Long projectBrokerId) { - return (ProjectBroker) DBFactory.getInstance().loadObject(ProjectBrokerImpl.class, projectBrokerId); + return (ProjectBroker) dbInstance.loadObject(ProjectBrokerImpl.class, projectBrokerId); } private boolean isEnrollmentDateOk(Project project, ProjectBrokerModuleConfiguration moduleConfig) { @@ -561,7 +561,6 @@ public class ProjectBrokerManagerImpl extends BasicManager implements ProjectBro * @return */ public boolean isParticipantInAnyProject(Identity identity, List<Project> projectList) { - BusinessGroupService businessGroupService = CoreSpringFactory.getImpl(BusinessGroupService.class); for (Iterator<Project> iterator = projectList.iterator(); iterator.hasNext();) { Project project = iterator.next(); if (businessGroupService.hasRoles(identity, project.getProjectGroup(), GroupRoles.participant.name()) ) { @@ -573,7 +572,7 @@ public class ProjectBrokerManagerImpl extends BasicManager implements ProjectBro @SuppressWarnings("unchecked") public List<Project> getProjectsWith(BusinessGroup group) { - List<Project> projectList = DBFactory.getInstance().find( + List<Project> projectList = dbInstance.find( "select project from org.olat.course.nodes.projectbroker.datamodel.ProjectImpl as project" + " where project.projectGroup.key = ?", group.getKey(), StandardBasicTypes.LONG); return projectList; @@ -586,7 +585,7 @@ public class ProjectBrokerManagerImpl extends BasicManager implements ProjectBro CoordinatorManager.getInstance().getCoordinator().getSyncer().doInSync( projectBrokerOres, new SyncerExecutor() { public void execute() { // For cluster-safe : reload project object here another node might have changed this in the meantime - Project reloadedProject = (Project) DBFactory.getInstance().loadObject(project, true); + Project reloadedProject = (Project) dbInstance.loadObject(project, true); reloadedProject.setState(state); updateProjectAndInvalidateCache(reloadedProject); } @@ -609,12 +608,14 @@ public class ProjectBrokerManagerImpl extends BasicManager implements ProjectBro } public boolean existProjectName(Long projectBrokerId, String newProjectTitle) { - List<Project> projectList = DBFactory.getInstance().find( - "select project from org.olat.course.nodes.projectbroker.datamodel.ProjectImpl as project" + - " where project.projectBroker = ? and project.title = ?", - new Object[] { projectBrokerId, newProjectTitle }, new Type[] { StandardBasicTypes.LONG, StandardBasicTypes.STRING }); - logDebug("existProjectName projectList.size=" + projectList.size()); - return !projectList.isEmpty(); + StringBuilder sb = new StringBuilder(); + sb.append("select count(project.key) from ").append(ProjectImpl.class.getName()).append(" as project") + .append(" where project.projectBroker.key=:projectBrokerId and project.title=:title"); + + Number count = dbInstance.getCurrentEntityManager().createQuery(sb.toString(), Number.class) + .setParameter("projectBrokerId", projectBrokerId).setParameter("title", newProjectTitle) + .getSingleResult(); + return count == null ? false : count.intValue() > 0; } @Override @@ -622,7 +623,6 @@ public class ProjectBrokerManagerImpl extends BasicManager implements ProjectBro List<Project> myProjects = new ArrayList<Project>(); List<Project> allProjects = getProjectListBy(projectBrokerId); //TODO: for better performance should be done with sql query instead of a loop - BusinessGroupService businessGroupService = CoreSpringFactory.getImpl(BusinessGroupService.class); for (Iterator<Project> iterator = allProjects.iterator(); iterator.hasNext();) { Project project = iterator.next(); if (businessGroupService.hasRoles(identity, project.getProjectGroup(), GroupRoles.participant.name()) ) { @@ -634,7 +634,7 @@ public class ProjectBrokerManagerImpl extends BasicManager implements ProjectBro @Override public Project getProject(Long resourceableId) { - return (Project)DBFactory.getInstance().findObject(ProjectImpl.class, resourceableId); + return (Project)dbInstance.findObject(ProjectImpl.class, resourceableId); } @Override @@ -644,7 +644,7 @@ public class ProjectBrokerManagerImpl extends BasicManager implements ProjectBro //TODO: for better performance should be done with sql query instead of a loop for (Iterator<Project> iterator = allProjects.iterator(); iterator.hasNext();) { Project project = iterator.next(); - if (CoreSpringFactory.getImpl(BusinessGroupService.class) + if (businessGroupService .hasRoles(identity, project.getProjectGroup(), GroupRoles.coach.name())) { myProjects.add(project); } @@ -655,7 +655,7 @@ public class ProjectBrokerManagerImpl extends BasicManager implements ProjectBro private void updateProjectAndInvalidateCache(final Project project) { // avoid hibernate exception : object with same identifier already exist in session. // reload object from db, because project is a detached object but could be already in hibernate session - Project reloadedProject = (Project) DBFactory.getInstance().loadObject(project, true); + Project reloadedProject = (Project) dbInstance.loadObject(project, true); // set all value on reloadedProject with values from updated project reloadedProject.setTitle(project.getTitle()); reloadedProject.setState(project.getState()); @@ -669,7 +669,7 @@ public class ProjectBrokerManagerImpl extends BasicManager implements ProjectBro reloadedProject.setCustomFieldValue(index, project.getCustomFieldValue(index)); } reloadedProject.setAttachedFileName(project.getAttachmentFileName()); - DBFactory.getInstance().updateObject(reloadedProject); + dbInstance.updateObject(reloadedProject); // invalide with removing from cache projectCache.remove(project.getProjectBroker().getKey().toString()); } 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 f0fee56d741..0746611c2ca 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 @@ -29,11 +29,10 @@ import java.util.ArrayList; import java.util.Iterator; import java.util.List; -import org.olat.basesecurity.BaseSecurityManager; +import org.olat.basesecurity.BaseSecurity; import org.olat.basesecurity.GroupRoles; import org.olat.basesecurity.SecurityGroup; -import org.olat.core.CoreSpringFactory; -import org.olat.core.commons.persistence.DBFactory; +import org.olat.core.commons.persistence.DB; import org.olat.core.gui.UserRequest; import org.olat.core.id.Identity; import org.olat.core.manager.BasicManager; @@ -67,8 +66,16 @@ import org.springframework.stereotype.Service; @Service public class ProjectGroupManagerImpl extends BasicManager implements ProjectGroupManager { + @Autowired + private DB dbInstance; + @Autowired + private BaseSecurity securityManager; + @Autowired + private RepositoryManager repositoryManager; @Autowired private ProjectBrokerManager projectBrokerManager; + @Autowired + private BusinessGroupService businessGroupService; ////////////////////// @@ -85,7 +92,7 @@ public class ProjectGroupManagerImpl extends BasicManager implements ProjectGrou } logDebug("groupKey=" + groupKey); if (groupKey != null) { - accountManagerGroup = CoreSpringFactory.getImpl(BusinessGroupService.class).loadBusinessGroup(groupKey); + accountManagerGroup = businessGroupService.loadBusinessGroup(groupKey); logDebug("load businessgroup=" + accountManagerGroup); if (accountManagerGroup != null) { return accountManagerGroup; @@ -98,8 +105,7 @@ public class ProjectGroupManagerImpl extends BasicManager implements ProjectGrou } } else { logDebug("No group for project-broker exist => create a new one"); - BusinessGroupService businessGroupService = CoreSpringFactory.getImpl(BusinessGroupService.class); - RepositoryEntry re = RepositoryManager.getInstance().lookupRepositoryEntry(cpm.getCourseResource(), false); + RepositoryEntry re = repositoryManager.lookupRepositoryEntry(cpm.getCourseResource(), false); accountManagerGroup = businessGroupService.createBusinessGroup(identity, groupName, groupDescription, -1, -1, false, false, re); int i = 2; while (accountManagerGroup == null) { @@ -125,7 +131,7 @@ public class ProjectGroupManagerImpl extends BasicManager implements ProjectGrou Property accountManagerGroupProperty = cpm.findCourseNodeProperty(courseNode, null, null, ProjectBrokerCourseNode.CONF_ACCOUNTMANAGER_GROUP_KEY); if (accountManagerGroupProperty != null) { Long groupKey = accountManagerGroupProperty.getLongValue(); - BusinessGroup accountManagerGroup = CoreSpringFactory.getImpl(BusinessGroupService.class).loadBusinessGroup(groupKey); + BusinessGroup accountManagerGroup = businessGroupService.loadBusinessGroup(groupKey); if (accountManagerGroup != null) { return isAccountManager(identity, accountManagerGroup); } @@ -139,9 +145,9 @@ public class ProjectGroupManagerImpl extends BasicManager implements ProjectGrou if (accountManagerGroupProperty != null) { Long groupKey = accountManagerGroupProperty.getLongValue(); if (groupKey != null) { - BusinessGroup accountManagerGroup = CoreSpringFactory.getImpl(BusinessGroupService.class).loadBusinessGroup(groupKey); + BusinessGroup accountManagerGroup = businessGroupService.loadBusinessGroup(groupKey); if (accountManagerGroup != null) { - BusinessGroupService bgs = CoreSpringFactory.getImpl(BusinessGroupService.class); + BusinessGroupService bgs = businessGroupService; bgs.deleteBusinessGroup(accountManagerGroup); logAudit("ProjectBroker: Deleted accountManagerGroup=" + accountManagerGroup); } else { @@ -159,7 +165,7 @@ public class ProjectGroupManagerImpl extends BasicManager implements ProjectGrou public BusinessGroup updateAccountManagerGroupName(Identity ureqIdentity, String groupName, String groupDescription, BusinessGroup accountManagerGroup) { // group could have been deleted, see FXOLAT-295 if (accountManagerGroup != null){ - BusinessGroupService bgs = CoreSpringFactory.getImpl(BusinessGroupService.class); + BusinessGroupService bgs = businessGroupService; BusinessGroup reloadedBusinessGroup = bgs.loadBusinessGroup(accountManagerGroup); return bgs.updateBusinessGroup(ureqIdentity, reloadedBusinessGroup, groupName, groupDescription, reloadedBusinessGroup.getExternalId(), reloadedBusinessGroup.getManagedFlagsString(), @@ -175,9 +181,8 @@ public class ProjectGroupManagerImpl extends BasicManager implements ProjectGrou public BusinessGroup createProjectGroupFor(Long projectBrokerId, Identity identity, String groupName, String groupDescription, Long courseId) { //List<Project> projects = ProjectBrokerManagerFactory.getProjectBrokerManager().getProjectListBy(projectBrokerId); - BusinessGroupService businessGroupService = CoreSpringFactory.getImpl(BusinessGroupService.class); OLATResource resource = CourseFactory.loadCourse(courseId).getCourseEnvironment().getCourseGroupManager().getCourseResource(); - RepositoryEntry re = RepositoryManager.getInstance().lookupRepositoryEntry(resource, false); + RepositoryEntry re = repositoryManager.lookupRepositoryEntry(resource, false); //BGContext context = createGroupContext(CourseFactory.loadCourse(courseId)); logDebug("createProjectGroupFor groupName=" + groupName); @@ -195,7 +200,7 @@ public class ProjectGroupManagerImpl extends BasicManager implements ProjectGrou } public void deleteProjectGroupFor(Project project) { - BusinessGroupService bgs = CoreSpringFactory.getImpl(BusinessGroupService.class); + BusinessGroupService bgs = businessGroupService; bgs.deleteBusinessGroup(project.getProjectGroup()); } @@ -206,7 +211,7 @@ public class ProjectGroupManagerImpl extends BasicManager implements ProjectGrou */ @Override public BusinessGroup changeProjectGroupName(Identity ureqIdentity, BusinessGroup projectGroup, String groupName, String groupDescription, OLATResource courseResource) { - BusinessGroupService bgs = CoreSpringFactory.getImpl(BusinessGroupService.class); + BusinessGroupService bgs = businessGroupService; BusinessGroup reloadedBusinessGroup = bgs.loadBusinessGroup(projectGroup); return bgs.updateBusinessGroup(ureqIdentity, reloadedBusinessGroup, groupName, groupDescription, reloadedBusinessGroup.getExternalId(), reloadedBusinessGroup.getManagedFlagsString(), @@ -220,8 +225,8 @@ public class ProjectGroupManagerImpl extends BasicManager implements ProjectGrou public List<Identity> execute() { List<Identity> addedIdentities = new ArrayList<Identity>(); for (Identity identity : addIdentities) { - if (!BaseSecurityManager.getInstance().isIdentityInSecurityGroup(identity, project.getCandidateGroup()) ) { - BaseSecurityManager.getInstance().addIdentityToSecurityGroup(identity, project.getCandidateGroup()); + if (!securityManager.isIdentityInSecurityGroup(identity, project.getCandidateGroup()) ) { + securityManager.addIdentityToSecurityGroup(identity, project.getCandidateGroup()); addedIdentities.add(identity); logAudit("ProjectBroker: Add user as candidate, identity=" + identity); } @@ -239,9 +244,9 @@ public class ProjectGroupManagerImpl extends BasicManager implements ProjectGrou //TODO gsync CoordinatorManager.getInstance().getCoordinator().getSyncer().doInSync(project.getProjectGroup(), new SyncerCallback<Boolean>(){ public Boolean execute() { - Project reloadedProject = (Project) DBFactory.getInstance().loadObject(project, true); + Project reloadedProject = (Project) dbInstance.loadObject(project, true); for (Identity identity : addIdentities) { - BaseSecurityManager.getInstance().removeIdentityFromSecurityGroup(identity, reloadedProject.getCandidateGroup()); + securityManager.removeIdentityFromSecurityGroup(identity, reloadedProject.getCandidateGroup()); logAudit("ProjectBroker: Remove user as candidate, identity=" + identity); // fireEvents ? } @@ -253,9 +258,9 @@ public class ProjectGroupManagerImpl extends BasicManager implements ProjectGrou public BusinessGroupAddResponse acceptCandidates(final List<Identity> identities, final Project project, final Identity actionIdentity, final boolean autoSignOut, final boolean isAcceptSelectionManually) { Codepoint.codepoint(ProjectBrokerManagerImpl.class, "beforeDoInSync"); - final Project reloadedProject = (Project) DBFactory.getInstance().loadObject(project, true); + final Project reloadedProject = (Project) dbInstance.loadObject(project, true); final BusinessGroupAddResponse response = new BusinessGroupAddResponse(); - final BusinessGroupService bgs = CoreSpringFactory.getImpl(BusinessGroupService.class); + final BusinessGroupService bgs = businessGroupService; BusinessGroupAddResponse state = bgs.addParticipants(actionIdentity, null, identities, reloadedProject.getProjectGroup(), null); response.getAddedIdentities().addAll(state.getAddedIdentities()); response.getIdentitiesAlreadyInGroup().addAll(state.getAddedIdentities()); @@ -264,7 +269,7 @@ public class ProjectGroupManagerImpl extends BasicManager implements ProjectGrou public Boolean execute() { for (final Identity identity : identities) { if (!bgs.hasRoles(identity, reloadedProject.getProjectGroup(), GroupRoles.participant.name())) { - BaseSecurityManager.getInstance().removeIdentityFromSecurityGroup(identity, reloadedProject.getCandidateGroup()); + securityManager.removeIdentityFromSecurityGroup(identity, reloadedProject.getCandidateGroup()); logAudit("ProjectBroker: Accept candidate, identity=" + identity + " project=" + reloadedProject); } } @@ -288,13 +293,13 @@ public class ProjectGroupManagerImpl extends BasicManager implements ProjectGrou @Override public void sendGroupChangeEvent(Project project, Long courseResourceableId, Identity identity) { ICourse course = CourseFactory.loadCourse(courseResourceableId); - RepositoryEntry ores = RepositoryManager.getInstance().lookupRepositoryEntry(course, true); + RepositoryEntry ores = repositoryManager.lookupRepositoryEntry(course, true); MultiUserEvent modifiedEvent = new BusinessGroupModifiedEvent(BusinessGroupModifiedEvent.IDENTITY_ADDED_EVENT, project.getProjectGroup(), identity); CoordinatorManager.getInstance().getCoordinator().getEventBus().fireEventToListenersOf(modifiedEvent, ores); } public boolean isProjectManager(Identity identity, Project project) { - return CoreSpringFactory.getImpl(BusinessGroupService.class).hasRoles(identity, project.getProjectGroup(), GroupRoles.coach.name()); + return businessGroupService.hasRoles(identity, project.getProjectGroup(), GroupRoles.coach.name()); } public boolean isProjectManagerOrAdministrator(UserRequest ureq, CourseEnvironment courseEnv, Project project) { @@ -304,16 +309,16 @@ public class ProjectGroupManagerImpl extends BasicManager implements ProjectGrou } public boolean isProjectParticipant(Identity identity, Project project) { - return CoreSpringFactory.getImpl(BusinessGroupService.class).hasRoles(identity, project.getProjectGroup(), GroupRoles.participant.name()); + return businessGroupService.hasRoles(identity, project.getProjectGroup(), GroupRoles.participant.name()); } public boolean isProjectCandidate(Identity identity, Project project) { - return BaseSecurityManager.getInstance().isIdentityInSecurityGroup(identity, project.getCandidateGroup()); + return securityManager.isIdentityInSecurityGroup(identity, project.getCandidateGroup()); } @Override public BusinessGroup setProjectGroupMaxMembers(Identity ureqIdentity, BusinessGroup projectGroup, int maxMembers ) { - BusinessGroupService bgs = CoreSpringFactory.getImpl(BusinessGroupService.class); + BusinessGroupService bgs = businessGroupService; BusinessGroup reloadedBusinessGroup = bgs.loadBusinessGroup(projectGroup); logDebug("ProjectGroup.name=" + reloadedBusinessGroup.getName() + " setMaxParticipants=" + maxMembers); return bgs.updateBusinessGroup(ureqIdentity, reloadedBusinessGroup, reloadedBusinessGroup.getName(), @@ -329,7 +334,6 @@ public class ProjectGroupManagerImpl extends BasicManager implements ProjectGrou if (businessGroup == null) { return false; } - BusinessGroupService businessGroupService = CoreSpringFactory.getImpl(BusinessGroupService.class); return businessGroupService.hasRoles(identity, businessGroup, GroupRoles.participant.name()) || businessGroupService.hasRoles(identity, businessGroup, GroupRoles.coach.name()); } @@ -340,7 +344,7 @@ public class ProjectGroupManagerImpl extends BasicManager implements ProjectGrou List<Project> projectList = projectBrokerManager.getProjectListBy(projectBrokerId); for (Iterator<Project> iterator = projectList.iterator(); iterator.hasNext();) { Project project = iterator.next(); - List<Identity> candidates = BaseSecurityManager.getInstance().getIdentitiesOfSecurityGroup(project.getCandidateGroup()); + List<Identity> candidates = securityManager.getIdentitiesOfSecurityGroup(project.getCandidateGroup()); if (!candidates.isEmpty()) { logAudit("ProjectBroker: Accept ALL candidates, project=" + project); acceptCandidates(candidates, project, actionIdentity, autoSignOut, isAcceptSelectionManually); @@ -354,7 +358,7 @@ public class ProjectGroupManagerImpl extends BasicManager implements ProjectGrou List<Project> projectList = projectBrokerManager.getProjectListBy(projectBrokerId); for (Iterator<Project> iterator = projectList.iterator(); iterator.hasNext();) { Project project = iterator.next(); - List<Identity> candidates = BaseSecurityManager.getInstance().getIdentitiesOfSecurityGroup(project.getCandidateGroup()); + List<Identity> candidates = securityManager.getIdentitiesOfSecurityGroup(project.getCandidateGroup()); if (!candidates.isEmpty()) { return true; } @@ -364,7 +368,7 @@ public class ProjectGroupManagerImpl extends BasicManager implements ProjectGrou @Override public boolean isCandidateListEmpty(SecurityGroup candidateGroup) { - List<Identity> candidates = BaseSecurityManager.getInstance().getIdentitiesOfSecurityGroup(candidateGroup); + List<Identity> candidates = securityManager.getIdentitiesOfSecurityGroup(candidateGroup); return candidates.isEmpty(); } -- GitLab