package com.constellio.app.modules.tasks.model.validators;
import static com.constellio.app.modules.tasks.model.wrappers.TaskStatusType.CLOSED;
import static com.constellio.app.modules.tasks.model.wrappers.TaskStatusType.STANDBY;
import static com.constellio.app.modules.tasks.model.wrappers.types.TaskStatus.CLOSED_CODE;
import static com.constellio.app.modules.tasks.model.wrappers.types.TaskStatus.STANDBY_CODE;
import static com.constellio.app.ui.i18n.i18n.$;
import com.constellio.app.modules.tasks.model.wrappers.TaskStatusType;
import com.constellio.app.modules.tasks.model.wrappers.types.TaskStatus;
import com.constellio.model.entities.schemas.validation.RecordValidator;
import com.constellio.model.frameworks.validation.ValidationErrors;
import com.constellio.model.services.records.RecordValidatorParams;
public class TaskStatusValidator implements RecordValidator {
private static final String INVALID_CODE__TYPE = "invalidCodeTypeAssociation";
@Override
public void validate(RecordValidatorParams params) {
TaskStatus taskStatus = new TaskStatus(params.getValidatedRecord(), params.getTypes());
validate(taskStatus, params.getValidationErrors());
}
void validate(TaskStatus taskStatus, ValidationErrors validationErrors) {
TaskStatusType statusType = taskStatus.getStatusType();
if (statusType != null) {
if (statusType == CLOSED) {
String statusCode = taskStatus.getCode();
if ((statusCode == null) || !statusCode.equals(CLOSED_CODE)) {
validationErrors.add(getClass(), $(INVALID_CODE__TYPE) + " (" + CLOSED_CODE + ", " + statusCode + ")");
}
} else if (statusType == STANDBY) {
String statusCode = taskStatus.getCode();
if ((statusCode == null) || !statusCode.equals(STANDBY_CODE)) {
validationErrors.add(getClass(), $(INVALID_CODE__TYPE) + " (" + STANDBY_CODE + ", " + statusCode + ")");
}
}
}
}
}