All Downloads are FREE. Search and download functionalities are using the official Maven repository.

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