From ae4e269b889aab8f8506403b3c802552b79bef4c Mon Sep 17 00:00:00 2001 From: Darin Kelkhoff Date: Tue, 18 Mar 2025 10:48:15 -0500 Subject: [PATCH] Add static getTableName(Class) and instance.tableName() methods. --- .../core/model/data/QRecordEntity.java | 27 +++++++++++++++++++ .../core/model/data/QRecordEntityTest.java | 19 +++++++++++++ 2 files changed, 46 insertions(+) diff --git a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/model/data/QRecordEntity.java b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/model/data/QRecordEntity.java index c07446a0..d18a9615 100644 --- a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/model/data/QRecordEntity.java +++ b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/model/data/QRecordEntity.java @@ -583,4 +583,31 @@ public abstract class QRecordEntity return (null); } + + /*************************************************************************** + ** + ***************************************************************************/ + public static String getTableName(Class entityClass) throws QException + { + try + { + Field tableNameField = entityClass.getDeclaredField("TABLE_NAME"); + String tableNameValue = (String) tableNameField.get(null); + return (tableNameValue); + } + catch(Exception e) + { + throw (new QException("Could not get TABLE_NAME from entity class: " + entityClass.getSimpleName(), e)); + } + } + + + /*************************************************************************** + ** named without the 'get' to avoid conflict w/ entity fields named that... + ***************************************************************************/ + public String tableName() throws QException + { + return (getTableName(this.getClass())); + } + } diff --git a/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/model/data/QRecordEntityTest.java b/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/model/data/QRecordEntityTest.java index 38beaae4..f1111aa9 100644 --- a/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/model/data/QRecordEntityTest.java +++ b/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/model/data/QRecordEntityTest.java @@ -41,6 +41,7 @@ import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import static org.assertj.core.api.Assertions.assertThat; +import static org.assertj.core.api.Assertions.assertThatThrownBy; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertFalse; import static org.junit.jupiter.api.Assertions.assertNotNull; @@ -566,4 +567,22 @@ class QRecordEntityTest extends BaseTest assertEquals(0, order.getLineItems().size()); } + + + /******************************************************************************* + ** + *******************************************************************************/ + @Test + void testTableName() throws QException + { + assertEquals(Item.TABLE_NAME, QRecordEntity.getTableName(Item.class)); + assertEquals(Item.TABLE_NAME, Item.getTableName(Item.class)); + assertEquals(Item.TABLE_NAME, new Item().tableName()); + + ////////////////////////////////// + // no TABLE_NAME in Order class // + ////////////////////////////////// + assertThatThrownBy(() -> Order.getTableName(Order.class)); + } + } \ No newline at end of file