package com.constellio.model.api.impl.schemas.validation.impl;
import java.util.HashMap;
import java.util.Map;
import org.joda.time.LocalDateTime;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.constellio.model.entities.schemas.Metadata;
import com.constellio.model.entities.schemas.validation.RecordValidator;
import com.constellio.model.frameworks.validation.ValidationErrors;
import com.constellio.model.services.records.RecordValidatorParams;
public class CreationDateIsBeforeOrEqualToLastModificationDateValidator implements RecordValidator {
public static final String MODIFICATION_DATE_MESSAGE_PARAM = "modificationDate";
public static final String CREATION_DATE_MESSAGE_PARAM = "creationDate";
public static final String CREATION_DATE_IS_AFTER_MODIFICATION_DATE = "creationDateIsAfterModificationDate";
private static final Logger LOGGER = LoggerFactory
.getLogger(CreationDateIsBeforeOrEqualToLastModificationDateValidator.class);
@Override
public void validate(RecordValidatorParams params) {
Metadata creationDateMetadata = params.getSchema().getMetadata("creationDate");
Metadata modificationDateMetadata = params.getSchema().getMetadata("modificationDate");
LocalDateTime creationDate = params.getValidatedRecord().get(creationDateMetadata);
LocalDateTime modificationDate = params.getValidatedRecord().get(modificationDateMetadata);
validate(creationDate, modificationDate, params.getValidationErrors());
}
private void validate(LocalDateTime creationDate, LocalDateTime modificationDate, ValidationErrors validationErrors) {
if (creationDate != null && modificationDate != null && creationDate.isAfter(modificationDate)) {
Map<String, Object> parameters = new HashMap<>();
parameters.put(CREATION_DATE_MESSAGE_PARAM, creationDate.toString());
parameters.put(MODIFICATION_DATE_MESSAGE_PARAM, modificationDate.toString());
validationErrors.add(getClass(), CREATION_DATE_IS_AFTER_MODIFICATION_DATE, parameters);
}
}
}