package com.constellio.app.modules.complementary.esRmRobots.validators; import org.apache.commons.lang.StringUtils; import com.constellio.app.modules.complementary.esRmRobots.model.ClassifyConnectorFolderInTaxonomyActionParameters; import com.constellio.model.entities.schemas.ConfigProvider; import com.constellio.model.entities.schemas.MetadataSchema; import com.constellio.model.entities.schemas.validation.RecordValidator; import com.constellio.model.frameworks.validation.ValidationErrors; import com.constellio.model.services.records.RecordValidatorParams; public class ClassifyConnectorTaxonomyActionParametersValidator implements RecordValidator { public static final String MUST_SPECIFY_TAXO_XOR_DEFAULT_PARENT_FOLDER = "mustSpecifyTaxoXORDefaultParentFolder"; public static final String MUST_NOT_SPECIFY_DEFAULT_VALUES_WITH_PARENT_FOLDER = "mustNotSpecifyDefaultValuesWithParentFolder"; public static final String MUST_SPECIFY_DEFAULT_OPENDATE_OR_MAPPING = "mustSpecifyDefaultOpenDateOrMapping"; public static final String MUST_SPECIFY_PATH_PREFIX_WITH_TAXO = "mustSpecifyPathPrefixWithTaxo"; public static final String MUST_SPECIFY_ALL_DEFAULT_VALUES_WHEN_NO_MAPPING_AND_NO_PARENT_FOLDER = "mustSpecifyAllDefaultValuesWhenNoMappingAndNoParentFolder"; @Override public void validate(RecordValidatorParams params) { ClassifyConnectorFolderInTaxonomyActionParameters parameters = new ClassifyConnectorFolderInTaxonomyActionParameters( params.getValidatedRecord(), params.getTypes()); validate(parameters, params.getSchema(), params.getConfigProvider(), params.getValidationErrors()); } void validate(ClassifyConnectorFolderInTaxonomyActionParameters parameters, MetadataSchema schema, ConfigProvider configProvider, ValidationErrors validationErrors) { if (StringUtils.isNotEmpty(parameters.getDefaultParentFolder())) { validateParentFolderUseCase(parameters, validationErrors); } else if (StringUtils.isNotEmpty(parameters.getInTaxonomy())) { validateClassifyInTaxoUseCase(parameters, validationErrors); } } private void validateClassifyInTaxoUseCase(ClassifyConnectorFolderInTaxonomyActionParameters parameters, ValidationErrors validationErrors) { if (StringUtils.isEmpty(parameters.getPathPrefix())) { validationErrors.add(getClass(), MUST_SPECIFY_PATH_PREFIX_WITH_TAXO); } } private void validateParentFolderUseCase(ClassifyConnectorFolderInTaxonomyActionParameters parameters, ValidationErrors validationErrors) { if (StringUtils.isNotEmpty(parameters.getInTaxonomy())) { validationErrors.add(getClass(), MUST_SPECIFY_TAXO_XOR_DEFAULT_PARENT_FOLDER); } else if (StringUtils.isNotEmpty(parameters.getDefaultAdminUnit()) || StringUtils .isNotEmpty(parameters.getDefaultRetentionRule()) || StringUtils.isNotEmpty(parameters.getDefaultCategory())) { validationErrors.add(getClass(), MUST_NOT_SPECIFY_DEFAULT_VALUES_WITH_PARENT_FOLDER); } else if (parameters.getFolderMapping() == null && parameters.getDefaultOpenDate() == null) { validationErrors.add(getClass(), MUST_SPECIFY_DEFAULT_OPENDATE_OR_MAPPING); } } }