From 89eec41ac0d1bc8817b32e2a9289fff933afa8e8 Mon Sep 17 00:00:00 2001 From: Darin Kelkhoff Date: Fri, 23 May 2025 11:06:30 -0500 Subject: [PATCH] Add method setDisplayValuesInRecordsIncludingPossibleValueTranslations --- .../core/actions/values/QValueFormatter.java | 13 +++++ .../actions/values/QValueFormatterTest.java | 48 +++++++++++++++++++ 2 files changed, 61 insertions(+) diff --git a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/actions/values/QValueFormatter.java b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/actions/values/QValueFormatter.java index 876b76ae..a5ef7804 100644 --- a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/actions/values/QValueFormatter.java +++ b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/actions/values/QValueFormatter.java @@ -310,6 +310,19 @@ public class QValueFormatter + /******************************************************************************* + ** For a list of records, set their recordLabels and display values - including + ** record label (e.g., from the table meta data). + *******************************************************************************/ + public static void setDisplayValuesInRecordsIncludingPossibleValueTranslations(QTableMetaData table, List records) + { + QPossibleValueTranslator possibleValueTranslator = new QPossibleValueTranslator(QContext.getQInstance(), QContext.getQSession()); + possibleValueTranslator.translatePossibleValuesInRecords(table, records); + setDisplayValuesInRecords(table, records); + } + + + /******************************************************************************* ** For a list of records, set their recordLabels and display values - including ** record label (e.g., from the table meta data). diff --git a/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/actions/values/QValueFormatterTest.java b/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/actions/values/QValueFormatterTest.java index 05d24862..ecf64914 100644 --- a/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/actions/values/QValueFormatterTest.java +++ b/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/actions/values/QValueFormatterTest.java @@ -209,6 +209,54 @@ class QValueFormatterTest extends BaseTest assertEquals("2", records.get(1).getDisplayValue("homeStateId")); // PVS NOT translated by this class. } + /******************************************************************************* + ** + *******************************************************************************/ + @Test + void testSetDisplayValuesInRecordsIncludingPossibleValueTranslations() + { + QTableMetaData table = new QTableMetaData() + .withRecordLabelFormat("%s %s") + .withRecordLabelFields("firstName", "lastName") + .withField(new QFieldMetaData("firstName", QFieldType.STRING)) + .withField(new QFieldMetaData("lastName", QFieldType.STRING)) + .withField(new QFieldMetaData("price", QFieldType.DECIMAL).withDisplayFormat(DisplayFormat.CURRENCY)) + .withField(new QFieldMetaData("quantity", QFieldType.INTEGER).withDisplayFormat(DisplayFormat.COMMAS)) + .withField(new QFieldMetaData("homeStateId", QFieldType.INTEGER).withPossibleValueSourceName(TestUtils.POSSIBLE_VALUE_SOURCE_STATE)); + + ///////////////////////////////////////////////////////////////// + // first, make sure it doesn't crash with null or empty inputs // + ///////////////////////////////////////////////////////////////// + QValueFormatter.setDisplayValuesInRecordsIncludingPossibleValueTranslations(table, null); + QValueFormatter.setDisplayValuesInRecordsIncludingPossibleValueTranslations(table, Collections.emptyList()); + + List records = List.of( + new QRecord() + .withValue("firstName", "Tim") + .withValue("lastName", "Chamberlain") + .withValue("price", new BigDecimal("3.50")) + .withValue("quantity", 1701) + .withValue("homeStateId", 1), + new QRecord() + .withValue("firstName", "Tyler") + .withValue("lastName", "Samples") + .withValue("price", new BigDecimal("174999.99")) + .withValue("quantity", 47) + .withValue("homeStateId", 2) + ); + + QValueFormatter.setDisplayValuesInRecordsIncludingPossibleValueTranslations(table, records); + + assertEquals("Tim Chamberlain", records.get(0).getRecordLabel()); + assertEquals("$3.50", records.get(0).getDisplayValue("price")); + assertEquals("1,701", records.get(0).getDisplayValue("quantity")); + assertEquals("IL", records.get(0).getDisplayValue("homeStateId")); // PVS is translated by this method. + + assertEquals("Tyler Samples", records.get(1).getRecordLabel()); + assertEquals("$174,999.99", records.get(1).getDisplayValue("price")); + assertEquals("47", records.get(1).getDisplayValue("quantity")); + assertEquals("MO", records.get(1).getDisplayValue("homeStateId")); // PVS is translated by this method. + } /*******************************************************************************