From 027016921faf5cb62858fe3e679e72bfd70ce33a Mon Sep 17 00:00:00 2001 From: JPilson Date: Sat, 20 Apr 2024 18:44:18 +0200 Subject: [PATCH] feat: update naming convention functionality Updated naming convention features by simplifying key case formatter construction and expanding the naming convention enum. Also performed a refactor to layout and formatting across various files for improved readability. Added new test cases to validate the update to naming convention. --- .../easyi18n/settings/NamingConvention.java | 24 ++++++++-- .../easyi18n/settings/ProjectSettings.java | 46 ++++++++++++++----- .../settings/ProjectSettingsComponent.java | 5 +- .../ProjectSettingsComponentState.java | 3 +- .../settings/ProjectSettingsState.java | 1 + .../easyi18n/KeyPathConverterTest.java | 6 +++ .../easyi18n/e2e/EndToEndTestCase.java | 8 ++-- .../easyi18n/mapper/PropertiesMapperTest.java | 7 +++ .../settings/ProjectSettingsServiceTest.java | 9 ++++ 9 files changed, 87 insertions(+), 22 deletions(-) diff --git a/src/main/java/de/marhali/easyi18n/settings/NamingConvention.java b/src/main/java/de/marhali/easyi18n/settings/NamingConvention.java index 5c21466..7fa9e16 100644 --- a/src/main/java/de/marhali/easyi18n/settings/NamingConvention.java +++ b/src/main/java/de/marhali/easyi18n/settings/NamingConvention.java @@ -2,21 +2,39 @@ package de.marhali.easyi18n.settings; import com.google.common.base.CaseFormat; +import java.util.Arrays; + public enum NamingConvention { - SNAKE_CASE("Snake"), - CAMEL_CASE("Camel"),; + SNAKE_CASE("Snake Case"), + + CAMEL_CASE("Camel Case"), + + CAMEL_CASE_UPPERCASE("Camel Case Uppercase"), + ; + private final String name; private NamingConvention(String name) { this.name = name; } + public String getName() { + return this.name; + } + @Override public String toString() { return super.name().toLowerCase(); } + static public NamingConvention fromSelector(String name) { - String formated = name.replace(" ","_"); + String formated = name.replace(" ", "_"); return valueOf(formated.toUpperCase()); } + + static public String[] getEnumNames() { + return Arrays.stream(NamingConvention.values()) + .map(NamingConvention::getName) + .toArray(String[]::new); + } } diff --git a/src/main/java/de/marhali/easyi18n/settings/ProjectSettings.java b/src/main/java/de/marhali/easyi18n/settings/ProjectSettings.java index fdf4e4b..626e672 100644 --- a/src/main/java/de/marhali/easyi18n/settings/ProjectSettings.java +++ b/src/main/java/de/marhali/easyi18n/settings/ProjectSettings.java @@ -9,31 +9,55 @@ import org.jetbrains.annotations.Nullable; /** * API to access the project-specific configuration for this plugin. + * * @author marhaliu */ public interface ProjectSettings { // Resource Configuration - @Nullable String getLocalesDirectory(); - @NotNull FolderStrategyType getFolderStrategy(); - @NotNull ParserStrategyType getParserStrategy(); - @NotNull String getFilePattern(); + @Nullable + String getLocalesDirectory(); + + @NotNull + FolderStrategyType getFolderStrategy(); + + @NotNull + ParserStrategyType getParserStrategy(); + + @NotNull + String getFilePattern(); boolean isIncludeSubDirs(); + boolean isSorting(); // Editor Configuration - @Nullable String getNamespaceDelimiter(); - @NotNull String getSectionDelimiter(); - @Nullable String getContextDelimiter(); - @Nullable String getPluralDelimiter(); - @Nullable String getDefaultNamespace(); - @NotNull String getPreviewLocale(); + @Nullable + String getNamespaceDelimiter(); + + @NotNull + String getSectionDelimiter(); + + @Nullable + String getContextDelimiter(); + + @Nullable + String getPluralDelimiter(); + + @Nullable + String getDefaultNamespace(); + + @NotNull + String getPreviewLocale(); boolean isNestedKeys(); + boolean isAssistance(); // Experimental Configuration boolean isAlwaysFold(); + String getFlavorTemplate(); - @NotNull NamingConvention getCaseFormat(); + + @NotNull + NamingConvention getCaseFormat(); } diff --git a/src/main/java/de/marhali/easyi18n/settings/ProjectSettingsComponent.java b/src/main/java/de/marhali/easyi18n/settings/ProjectSettingsComponent.java index ef08742..4041f83 100644 --- a/src/main/java/de/marhali/easyi18n/settings/ProjectSettingsComponent.java +++ b/src/main/java/de/marhali/easyi18n/settings/ProjectSettingsComponent.java @@ -231,12 +231,9 @@ public class ProjectSettingsComponent extends ProjectSettingsComponentState { } private JComponent constructKeyCaseFormater() { - KeyCaseFormater = new ComboBox<>(bundle.getString("settings.experimental.key-naming-format.items").split(ArrayMapper.SPLITERATOR_REGEX)); + KeyCaseFormater = new ComboBox<>(NamingConvention.getEnumNames()); KeyCaseFormater.setToolTipText(bundle.getString("settings.experimental.key-naming-format.tooltip")); KeyCaseFormater.setMinimumAndPreferredWidth(120); - KeyCaseFormater.addActionListener(e -> { - - }); return KeyCaseFormater; } diff --git a/src/main/java/de/marhali/easyi18n/settings/ProjectSettingsComponentState.java b/src/main/java/de/marhali/easyi18n/settings/ProjectSettingsComponentState.java index e26bab4..a98a947 100644 --- a/src/main/java/de/marhali/easyi18n/settings/ProjectSettingsComponentState.java +++ b/src/main/java/de/marhali/easyi18n/settings/ProjectSettingsComponentState.java @@ -99,6 +99,7 @@ public class ProjectSettingsComponentState { alwaysFold.setSelected(state.isAlwaysFold()); flavorTemplate.setText(state.getFlavorTemplate()); - KeyCaseFormater.setSelectedItem(state.getCaseFormat().name()); + KeyCaseFormater.setSelectedItem(state.getCaseFormat().getName()); } + } diff --git a/src/main/java/de/marhali/easyi18n/settings/ProjectSettingsState.java b/src/main/java/de/marhali/easyi18n/settings/ProjectSettingsState.java index 93ad59b..49cd0d1 100644 --- a/src/main/java/de/marhali/easyi18n/settings/ProjectSettingsState.java +++ b/src/main/java/de/marhali/easyi18n/settings/ProjectSettingsState.java @@ -66,6 +66,7 @@ public class ProjectSettingsState implements ProjectSettings { */ @Property private String flavorTemplate; + @Property private NamingConvention caseFormat; diff --git a/src/test/java/de/marhali/easyi18n/KeyPathConverterTest.java b/src/test/java/de/marhali/easyi18n/KeyPathConverterTest.java index b84d2cb..c023815 100644 --- a/src/test/java/de/marhali/easyi18n/KeyPathConverterTest.java +++ b/src/test/java/de/marhali/easyi18n/KeyPathConverterTest.java @@ -3,6 +3,7 @@ package de.marhali.easyi18n; import de.marhali.easyi18n.io.parser.ParserStrategyType; import de.marhali.easyi18n.io.folder.FolderStrategyType; import de.marhali.easyi18n.model.KeyPath; +import de.marhali.easyi18n.settings.NamingConvention; import de.marhali.easyi18n.settings.ProjectSettings; import de.marhali.easyi18n.util.KeyPathConverter; @@ -172,6 +173,11 @@ public class KeyPathConverterTest { public boolean isIncludeSubDirs() { return false; } + + @Override + public @NotNull NamingConvention getCaseFormat() { + return NamingConvention.CAMEL_CASE; + } }); } } diff --git a/src/test/java/de/marhali/easyi18n/e2e/EndToEndTestCase.java b/src/test/java/de/marhali/easyi18n/e2e/EndToEndTestCase.java index 7a58781..74ebca5 100644 --- a/src/test/java/de/marhali/easyi18n/e2e/EndToEndTestCase.java +++ b/src/test/java/de/marhali/easyi18n/e2e/EndToEndTestCase.java @@ -22,6 +22,7 @@ import java.util.Objects; /** * End-to-end test case. + * * @author marhali */ public abstract class EndToEndTestCase extends BasePlatformTestCase { @@ -57,7 +58,8 @@ public abstract class EndToEndTestCase extends BasePlatformTestCase { out.setLocalesDirectory(tempPath.toString()); ProjectSettingsService.get(getProject()).setState(out); - InstanceManager.get(getProject()).store().saveToPersistenceLayer(success -> {}); + InstanceManager.get(getProject()).store().saveToPersistenceLayer(success -> { + }); // Compare file structure and contents IOFileFilter fileFilter = TrueFileFilter.INSTANCE; @@ -73,7 +75,7 @@ public abstract class EndToEndTestCase extends BasePlatformTestCase { assertEquals(originalFiles.length, outputFiles.length); - for(int i = 0; i < originalFiles.length; i++) { + for (int i = 0; i < originalFiles.length; i++) { File originalFile = originalFiles[i]; File outputFile = outputFiles[i]; @@ -82,4 +84,4 @@ public abstract class EndToEndTestCase extends BasePlatformTestCase { FileUtils.readFileToString(outputFile, CHARSET)); } } -} +} \ 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 71bf2e1..f29b486 100644 --- a/src/test/java/de/marhali/easyi18n/mapper/PropertiesMapperTest.java +++ b/src/test/java/de/marhali/easyi18n/mapper/PropertiesMapperTest.java @@ -7,6 +7,7 @@ import de.marhali.easyi18n.io.parser.properties.PropertiesMapper; import de.marhali.easyi18n.io.parser.properties.SortableProperties; import de.marhali.easyi18n.model.TranslationData; import de.marhali.easyi18n.model.KeyPath; +import de.marhali.easyi18n.settings.NamingConvention; import de.marhali.easyi18n.settings.ProjectSettings; import de.marhali.easyi18n.util.KeyPathConverter; @@ -19,6 +20,7 @@ import java.util.*; /** * Unit tests for {@link PropertiesMapper}. + * * @author marhali */ public class PropertiesMapperTest extends AbstractMapperTest { @@ -245,6 +247,11 @@ public class PropertiesMapperTest extends AbstractMapperTest { public boolean isIncludeSubDirs() { return false; } + + @Override + public @NotNull NamingConvention getCaseFormat() { + return NamingConvention.CAMEL_CASE; + } }); } } \ No newline at end of file diff --git a/src/test/java/de/marhali/easyi18n/settings/ProjectSettingsServiceTest.java b/src/test/java/de/marhali/easyi18n/settings/ProjectSettingsServiceTest.java index 5ccc4f9..d82e06d 100644 --- a/src/test/java/de/marhali/easyi18n/settings/ProjectSettingsServiceTest.java +++ b/src/test/java/de/marhali/easyi18n/settings/ProjectSettingsServiceTest.java @@ -7,6 +7,7 @@ import de.marhali.easyi18n.settings.presets.DefaultPreset; /** * Tests for the project settings service itself. + * * @author marhali */ public class ProjectSettingsServiceTest extends BasePlatformTestCase { @@ -35,4 +36,12 @@ public class ProjectSettingsServiceTest extends BasePlatformTestCase { ProjectSettingsState after = XmlSerializerUtil.createCopy(previous); assertEquals("mySinglePropTest", after.getLocalesDirectory()); } + + public void testPersistenceFormatCase() { + ProjectSettingsState previous = new ProjectSettingsState(); + assertEquals(previous.getCaseFormat(), NamingConvention.CAMEL_CASE); + previous.setCaseFormat(NamingConvention.SNAKE_CASE); + ProjectSettingsState after = XmlSerializerUtil.createCopy(previous); + assertEquals(after.getCaseFormat(), NamingConvention.SNAKE_CASE); + } }