More error handling from customizers

This commit is contained in:
2023-05-09 10:09:29 -05:00
parent b2c7062709
commit 7af164e002
5 changed files with 237 additions and 20 deletions

View File

@ -26,6 +26,7 @@ import java.io.Serializable;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import com.kingsrook.qqq.backend.core.exceptions.QException;
import com.kingsrook.qqq.backend.core.model.actions.tables.update.UpdateInput;
import com.kingsrook.qqq.backend.core.model.data.QRecord;
@ -59,7 +60,7 @@ public abstract class AbstractPreUpdateCustomizer
/*******************************************************************************
**
*******************************************************************************/
public abstract List<QRecord> apply(List<QRecord> records);
public abstract List<QRecord> apply(List<QRecord> records) throws QException;

View File

@ -32,6 +32,7 @@ import java.util.List;
import java.util.Map;
import java.util.Optional;
import java.util.Set;
import com.kingsrook.qqq.backend.core.actions.customizers.TableCustomizers;
import com.kingsrook.qqq.backend.core.exceptions.QException;
import com.kingsrook.qqq.backend.core.model.data.QRecordEntity;
import com.kingsrook.qqq.backend.core.model.data.QRecordEntityField;
@ -517,13 +518,27 @@ public class QTableMetaData implements QAppChildMetaData, Serializable, MetaData
{
this.customizers = new HashMap<>();
}
// todo - check for dupes?
if(this.customizers.containsKey(role))
{
throw (new IllegalArgumentException("Attempt to add a second customizer with role [" + role + "] to table [" + name + "]."));
}
this.customizers.put(role, customizer);
return (this);
}
/*******************************************************************************
**
*******************************************************************************/
public QTableMetaData withCustomizer(TableCustomizers tableCustomizer, QCodeReference customizer)
{
return (withCustomizer(tableCustomizer.getRole(), customizer));
}
/*******************************************************************************
**
*******************************************************************************/