From c348ea7d7801193455cbb8fd61d80284571f634e Mon Sep 17 00:00:00 2001 From: marhali Date: Mon, 11 Apr 2022 22:07:18 +0200 Subject: [PATCH] update mapper to new data structure --- .../easyi18n/io/parser/json/JsonMapper.java | 6 +- .../easyi18n/io/parser/json5/Json5Mapper.java | 8 +- .../parser/properties/PropertiesMapper.java | 27 ++-- .../properties/PropertiesParserStrategy.java | 8 +- .../easyi18n/io/parser/yaml/YamlMapper.java | 6 +- .../easyi18n/mapper/AbstractMapperTest.java | 6 +- .../easyi18n/mapper/Json5MapperTest.java | 30 ++-- .../easyi18n/mapper/JsonMapperTest.java | 30 ++-- .../easyi18n/mapper/PropertiesMapperTest.java | 145 ++++++++++++++---- .../easyi18n/mapper/YamlMapperTest.java | 30 ++-- 10 files changed, 191 insertions(+), 105 deletions(-) diff --git a/src/main/java/de/marhali/easyi18n/io/parser/json/JsonMapper.java b/src/main/java/de/marhali/easyi18n/io/parser/json/JsonMapper.java index bd4c1bf..328eae7 100644 --- a/src/main/java/de/marhali/easyi18n/io/parser/json/JsonMapper.java +++ b/src/main/java/de/marhali/easyi18n/io/parser/json/JsonMapper.java @@ -4,8 +4,8 @@ import com.google.gson.JsonElement; import com.google.gson.JsonObject; import com.google.gson.JsonPrimitive; -import de.marhali.easyi18n.model.Translation; import de.marhali.easyi18n.model.TranslationNode; +import de.marhali.easyi18n.model.TranslationValue; import de.marhali.easyi18n.util.StringUtil; import org.apache.commons.lang.StringEscapeUtils; @@ -30,7 +30,7 @@ public class JsonMapper { // Nested element - run recursively read(locale, value.getAsJsonObject(), childNode); } else { - Translation translation = childNode.getValue(); + TranslationValue translation = childNode.getValue(); String content = entry.getValue().isJsonArray() ? JsonArrayMapper.read(value.getAsJsonArray()) @@ -55,7 +55,7 @@ public class JsonMapper { json.add(key, childJson); } } else { - Translation translation = childNode.getValue(); + TranslationValue translation = childNode.getValue(); String content = translation.get(locale); if(content != null) { diff --git a/src/main/java/de/marhali/easyi18n/io/parser/json5/Json5Mapper.java b/src/main/java/de/marhali/easyi18n/io/parser/json5/Json5Mapper.java index 80b36ae..dc6bdfe 100644 --- a/src/main/java/de/marhali/easyi18n/io/parser/json5/Json5Mapper.java +++ b/src/main/java/de/marhali/easyi18n/io/parser/json5/Json5Mapper.java @@ -1,12 +1,12 @@ package de.marhali.easyi18n.io.parser.json5; -import de.marhali.easyi18n.model.Translation; import de.marhali.easyi18n.model.TranslationNode; +import de.marhali.easyi18n.model.TranslationValue; import de.marhali.easyi18n.util.StringUtil; - import de.marhali.json5.Json5Element; import de.marhali.json5.Json5Object; import de.marhali.json5.Json5Primitive; + import org.apache.commons.lang.StringEscapeUtils; import org.apache.commons.lang.math.NumberUtils; @@ -28,7 +28,7 @@ public class Json5Mapper { // Nested element - run recursively read(locale, value.getAsJson5Object(), childNode); } else { - Translation translation = childNode.getValue(); + TranslationValue translation = childNode.getValue(); String content = value.isJson5Array() ? Json5ArrayMapper.read(value.getAsJson5Array()) @@ -54,7 +54,7 @@ public class Json5Mapper { } } else { - Translation translation = childNode.getValue(); + TranslationValue translation = childNode.getValue(); String content = translation.get(locale); if(content != null) { if(Json5ArrayMapper.isArray(content)) { diff --git a/src/main/java/de/marhali/easyi18n/io/parser/properties/PropertiesMapper.java b/src/main/java/de/marhali/easyi18n/io/parser/properties/PropertiesMapper.java index 0ae62b2..2cac6ae 100644 --- a/src/main/java/de/marhali/easyi18n/io/parser/properties/PropertiesMapper.java +++ b/src/main/java/de/marhali/easyi18n/io/parser/properties/PropertiesMapper.java @@ -1,8 +1,9 @@ package de.marhali.easyi18n.io.parser.properties; -import de.marhali.easyi18n.model.KeyPath; -import de.marhali.easyi18n.model.Translation; import de.marhali.easyi18n.model.TranslationData; +import de.marhali.easyi18n.model.KeyPath; +import de.marhali.easyi18n.model.TranslationValue; +import de.marhali.easyi18n.util.KeyPathConverter; import de.marhali.easyi18n.util.StringUtil; import org.apache.commons.lang.StringEscapeUtils; @@ -16,15 +17,17 @@ import java.util.Map; */ public class PropertiesMapper { - public static void read(String locale, SortableProperties properties, TranslationData data) { + public static void read(String locale, SortableProperties properties, + TranslationData data, KeyPathConverter converter) { + for(Map.Entry entry : properties.entrySet()) { - KeyPath key = new KeyPath(String.valueOf(entry.getKey())); + KeyPath key = converter.fromString(String.valueOf(entry.getKey())); Object value = entry.getValue(); - Translation translation = data.getTranslation(key); + TranslationValue translation = data.getTranslation(key); if(translation == null) { - translation = new Translation(); + translation = new TranslationValue(); } String content = value instanceof String[] @@ -36,12 +39,14 @@ public class PropertiesMapper { } } - public static void write(String locale, SortableProperties properties, TranslationData data) { - for(KeyPath key : data.getFullKeys()) { - Translation translation = data.getTranslation(key); + public static void write(String locale, SortableProperties properties, + TranslationData data, KeyPathConverter converter) { - if(translation != null && translation.containsKey(locale)) { - String simpleKey = key.toSimpleString(); + for(KeyPath key : data.getFullKeys()) { + TranslationValue translation = data.getTranslation(key); + + if(translation != null && translation.containsLocale(locale)) { + String simpleKey = converter.toString(key); String content = translation.get(locale); if(PropertiesArrayMapper.isArray(content)) { diff --git a/src/main/java/de/marhali/easyi18n/io/parser/properties/PropertiesParserStrategy.java b/src/main/java/de/marhali/easyi18n/io/parser/properties/PropertiesParserStrategy.java index 8f29534..22e7722 100644 --- a/src/main/java/de/marhali/easyi18n/io/parser/properties/PropertiesParserStrategy.java +++ b/src/main/java/de/marhali/easyi18n/io/parser/properties/PropertiesParserStrategy.java @@ -7,6 +7,7 @@ import de.marhali.easyi18n.model.TranslationData; import de.marhali.easyi18n.model.TranslationFile; import de.marhali.easyi18n.model.TranslationNode; import de.marhali.easyi18n.settings.ProjectSettings; +import de.marhali.easyi18n.util.KeyPathConverter; import org.jetbrains.annotations.NotNull; @@ -20,8 +21,11 @@ import java.io.StringWriter; */ public class PropertiesParserStrategy extends ParserStrategy { + private final @NotNull KeyPathConverter converter; + public PropertiesParserStrategy(@NotNull ProjectSettings settings) { super(settings); + this.converter = new KeyPathConverter(settings); } @Override @@ -35,7 +39,7 @@ public class PropertiesParserStrategy extends ParserStrategy { try(Reader reader = new InputStreamReader(vf.getInputStream(), vf.getCharset())) { SortableProperties input = new SortableProperties(this.settings.isSorting()); input.load(reader); - PropertiesMapper.read(file.getLocale(), input, targetData); + PropertiesMapper.read(file.getLocale(), input, targetData, converter); } } @@ -45,7 +49,7 @@ public class PropertiesParserStrategy extends ParserStrategy { TranslationData targetData = new TranslationData(data.getLocales(), targetNode); SortableProperties output = new SortableProperties(this.settings.isSorting()); - PropertiesMapper.write(file.getLocale(), output, targetData); + PropertiesMapper.write(file.getLocale(), output, targetData, converter); try(StringWriter writer = new StringWriter()) { output.store(writer, null); diff --git a/src/main/java/de/marhali/easyi18n/io/parser/yaml/YamlMapper.java b/src/main/java/de/marhali/easyi18n/io/parser/yaml/YamlMapper.java index 0ceb5ac..09e92da 100644 --- a/src/main/java/de/marhali/easyi18n/io/parser/yaml/YamlMapper.java +++ b/src/main/java/de/marhali/easyi18n/io/parser/yaml/YamlMapper.java @@ -1,7 +1,7 @@ package de.marhali.easyi18n.io.parser.yaml; -import de.marhali.easyi18n.model.Translation; import de.marhali.easyi18n.model.TranslationNode; +import de.marhali.easyi18n.model.TranslationValue; import de.marhali.easyi18n.util.StringUtil; import org.apache.commons.lang.StringEscapeUtils; @@ -28,7 +28,7 @@ public class YamlMapper { // Nested element - run recursively read(locale, (MapSection) value, childNode); } else { - Translation translation = childNode.getValue(); + TranslationValue translation = childNode.getValue(); String content = value instanceof ListSection ? YamlArrayMapper.read((ListSection) value) @@ -53,7 +53,7 @@ public class YamlMapper { section.setInScope(key, childSection); } } else { - Translation translation = childNode.getValue(); + TranslationValue translation = childNode.getValue(); String content = translation.get(locale); if(content != null) { diff --git a/src/test/java/de/marhali/easyi18n/mapper/AbstractMapperTest.java b/src/test/java/de/marhali/easyi18n/mapper/AbstractMapperTest.java index 9771660..c031e88 100644 --- a/src/test/java/de/marhali/easyi18n/mapper/AbstractMapperTest.java +++ b/src/test/java/de/marhali/easyi18n/mapper/AbstractMapperTest.java @@ -1,6 +1,6 @@ package de.marhali.easyi18n.mapper; -import de.marhali.easyi18n.model.Translation; +import de.marhali.easyi18n.model.TranslationValue; import org.junit.Test; @@ -39,7 +39,7 @@ public abstract class AbstractMapperTest { @Test public abstract void testNumbers(); - protected Translation create(String content) { - return new Translation("en", content); + protected TranslationValue create(String content) { + return new TranslationValue("en", content); } } \ No newline at end of file diff --git a/src/test/java/de/marhali/easyi18n/mapper/Json5MapperTest.java b/src/test/java/de/marhali/easyi18n/mapper/Json5MapperTest.java index befdc04..6be4c79 100644 --- a/src/test/java/de/marhali/easyi18n/mapper/Json5MapperTest.java +++ b/src/test/java/de/marhali/easyi18n/mapper/Json5MapperTest.java @@ -3,8 +3,8 @@ package de.marhali.easyi18n.mapper; import de.marhali.easyi18n.io.parser.json.JsonArrayMapper; import de.marhali.easyi18n.io.parser.json5.Json5ArrayMapper; import de.marhali.easyi18n.io.parser.json5.Json5Mapper; -import de.marhali.easyi18n.model.KeyPath; import de.marhali.easyi18n.model.TranslationData; +import de.marhali.easyi18n.model.KeyPath; import de.marhali.json5.Json5Object; import de.marhali.json5.Json5Primitive; @@ -58,8 +58,8 @@ public class Json5MapperTest extends AbstractMapperTest { @Override public void testArrays() { TranslationData data = new TranslationData(true); - data.setTranslation(KeyPath.of("simple"), create(arraySimple)); - data.setTranslation(KeyPath.of("escaped"), create(arrayEscaped)); + data.setTranslation(new KeyPath("simple"), create(arraySimple)); + data.setTranslation(new KeyPath("escaped"), create(arrayEscaped)); Json5Object output = new Json5Object(); Json5Mapper.write("en", output, data.getRootNode()); @@ -72,14 +72,14 @@ public class Json5MapperTest extends AbstractMapperTest { TranslationData input = new TranslationData(true); Json5Mapper.read("en", output, input.getRootNode()); - Assert.assertTrue(JsonArrayMapper.isArray(input.getTranslation(KeyPath.of("simple")).get("en"))); - Assert.assertTrue(JsonArrayMapper.isArray(input.getTranslation(KeyPath.of("escaped")).get("en"))); + Assert.assertTrue(JsonArrayMapper.isArray(input.getTranslation(new KeyPath("simple")).get("en"))); + Assert.assertTrue(JsonArrayMapper.isArray(input.getTranslation(new KeyPath("escaped")).get("en"))); } @Override public void testSpecialCharacters() { TranslationData data = new TranslationData(true); - data.setTranslation(KeyPath.of("chars"), create(specialCharacters)); + data.setTranslation(new KeyPath("chars"), create(specialCharacters)); Json5Object output = new Json5Object(); Json5Mapper.write("en", output, data.getRootNode()); @@ -90,13 +90,13 @@ public class Json5MapperTest extends AbstractMapperTest { Json5Mapper.read("en", output, input.getRootNode()); Assert.assertEquals(specialCharacters, - StringEscapeUtils.unescapeJava(input.getTranslation(KeyPath.of("chars")).get("en"))); + StringEscapeUtils.unescapeJava(input.getTranslation(new KeyPath("chars")).get("en"))); } @Override public void testNestedKeys() { TranslationData data = new TranslationData(true); - data.setTranslation(KeyPath.of("nested", "key", "section"), create("test")); + data.setTranslation(new KeyPath("nested", "key", "section"), create("test")); Json5Object output = new Json5Object(); Json5Mapper.write("en", output, data.getRootNode()); @@ -106,13 +106,13 @@ public class Json5MapperTest extends AbstractMapperTest { TranslationData input = new TranslationData(true); Json5Mapper.read("en", output, input.getRootNode()); - Assert.assertEquals("test", input.getTranslation(KeyPath.of("nested", "key", "section")).get("en")); + Assert.assertEquals("test", input.getTranslation(new KeyPath("nested", "key", "section")).get("en")); } @Override public void testNonNestedKeys() { TranslationData data = new TranslationData(true); - data.setTranslation(KeyPath.of("long.key.with.many.sections"), create("test")); + data.setTranslation(new KeyPath("long.key.with.many.sections"), create("test")); Json5Object output = new Json5Object(); Json5Mapper.write("en", output, data.getRootNode()); @@ -122,13 +122,13 @@ public class Json5MapperTest extends AbstractMapperTest { TranslationData input = new TranslationData(true); Json5Mapper.read("en", output, input.getRootNode()); - Assert.assertEquals("test", input.getTranslation(KeyPath.of("long.key.with.many.sections")).get("en")); + Assert.assertEquals("test", input.getTranslation(new KeyPath("long.key.with.many.sections")).get("en")); } @Override public void testLeadingSpace() { TranslationData data = new TranslationData(true); - data.setTranslation(KeyPath.of("space"), create(leadingSpace)); + data.setTranslation(new KeyPath("space"), create(leadingSpace)); Json5Object output = new Json5Object(); Json5Mapper.write("en", output, data.getRootNode()); @@ -138,13 +138,13 @@ public class Json5MapperTest extends AbstractMapperTest { TranslationData input = new TranslationData(true); Json5Mapper.read("en", output, input.getRootNode()); - Assert.assertEquals(leadingSpace, input.getTranslation(KeyPath.of("space")).get("en")); + Assert.assertEquals(leadingSpace, input.getTranslation(new KeyPath("space")).get("en")); } @Override public void testNumbers() { TranslationData data = new TranslationData(true); - data.setTranslation(KeyPath.of("numbered"), create("15000")); + data.setTranslation(new KeyPath("numbered"), create("15000")); Json5Object output = new Json5Object(); Json5Mapper.write("en", output, data.getRootNode()); @@ -155,6 +155,6 @@ public class Json5MapperTest extends AbstractMapperTest { input.addProperty("numbered", 143.23); Json5Mapper.read("en", input, data.getRootNode()); - Assert.assertEquals("143.23", data.getTranslation(KeyPath.of("numbered")).get("en")); + Assert.assertEquals("143.23", data.getTranslation(new KeyPath("numbered")).get("en")); } } \ No newline at end of file diff --git a/src/test/java/de/marhali/easyi18n/mapper/JsonMapperTest.java b/src/test/java/de/marhali/easyi18n/mapper/JsonMapperTest.java index 78be880..7647671 100644 --- a/src/test/java/de/marhali/easyi18n/mapper/JsonMapperTest.java +++ b/src/test/java/de/marhali/easyi18n/mapper/JsonMapperTest.java @@ -6,9 +6,9 @@ import com.google.gson.JsonPrimitive; import de.marhali.easyi18n.io.parser.json.JsonArrayMapper; import de.marhali.easyi18n.io.parser.json.JsonMapper; -import de.marhali.easyi18n.model.KeyPath; import de.marhali.easyi18n.model.TranslationData; +import de.marhali.easyi18n.model.KeyPath; import org.apache.commons.lang.StringEscapeUtils; import org.junit.Assert; @@ -59,8 +59,8 @@ public class JsonMapperTest extends AbstractMapperTest { @Override public void testArrays() { TranslationData data = new TranslationData(true); - data.setTranslation(KeyPath.of("simple"), create(arraySimple)); - data.setTranslation(KeyPath.of("escaped"), create(arrayEscaped)); + data.setTranslation(new KeyPath("simple"), create(arraySimple)); + data.setTranslation(new KeyPath("escaped"), create(arrayEscaped)); JsonObject output = new JsonObject(); JsonMapper.write("en", output, data.getRootNode()); @@ -73,14 +73,14 @@ public class JsonMapperTest extends AbstractMapperTest { TranslationData input = new TranslationData(true); JsonMapper.read("en", output, input.getRootNode()); - Assert.assertTrue(JsonArrayMapper.isArray(input.getTranslation(KeyPath.of("simple")).get("en"))); - Assert.assertTrue(JsonArrayMapper.isArray(input.getTranslation(KeyPath.of("escaped")).get("en"))); + Assert.assertTrue(JsonArrayMapper.isArray(input.getTranslation(new KeyPath("simple")).get("en"))); + Assert.assertTrue(JsonArrayMapper.isArray(input.getTranslation(new KeyPath("escaped")).get("en"))); } @Override public void testSpecialCharacters() { TranslationData data = new TranslationData(true); - data.setTranslation(KeyPath.of("chars"), create(specialCharacters)); + data.setTranslation(new KeyPath("chars"), create(specialCharacters)); JsonObject output = new JsonObject(); JsonMapper.write("en", output, data.getRootNode()); @@ -91,13 +91,13 @@ public class JsonMapperTest extends AbstractMapperTest { JsonMapper.read("en", output, input.getRootNode()); Assert.assertEquals(specialCharacters, - StringEscapeUtils.unescapeJava(input.getTranslation(KeyPath.of("chars")).get("en"))); + StringEscapeUtils.unescapeJava(input.getTranslation(new KeyPath("chars")).get("en"))); } @Override public void testNestedKeys() { TranslationData data = new TranslationData(true); - data.setTranslation(KeyPath.of("nested", "key", "section"), create("test")); + data.setTranslation(new KeyPath("nested", "key", "section"), create("test")); JsonObject output = new JsonObject(); JsonMapper.write("en", output, data.getRootNode()); @@ -107,13 +107,13 @@ public class JsonMapperTest extends AbstractMapperTest { TranslationData input = new TranslationData(true); JsonMapper.read("en", output, input.getRootNode()); - Assert.assertEquals("test", input.getTranslation(KeyPath.of("nested", "key", "section")).get("en")); + Assert.assertEquals("test", input.getTranslation(new KeyPath("nested", "key", "section")).get("en")); } @Override public void testNonNestedKeys() { TranslationData data = new TranslationData(true); - data.setTranslation(KeyPath.of("long.key.with.many.sections"), create("test")); + data.setTranslation(new KeyPath("long.key.with.many.sections"), create("test")); JsonObject output = new JsonObject(); JsonMapper.write("en", output, data.getRootNode()); @@ -123,13 +123,13 @@ public class JsonMapperTest extends AbstractMapperTest { TranslationData input = new TranslationData(true); JsonMapper.read("en", output, input.getRootNode()); - Assert.assertEquals("test", input.getTranslation(KeyPath.of("long.key.with.many.sections")).get("en")); + Assert.assertEquals("test", input.getTranslation(new KeyPath("long.key.with.many.sections")).get("en")); } @Override public void testLeadingSpace() { TranslationData data = new TranslationData(true); - data.setTranslation(KeyPath.of("space"), create(leadingSpace)); + data.setTranslation(new KeyPath("space"), create(leadingSpace)); JsonObject output = new JsonObject(); JsonMapper.write("en", output, data.getRootNode()); @@ -139,13 +139,13 @@ public class JsonMapperTest extends AbstractMapperTest { TranslationData input = new TranslationData(true); JsonMapper.read("en", output, input.getRootNode()); - Assert.assertEquals(leadingSpace, input.getTranslation(KeyPath.of("space")).get("en")); + Assert.assertEquals(leadingSpace, input.getTranslation(new KeyPath("space")).get("en")); } @Override public void testNumbers() { TranslationData data = new TranslationData(true); - data.setTranslation(KeyPath.of("numbered"), create("15000")); + data.setTranslation(new KeyPath("numbered"), create("15000")); JsonObject output = new JsonObject(); JsonMapper.write("en", output, data.getRootNode()); @@ -156,6 +156,6 @@ public class JsonMapperTest extends AbstractMapperTest { input.addProperty("numbered", 143.23); JsonMapper.read("en", input, data.getRootNode()); - Assert.assertEquals("143.23", data.getTranslation(KeyPath.of("numbered")).get("en")); + Assert.assertEquals("143.23", data.getTranslation(new KeyPath("numbered")).get("en")); } } \ No newline at end of file diff --git a/src/test/java/de/marhali/easyi18n/mapper/PropertiesMapperTest.java b/src/test/java/de/marhali/easyi18n/mapper/PropertiesMapperTest.java index 2643981..14aa03a 100644 --- a/src/test/java/de/marhali/easyi18n/mapper/PropertiesMapperTest.java +++ b/src/test/java/de/marhali/easyi18n/mapper/PropertiesMapperTest.java @@ -1,12 +1,18 @@ package de.marhali.easyi18n.mapper; +import de.marhali.easyi18n.io.folder.FolderStrategyType; +import de.marhali.easyi18n.io.parser.ParserStrategyType; import de.marhali.easyi18n.io.parser.properties.PropertiesArrayMapper; import de.marhali.easyi18n.io.parser.properties.PropertiesMapper; import de.marhali.easyi18n.io.parser.properties.SortableProperties; -import de.marhali.easyi18n.model.KeyPath; import de.marhali.easyi18n.model.TranslationData; +import de.marhali.easyi18n.model.KeyPath; +import de.marhali.easyi18n.settings.ProjectSettings; +import de.marhali.easyi18n.util.KeyPathConverter; import org.apache.commons.lang.StringEscapeUtils; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; import org.junit.Assert; import java.util.*; @@ -25,10 +31,10 @@ public class PropertiesMapperTest extends AbstractMapperTest { input.setProperty("bravo", "test"); TranslationData data = new TranslationData(false); - PropertiesMapper.read("en", input, data); + PropertiesMapper.read("en", input, data, converter(true)); SortableProperties output = new SortableProperties(false); - PropertiesMapper.write("en", output, data); + PropertiesMapper.write("en", output, data, converter(true)); List expect = Arrays.asList("zulu", "alpha", "bravo"); Assert.assertEquals(expect, new ArrayList<>(output.keySet())); @@ -42,10 +48,10 @@ public class PropertiesMapperTest extends AbstractMapperTest { input.setProperty("bravo", "test"); TranslationData data = new TranslationData(true); - PropertiesMapper.read("en", input, data); + PropertiesMapper.read("en", input, data, converter(true)); SortableProperties output = new SortableProperties(true); - PropertiesMapper.write("en", output, data); + PropertiesMapper.write("en", output, data, converter(true)); List expect = Arrays.asList("alpha", "bravo", "zulu"); Assert.assertEquals(expect, new ArrayList<>(output.keySet())); @@ -54,11 +60,11 @@ public class PropertiesMapperTest extends AbstractMapperTest { @Override public void testArrays() { TranslationData data = new TranslationData(true); - data.setTranslation(KeyPath.of("simple"), create(arraySimple)); - data.setTranslation(KeyPath.of("escaped"), create(arrayEscaped)); + data.setTranslation(new KeyPath("simple"), create(arraySimple)); + data.setTranslation(new KeyPath("escaped"), create(arrayEscaped)); SortableProperties output = new SortableProperties(true); - PropertiesMapper.write("en", output, data); + PropertiesMapper.write("en", output, data, converter(true)); Assert.assertTrue(output.get("simple") instanceof String[]); Assert.assertEquals(arraySimple, PropertiesArrayMapper.read((String[]) output.get("simple"))); @@ -66,93 +72,164 @@ public class PropertiesMapperTest extends AbstractMapperTest { Assert.assertEquals(arrayEscaped, StringEscapeUtils.unescapeJava(PropertiesArrayMapper.read((String[]) output.get("escaped")))); TranslationData input = new TranslationData(true); - PropertiesMapper.read("en", output, input); + PropertiesMapper.read("en", output, input, converter(true)); - Assert.assertTrue(PropertiesArrayMapper.isArray(input.getTranslation(KeyPath.of("simple")).get("en"))); - Assert.assertTrue(PropertiesArrayMapper.isArray(input.getTranslation(KeyPath.of("escaped")).get("en"))); + Assert.assertTrue(PropertiesArrayMapper.isArray(input.getTranslation(new KeyPath("simple")).get("en"))); + Assert.assertTrue(PropertiesArrayMapper.isArray(input.getTranslation(new KeyPath("escaped")).get("en"))); } @Override public void testSpecialCharacters() { TranslationData data = new TranslationData(true); - data.setTranslation(KeyPath.of("chars"), create(specialCharacters)); + data.setTranslation(new KeyPath("chars"), create(specialCharacters)); SortableProperties output = new SortableProperties(true); - PropertiesMapper.write("en", output, data); + PropertiesMapper.write("en", output, data, converter(true)); Assert.assertEquals(specialCharacters, output.get("chars")); TranslationData input = new TranslationData(true); - PropertiesMapper.read("en", output, input); + PropertiesMapper.read("en", output, input, converter(true)); - Assert.assertEquals(specialCharacters, StringEscapeUtils.unescapeJava(input.getTranslation(KeyPath.of("chars")).get("en"))); + Assert.assertEquals(specialCharacters, StringEscapeUtils.unescapeJava(input.getTranslation(new KeyPath("chars")).get("en"))); } @Override public void testNestedKeys() { TranslationData data = new TranslationData(true); - data.setTranslation(KeyPath.of("nested", "key", "sections"), create("test")); + data.setTranslation(new KeyPath("nested", "key", "sections"), create("test")); SortableProperties output = new SortableProperties(true); - PropertiesMapper.write("en", output, data); + PropertiesMapper.write("en", output, data, converter(true)); - Assert.assertEquals("test", output.get("nested.key.sections")); + Assert.assertEquals("test", output.get("nested:key.sections")); TranslationData input = new TranslationData(true); - PropertiesMapper.read("en", output, input); - - System.out.println(input); + PropertiesMapper.read("en", output, input, converter(true)); Assert.assertTrue(input.getRootNode().getChildren().containsKey("nested")); - Assert.assertEquals("test", input.getTranslation(KeyPath.of("nested", "key", "sections")).get("en")); + Assert.assertEquals("test", input.getTranslation(new KeyPath("nested", "key", "sections")).get("en")); } @Override public void testNonNestedKeys() { // Note: Key nesting is not supported in properties file. TranslationData data = new TranslationData(true); - data.setTranslation(KeyPath.of("long.key.with.many.sections"), create("test")); + data.setTranslation(new KeyPath("long.key.with.many.sections"), create("test")); SortableProperties output = new SortableProperties(true); - PropertiesMapper.write("en", output, data); + PropertiesMapper.write("en", output, data, converter(false)); Assert.assertNotNull(output.get("long.key.with.many.sections")); TranslationData input = new TranslationData(true); - PropertiesMapper.read("en", output, input); + PropertiesMapper.read("en", output, input, converter(false)); - Assert.assertEquals("test", input.getTranslation(KeyPath.of("long", "key", "with", "many", "sections")).get("en")); + Assert.assertEquals("test", input.getTranslation(new KeyPath("long.key.with.many.sections")).get("en")); } @Override public void testLeadingSpace() { TranslationData data = new TranslationData(true); - data.setTranslation(KeyPath.of("space"), create(leadingSpace)); + data.setTranslation(new KeyPath("space"), create(leadingSpace)); SortableProperties output = new SortableProperties(true); - PropertiesMapper.write("en", output, data); + PropertiesMapper.write("en", output, data, converter()); Assert.assertEquals(leadingSpace, output.get("space")); TranslationData input = new TranslationData(true); - PropertiesMapper.read("en", output, input); + PropertiesMapper.read("en", output, input, converter()); - Assert.assertEquals(leadingSpace, input.getTranslation(KeyPath.of("space")).get("en")); + Assert.assertEquals(leadingSpace, input.getTranslation(new KeyPath("space")).get("en")); } @Override public void testNumbers() { TranslationData data = new TranslationData(true); - data.setTranslation(KeyPath.of("numbered"), create("15000")); + data.setTranslation(new KeyPath("numbered"), create("15000")); SortableProperties output = new SortableProperties(true); - PropertiesMapper.write("en", output, data); + PropertiesMapper.write("en", output, data, converter()); Assert.assertEquals(15000, output.get("numbered")); SortableProperties input = new SortableProperties(true); input.put("numbered", 143.23); - PropertiesMapper.read("en", input, data); + PropertiesMapper.read("en", input, data, converter()); - Assert.assertEquals("143.23", data.getTranslation(KeyPath.of("numbered")).get("en")); + Assert.assertEquals("143.23", data.getTranslation(new KeyPath("numbered")).get("en")); + } + + private KeyPathConverter converter() { + return converter(true); + } + + private KeyPathConverter converter(boolean nestKeys) { + return new KeyPathConverter(new ProjectSettings() { + @Override + public @Nullable String getLocalesDirectory() { + return null; + } + + @Override + public @NotNull FolderStrategyType getFolderStrategy() { + return FolderStrategyType.MODULARIZED_NAMESPACE; + } + + @Override + public @NotNull ParserStrategyType getParserStrategy() { + return ParserStrategyType.PROPERTIES; + } + + @Override + public @NotNull String getFilePattern() { + return null; + } + + @Override + public boolean isSorting() { + return true; + } + + @Override + public @Nullable String getNamespaceDelimiter() { + return ":"; + } + + @Override + public @NotNull String getSectionDelimiter() { + return "."; + } + + @Override + public @Nullable String getContextDelimiter() { + return null; + } + + @Override + public @Nullable String getPluralDelimiter() { + return null; + } + + @Override + public @Nullable String getDefaultNamespace() { + return null; + } + + @Override + public @NotNull String getPreviewLocale() { + return null; + } + + @Override + public boolean isNestedKeys() { + return nestKeys; + } + + @Override + public boolean isAssistance() { + return false; + } + }); } } \ No newline at end of file diff --git a/src/test/java/de/marhali/easyi18n/mapper/YamlMapperTest.java b/src/test/java/de/marhali/easyi18n/mapper/YamlMapperTest.java index 2cb9d01..9eefe5c 100644 --- a/src/test/java/de/marhali/easyi18n/mapper/YamlMapperTest.java +++ b/src/test/java/de/marhali/easyi18n/mapper/YamlMapperTest.java @@ -2,8 +2,8 @@ package de.marhali.easyi18n.mapper; import de.marhali.easyi18n.io.parser.yaml.YamlArrayMapper; import de.marhali.easyi18n.io.parser.yaml.YamlMapper; -import de.marhali.easyi18n.model.KeyPath; import de.marhali.easyi18n.model.TranslationData; +import de.marhali.easyi18n.model.KeyPath; import org.apache.commons.lang.StringEscapeUtils; import org.junit.Assert; @@ -58,8 +58,8 @@ public class YamlMapperTest extends AbstractMapperTest { @Override public void testArrays() { TranslationData data = new TranslationData(true); - data.setTranslation(KeyPath.of("simple"), create(arraySimple)); - data.setTranslation(KeyPath.of("escaped"), create(arrayEscaped)); + data.setTranslation(new KeyPath("simple"), create(arraySimple)); + data.setTranslation(new KeyPath("escaped"), create(arrayEscaped)); Section output = new MapSection(); YamlMapper.write("en", output, data.getRootNode()); @@ -72,14 +72,14 @@ public class YamlMapperTest extends AbstractMapperTest { TranslationData input = new TranslationData(true); YamlMapper.read("en", output, input.getRootNode()); - Assert.assertTrue(YamlArrayMapper.isArray(input.getTranslation(KeyPath.of("simple")).get("en"))); - Assert.assertTrue(YamlArrayMapper.isArray(input.getTranslation(KeyPath.of("escaped")).get("en"))); + Assert.assertTrue(YamlArrayMapper.isArray(input.getTranslation(new KeyPath("simple")).get("en"))); + Assert.assertTrue(YamlArrayMapper.isArray(input.getTranslation(new KeyPath("escaped")).get("en"))); } @Override public void testSpecialCharacters() { TranslationData data = new TranslationData(true); - data.setTranslation(KeyPath.of("chars"), create(specialCharacters)); + data.setTranslation(new KeyPath("chars"), create(specialCharacters)); Section output = new MapSection(); YamlMapper.write("en", output, data.getRootNode()); @@ -90,13 +90,13 @@ public class YamlMapperTest extends AbstractMapperTest { YamlMapper.read("en", output, input.getRootNode()); Assert.assertEquals(specialCharacters, - StringEscapeUtils.unescapeJava(input.getTranslation(KeyPath.of("chars")).get("en"))); + StringEscapeUtils.unescapeJava(input.getTranslation(new KeyPath("chars")).get("en"))); } @Override public void testNestedKeys() { TranslationData data = new TranslationData(true); - data.setTranslation(KeyPath.of("nested", "key", "section"), create("test")); + data.setTranslation(new KeyPath("nested", "key", "section"), create("test")); Section output = new MapSection(); YamlMapper.write("en", output, data.getRootNode()); @@ -106,13 +106,13 @@ public class YamlMapperTest extends AbstractMapperTest { TranslationData input = new TranslationData(true); YamlMapper.read("en", output, input.getRootNode()); - Assert.assertEquals("test", input.getTranslation(KeyPath.of("nested", "key", "section")).get("en")); + Assert.assertEquals("test", input.getTranslation(new KeyPath("nested", "key", "section")).get("en")); } @Override public void testNonNestedKeys() { TranslationData data = new TranslationData(true); - data.setTranslation(KeyPath.of("long.key.with.many.sections"), create("test")); + data.setTranslation(new KeyPath("long.key.with.many.sections"), create("test")); Section output = new MapSection(); YamlMapper.write("en", output, data.getRootNode()); @@ -122,13 +122,13 @@ public class YamlMapperTest extends AbstractMapperTest { TranslationData input = new TranslationData(true); YamlMapper.read("en", output, input.getRootNode()); - Assert.assertEquals("test", input.getTranslation(KeyPath.of("long.key.with.many.sections")).get("en")); + Assert.assertEquals("test", input.getTranslation(new KeyPath("long.key.with.many.sections")).get("en")); } @Override public void testLeadingSpace() { TranslationData data = new TranslationData(true); - data.setTranslation(KeyPath.of("space"), create(leadingSpace)); + data.setTranslation(new KeyPath("space"), create(leadingSpace)); Section output = new MapSection(); YamlMapper.write("en", output, data.getRootNode()); @@ -138,13 +138,13 @@ public class YamlMapperTest extends AbstractMapperTest { TranslationData input = new TranslationData(true); YamlMapper.read("en", output, input.getRootNode()); - Assert.assertEquals(leadingSpace, input.getTranslation(KeyPath.of("space")).get("en")); + Assert.assertEquals(leadingSpace, input.getTranslation(new KeyPath("space")).get("en")); } @Override public void testNumbers() { TranslationData data = new TranslationData(true); - data.setTranslation(KeyPath.of("numbered"), create("15000")); + data.setTranslation(new KeyPath("numbered"), create("15000")); Section output = new MapSection(); YamlMapper.write("en", output, data.getRootNode()); @@ -155,6 +155,6 @@ public class YamlMapperTest extends AbstractMapperTest { input.set("numbered", 143.23); YamlMapper.read("en", input, data.getRootNode()); - Assert.assertEquals("143.23", data.getTranslation(KeyPath.of("numbered")).get("en")); + Assert.assertEquals("143.23", data.getTranslation(new KeyPath("numbered")).get("en")); } } \ No newline at end of file