X-Git-Url: https://git.argeo.org/?a=blobdiff_plain;f=basic%2Fruntime%2Forg.argeo.basic.nodeps%2Fsrc%2Fmain%2Fjava%2Forg%2Fargeo%2Futil%2FCsvParser.java;h=3a429f4adc23a634dfcff402203a20e2c83e04d0;hb=6bb0606505be3e99021c5ff9771c719eb1e1f2e7;hp=9acbfe246ce07ec67da94721fa25b7c23a5e7a9e;hpb=2c834078d24857f491d60a4677c4f2f658a2f7fe;p=lgpl%2Fargeo-commons.git diff --git a/basic/runtime/org.argeo.basic.nodeps/src/main/java/org/argeo/util/CsvParser.java b/basic/runtime/org.argeo.basic.nodeps/src/main/java/org/argeo/util/CsvParser.java index 9acbfe246..3a429f4ad 100644 --- a/basic/runtime/org.argeo.basic.nodeps/src/main/java/org/argeo/util/CsvParser.java +++ b/basic/runtime/org.argeo.basic.nodeps/src/main/java/org/argeo/util/CsvParser.java @@ -29,22 +29,28 @@ public abstract class CsvParser { * * @param lineNumber * the current line number, starts at 1 (the header, if header - * processing is enabled, the first lien otherwise) + * processing is enabled, the first line otherwise) * @param header * the read-only header or null if {@link #setNoHeader(Boolean)} * is true (default is false) * @param tokens - * the parse tokens + * the parsed tokens */ protected abstract void processLine(Integer lineNumber, List header, List tokens); public synchronized void parse(InputStream in) { + parse(in, null); + } + + public synchronized void parse(InputStream in, String encoding) { BufferedReader reader = null; Integer lineCount = 0; try { - reader = new BufferedReader(new InputStreamReader(in)); - + if (encoding == null) + reader = new BufferedReader(new InputStreamReader(in)); + else + reader = new BufferedReader(new InputStreamReader(in, encoding)); List header = null; if (!noHeader) { String headerStr = reader.readLine(); @@ -55,6 +61,9 @@ public abstract class CsvParser { StringBuffer currStr = new StringBuffer(""); Boolean wasInquote = false; while (parseLine(headerStr, header, currStr, wasInquote)) { + headerStr = reader.readLine(); + if (headerStr == null) + break; wasInquote = true; } header = Collections.unmodifiableList(header); @@ -124,7 +133,7 @@ public abstract class CsvParser { if (c == separator) { if (!inQuote) { tokens.add(currStr.toString()); - //System.out.println("# TOKEN: " + currStr); + // System.out.println("# TOKEN: " + currStr); currStr.delete(0, currStr.length()); } else { // we don't remove separator that are in a quoted substring