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); +}