diff --git a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/instances/QInstanceEnricher.java b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/instances/QInstanceEnricher.java index e66c187d..81a64968 100644 --- a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/instances/QInstanceEnricher.java +++ b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/instances/QInstanceEnricher.java @@ -27,6 +27,7 @@ import java.util.ArrayList; import java.util.Collections; import java.util.HashMap; import java.util.HashSet; +import java.util.LinkedHashMap; import java.util.List; import java.util.Locale; import java.util.Map; @@ -97,6 +98,13 @@ public class QInstanceEnricher ////////////////////////////////////////////////////////// private boolean configRemoveIdFromNameWhenCreatingPossibleValueFieldLabels = true; + ////////////////////////////////////////////////////////////////////////////////////////////////// + // let an instance define mappings to be applied during name-to-label enrichments, // + // e.g., to avoid ever incorrectly camel-casing an acronym (e.g., "Tla" shoudl always be "TLA") // + // or to expand abbreviations in code (e.g., "Addr" should always be "Address" // + ////////////////////////////////////////////////////////////////////////////////////////////////// + private static final Map labelMappings = new LinkedHashMap<>(); + /******************************************************************************* @@ -647,7 +655,17 @@ public class QInstanceEnricher //////////////////////////////////////////////////////////////// .replaceAll("([0-9])([A-Za-z])", "$1 $2"); - return (name.substring(0, 1).toUpperCase(Locale.ROOT) + suffix); + String label = name.substring(0, 1).toUpperCase(Locale.ROOT) + suffix; + + ///////////////////////////////////////////////////////////////////////////////////////////// + // apply any label mappings - e.g., to force app-specific acronyms/initialisms to all-caps // + ///////////////////////////////////////////////////////////////////////////////////////////// + for(Map.Entry entry : labelMappings.entrySet()) + { + label = label.replaceAll(entry.getKey(), entry.getValue()); + } + + return (label); } @@ -1111,4 +1129,35 @@ public class QInstanceEnricher { return (this.joinGraph); } + + + + /******************************************************************************* + ** + *******************************************************************************/ + public static void addLabelMapping(String from, String to) + { + labelMappings.put(from, to); + } + + + + /******************************************************************************* + ** + *******************************************************************************/ + public static void removeLabelMapping(String from) + { + labelMappings.remove(from); + } + + + + /******************************************************************************* + ** + *******************************************************************************/ + public static void clearLabelMappings() + { + labelMappings.clear(); + } + } diff --git a/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/instances/QInstanceEnricherTest.java b/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/instances/QInstanceEnricherTest.java index 4deb3559..2e3ff3ec 100644 --- a/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/instances/QInstanceEnricherTest.java +++ b/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/instances/QInstanceEnricherTest.java @@ -197,6 +197,16 @@ class QInstanceEnricherTest extends BaseTest assertEquals("Something USA", QInstanceEnricher.nameToLabel("somethingUSA")); assertEquals("Number 1 Dad", QInstanceEnricher.nameToLabel("number1Dad")); assertEquals("Number 417 Dad", QInstanceEnricher.nameToLabel("number417Dad")); + + assertEquals("Default Wms System Id", QInstanceEnricher.nameToLabel("defaultWmsSystemId")); + QInstanceEnricher.addLabelMapping("\\bWms\\b", "WMS"); + assertEquals("Default WMS System Id", QInstanceEnricher.nameToLabel("defaultWmsSystemId")); + QInstanceEnricher.clearLabelMappings(); + + assertEquals("Api Client Id", QInstanceEnricher.nameToLabel("apiClientId")); + QInstanceEnricher.addLabelMapping("\\bApi\\b", "API"); + assertEquals("API Client Id", QInstanceEnricher.nameToLabel("apiClientId")); + QInstanceEnricher.clearLabelMappings(); }