CE-881 - Add USER_ID to DynamicDefaultValueBehavior

This commit is contained in:
2024-03-27 19:56:22 -05:00
parent c683794343
commit b802f4a900

View File

@ -28,11 +28,14 @@ import java.time.LocalDate;
import java.util.List; import java.util.List;
import java.util.Set; import java.util.Set;
import com.kingsrook.qqq.backend.core.actions.values.ValueBehaviorApplier; import com.kingsrook.qqq.backend.core.actions.values.ValueBehaviorApplier;
import com.kingsrook.qqq.backend.core.context.QContext;
import com.kingsrook.qqq.backend.core.logging.QLogger; import com.kingsrook.qqq.backend.core.logging.QLogger;
import com.kingsrook.qqq.backend.core.model.data.QRecord; import com.kingsrook.qqq.backend.core.model.data.QRecord;
import com.kingsrook.qqq.backend.core.model.metadata.QInstance; import com.kingsrook.qqq.backend.core.model.metadata.QInstance;
import com.kingsrook.qqq.backend.core.model.metadata.tables.QTableMetaData; import com.kingsrook.qqq.backend.core.model.metadata.tables.QTableMetaData;
import com.kingsrook.qqq.backend.core.utils.CollectionUtils; import com.kingsrook.qqq.backend.core.utils.CollectionUtils;
import com.kingsrook.qqq.backend.core.utils.ObjectUtils;
import com.kingsrook.qqq.backend.core.utils.StringUtils;
import static com.kingsrook.qqq.backend.core.logging.LogUtils.logPair; import static com.kingsrook.qqq.backend.core.logging.LogUtils.logPair;
@ -45,6 +48,7 @@ public enum DynamicDefaultValueBehavior implements FieldBehavior<DynamicDefaultV
{ {
CREATE_DATE, CREATE_DATE,
MODIFY_DATE, MODIFY_DATE,
USER_ID,
NONE; NONE;
private static final QLogger LOG = QLogger.getLogger(ValueTooLongBehavior.class); private static final QLogger LOG = QLogger.getLogger(ValueTooLongBehavior.class);
@ -81,6 +85,7 @@ public enum DynamicDefaultValueBehavior implements FieldBehavior<DynamicDefaultV
{ {
case CREATE_DATE -> applyCreateDate(action, recordList, table, field); case CREATE_DATE -> applyCreateDate(action, recordList, table, field);
case MODIFY_DATE -> applyModifyDate(action, recordList, table, field); case MODIFY_DATE -> applyModifyDate(action, recordList, table, field);
case USER_ID -> applyUserId(action, recordList, table, field);
default -> throw new IllegalStateException("Unexpected enum value: " + this); default -> throw new IllegalStateException("Unexpected enum value: " + this);
} }
} }
@ -136,6 +141,27 @@ public enum DynamicDefaultValueBehavior implements FieldBehavior<DynamicDefaultV
/*******************************************************************************
**
*******************************************************************************/
private void applyUserId(ValueBehaviorApplier.Action action, List<QRecord> recordList, QTableMetaData table, QFieldMetaData field)
{
String fieldName = field.getName();
String userId = ObjectUtils.tryElse(() -> QContext.getQSession().getUser().getIdReference(), null);
if(StringUtils.hasContent(userId))
{
for(QRecord record : CollectionUtils.nonNullList(recordList))
{
if(!StringUtils.hasContent(record.getValueString(fieldName)))
{
record.setValue(field.getName(), userId);
}
}
}
}
/******************************************************************************* /*******************************************************************************
** **
*******************************************************************************/ *******************************************************************************/