Add overload constructor that takes al ist of field names (e.g., in support of api-versioning)

This commit is contained in:
2025-05-23 12:15:45 -05:00
parent 1eb8b0c560
commit ff7abe89f5

View File

@ -85,23 +85,35 @@ public class QFrontendTableMetaData
// do not add setters. take values from the source-object in the constructor!! // // do not add setters. take values from the source-object in the constructor!! //
////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////
/***************************************************************************
** standard constructor - uses all fields on the table.
***************************************************************************/
public QFrontendTableMetaData(AbstractActionInput actionInput, QBackendMetaData backendForTable, QTableMetaData tableMetaData, boolean includeFullMetaData, boolean includeJoins)
{
this(actionInput, backendForTable, tableMetaData, includeFullMetaData, includeJoins, tableMetaData.getFields());
}
/******************************************************************************* /*******************************************************************************
** ** alternative constructor - takes a map of fields to use (e.g., for an old
** api version of the table w/ different fields!)
*******************************************************************************/ *******************************************************************************/
public QFrontendTableMetaData(AbstractActionInput actionInput, QBackendMetaData backendForTable, QTableMetaData tableMetaData, boolean includeFullMetaData, boolean includeJoins) public QFrontendTableMetaData(AbstractActionInput actionInput, QBackendMetaData backendForTable, QTableMetaData tableMetaData, boolean includeFullMetaData, boolean includeJoins, Map<String, QFieldMetaData> overrideFields)
{ {
this.name = tableMetaData.getName(); this.name = tableMetaData.getName();
this.label = tableMetaData.getLabel(); this.label = tableMetaData.getLabel();
this.isHidden = tableMetaData.getIsHidden(); this.isHidden = tableMetaData.getIsHidden();
Map<String, QFieldMetaData> inputFields = overrideFields == null ? tableMetaData.getFields() : overrideFields;
if(includeFullMetaData) if(includeFullMetaData)
{ {
this.primaryKeyField = tableMetaData.getPrimaryKeyField(); this.primaryKeyField = tableMetaData.getPrimaryKeyField();
this.fields = new HashMap<>(); this.fields = new HashMap<>();
for(String fieldName : tableMetaData.getFields().keySet()) for(String fieldName : inputFields.keySet())
{ {
QFieldMetaData field = tableMetaData.getField(fieldName); QFieldMetaData field = inputFields.get(fieldName);
if(!field.getIsHidden()) if(!field.getIsHidden())
{ {
this.fields.put(fieldName, new QFrontendFieldMetaData(field)); this.fields.put(fieldName, new QFrontendFieldMetaData(field));