From 1f9921b9183dc8c993cc5acbd8db8f696284fbc6 Mon Sep 17 00:00:00 2001 From: Darin Kelkhoff Date: Wed, 22 Nov 2023 08:57:42 -0600 Subject: [PATCH] Add TopLevelMetaDataInterface --- .../metadata/QSupplementalInstanceMetaData.java | 14 +++++++++++++- .../authentication/QAuthenticationMetaData.java | 15 ++++++++++++++- .../automation/QAutomationProviderMetaData.java | 15 ++++++++++++++- .../metadata/branding/QBrandingMetaData.java | 16 +++++++++++++++- .../dashboard/QWidgetMetaDataInterface.java | 12 +++++++++++- .../metadata/queues/QQueueProviderMetaData.java | 17 ++++++++++++++++- .../metadata/reporting/QReportMetaData.java | 15 ++++++++++++++- .../metadata/security/QSecurityKeyType.java | 17 ++++++++++++++++- 8 files changed, 113 insertions(+), 8 deletions(-) diff --git a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/model/metadata/QSupplementalInstanceMetaData.java b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/model/metadata/QSupplementalInstanceMetaData.java index cd2789e4..28ce1d40 100644 --- a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/model/metadata/QSupplementalInstanceMetaData.java +++ b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/model/metadata/QSupplementalInstanceMetaData.java @@ -30,7 +30,7 @@ import com.kingsrook.qqq.backend.core.model.metadata.tables.QTableMetaData; ** Base-class for instance-level meta-data defined by some supplemental module, etc, ** outside of qqq core *******************************************************************************/ -public abstract class QSupplementalInstanceMetaData +public abstract class QSupplementalInstanceMetaData implements TopLevelMetaDataInterface { /******************************************************************************* @@ -61,4 +61,16 @@ public abstract class QSupplementalInstanceMetaData // noop in base class // //////////////////////// } + + + + /******************************************************************************* + ** + *******************************************************************************/ + @Override + public void addSelfToInstance(QInstance qInstance) + { + qInstance.withSupplementalMetaData(this); + } + } diff --git a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/model/metadata/authentication/QAuthenticationMetaData.java b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/model/metadata/authentication/QAuthenticationMetaData.java index 3f0b1bdb..cf07846d 100644 --- a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/model/metadata/authentication/QAuthenticationMetaData.java +++ b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/model/metadata/authentication/QAuthenticationMetaData.java @@ -26,6 +26,8 @@ import java.util.HashMap; import java.util.Map; import com.fasterxml.jackson.annotation.JsonFilter; import com.kingsrook.qqq.backend.core.model.metadata.QAuthenticationType; +import com.kingsrook.qqq.backend.core.model.metadata.QInstance; +import com.kingsrook.qqq.backend.core.model.metadata.TopLevelMetaDataInterface; /******************************************************************************* @@ -33,7 +35,7 @@ import com.kingsrook.qqq.backend.core.model.metadata.QAuthenticationType; ** etc) within a qqq instance ** *******************************************************************************/ -public class QAuthenticationMetaData +public class QAuthenticationMetaData implements TopLevelMetaDataInterface { private String name; private QAuthenticationType type; @@ -179,4 +181,15 @@ public class QAuthenticationMetaData return (this); } + + + /******************************************************************************* + ** + *******************************************************************************/ + @Override + public void addSelfToInstance(QInstance qInstance) + { + qInstance.setAuthentication(this); + } + } diff --git a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/model/metadata/automation/QAutomationProviderMetaData.java b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/model/metadata/automation/QAutomationProviderMetaData.java index 30fc50f9..6dca9cde 100644 --- a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/model/metadata/automation/QAutomationProviderMetaData.java +++ b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/model/metadata/automation/QAutomationProviderMetaData.java @@ -22,13 +22,15 @@ package com.kingsrook.qqq.backend.core.model.metadata.automation; +import com.kingsrook.qqq.backend.core.model.metadata.QInstance; +import com.kingsrook.qqq.backend.core.model.metadata.TopLevelMetaDataInterface; import com.kingsrook.qqq.backend.core.model.metadata.scheduleing.QScheduleMetaData; /******************************************************************************* ** Meta-data definition of a qqq service to drive record automations. *******************************************************************************/ -public class QAutomationProviderMetaData +public class QAutomationProviderMetaData implements TopLevelMetaDataInterface { private String name; private QAutomationProviderType type; @@ -137,4 +139,15 @@ public class QAutomationProviderMetaData return (this); } + + + /******************************************************************************* + ** + *******************************************************************************/ + @Override + public void addSelfToInstance(QInstance qInstance) + { + qInstance.addAutomationProvider(this); + } + } diff --git a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/model/metadata/branding/QBrandingMetaData.java b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/model/metadata/branding/QBrandingMetaData.java index 67b5f99d..6e2d7541 100644 --- a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/model/metadata/branding/QBrandingMetaData.java +++ b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/model/metadata/branding/QBrandingMetaData.java @@ -22,11 +22,15 @@ package com.kingsrook.qqq.backend.core.model.metadata.branding; +import com.kingsrook.qqq.backend.core.model.metadata.QInstance; +import com.kingsrook.qqq.backend.core.model.metadata.TopLevelMetaDataInterface; + + /******************************************************************************* ** Meta-Data to define branding in a QQQ instance. ** *******************************************************************************/ -public class QBrandingMetaData +public class QBrandingMetaData implements TopLevelMetaDataInterface { private String companyName; private String companyUrl; @@ -309,4 +313,14 @@ public class QBrandingMetaData return (this); } + + + /******************************************************************************* + ** + *******************************************************************************/ + @Override + public void addSelfToInstance(QInstance qInstance) + { + qInstance.setBranding(this); + } } diff --git a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/model/metadata/dashboard/QWidgetMetaDataInterface.java b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/model/metadata/dashboard/QWidgetMetaDataInterface.java index 1c3ad3db..779658d3 100644 --- a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/model/metadata/dashboard/QWidgetMetaDataInterface.java +++ b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/model/metadata/dashboard/QWidgetMetaDataInterface.java @@ -25,6 +25,8 @@ package com.kingsrook.qqq.backend.core.model.metadata.dashboard; import java.io.Serializable; import java.util.List; import java.util.Map; +import com.kingsrook.qqq.backend.core.model.metadata.QInstance; +import com.kingsrook.qqq.backend.core.model.metadata.TopLevelMetaDataInterface; import com.kingsrook.qqq.backend.core.model.metadata.code.QCodeReference; import com.kingsrook.qqq.backend.core.model.metadata.permissions.MetaDataWithPermissionRules; import com.kingsrook.qqq.backend.core.model.metadata.permissions.QPermissionRules; @@ -34,7 +36,7 @@ import com.kingsrook.qqq.backend.core.model.metadata.permissions.QPermissionRule ** Interface for qqq widget meta data ** *******************************************************************************/ -public interface QWidgetMetaDataInterface extends MetaDataWithPermissionRules +public interface QWidgetMetaDataInterface extends MetaDataWithPermissionRules, TopLevelMetaDataInterface { /******************************************************************************* ** Getter for name @@ -226,5 +228,13 @@ public interface QWidgetMetaDataInterface extends MetaDataWithPermissionRules return (null); } + /******************************************************************************* + ** + *******************************************************************************/ + default void addSelfToInstance(QInstance qInstance) + { + qInstance.addWidget(this); + } + } diff --git a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/model/metadata/queues/QQueueProviderMetaData.java b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/model/metadata/queues/QQueueProviderMetaData.java index bf0faec6..a3379512 100644 --- a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/model/metadata/queues/QQueueProviderMetaData.java +++ b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/model/metadata/queues/QQueueProviderMetaData.java @@ -22,10 +22,14 @@ package com.kingsrook.qqq.backend.core.model.metadata.queues; +import com.kingsrook.qqq.backend.core.model.metadata.QInstance; +import com.kingsrook.qqq.backend.core.model.metadata.TopLevelMetaDataInterface; + + /******************************************************************************* ** Define a provider of queues (e.g., an MQ system, or SQS) *******************************************************************************/ -public class QQueueProviderMetaData +public class QQueueProviderMetaData implements TopLevelMetaDataInterface { private String name; private QueueType type; @@ -98,4 +102,15 @@ public class QQueueProviderMetaData return (this); } + + + /******************************************************************************* + ** + *******************************************************************************/ + @Override + public void addSelfToInstance(QInstance qInstance) + { + qInstance.addQueueProvider(this); + } + } diff --git a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/model/metadata/reporting/QReportMetaData.java b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/model/metadata/reporting/QReportMetaData.java index e8740f29..649de4ee 100644 --- a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/model/metadata/reporting/QReportMetaData.java +++ b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/model/metadata/reporting/QReportMetaData.java @@ -24,6 +24,8 @@ package com.kingsrook.qqq.backend.core.model.metadata.reporting; import java.util.ArrayList; import java.util.List; +import com.kingsrook.qqq.backend.core.model.metadata.QInstance; +import com.kingsrook.qqq.backend.core.model.metadata.TopLevelMetaDataInterface; import com.kingsrook.qqq.backend.core.model.metadata.fields.QFieldMetaData; import com.kingsrook.qqq.backend.core.model.metadata.layout.QAppChildMetaData; import com.kingsrook.qqq.backend.core.model.metadata.layout.QIcon; @@ -35,7 +37,7 @@ import com.kingsrook.qqq.backend.core.utils.CollectionUtils; /******************************************************************************* ** Meta-data definition of a report generated by QQQ *******************************************************************************/ -public class QReportMetaData implements QAppChildMetaData, MetaDataWithPermissionRules +public class QReportMetaData implements QAppChildMetaData, MetaDataWithPermissionRules, TopLevelMetaDataInterface { private String name; private String label; @@ -384,4 +386,15 @@ public class QReportMetaData implements QAppChildMetaData, MetaDataWithPermissio return (this); } + + + /******************************************************************************* + ** + *******************************************************************************/ + @Override + public void addSelfToInstance(QInstance qInstance) + { + qInstance.addReport(this); + } + } diff --git a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/model/metadata/security/QSecurityKeyType.java b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/model/metadata/security/QSecurityKeyType.java index a1404c75..74290b75 100644 --- a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/model/metadata/security/QSecurityKeyType.java +++ b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/model/metadata/security/QSecurityKeyType.java @@ -22,11 +22,15 @@ package com.kingsrook.qqq.backend.core.model.metadata.security; +import com.kingsrook.qqq.backend.core.model.metadata.QInstance; +import com.kingsrook.qqq.backend.core.model.metadata.TopLevelMetaDataInterface; + + /******************************************************************************* ** Define a type of security key (e.g., a field associated with values), that ** can be used to control access to records and/or fields *******************************************************************************/ -public class QSecurityKeyType +public class QSecurityKeyType implements TopLevelMetaDataInterface { private String name; private String allAccessKeyName; @@ -134,4 +138,15 @@ public class QSecurityKeyType return (this); } + + + /******************************************************************************* + ** + *******************************************************************************/ + @Override + public void addSelfToInstance(QInstance qInstance) + { + qInstance.addSecurityKeyType(this); + } + }