package fi.otavanopisto.muikku.schooldata.events; import java.util.HashMap; import java.util.Map; import java.util.logging.Logger; import javax.annotation.PostConstruct; import javax.enterprise.event.Observes; import javax.inject.Inject; import fi.otavanopisto.muikku.model.users.EnvironmentRoleArchetype; import fi.otavanopisto.muikku.model.users.EnvironmentRoleEntity; import fi.otavanopisto.muikku.model.users.RoleSchoolDataIdentifier; import fi.otavanopisto.muikku.model.workspace.WorkspaceRoleArchetype; import fi.otavanopisto.muikku.model.workspace.WorkspaceRoleEntity; import fi.otavanopisto.muikku.users.EnvironmentRoleEntityController; import fi.otavanopisto.muikku.users.RoleSchoolDataIdentifierController; import fi.otavanopisto.muikku.users.WorkspaceRoleEntityController; public class DefaultSchoolDataRoleListener { @Inject private Logger logger; @Inject private EnvironmentRoleEntityController environmentRoleEntityController; @Inject private WorkspaceRoleEntityController workspaceRoleEntityController; @Inject private RoleSchoolDataIdentifierController roleSchoolDataIdentifierController; @PostConstruct public void init() { discoveredWorkspaceRoles = new HashMap<>(); discoveredEnvironmentRoles = new HashMap<>(); } public void onSchoolDataEnvironmentRoleDiscoveredEvent(@Observes SchoolDataEnvironmentRoleDiscoveredEvent event) { String discoverId = "ER-" + event.getDataSource() + "/" + event.getIdentifier(); if (discoveredEnvironmentRoles.containsKey(discoverId)) { event.setDiscoveredEnvironmentRoleEntityId(discoveredEnvironmentRoles.get(discoverId)); return; } EnvironmentRoleEntity environmentRoleEntity = environmentRoleEntityController.findEnvironmentRoleEntity(event.getDataSource(), event.getIdentifier()); if (environmentRoleEntity == null) { EnvironmentRoleArchetype roleArchetype = EnvironmentRoleArchetype.valueOf(event.getArchetype().name()); environmentRoleEntity = environmentRoleEntityController.createEnvironmentRoleEntity(event.getDataSource(), event.getIdentifier(), roleArchetype, event.getName()); discoveredEnvironmentRoles.put(discoverId, environmentRoleEntity.getId()); event.setDiscoveredEnvironmentRoleEntityId(environmentRoleEntity.getId()); } else { logger.warning("EnvironmentRoleEntity for " + event.getIdentifier() + "/" + event.getDataSource() + " already exists"); } } public void onSchoolDataEnvironmentRoleRemoved(@Observes SchoolDataEnvironmentRoleRemovedEvent event) { RoleSchoolDataIdentifier roleSchoolDataIdentifier = roleSchoolDataIdentifierController.findRoleSchoolDataIdentifierByDataSourceAndIdentifier(event.getDataSource(), event.getIdentifier()); if (roleSchoolDataIdentifier != null) { roleSchoolDataIdentifierController.deleteRoleSchoolDataIdentifier(roleSchoolDataIdentifier); } } public void onSchoolDataWorkspaceRoleDiscoveredEvent(@Observes SchoolDataWorkspaceRoleDiscoveredEvent event) { String discoverId = "WSR-" + event.getDataSource() + "/" + event.getIdentifier(); if (discoveredWorkspaceRoles.containsKey(discoverId)) { event.setDiscoveredWorkspaceRoleEntityId(discoveredWorkspaceRoles.get(discoverId)); return; } WorkspaceRoleEntity workspaceRoleEntity = workspaceRoleEntityController.findWorkspaceRoleEntityByDataSourceAndIdentifier(event.getDataSource(), event.getIdentifier()); if (workspaceRoleEntity == null) { WorkspaceRoleArchetype roleArchetype = WorkspaceRoleArchetype.valueOf(event.getArchetype().name()); workspaceRoleEntity = workspaceRoleEntityController.createWorkspaceRoleEntity(event.getDataSource(), event.getIdentifier(), roleArchetype, event.getName()); discoveredWorkspaceRoles.put(discoverId, workspaceRoleEntity.getId()); event.setDiscoveredWorkspaceRoleEntityId(workspaceRoleEntity.getId()); } else { logger.warning("WorkspaceRoleEntity for " + event.getIdentifier() + "/" + event.getDataSource() + " already exists"); } } public void onSchoolDataWorkspaceRoleRemoved(@Observes SchoolDataWorkspaceRoleRemovedEvent event) { RoleSchoolDataIdentifier roleSchoolDataIdentifier = roleSchoolDataIdentifierController.findRoleSchoolDataIdentifierByDataSourceAndIdentifier(event.getDataSource(), event.getIdentifier()); if (roleSchoolDataIdentifier != null) { roleSchoolDataIdentifierController.deleteRoleSchoolDataIdentifier(roleSchoolDataIdentifier); } } private Map<String, Long> discoveredEnvironmentRoles; private Map<String, Long> discoveredWorkspaceRoles; }