package fi.otavanopisto.muikku.plugins.dnm;
import java.io.IOException;
import java.util.Map;
import java.util.logging.Logger;
import javax.enterprise.context.ApplicationScoped;
import javax.enterprise.event.Observes;
import javax.enterprise.event.TransactionPhase;
import javax.inject.Inject;
import fi.otavanopisto.muikku.model.workspace.WorkspaceEntity;
import fi.otavanopisto.muikku.schooldata.WorkspaceEntityController;
import fi.otavanopisto.muikku.schooldata.events.SchoolDataWorkspaceDiscoveredEvent;
import fi.otavanopisto.muikku.schooldata.events.SchoolDataWorkspaceUpdatedEvent;
@ApplicationScoped
public class DeusNexMachinaSchoolDataWorkspaceListener {
@Inject
private Logger logger;
@Inject
private WorkspaceEntityController workspaceEntityController;
@Inject
private DeusNexMachinaController deusNexMachinaController;
public void onDeusNexMachinaWorkspaceDiscoveredEvent(@Observes (during = TransactionPhase.BEFORE_COMPLETION) SchoolDataWorkspaceDiscoveredEvent event) {
if (event.getExtra() != null && event.getExtra().containsKey("pyramusVariables")) {
@SuppressWarnings("unchecked")
Map<String, String> pyramusVariables = (Map<String, String>) event.getExtra().get("pyramusVariables");
if (pyramusVariables != null && pyramusVariables.containsKey("dnmid")) {
String dnmId = pyramusVariables.get("dnmid");
Long workspaceEntityId = event.getDiscoveredWorkspaceEntityId();
try {
deusNexMachinaController.setWorkspaceEntityIdDnmId(dnmId, workspaceEntityId);
} catch (IOException e) {
logger.severe("Could not store workspace entity id dnmId map");
}
}
}
}
public void onDeusNexMachinaWorkspaceUpdatedEvent(@Observes SchoolDataWorkspaceUpdatedEvent event) {
if (event.getExtra() != null && event.getExtra().containsKey("pyramusVariables")) {
@SuppressWarnings("unchecked")
Map<String, String> pyramusVariables = (Map<String, String>) event.getExtra().get("pyramusVariables");
if (pyramusVariables != null && pyramusVariables.containsKey("dnmid")) {
String dnmId = pyramusVariables.get("dnmid");
WorkspaceEntity workspaceEntity = workspaceEntityController.findWorkspaceByDataSourceAndIdentifier(event.getDataSource(), event.getIdentifier());
if (workspaceEntity != null) {
try {
deusNexMachinaController.setWorkspaceEntityIdDnmId(dnmId, workspaceEntity.getId());
} catch (IOException e) {
logger.severe("Could not store workspace entity id dnmId map");
}
}
}
}
}
}