Changeset 2638
- Timestamp:
- 02/12/10 13:25:24 (2 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
molgenis/3.3/src/org/molgenis/util/CsvBufferedReader.java
r2625 r2638 191 191 } 192 192 193 public List<Object> getForHeader(String header){ 194 //TODO: very simple function, just return a single column in the form of a list by a header name 193 public List<Object> getForHeader(String header) 194 { 195 // TODO: very simple function, just return a single column in the form 196 // of a list by a header name 195 197 return null; 196 198 } 197 198 public int parse(int noElements, CsvReaderListener... listeners) throws Exception199 200 public int parse(int noElements, CsvReaderListener... listeners) throws Exception 199 201 { 200 202 return this.parse(noElements, null, listeners); 201 203 } 202 204 203 205 // @Override 204 206 public int parse(int noElements, List<Integer> rows, CsvReaderListener... listeners) throws Exception 205 { 207 { 206 208 List<String> headers = null; 207 209 if (hasHeader) headers = colnames(); … … 234 236 int lineCount = 0; 235 237 // int index; 236 238 237 239 // template of the tuple 238 240 Tuple t; 239 if (hasHeader) t = new SimpleTuple(headers); 240 else t = new SimpleTuple(); 241 241 if (hasHeader) t = new SimpleTuple(headers); 242 else 243 t = new SimpleTuple(); 244 242 245 while (lineCount < noElements && (line = reader.readLine()) != null && !isBlockEnd(line)) 243 246 { … … 249 252 logger.warn("found empty line: " + lineCount); 250 253 } 251 else if (rows == null || rows.contains(lineCount))254 else if (rows == null || rows.contains(lineCount)) 252 255 { 253 256 … … 276 279 } 277 280 281 // FIX: 282 // if the last character is empty; split does not return the 283 // last character, values[] is one character too short; then 284 // missing character is not overwritten with null, causing wrong 285 // values in subsequent last columns: previous values are 286 // copied into empty next ones until a new non-empty one 287 if (values.length == headers.size() - 1) 288 { 289 String[] valuesNew = new String[values.length + 1]; 290 for (int i = 0; i < values.length; i++) 291 { 292 valuesNew[i] = values[i]; 293 } 294 valuesNew[values.length] = null; 295 values = valuesNew; 296 } 297 278 298 t.set(values); 279 // logger. debug("found: " + t.toString());299 // logger.info("found: " + t.toString()); 280 300 281 301 // handle the tuple by all handlers … … 294 314 catch (Exception e) 295 315 { 296 // e.printStackTrace();316 // e.printStackTrace(); 297 317 logger.error("parsing of row " + lineCount + " failed: " + e); 298 318 throw new Exception("parse error on line " + lineCount + ": " + e.getMessage()); … … 311 331 return this.parse(Integer.MAX_VALUE, listeners); 312 332 } 313 333 314 334 @Override 315 335 public int parse(List<Integer> rows, CsvReaderListener... listeners) throws Exception … … 333 353 */ 334 354 private String[] split(String string, char separator) 335 { 355 { 336 356 // FIXME: need to trim esp if there are spaces leading up to a \" 337 357 char escape = '"';
Note: See TracChangeset
for help on using the changeset viewer.