package fi.otavanopisto.muikku.schooldata; import java.util.List; import java.util.logging.Logger; import javax.inject.Inject; import fi.otavanopisto.muikku.dao.base.SchoolDataSourceDAO; import fi.otavanopisto.muikku.dao.users.EnvironmentRoleEntityDAO; import fi.otavanopisto.muikku.dao.users.RoleEntityDAO; import fi.otavanopisto.muikku.dao.users.RoleSchoolDataIdentifierDAO; import fi.otavanopisto.muikku.dao.users.SystemRoleEntityDAO; import fi.otavanopisto.muikku.dao.workspace.WorkspaceRoleEntityDAO; import fi.otavanopisto.muikku.model.base.SchoolDataSource; import fi.otavanopisto.muikku.model.users.EnvironmentRoleEntity; import fi.otavanopisto.muikku.model.users.RoleEntity; import fi.otavanopisto.muikku.model.users.RoleSchoolDataIdentifier; import fi.otavanopisto.muikku.model.users.SystemRoleEntity; import fi.otavanopisto.muikku.model.workspace.WorkspaceRoleArchetype; import fi.otavanopisto.muikku.model.workspace.WorkspaceRoleEntity; import fi.otavanopisto.muikku.schooldata.entity.Role; import fi.otavanopisto.muikku.schooldata.entity.User; public class RoleController { @Inject private Logger logger; @Inject private SchoolDataSourceDAO schoolDataSourceDAO; @Inject private UserSchoolDataController userSchoolDataController; @Inject private RoleEntityDAO roleEntityDAO; @Inject private EnvironmentRoleEntityDAO environmentRoleEntityDAO; @Inject private WorkspaceRoleEntityDAO workspaceRoleEntityDAO; @Inject private SystemRoleEntityDAO systemRoleEntityDAO; @Inject private RoleSchoolDataIdentifierDAO roleSchoolDataIdentifierDAO; /* Roles */ public Role findRole(SchoolDataSource dataSource, String identifier) { return userSchoolDataController.findRole(dataSource,identifier); } public Role findRoleByDataSourceAndRoleEntity(String schoolDataSource, RoleEntity roleEntity) { SchoolDataSource dataSource = schoolDataSourceDAO.findByIdentifier(schoolDataSource); if (dataSource == null) { logger.severe("Could not find school data source " + schoolDataSource); return null; } RoleSchoolDataIdentifier schoolDataIdentifier = roleSchoolDataIdentifierDAO.findByDataSourceAndRoleEntity(dataSource, roleEntity); if (schoolDataIdentifier != null) { return findRole(dataSource, schoolDataIdentifier.getIdentifier()); } return null; } public Role findUserEnvironmentRole(User user) { return userSchoolDataController.findUserEnvironmentRole(user); } public List<Role> listRoles() { return userSchoolDataController.listRoles(); } public void setRoleEntity(String schoolDataSource, String identifier, RoleEntity roleEntity) { SchoolDataSource dataSource = schoolDataSourceDAO.findByIdentifier(schoolDataSource); if (dataSource != null) { RoleSchoolDataIdentifier roleSchoolDataIdentifier = roleSchoolDataIdentifierDAO.findByDataSourceAndIdentifier(dataSource, identifier); if (roleSchoolDataIdentifier != null) { if (roleEntity != null) { roleSchoolDataIdentifierDAO.updateRoleEntity(roleSchoolDataIdentifier, roleEntity); } else { roleSchoolDataIdentifierDAO.delete(roleSchoolDataIdentifier); } } else { if (roleEntity != null) { roleSchoolDataIdentifierDAO.create(dataSource, identifier, roleEntity); } } } } /* Role Entities */ public RoleEntity findRoleEntityById(Long id) { return roleEntityDAO.findById(id); } public RoleEntity findRoleEntityByDataSourceAndIdentifier(SchoolDataSource schoolDataSource, String identifier) { RoleSchoolDataIdentifier schoolDataIdentifier = roleSchoolDataIdentifierDAO.findByDataSourceAndIdentifier(schoolDataSource, identifier); if (schoolDataIdentifier != null) { return schoolDataIdentifier.getRoleEntity(); } return null; } public RoleEntity findRoleEntityByDataSourceAndIdentifier(String dataSource, String identifier) { SchoolDataSource schoolDataSource = schoolDataSourceDAO.findByIdentifier(dataSource); if (schoolDataSource != null) { return findRoleEntityByDataSourceAndIdentifier(schoolDataSource, identifier); } else { logger.severe("Could not find school data source: " + dataSource); return null; } } public RoleEntity findRoleEntity(Role role) { return findRoleEntityByDataSourceAndIdentifier(role.getSchoolDataSource(), role.getIdentifier()); } public List<RoleEntity> listRoleEntities() { return roleEntityDAO.listAll(); } public List<EnvironmentRoleEntity> listEnvironmentRoleEntities() { return environmentRoleEntityDAO.listAll(); } public List<SystemRoleEntity> listSystemRoleEntities() { return systemRoleEntityDAO.listAll(); } /* Workspace Role Entities */ public List<WorkspaceRoleEntity> listWorkspaceRoleEntities() { return workspaceRoleEntityDAO.listAll(); } public WorkspaceRoleEntity findWorkspaceRoleEntityById(Long id) { return workspaceRoleEntityDAO.findById(id); } public WorkspaceRoleEntity findWorkspaceRoleEntityByName(String name) { return workspaceRoleEntityDAO.findByName(name); } public WorkspaceRoleEntity findWorkspaceRoleEntity(Role role) { RoleEntity roleEntity = findRoleEntity(role); if (roleEntity instanceof WorkspaceRoleEntity) { return (WorkspaceRoleEntity) roleEntity; } return null; } public List<WorkspaceRoleEntity> listWorkspaceRoleEntitiesByArchetype(WorkspaceRoleArchetype archetype) { return workspaceRoleEntityDAO.listByArchetype(archetype); } }