From 18b78f01ed2c7f51865c73482e4581a84ac6b2bd Mon Sep 17 00:00:00 2001 From: TobiasNx Date: Thu, 6 Jun 2024 11:30:24 +0200 Subject: [PATCH 1/7] WIP to use the default option as in catmandu #333 --- .../src/main/java/org/metafacture/metafix/FixMethod.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/metafix/src/main/java/org/metafacture/metafix/FixMethod.java b/metafix/src/main/java/org/metafacture/metafix/FixMethod.java index 4ae2ac32..a8045a34 100644 --- a/metafix/src/main/java/org/metafacture/metafix/FixMethod.java +++ b/metafix/src/main/java/org/metafacture/metafix/FixMethod.java @@ -520,6 +520,7 @@ public void apply(final Metafix metafix, final Record record, final List final String defaultValue = map.get(Maps.DEFAULT_MAP_KEY); // TODO: Catmandu uses 'default' final boolean delete = getBoolean(options, "delete"); final boolean printUnknown = getBoolean(options, "print_unknown"); + final String defaultOption = options.get("default"); final Consumer> consumer = c -> record.transform(params.get(0), oldValue -> { final String newValue = map.get(oldValue); @@ -530,8 +531,11 @@ public void apply(final Metafix metafix, final Record record, final List if (c != null) { c.accept(oldValue); } - + elsif (defaultOption != null){ + return defaultOption; + } return defaultValue != null ? defaultValue : delete ? null : oldValue; + } }); From a505fc5316e147d792760e46e06634265e4d5959 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tobias=20B=C3=BClte?= Date: Mon, 9 Sep 2024 12:09:27 +0200 Subject: [PATCH 2/7] Adjust delete function as suggested by @blackwinter #333 --- .../main/java/org/metafacture/metafix/FixMethod.java | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/metafix/src/main/java/org/metafacture/metafix/FixMethod.java b/metafix/src/main/java/org/metafacture/metafix/FixMethod.java index a8045a34..81b7a9ad 100644 --- a/metafix/src/main/java/org/metafacture/metafix/FixMethod.java +++ b/metafix/src/main/java/org/metafacture/metafix/FixMethod.java @@ -517,10 +517,10 @@ public void apply(final Metafix metafix, final Record record, final List map = metafix.getMap(mapName); } - final String defaultValue = map.get(Maps.DEFAULT_MAP_KEY); // TODO: Catmandu uses 'default' + final String defaultOption = options.get("default"); + final String defaultValue = options.getOrDefault(Maps.DEFAULT_MAP_KEY, map.get(Maps.DEFAULT_MAP_KEY)); final boolean delete = getBoolean(options, "delete"); final boolean printUnknown = getBoolean(options, "print_unknown"); - final String defaultOption = options.get("default"); final Consumer> consumer = c -> record.transform(params.get(0), oldValue -> { final String newValue = map.get(oldValue); @@ -531,11 +531,7 @@ public void apply(final Metafix metafix, final Record record, final List if (c != null) { c.accept(oldValue); } - elsif (defaultOption != null){ - return defaultOption; - } - return defaultValue != null ? defaultValue : delete ? null : oldValue; - + return defaultOption != null ? defaultOption : defaultValue != null ? defaultValue : delete ? null : oldValue; } }); From 27634d13c12d9d38285f40a1fce1b12eebe938ab Mon Sep 17 00:00:00 2001 From: Jens Wille Date: Tue, 24 Sep 2024 18:29:20 +0200 Subject: [PATCH 3/7] Change default handling in `lookup()` Fix function. (#356) According to last discussion: * `default` from options. * `__default` from map. --- .../src/main/java/org/metafacture/metafix/FixMethod.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/metafix/src/main/java/org/metafacture/metafix/FixMethod.java b/metafix/src/main/java/org/metafacture/metafix/FixMethod.java index 81b7a9ad..bbb4c3a9 100644 --- a/metafix/src/main/java/org/metafacture/metafix/FixMethod.java +++ b/metafix/src/main/java/org/metafacture/metafix/FixMethod.java @@ -517,8 +517,7 @@ public void apply(final Metafix metafix, final Record record, final List map = metafix.getMap(mapName); } - final String defaultOption = options.get("default"); - final String defaultValue = options.getOrDefault(Maps.DEFAULT_MAP_KEY, map.get(Maps.DEFAULT_MAP_KEY)); + final String defaultValue = options.getOrDefault("default", map.get(Maps.DEFAULT_MAP_KEY)); final boolean delete = getBoolean(options, "delete"); final boolean printUnknown = getBoolean(options, "print_unknown"); @@ -531,7 +530,8 @@ public void apply(final Metafix metafix, final Record record, final List if (c != null) { c.accept(oldValue); } - return defaultOption != null ? defaultOption : defaultValue != null ? defaultValue : delete ? null : oldValue; + + return defaultValue != null ? defaultValue : delete ? null : oldValue; } }); From d84cc94b9ec9ffde0f6880d74d524200cd224cb7 Mon Sep 17 00:00:00 2001 From: TobiasNx Date: Wed, 25 Sep 2024 10:31:06 +0200 Subject: [PATCH 4/7] Add tests #333 --- .../metafix/MetafixLookupTest.java | 54 +++++++++++++++++++ 1 file changed, 54 insertions(+) diff --git a/metafix/src/test/java/org/metafacture/metafix/MetafixLookupTest.java b/metafix/src/test/java/org/metafacture/metafix/MetafixLookupTest.java index f67a1b22..32635c39 100644 --- a/metafix/src/test/java/org/metafacture/metafix/MetafixLookupTest.java +++ b/metafix/src/test/java/org/metafacture/metafix/MetafixLookupTest.java @@ -453,6 +453,14 @@ public void shouldLookupInSeparateInternalMap() { ); } + @Test + public void shouldUseDefaultOptionFromLookupOption() { + assertMap( + "put_map('testMap', Aloha: Alohaeha, 'Moin': 'Moin zäme')", + LOOKUP + " 'testMap', default: 'Tach')" + ); + } + @Test public void shouldLookupInSeparateExternalFileMap() { assertMap( @@ -630,6 +638,52 @@ public void shouldUseDefaultValueIfNotFound() { ); } + @Test + public void shouldUseDefaultOptionValueIfNotFound() { + MetafixTestHelpers.assertFix(streamReceiver, Arrays.asList( + "put_map('testMap', Aloha: Alohaeha, 'Moin': 'Moin zäme')", + "lookup('title.*', 'testMap', default: 'Tach')" + ), + i -> { + i.startRecord("1"); + i.literal("title", "Aloha"); + i.literal("title", "Moin"); + i.literal("title", "Yo"); + i.endRecord(); + }, + o -> { + o.get().startRecord("1"); + o.get().literal("title", "Alohaeha"); + o.get().literal("title", "Moin zäme"); + o.get().literal("title", "Tach"); + o.get().endRecord(); + } + ); + } + + @Test + public void shouldPreferDefaultOptionValueOverDefaultMapValue() { + MetafixTestHelpers.assertFix(streamReceiver, Arrays.asList( + "put_map('testMap', Aloha: Alohaeha, 'Moin': 'Moin zäme', __default: Tach)", + "lookup('title.*', 'testMap', default: 'Hi')" + ), + i -> { + i.startRecord("1"); + i.literal("title", "Aloha"); + i.literal("title", "Moin"); + i.literal("title", "Yo"); + i.endRecord(); + }, + o -> { + o.get().startRecord("1"); + o.get().literal("title", "Alohaeha"); + o.get().literal("title", "Moin zäme"); + o.get().literal("title", "Hi"); + o.get().endRecord(); + } + ); + } + @Test // See https://github.com/metafacture/metafacture-fix/issues/149 public void shouldDeleteNonFoundLookupOnDemand() { From 18b6044fcb35689622ff505d5eefdc70ea3c951c Mon Sep 17 00:00:00 2001 From: TobiasNx Date: Wed, 25 Sep 2024 10:56:00 +0200 Subject: [PATCH 5/7] Adjust documentation for default option #333 --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 287a9602..324b07a7 100644 --- a/README.md +++ b/README.md @@ -706,7 +706,7 @@ Parameters: Options: -- `__default`: Default value to use for unknown values. (Default: Old value) +- `default`: Default value to use for unknown values. (Default: Old value) - `delete`: Whether to delete unknown values. (Default: `false`) - `print_unknown`: Whether to print unknown values. (Default: `false`) @@ -748,7 +748,7 @@ put_rdfmap("path/to/file", "rdf-map", target: "") lookup("path.to.field", "rdf-map") # with default value -lookup("path.to.field", "map-name", __default: "NA") +lookup("path.to.field", "map-name", default: "NA") # with printing unknown values to a file lookup("path.to.field", "map-name", print_unknown: "true", destination: "unknown.txt") From 1ad81319c4a9a0d1080d7b3682cb77a726af2157 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tobias=20B=C3=BClte?= Date: Mon, 14 Oct 2024 15:14:33 +0200 Subject: [PATCH 6/7] Adjust documentation and tests #333 --- README.md | 2 +- .../java/org/metafacture/metafix/MetafixLookupTest.java | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 324b07a7..4a787e86 100644 --- a/README.md +++ b/README.md @@ -706,7 +706,7 @@ Parameters: Options: -- `default`: Default value to use for unknown values. (Default: Old value) +- `"default"`: Default value to use for unknown values. The `"default"`-key needs to be in quotation marks since it is a reserved word in Java. (Default: Old value) - `delete`: Whether to delete unknown values. (Default: `false`) - `print_unknown`: Whether to print unknown values. (Default: `false`) diff --git a/metafix/src/test/java/org/metafacture/metafix/MetafixLookupTest.java b/metafix/src/test/java/org/metafacture/metafix/MetafixLookupTest.java index 32635c39..d1f737da 100644 --- a/metafix/src/test/java/org/metafacture/metafix/MetafixLookupTest.java +++ b/metafix/src/test/java/org/metafacture/metafix/MetafixLookupTest.java @@ -457,7 +457,7 @@ public void shouldLookupInSeparateInternalMap() { public void shouldUseDefaultOptionFromLookupOption() { assertMap( "put_map('testMap', Aloha: Alohaeha, 'Moin': 'Moin zäme')", - LOOKUP + " 'testMap', default: 'Tach')" + LOOKUP + " 'testMap', 'default': 'Tach')" ); } @@ -642,7 +642,7 @@ public void shouldUseDefaultValueIfNotFound() { public void shouldUseDefaultOptionValueIfNotFound() { MetafixTestHelpers.assertFix(streamReceiver, Arrays.asList( "put_map('testMap', Aloha: Alohaeha, 'Moin': 'Moin zäme')", - "lookup('title.*', 'testMap', default: 'Tach')" + "lookup('title.*', 'testMap', 'default': 'Tach')" ), i -> { i.startRecord("1"); @@ -665,7 +665,7 @@ public void shouldUseDefaultOptionValueIfNotFound() { public void shouldPreferDefaultOptionValueOverDefaultMapValue() { MetafixTestHelpers.assertFix(streamReceiver, Arrays.asList( "put_map('testMap', Aloha: Alohaeha, 'Moin': 'Moin zäme', __default: Tach)", - "lookup('title.*', 'testMap', default: 'Hi')" + "lookup('title.*', 'testMap', 'default': 'Hi')" ), i -> { i.startRecord("1"); From 2460c92e05c932a2084191c2adca308f158d6722 Mon Sep 17 00:00:00 2001 From: TobiasNx <61879957+TobiasNx@users.noreply.github.com> Date: Mon, 14 Oct 2024 15:27:39 +0200 Subject: [PATCH 7/7] Apply suggestions from code review #333 Review by @blackwinter Co-authored-by: Jens Wille --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 4a787e86..5ac6efde 100644 --- a/README.md +++ b/README.md @@ -706,7 +706,7 @@ Parameters: Options: -- `"default"`: Default value to use for unknown values. The `"default"`-key needs to be in quotation marks since it is a reserved word in Java. (Default: Old value) +- `default`: Default value to use for unknown values. The option needs to be written in quotation marks because it is a reserved word in Java. (Default: Old value) - `delete`: Whether to delete unknown values. (Default: `false`) - `print_unknown`: Whether to print unknown values. (Default: `false`) @@ -748,7 +748,7 @@ put_rdfmap("path/to/file", "rdf-map", target: "") lookup("path.to.field", "rdf-map") # with default value -lookup("path.to.field", "map-name", default: "NA") +lookup("path.to.field", "map-name", "default": "NA") # with printing unknown values to a file lookup("path.to.field", "map-name", print_unknown: "true", destination: "unknown.txt")