/* * ImportMarkerSet.java * * Created on den 27 april 2004, 10:40 */ package se.arexis.agdb.util.FileImport; import java.io.*; import java.util.*; import se.arexis.agdb.db.*; import se.arexis.agdb.util.*; /** * * @author wali */ public class ImportMarkerSet extends AbstractImportMarkerSet { /** * Return the format name */ public String getFormat() { return "MARKERSET"; } /** Creates a new instance of ImportMarkerSet */ public ImportMarkerSet() { CREATE = true; SUID=true; NAME=true; try { headers = new ArrayList<FileHeader>(); headers.add(new FileHeader("MARKERSET","LIST",1,'\t')); } catch (Exception e) { e.printStackTrace(); } } public boolean check() { Errors.logInfo("CheckMarkerSet started"); boolean res = false; DbImportFile dbInFile = new DbImportFile(); String fullFileName = ""; String checkFileName = ""; String errMessage = null; try { // Create the markerset DbMarker dbMarker = new DbMarker(); dbInFile.setStatus(conn_viss,ifid,"0%"); // Store the file on server filesystem fullFileName = dbInFile.storeImportFileBLOB(conn_viss, ifid); checkFileName = fullFileName + "_checked"; FileHeader header = FileParser.scanFileHeader(fullFileName); String type = header.formatTypeName().toUpperCase(); char delimiter = header.delimiter().charValue(); FileParser fileParser = new FileParser(fullFileName); fileParser.Parse(FileTypeDefinitionList.matchingDefinitions(FileTypeDefinition.MARKERSET, FileTypeDefinition.LIST)); // Write out the result to a new file FileWriter fileOut = new FileWriter(checkFileName); fileOut.write(header.objectTypeName() +"/"+header.formatTypeName() +"/"+header.version() +"/"+header.delimiter()+"\n"); String titles[] = fileParser.columnTitles(); for (int j=0;j<titles.length;j++) { fileOut.write(titles[j] + delimiter); } fileOut.write("\n"); String errorMsg = ""; errorMsg = checkList(fileParser,fileOut,delimiter); fileOut.close(); /* * Save the file to database */ dbInFile.saveCheckedFile(conn_viss, ifid, checkFileName); if (errorMsg.startsWith("ERROR:")) { res = false; dbInFile.setStatus(conn_viss,ifid,"ERROR"); // Add a message to the log dbInFile.addErrMsg(conn_viss,ifid,"File checked failed for sampling unit "+DbSamplingUnit.getSUName(conn_viss,Integer.toString(sampleUnitId)) +". <br>"+errorMsg ); Errors.logDebug("ErrorMsg="+errorMsg); } else if (errorMsg.startsWith("WARNING:")) { dbInFile.setStatus(conn_viss,ifid,"WARNING"); res = true; // Add a message to the log dbInFile.addErrMsg(conn_viss,ifid,"Warnings exists: "+errorMsg ); } else { dbInFile.setStatus(conn_viss,ifid,"CHECKED"); res = true; // Add a message to the log dbInFile.addErrMsg(conn_viss,ifid,"File checked for sampling unit "+DbSamplingUnit.getSUName(conn_viss,Integer.toString(sampleUnitId)) + ".<br>"+errorMsg); } } catch (Exception e) { dbInFile.setStatus(conn_viss,ifid,"ERROR"); // Add a message to the log dbInFile.addErrMsg(conn_viss,ifid,e.getMessage()); e.printStackTrace(System.err); if (errMessage == null) { errMessage = e.getMessage(); } } finally { try { /* * Delete files uploaded */ File tmp = new File(checkFileName); tmp.delete(); tmp = new File(fullFileName); tmp.delete(); } catch (Exception ignore) { } } Errors.logInfo("CheckMarkerSet completed"); return res; } public boolean imp() { boolean res = false; DbMarker dbMarker = null; String fullFileName = ""; String errMessage = null; DbImportFile dbInFile = new DbImportFile(); Errors.logInfo("ImportMarkerSet started"); try { dbMarker = new DbMarker(); // Store the file on server filesystem fullFileName = dbInFile.storeImportFileBLOB(conn_viss, ifid); FileParser fileParser = new FileParser(fullFileName); fileParser.Parse(FileTypeDefinitionList.matchingDefinitions(FileTypeDefinition.MARKERSET, FileTypeDefinition.LIST)); String markersetName=""; String comm = ""; //get the name of the variable set that was given by the user markersetName=dbInFile.get_chk_name(connection, Integer.parseInt(ifid)); dbMarker.CreateMarkerSets(fileParser, connection, markersetName, comm, sampleUnitId, Integer.parseInt(userId)); errMessage = dbMarker.getErrorMessage(); Assertion.assertMsg(errMessage == null || errMessage.trim().equals(""), errMessage); dbInFile.setStatus(conn_viss,ifid,"IMPORTED"); //dbInFile.UpdateImportFile(connection,null,null,"Done",Integer.parseInt(ifid),Integer.parseInt(userId)); // Add a message to the log dbInFile.addErrMsg(conn_viss,ifid,"File imported to sampling unit "+DbSamplingUnit.getSUName(conn_viss,Integer.toString(sampleUnitId)) +"Note: Markers is always imported in Create mode."); res = true; Errors.logInfo("ImportMarkerSet ended"); } catch (Exception e) { Errors.logError("ImportMarkerSet.imp(...) " + e.getMessage()); dbInFile.setStatus(conn_viss,ifid,"ERROR"); // Add a message to the log dbInFile.addErrMsg(conn_viss,ifid,e.getMessage()); e.printStackTrace(System.err); if (errMessage == null) { errMessage = e.getMessage(); } } finally { try { /* * Delete files uploaded */ File tmp = new File(fullFileName); tmp.delete(); } catch (Exception ignore) { } } return res; } }