extend CsvReaderSettings by list of columns that will not be indexed

This commit is contained in:
2019-12-01 09:21:07 +01:00
parent ffe5ae8652
commit 30504672bc
3 changed files with 131 additions and 5 deletions

View File

@@ -1,23 +1,44 @@
package org.lucares.pdbui;
import java.util.Collection;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import org.lucares.utils.Preconditions;
public class CsvReaderSettings {
private final byte separator;
public CsvReaderSettings(final byte separator) {
this.separator = separator;
private final Set<String> ignoreColumnNames = new HashSet<String>();
public CsvReaderSettings(final byte separator, final String... ignoreColumnNames) {
this(separator, List.of(ignoreColumnNames));
}
public CsvReaderSettings(final char separator) {
public CsvReaderSettings(final char separator, final String... ignoreColumnNames) {
this(separator, List.of(ignoreColumnNames));
}
public CsvReaderSettings(final char separator, final Collection<String> ignoreColumnNames) {
this((byte) separator, ignoreColumnNames);
Preconditions.checkTrue(separator == (byte) separator,
"Only separators that fulfill separator == (byte)separator are supported. "
+ "This restriction is because the parsing algorithm skips the overhead of "
+ "translating bytes to characters.");
this.separator = (byte) separator;
}
public CsvReaderSettings(final byte separator, final Collection<String> ignoreColumns) {
this.separator = separator;
this.ignoreColumnNames.addAll(ignoreColumns);
}
public byte getSeparator() {
return separator;
}
public boolean isIgnoredColumn(final String columnName) {
return ignoreColumnNames.contains(columnName);
}
}

View File

@@ -116,7 +116,7 @@ class CsvToEntryTransformer {
}
private boolean ignoreColum(final String columnName) {
return columnName.startsWith(COLUM_IGNORE_PREFIX);
return settings.isIgnoredColumn(columnName) || columnName.startsWith(COLUM_IGNORE_PREFIX);
}
private static Entry handleCsvLine(final int[] columns, final byte[] line, final int bytesInLine,