package com.constellio.model.services.schemas.validators;
import java.util.HashMap;
import java.util.List;
import com.constellio.model.entities.records.Record;
import com.constellio.model.entities.schemas.Metadata;
import com.constellio.model.entities.schemas.MetadataSchemaTypes;
import com.constellio.model.frameworks.validation.ValidationErrors;
import com.constellio.model.frameworks.validation.Validator;
import com.constellio.model.services.records.RecordImplRuntimeException.RecordImplException_RecordCannotHaveTwoParents;
public class MetadataChildOfValidator implements Validator<Record> {
public static final String MULTIPLE_PARENTS = "multipleParentForRecord";
private final List<Metadata> metadatas;
private final MetadataSchemaTypes schemaTypes;
public MetadataChildOfValidator(List<Metadata> metadatas, MetadataSchemaTypes schemaTypes) {
this.metadatas = metadatas;
this.schemaTypes = schemaTypes;
}
@Override
public void validate(Record record, ValidationErrors validationErrors) {
List<Metadata> parentMetadatas = schemaTypes.getSchema(record.getSchemaCode()).getParentReferences();
if (!parentMetadatas.isEmpty()) {
try {
record.getNonNullValueIn(parentMetadatas);
} catch (RecordImplException_RecordCannotHaveTwoParents e) {
validationErrors.add(getClass(), MULTIPLE_PARENTS, new HashMap<String, Object>());
}
}
}
}