
net.optionfactory.csv.parser.CsvParser Maven / Gradle / Ivy
The newest version!
package net.optionfactory.csv.parser;
import java.io.Reader;
import java.io.StringReader;
import java.util.List;
import net.optionfactory.csv.parser.javacc.CommaCsvParser;
import net.optionfactory.csv.parser.javacc.SemicolonCsvParser;
import net.optionfactory.csv.parser.javacc.SemicolonCsvParserConstants;
import net.optionfactory.csv.parser.javacc.TabCsvParser;
public interface CsvParser {
public enum Separator {
Semicolon {
@Override
public CsvParserSpi parser(Reader r) {
return new SemicolonCsvParser(r);
}
@Override
public String tokenImage(int e) {
return SemicolonCsvParserConstants.tokenImage[e];
}
},
Comma {
@Override
public CsvParserSpi parser(Reader reader) {
return new CommaCsvParser(reader);
}
@Override
public String tokenImage(int e) {
return CommaCsvParser.tokenImage[e];
}
},
Tab {
@Override
public CsvParserSpi parser(Reader reader) {
return new TabCsvParser(reader);
}
@Override
public String tokenImage(int e) {
return CommaCsvParser.tokenImage[e];
}
};
public abstract CsvParserSpi parser(Reader reader);
public abstract String tokenImage(int e);
}
public enum Trimming {
Never, NonQuotedFields, Always;
}
public enum RecordsTrimming {
Never, EmptyLinesAtEnd;
}
CsvParsingResult parse(Separator format, Trimming trimming, RecordsTrimming recordsTrimming, String sourceName, Reader reader);
CsvParsingResult parse(Separator format, Trimming trimming, RecordsTrimming recordsTrimming, String sourceName, Reader reader, List externalSchema);
default CsvParsingResult parse(Separator format, Trimming trimming, RecordsTrimming recordsTrimming, String sourceName, String source) {
return parse(format, trimming, recordsTrimming, sourceName, new StringReader(source));
}
default CsvParsingResult parse(Separator format, Trimming trimming, RecordsTrimming recordsTrimming, String sourceName, String source, List externalSchema) {
return parse(format, trimming, recordsTrimming, sourceName, new StringReader(source), externalSchema);
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy