/** * This method parses a CSV file and populates the database (and spreadsheet) with data. * * @param sFile The source file to use when populating the database. * @return populated database on success, null otherwise. */ public Datastore openAsCSV(final File sFile) { try { LOGGER.event("open csv database from file"); FileInputStream fis = new FileInputStream(sFile); Datastore result = openAsCSV(fis); fis.close(); return result; } catch (Exception fe) { LOGGER.error("Unable to open as CSV", fe); } // Error encountered - return null. return null; }
@Override public void set(final String value) { try { DataCell dc = (DataCell) legacyDB.getCell(legacyCellID); Matrix m = dc.getVal(); NominalDataValue dv = (NominalDataValue) m.getArgCopy(0); dv.setItsValue(value); m.replaceArg(0, dv); dc.setVal(m); legacyDB.replaceCell(dc); } catch (SystemErrorException se) { LOGGER.error("unable to set text data value", se); } }
@Override public String toString() { try { DataCell dc = (DataCell) legacyDB.getCell(legacyCellID); if (isEmpty()) { DataColumn col = legacyDB.getDataColumn(dc.getItsColID()); return "<" + col.getName() + ">"; } else { Matrix m = dc.getVal(); NominalDataValue dv = (NominalDataValue) m.getArgCopy(0); return dv.getItsValue(); } } catch (SystemErrorException se) { LOGGER.error("unable to toString data value", se); } return "<ERROR - RESTART OPENSHAPA>"; }
/** * This method parses a CSV input stream and populates the database (and spreadsheet) with data. * The caller is responsible for managing the stream. * * @param inStream The stream to deserialized when populating the database. * @return populated database on sucess, null otherwise. */ public Datastore openAsCSV(final InputStream inStream) { try { LOGGER.event("open csv database from stream"); Datastore db = DatastoreFactory.newDatastore(); db.setTitleNotifier(OpenSHAPA.getApplication()); InputStreamReader isr = new InputStreamReader(inStream); BufferedReader csvFile = new BufferedReader(isr); // Read each line of the CSV file. String line = csvFile.readLine(); // If we have a version identifier parse the file using the schema // that matches that identifier. if ("#4".equalsIgnoreCase(line)) { // Version 4 includes a comment for columns. line = parseDefinitions(csvFile, db); while (line != null) { line = parseVariable(csvFile, line, db, "#4"); } } else if ("#3".equalsIgnoreCase(line)) { // Version 3 includes column visible status after the column type // Parse predicate definitions first. line = parseDefinitions(csvFile, db); while (line != null) { line = parseVariable(csvFile, line, db, "#3"); } } else if ("#2".equalsIgnoreCase(line)) { // Parse predicate definitions first. line = parseDefinitions(csvFile, db); while (line != null) { line = parseVariable(csvFile, line, db); } } else { // Use the original schema to load the file - just variables, // and no escape characters. while (line != null) { line = parseVariable(csvFile, line, db); } } csvFile.close(); isr.close(); return db; } catch (IOException e) { LOGGER.error("Unable to read line from CSV file", e); } catch (UserWarningException e) { LOGGER.error("Unable to create new variable.", e); } // Error encountered - return null. return null; }