From 2a0a59f71b8814cfac71fb31ba6cf7c0ba97eff4 Mon Sep 17 00:00:00 2001 From: Robert von Burg Date: Tue, 27 Aug 2019 08:24:12 +0200 Subject: [PATCH] [New] Added I18nMessageVisitor with a ToJson visitor --- .../model/i18n/I18nMessageToJsonVisitor.java | 27 +++++++++++++++++++ .../java/li/strolch/utils/I18nMessage.java | 8 ++++-- .../li/strolch/utils/I18nMessageVisitor.java | 6 +++++ 3 files changed, 39 insertions(+), 2 deletions(-) create mode 100644 li.strolch.model/src/main/java/li/strolch/model/i18n/I18nMessageToJsonVisitor.java create mode 100644 li.strolch.utils/src/main/java/li/strolch/utils/I18nMessageVisitor.java diff --git a/li.strolch.model/src/main/java/li/strolch/model/i18n/I18nMessageToJsonVisitor.java b/li.strolch.model/src/main/java/li/strolch/model/i18n/I18nMessageToJsonVisitor.java new file mode 100644 index 000000000..a50b0a5f5 --- /dev/null +++ b/li.strolch.model/src/main/java/li/strolch/model/i18n/I18nMessageToJsonVisitor.java @@ -0,0 +1,27 @@ +package li.strolch.model.i18n; + +import java.util.Properties; + +import com.google.gson.JsonObject; +import li.strolch.utils.I18nMessage; +import li.strolch.utils.I18nMessageVisitor; + +public class I18nMessageToJsonVisitor implements I18nMessageVisitor { + + @Override + public JsonObject visit(I18nMessage message) { + JsonObject json = new JsonObject(); + + json.addProperty("key", message.getKey()); + json.addProperty("message", message.getMessage()); + + Properties values = message.getValues(); + if (!values.isEmpty()) { + JsonObject valuesJ = new JsonObject(); + values.stringPropertyNames().forEach(key -> valuesJ.addProperty(key, values.getProperty(key))); + json.add("values", valuesJ); + } + + return json; + } +} diff --git a/li.strolch.utils/src/main/java/li/strolch/utils/I18nMessage.java b/li.strolch.utils/src/main/java/li/strolch/utils/I18nMessage.java index 53b8b4f4a..1f48526ee 100644 --- a/li.strolch.utils/src/main/java/li/strolch/utils/I18nMessage.java +++ b/li.strolch.utils/src/main/java/li/strolch/utils/I18nMessage.java @@ -48,9 +48,9 @@ public class I18nMessage { return formatMessage(); } - public I18nMessage value(String key, String value) { + public I18nMessage value(String key, Object value) { DBC.INTERIM.assertNotEmpty("key must be set!", key); - this.values.setProperty(key, value == null ? "(null)" : value); + this.values.setProperty(key, value == null ? "(null)" : value.toString()); return this; } @@ -69,6 +69,10 @@ public class I18nMessage { return this.message; } + public T accept(I18nMessageVisitor visitor) { + return visitor.visit(this); + } + @Override public int hashCode() { final int prime = 31; diff --git a/li.strolch.utils/src/main/java/li/strolch/utils/I18nMessageVisitor.java b/li.strolch.utils/src/main/java/li/strolch/utils/I18nMessageVisitor.java new file mode 100644 index 000000000..092a1bed1 --- /dev/null +++ b/li.strolch.utils/src/main/java/li/strolch/utils/I18nMessageVisitor.java @@ -0,0 +1,6 @@ +package li.strolch.utils; + +public interface I18nMessageVisitor { + + T visit(I18nMessage message); +}