mirror of
https://github.com/Alfresco/alfresco-community-repo.git
synced 2025-08-07 17:49:17 +00:00
RM-2319 Validate classification reasons and exemption categories.
git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/modules/recordsmanagement/HEAD@106529 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
@@ -26,7 +26,9 @@ import com.google.common.collect.ImmutableList;
|
||||
import org.alfresco.module.org_alfresco_module_rm.classification.ClassificationException.MissingConfiguration;
|
||||
import org.alfresco.module.org_alfresco_module_rm.classification.model.ClassifiedContentModel;
|
||||
import org.alfresco.module.org_alfresco_module_rm.classification.validation.ClassificationLevelFieldsValidator;
|
||||
import org.alfresco.module.org_alfresco_module_rm.classification.validation.ClassificationReasonFieldsValidator;
|
||||
import org.alfresco.module.org_alfresco_module_rm.classification.validation.ClassificationSchemeEntityValidator;
|
||||
import org.alfresco.module.org_alfresco_module_rm.classification.validation.ExemptionCategoryFieldsValidator;
|
||||
import org.alfresco.module.org_alfresco_module_rm.util.AuthenticationUtil;
|
||||
import org.alfresco.repo.security.authentication.AuthenticationUtil.RunAsWork;
|
||||
import org.alfresco.repo.transaction.RetryingTransactionHelper.RetryingTransactionCallback;
|
||||
@@ -62,6 +64,10 @@ public class ClassificationServiceBootstrap extends AbstractLifecycleBean implem
|
||||
private ClassificationServiceDAO classificationServiceDAO;
|
||||
private ClassificationLevelFieldsValidator classificationLevelFieldsValidator = new ClassificationLevelFieldsValidator();
|
||||
private ClassificationSchemeEntityValidator<ClassificationLevel> classificationLevelValidator = new ClassificationSchemeEntityValidator<>(classificationLevelFieldsValidator);
|
||||
private ClassificationReasonFieldsValidator classificationReasonFieldsValidator = new ClassificationReasonFieldsValidator();
|
||||
private ClassificationSchemeEntityValidator<ClassificationReason> classificationReasonValidator = new ClassificationSchemeEntityValidator<>(classificationReasonFieldsValidator);
|
||||
private ExemptionCategoryFieldsValidator exemptionCategoryFieldsValidator = new ExemptionCategoryFieldsValidator();
|
||||
private ClassificationSchemeEntityValidator<ExemptionCategory> exemptionCategoryValidator = new ClassificationSchemeEntityValidator<>(exemptionCategoryFieldsValidator);
|
||||
|
||||
public ClassificationServiceBootstrap(AuthenticationUtil authUtil,
|
||||
TransactionService txService,
|
||||
@@ -182,7 +188,7 @@ public class ClassificationServiceBootstrap extends AbstractLifecycleBean implem
|
||||
LOGGER.debug("Persisted classification reasons: {}", loggableStatusOf(persistedReasons));
|
||||
LOGGER.debug("Classpath classification reasons: {}", loggableStatusOf(classpathReasons));
|
||||
|
||||
// TODO Add reason validation.
|
||||
classificationReasonValidator.validate(classpathReasons, ClassificationReason.class.getSimpleName());
|
||||
|
||||
if (isEmpty(persistedReasons))
|
||||
{
|
||||
@@ -240,7 +246,7 @@ public class ClassificationServiceBootstrap extends AbstractLifecycleBean implem
|
||||
LOGGER.debug("Persisted exemption categories: {}", loggableStatusOf(persistedCategories));
|
||||
LOGGER.debug("Classpath exemption categories: {}", loggableStatusOf(classpathCategories));
|
||||
|
||||
// TODO Add exemption category validation.
|
||||
exemptionCategoryValidator.validate(classpathCategories, ExemptionCategory.class.getSimpleName());
|
||||
|
||||
if (isEmpty(persistedCategories))
|
||||
{
|
||||
|
@@ -0,0 +1,56 @@
|
||||
/*
|
||||
* Copyright (C) 2005-2015 Alfresco Software Limited.
|
||||
*
|
||||
* This file is part of Alfresco
|
||||
*
|
||||
* Alfresco is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Lesser General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* Alfresco is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public License
|
||||
* along with Alfresco. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package org.alfresco.module.org_alfresco_module_rm.classification.validation;
|
||||
|
||||
import org.alfresco.module.org_alfresco_module_rm.classification.ClassificationException.IllegalConfiguration;
|
||||
import org.alfresco.module.org_alfresco_module_rm.classification.ClassificationException.MissingConfiguration;
|
||||
import org.alfresco.module.org_alfresco_module_rm.classification.ClassificationReason;
|
||||
|
||||
/**
|
||||
* Validator for the fields in {@link ClassificationReason}.
|
||||
*
|
||||
* @author tpage
|
||||
* @since 3.0
|
||||
*/
|
||||
public class ClassificationReasonFieldsValidator implements EntityFieldsValidator<ClassificationReason>
|
||||
{
|
||||
/** Validator for the length of the reason id and display key. */
|
||||
private FieldValidator<String> lengthFieldValidator = new LengthFieldValidator(1);
|
||||
/** Validator for the start characters in the reason id and display key. */
|
||||
private FieldValidator<String> startCharacterFieldValidator = new StartCharacterFieldValidator();
|
||||
|
||||
/**
|
||||
* Validates the given {@link ClassificationReason}.
|
||||
*
|
||||
* @param classificationReason the reason to validate.
|
||||
* @throws MissingConfiguration if the reason is missing.
|
||||
* @throws IllegalConfiguration if the reason configuration is invalid.
|
||||
*/
|
||||
@Override
|
||||
public void validate(ClassificationReason classificationReason)
|
||||
{
|
||||
final String id = classificationReason.getId();
|
||||
lengthFieldValidator.validate(id, "reason id");
|
||||
startCharacterFieldValidator.validate(id, "reason id");
|
||||
|
||||
final String displayKey = classificationReason.getDisplayLabelKey();
|
||||
lengthFieldValidator.validate(displayKey, "reason display key");
|
||||
startCharacterFieldValidator.validate(displayKey, "reason display key");
|
||||
}
|
||||
}
|
@@ -0,0 +1,56 @@
|
||||
/*
|
||||
* Copyright (C) 2005-2015 Alfresco Software Limited.
|
||||
*
|
||||
* This file is part of Alfresco
|
||||
*
|
||||
* Alfresco is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Lesser General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* Alfresco is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public License
|
||||
* along with Alfresco. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package org.alfresco.module.org_alfresco_module_rm.classification.validation;
|
||||
|
||||
import org.alfresco.module.org_alfresco_module_rm.classification.ClassificationException.IllegalConfiguration;
|
||||
import org.alfresco.module.org_alfresco_module_rm.classification.ClassificationException.MissingConfiguration;
|
||||
import org.alfresco.module.org_alfresco_module_rm.classification.ExemptionCategory;
|
||||
|
||||
/**
|
||||
* Validator for the fields in {@link ExemptionCategory}.
|
||||
*
|
||||
* @author tpage
|
||||
* @since 3.0
|
||||
*/
|
||||
public class ExemptionCategoryFieldsValidator implements EntityFieldsValidator<ExemptionCategory>
|
||||
{
|
||||
/** Validator for the length of the category id and display key. */
|
||||
private FieldValidator<String> lengthFieldValidator = new LengthFieldValidator(1);
|
||||
/** Validator for the start characters in the category id and display key. */
|
||||
private FieldValidator<String> startCharacterFieldValidator = new StartCharacterFieldValidator();
|
||||
|
||||
/**
|
||||
* Validates the given {@link ExemptionCategory}.
|
||||
*
|
||||
* @param exemptionCategory the category to validate.
|
||||
* @throws MissingConfiguration if the category is missing.
|
||||
* @throws IllegalConfiguration if the category configuration is invalid.
|
||||
*/
|
||||
@Override
|
||||
public void validate(ExemptionCategory exemptionCategory)
|
||||
{
|
||||
final String id = exemptionCategory.getId();
|
||||
lengthFieldValidator.validate(id, "exemption category id");
|
||||
startCharacterFieldValidator.validate(id, "exemption category id");
|
||||
|
||||
final String displayKey = exemptionCategory.getDisplayLabelKey();
|
||||
lengthFieldValidator.validate(displayKey, "exemption category display key");
|
||||
startCharacterFieldValidator.validate(displayKey, "exemption category display key");
|
||||
}
|
||||
}
|
@@ -0,0 +1,46 @@
|
||||
/*
|
||||
* Copyright (C) 2005-2015 Alfresco Software Limited.
|
||||
*
|
||||
* This file is part of Alfresco
|
||||
*
|
||||
* Alfresco is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Lesser General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* Alfresco is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public License
|
||||
* along with Alfresco. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package org.alfresco.module.org_alfresco_module_rm.classification.validation;
|
||||
|
||||
import org.alfresco.module.org_alfresco_module_rm.classification.ClassificationException;
|
||||
import org.alfresco.module.org_alfresco_module_rm.classification.ClassificationException.IllegalConfiguration;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
|
||||
/**
|
||||
* Validator that fails if the first character of a field is non-alphanumeric.
|
||||
*
|
||||
* @author tpage
|
||||
* @since 3.0
|
||||
*/
|
||||
public class StartCharacterFieldValidator implements FieldValidator<String>
|
||||
{
|
||||
@Override
|
||||
public void validate(String field, String fieldName) throws ClassificationException
|
||||
{
|
||||
if (field == null || field.length() == 0)
|
||||
{
|
||||
// If the first character doesn't exist then don't fail.
|
||||
return;
|
||||
}
|
||||
if (!StringUtils.isAlphanumeric(field.substring(0, 1)))
|
||||
{
|
||||
throw new IllegalConfiguration("Illegal " + fieldName + ": First character of '" + field + "' is not alphanumeric.");
|
||||
}
|
||||
}
|
||||
}
|
@@ -0,0 +1,54 @@
|
||||
/*
|
||||
* Copyright (C) 2005-2015 Alfresco Software Limited.
|
||||
*
|
||||
* This file is part of Alfresco
|
||||
*
|
||||
* Alfresco is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Lesser General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* Alfresco is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public License
|
||||
* along with Alfresco. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package org.alfresco.module.org_alfresco_module_rm.classification.validation;
|
||||
|
||||
import org.alfresco.module.org_alfresco_module_rm.classification.ClassificationException.IllegalConfiguration;
|
||||
import org.junit.Test;
|
||||
|
||||
/**
|
||||
* Unit tests for the {@link StartCharacterFieldValidator}.
|
||||
*
|
||||
* @author tpage
|
||||
* @since 3.0
|
||||
*/
|
||||
public class StartCharacterFieldValidatorUnitTest
|
||||
{
|
||||
private static final String FIELD_NAME = "FIELD_NAME";
|
||||
/** The class under test. */
|
||||
StartCharacterFieldValidator startCharacterFieldValidator = new StartCharacterFieldValidator();
|
||||
|
||||
@Test
|
||||
public void testValidate_pass()
|
||||
{
|
||||
startCharacterFieldValidator.validate("acceptable!", FIELD_NAME);
|
||||
}
|
||||
|
||||
@Test(expected = IllegalConfiguration.class)
|
||||
public void testValidate_fail()
|
||||
{
|
||||
startCharacterFieldValidator.validate("!unacceptable", FIELD_NAME);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testValidate_passIfEmpty()
|
||||
{
|
||||
startCharacterFieldValidator.validate(null, FIELD_NAME);
|
||||
startCharacterFieldValidator.validate("", FIELD_NAME);
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user