@Override public Collection<ProjectRole> getProjectRoles(final ApplicationUser user, final Project project) { Collection<ProjectRole> associatedProjectRoles = new TreeSet<ProjectRole>(ProjectRoleComparator.COMPARATOR); Collection<ProjectRole> allProjectRoles = getProjectRoles(); for (final ProjectRole projectRole : allProjectRoles) { final ProjectRoleActors projectRoleActors = getProjectRoleActors(projectRole, project); if (projectRoleActors.contains(user)) { associatedProjectRoles.add(projectRole); } } return associatedProjectRoles; }
@Override public boolean isRoleNameUnique(String name) { return !roleWithNameExists(name); }
@Override public ProjectRole createRole(ProjectRole projectRole) { if (projectRole == null || projectRole.getName() == null) { throw new IllegalArgumentException("ProjectRole can not be created with a null name"); } if (isRoleNameUnique(projectRole.getName())) { return projectRoleAndActorStore.addProjectRole(projectRole); } else { throw new IllegalArgumentException("A project role with the provided name: " + projectRole.getName() + ", already exists in the system."); } }
@Override public boolean isUserInProjectRole(ApplicationUser user, ProjectRole projectRole, Project project) { try { UtilTimerStack.push("DefaultProjectRoleManager.isUserInProjectRole"); if (project == null || project.getId() == null) { throw new IllegalArgumentException("The project id can not be null"); } if (projectRole == null) { throw new IllegalArgumentException("ProjectRole can not be null"); } return getProjectRoleActors(projectRole, project).contains(user); } finally { UtilTimerStack.pop("DefaultProjectRoleManager.isUserInProjectRole"); } }
@Override public ProjectIdToProjectRoleIdsMap createProjectIdToProjectRolesMap(final ApplicationUser user, final Collection<Long> projectIds) { ProjectIdToProjectRoleIdsMap map = new ProjectIdToProjectRoleIdsMap(); if (projectIds != null && !projectIds.isEmpty()) { ProjectManager projectManager = ComponentAccessor.getProjectManager(); for (final Long projectId : projectIds) { Collection<ProjectRole> projectRoles = getProjectRoles(user, projectManager.getProjectObj(projectId)); for (final ProjectRole projectRole : projectRoles) { map.add(projectId, projectRole.getId()); } } } return map; }