Add validation and enrichment for QSupplementalFieldMetaData, plus option to include in frontendMetaData

This commit is contained in:
2025-05-23 12:16:40 -05:00
parent ff7abe89f5
commit 5754c940af
3 changed files with 66 additions and 2 deletions

View File

@ -55,6 +55,7 @@ import com.kingsrook.qqq.backend.core.model.metadata.fields.DynamicDefaultValueB
import com.kingsrook.qqq.backend.core.model.metadata.fields.FieldAdornment; import com.kingsrook.qqq.backend.core.model.metadata.fields.FieldAdornment;
import com.kingsrook.qqq.backend.core.model.metadata.fields.QFieldMetaData; import com.kingsrook.qqq.backend.core.model.metadata.fields.QFieldMetaData;
import com.kingsrook.qqq.backend.core.model.metadata.fields.QFieldType; import com.kingsrook.qqq.backend.core.model.metadata.fields.QFieldType;
import com.kingsrook.qqq.backend.core.model.metadata.fields.QSupplementalFieldMetaData;
import com.kingsrook.qqq.backend.core.model.metadata.joins.QJoinMetaData; import com.kingsrook.qqq.backend.core.model.metadata.joins.QJoinMetaData;
import com.kingsrook.qqq.backend.core.model.metadata.layout.QAppChildMetaData; import com.kingsrook.qqq.backend.core.model.metadata.layout.QAppChildMetaData;
import com.kingsrook.qqq.backend.core.model.metadata.layout.QAppMetaData; import com.kingsrook.qqq.backend.core.model.metadata.layout.QAppMetaData;
@ -582,6 +583,14 @@ public class QInstanceEnricher
} }
} }
////////////////////////////////////////////////////
// enrich any supplemental meta data on the field //
////////////////////////////////////////////////////
for(QSupplementalFieldMetaData supplementalFieldMetaData : CollectionUtils.nonNullMap(field.getSupplementalMetaData()).values())
{
supplementalFieldMetaData.enrich(qInstance, field);
}
runPlugins(QFieldMetaData.class, field, qInstance); runPlugins(QFieldMetaData.class, field, qInstance);
} }

View File

@ -72,6 +72,7 @@ import com.kingsrook.qqq.backend.core.model.metadata.fields.AdornmentType;
import com.kingsrook.qqq.backend.core.model.metadata.fields.FieldAdornment; import com.kingsrook.qqq.backend.core.model.metadata.fields.FieldAdornment;
import com.kingsrook.qqq.backend.core.model.metadata.fields.FieldBehavior; import com.kingsrook.qqq.backend.core.model.metadata.fields.FieldBehavior;
import com.kingsrook.qqq.backend.core.model.metadata.fields.QFieldMetaData; import com.kingsrook.qqq.backend.core.model.metadata.fields.QFieldMetaData;
import com.kingsrook.qqq.backend.core.model.metadata.fields.QSupplementalFieldMetaData;
import com.kingsrook.qqq.backend.core.model.metadata.fields.ValueTooLongBehavior; import com.kingsrook.qqq.backend.core.model.metadata.fields.ValueTooLongBehavior;
import com.kingsrook.qqq.backend.core.model.metadata.joins.JoinOn; import com.kingsrook.qqq.backend.core.model.metadata.joins.JoinOn;
import com.kingsrook.qqq.backend.core.model.metadata.joins.JoinType; import com.kingsrook.qqq.backend.core.model.metadata.joins.JoinType;
@ -1148,6 +1149,21 @@ public class QInstanceValidator
} }
} }
} }
validateFieldSupplementalMetaData(field, qInstance);
}
/***************************************************************************
**
***************************************************************************/
public void validateFieldSupplementalMetaData(QFieldMetaData field, QInstance qInstance)
{
for(QSupplementalFieldMetaData supplementalFieldMetaData : CollectionUtils.nonNullMap(field.getSupplementalMetaData()).values())
{
supplementalFieldMetaData.validate(qInstance, field, this);
}
} }
@ -1701,6 +1717,8 @@ public class QInstanceValidator
validateSimpleCodeReference("Process " + processName + " code reference:", codeReference, expectedClass); validateSimpleCodeReference("Process " + processName + " code reference:", codeReference, expectedClass);
} }
validateFieldSupplementalMetaData(fieldMetaData, qInstance);
} }
} }
} }
@ -2238,8 +2256,7 @@ public class QInstanceValidator
/******************************************************************************* /*******************************************************************************
** **
*******************************************************************************/ *******************************************************************************/
@SafeVarargs public void validateSimpleCodeReference(String prefix, QCodeReference codeReference, Class<?>... anyOfExpectedClasses)
private void validateSimpleCodeReference(String prefix, QCodeReference codeReference, Class<?>... anyOfExpectedClasses)
{ {
if(!preAssertionsForCodeReference(codeReference, prefix)) if(!preAssertionsForCodeReference(codeReference, prefix))
{ {

View File

@ -22,6 +22,10 @@
package com.kingsrook.qqq.backend.core.model.metadata.fields; package com.kingsrook.qqq.backend.core.model.metadata.fields;
import com.kingsrook.qqq.backend.core.instances.QInstanceValidator;
import com.kingsrook.qqq.backend.core.model.metadata.QInstance;
/******************************************************************************* /*******************************************************************************
** Base-class for field-level meta-data defined by some supplemental module, etc, ** Base-class for field-level meta-data defined by some supplemental module, etc,
** outside of qqq core ** outside of qqq core
@ -29,9 +33,43 @@ package com.kingsrook.qqq.backend.core.model.metadata.fields;
public abstract class QSupplementalFieldMetaData public abstract class QSupplementalFieldMetaData
{ {
/*******************************************************************************
**
*******************************************************************************/
public boolean includeInFrontendMetaData()
{
return (false);
}
/******************************************************************************* /*******************************************************************************
** Getter for type ** Getter for type
*******************************************************************************/ *******************************************************************************/
public abstract String getType(); public abstract String getType();
/***************************************************************************
**
***************************************************************************/
public void enrich(QInstance qInstance, QFieldMetaData fieldMetaData)
{
////////////////////////
// noop in base class //
////////////////////////
}
/*******************************************************************************
**
*******************************************************************************/
public void validate(QInstance qInstance, QFieldMetaData fieldMetaData, QInstanceValidator qInstanceValidator)
{
////////////////////////
// noop in base class //
////////////////////////
}
} }