package fi.otavanopisto.muikku.plugins.schooldatapyramus;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.annotation.PostConstruct;
import javax.enterprise.context.ApplicationScoped;
import javax.inject.Inject;
import org.apache.commons.lang3.StringUtils;
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.ObjectMapper;
import fi.otavanopisto.muikku.controller.PluginSettingsController;
@ApplicationScoped
public class PyramusStudentActivityMapper {
@Inject
private Logger logger;
@Inject
private PluginSettingsController pluginSettingsController;
@PostConstruct
public void init() {
try {
String archiveChanges = pluginSettingsController.getPluginSetting(SchoolDataPyramusPluginDescriptor.PLUGIN_NAME, "participationTypeChange.archive");
if (StringUtils.isNotBlank(archiveChanges)) {
toInactive = new ObjectMapper().readValue(archiveChanges, new TypeReference<Map<String, Long>>() {});
}
String unarchiveChanges = pluginSettingsController.getPluginSetting(SchoolDataPyramusPluginDescriptor.PLUGIN_NAME, "participationTypeChange.unarchive");
if (StringUtils.isNotBlank(unarchiveChanges)) {
toActive = new ObjectMapper().readValue(unarchiveChanges, new TypeReference<Map<String, Long>>() {});
}
} catch (IOException e) {
logger.log(Level.SEVERE, "Invalid settings", e);
}
if (toInactive == null) {
toInactive = new HashMap<String, Long>();
}
if (toActive == null) {
toActive = new HashMap<String, Long>();
}
}
public Long toInactive(Long participationTypeId) {
return toInactive.get(String.valueOf(participationTypeId));
}
public Long toActive(Long participationTypeId) {
return toActive.get(String.valueOf(participationTypeId));
}
public boolean isActive(Long participationTypeId) {
return toInactive.containsKey(String.valueOf(participationTypeId));
}
public Set<String> getActive() {
return toInactive.keySet();
}
public Set<String> getInactive() {
return toActive.keySet();
}
public String getActiveCDT() {
return StringUtils.join(getActive(), ',');
}
public String getInactiveCDT() {
return StringUtils.join(getInactive(), ',');
}
private Map<String, Long> toInactive;
private Map<String,Long> toActive;
}