package at.medevit.elexis.cobasmira.model;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.util.ArrayList;
import java.util.List;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.Status;
import org.eclipse.ui.statushandlers.StatusManager;
import at.medevit.elexis.cobasmira.Activator;
import at.medevit.elexis.cobasmira.ui.Preferences;
import au.com.bytecode.opencsv.bean.ColumnPositionMappingStrategy;
import au.com.bytecode.opencsv.bean.CsvToBean;
import ch.elexis.core.data.activator.CoreHub;
public class CobasMiraMapping {
public static final String CSV_FORMAT =
"testNameCM,testNameShort,TestName,laborwertID,refM,refW,noDecPlaces";
protected static List<CobasMiraMappingLabitem> cobasMappings;
public static List<CobasMiraMappingLabitem> getCmmappings(){
if (cobasMappings == null) {
CobasMiraMapping.initializeMapping();
}
return cobasMappings;
}
public static void initializeMapping(){
cobasMappings = new ArrayList<CobasMiraMappingLabitem>();
String csvFilename =
CoreHub.localCfg.get(Preferences.MAPPINGSCSVFILE,
Preferences.getDefaultMappingCSVLocation());
try {
CsvToBean csvBean = new CsvToBean();
List csvList = csvBean.parse(getMappingStrategy(), new FileReader(csvFilename));
for (Object object : csvList) {
CobasMiraMappingLabitem cmlItem = (CobasMiraMappingLabitem) object;
cobasMappings.add(cmlItem);
}
} catch (FileNotFoundException e) {
Status status =
new Status(IStatus.WARNING, Activator.PLUGIN_ID, "CSV Mapping File nicht gefunden",
e);
StatusManager.getManager().handle(status, StatusManager.SHOW);
}
cobasMappings.remove(0);
}
private static ColumnPositionMappingStrategy getMappingStrategy(){
ColumnPositionMappingStrategy strategy = new ColumnPositionMappingStrategy();
strategy.setType(CobasMiraMappingLabitem.class);
String[] columns = new String[] {
"testNameCM", "testNameShort", "TestName", "laborwertID", "refM", "refW", "noDecPlaces"
};
strategy.setColumnMapping(columns);
return strategy;
}
public static String getId(String testName){
for (CobasMiraMappingLabitem cMMLI : cobasMappings) {
if (cMMLI.getTestNameCM().equalsIgnoreCase(testName))
return cMMLI.getLaborwertID();
}
return null;
}
public static int getNoDecPlaces(String testName){
for (CobasMiraMappingLabitem cMMLI : cobasMappings) {
try {
if (cMMLI.getTestNameCM().equalsIgnoreCase(testName))
return Integer.parseInt(cMMLI.getNoDecPlaces());
} catch (NumberFormatException e) {
Status status =
new Status(IStatus.WARNING, Activator.PLUGIN_ID,
"Error parsing integer string", e);
StatusManager.getManager().handle(status, StatusManager.SHOW);
}
}
return 0;
}
}