Skip to content

Commit 6d82e08

Browse files
committed
Add FileMap options to put_filemap() Fix function.
#425 #455 #471 #472
1 parent 71da106 commit 6d82e08

File tree

2 files changed

+19
-1
lines changed

2 files changed

+19
-1
lines changed

metafix/src/main/java/org/metafacture/metafix/FixMethod.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,15 @@ public void apply(final Metafix metafix, final Record record, final List<String>
7575
fileMap.setSeparator(options.getOrDefault(FILEMAP_SEPARATOR_OPTION, FILEMAP_DEFAULT_SEPARATOR));
7676
fileMap.setFile(metafix.resolvePath(fileName));
7777

78+
withOption(options, "allow_empty_values", fileMap::setAllowEmptyValues, this::getBoolean);
79+
withOption(options, "compression", fileMap::setCompression);
80+
withOption(options, "decompress_concatenated", fileMap::setDecompressConcatenated, this::getBoolean);
81+
withOption(options, "encoding", fileMap::setEncoding);
82+
withOption(options, "expected_columns", fileMap::setExpectedColumns, this::getInteger);
83+
withOption(options, "ignore_pattern", fileMap::setIgnorePattern);
84+
withOption(options, "key_column", fileMap::setKeyColumn, this::getInteger);
85+
withOption(options, "value_column", fileMap::setValueColumn, this::getInteger);
86+
7887
metafix.putMap(params.size() > 1 ? params.get(1) : fileName, fileMap);
7988
}
8089
},

metafix/src/main/java/org/metafacture/metafix/api/FixFunction.java

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
import java.util.List;
2525
import java.util.Map;
2626
import java.util.Set;
27+
import java.util.function.BiFunction;
2728
import java.util.function.Consumer;
2829
import java.util.stream.Stream;
2930

@@ -33,15 +34,23 @@ public interface FixFunction {
3334
void apply(Metafix metafix, Record record, List<String> params, Map<String, String> options);
3435

3536
default void withOption(final Map<String, String> options, final String key, final Consumer<String> consumer) {
37+
withOption(options, key, consumer, Map::get);
38+
}
39+
40+
default <T> void withOption(final Map<String, String> options, final String key, final Consumer<T> consumer, final BiFunction<Map<String, String>, String, T> function) {
3641
if (options.containsKey(key)) {
37-
consumer.accept(options.get(key));
42+
consumer.accept(function.apply(options, key));
3843
}
3944
}
4045

4146
default boolean getBoolean(final Map<String, String> options, final String key) {
4247
return Boolean.parseBoolean(options.get(key));
4348
}
4449

50+
default int getInteger(final Map<String, String> options, final String key) {
51+
return Integer.parseInt(options.get(key));
52+
}
53+
4554
default int getInteger(final List<String> params, final int index) {
4655
return Integer.parseInt(params.get(index));
4756
}

0 commit comments

Comments
 (0)