From 22e048249cffa762481892339410abb37a784e01 Mon Sep 17 00:00:00 2001 From: Jens Wille Date: Tue, 24 Sep 2024 17:17:05 +0200 Subject: [PATCH] Account for missing values in `to_var()` Fix function. (#282) Also, test edge cases. --- .../org/metafacture/metafix/FixMethod.java | 9 +---- .../metafix/MetafixMethodTest.java | 40 +++++++++++++++++-- 2 files changed, 38 insertions(+), 11 deletions(-) diff --git a/metafix/src/main/java/org/metafacture/metafix/FixMethod.java b/metafix/src/main/java/org/metafacture/metafix/FixMethod.java index 9a46856a..1811826a 100644 --- a/metafix/src/main/java/org/metafacture/metafix/FixMethod.java +++ b/metafix/src/main/java/org/metafacture/metafix/FixMethod.java @@ -123,16 +123,11 @@ public void apply(final Metafix metafix, final Record record, final List metafix.getVars().putAll(options); } }, - to_var { @Override - public void apply(final Metafix metafix, final Record record, final List params, final Map options) { - final String fieldName = params.get(0); - final String variableName = params.get(1); - final String variableValue = record.get(fieldName).toString(); - - metafix.getVars().put(variableName, variableValue); + final Value value = record.get(params.get(0)); + metafix.getVars().put(params.get(1), Value.isNull(value) ? "" : value.toString()); } }, diff --git a/metafix/src/test/java/org/metafacture/metafix/MetafixMethodTest.java b/metafix/src/test/java/org/metafacture/metafix/MetafixMethodTest.java index 0ce11530..27aa442d 100644 --- a/metafix/src/test/java/org/metafacture/metafix/MetafixMethodTest.java +++ b/metafix/src/test/java/org/metafacture/metafix/MetafixMethodTest.java @@ -4098,11 +4098,26 @@ public void shouldCreateVariableFromLiteralValue() { i.endRecord(); i.startRecord("2"); i.startEntity("data"); - i.literal("title", "second-test"); + i.literal("title", "test1"); + i.literal("title", "test2"); + i.endEntity(); + i.endRecord(); + i.startRecord("3"); + i.startEntity("data"); + i.startEntity("title"); + i.literal("key", "value"); + i.endEntity(); + i.endEntity(); + i.endRecord(); + i.startRecord("4"); + i.endRecord(); + i.startRecord("5"); + i.startEntity("data"); + i.literal("title", "final-test"); i.endEntity(); i.endRecord(); }, - o -> { + (o, f) -> { o.get().startRecord("1"); o.get().startEntity("data"); o.get().literal("title", "test"); @@ -4111,9 +4126,26 @@ public void shouldCreateVariableFromLiteralValue() { o.get().endRecord(); o.get().startRecord("2"); o.get().startEntity("data"); - o.get().literal("title", "second-test"); + o.get().literal("title", "test1"); + o.get().literal("title", "test2"); + o.get().endEntity(); + o.get().literal("testResult", "This is a [test1, test2]"); + o.get().endRecord(); + o.get().startRecord("3"); + o.get().startEntity("data"); + o.get().startEntity("title"); + o.get().literal("key", "value"); + f.apply(2).endEntity(); + o.get().literal("testResult", "This is a {key=value}"); + o.get().endRecord(); + o.get().startRecord("4"); + o.get().literal("testResult", "This is a "); + o.get().endRecord(); + o.get().startRecord("5"); + o.get().startEntity("data"); + o.get().literal("title", "final-test"); o.get().endEntity(); - o.get().literal("testResult", "This is a second-test"); + o.get().literal("testResult", "This is a final-test"); o.get().endRecord(); } );