diff --git a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/model/data/QRecord.java b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/model/data/QRecord.java index dffc5947..cc3b0f6c 100644 --- a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/model/data/QRecord.java +++ b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/model/data/QRecord.java @@ -154,7 +154,7 @@ public class QRecord implements Serializable return (null); } - Map clone = new LinkedHashMap<>(); + Map clone = new LinkedHashMap<>(map.size()); for(Map.Entry entry : map.entrySet()) { Serializable value = entry.getValue(); @@ -246,6 +246,24 @@ public class QRecord implements Serializable } + /*************************************************************************** + ** copy all values from 'joinedRecord' into this record's values map, + ** prefixing field names with joinTableNam + "." + ***************************************************************************/ + public void addJoinedRecordValues(String joinTableName, QRecord joinedRecord) + { + if(joinedRecord == null) + { + return; + } + + for(Map.Entry entry : joinedRecord.getValues().entrySet()) + { + setValue(joinTableName + "." + entry.getKey(), entry.getValue()); + } + } + + /******************************************************************************* ** diff --git a/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/model/data/QRecordTest.java b/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/model/data/QRecordTest.java index 0bd1ddf3..797a93a3 100644 --- a/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/model/data/QRecordTest.java +++ b/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/model/data/QRecordTest.java @@ -291,4 +291,24 @@ class QRecordTest extends BaseTest assertFalse(jsonObject.has("errorsAsString")); } + + + /******************************************************************************* + ** + *******************************************************************************/ + @Test + void testAddJoinedRecordValues() + { + QRecord order = new QRecord().withValue("id", 1).withValue("shipTo", "St. Louis"); + order.addJoinedRecordValues("orderInstructions", null); + assertEquals(2, order.getValues().size()); + + QRecord orderInstructions = new QRecord().withValue("id", 100).withValue("instructions", "Be Careful"); + order.addJoinedRecordValues("orderInstructions", orderInstructions); + + assertEquals(4, order.getValues().size()); + assertEquals(100, order.getValue("orderInstructions.id")); + assertEquals("Be Careful", order.getValue("orderInstructions.instructions")); + } + } \ No newline at end of file