From b6f516d81dcf3ca04f3d8a31fd25200175913fae Mon Sep 17 00:00:00 2001 From: akulikov Date: Mon, 3 Apr 2023 11:37:51 +0300 Subject: [PATCH] remove ImdgValidationContext.java, IValidatorContext.java, IValidationRule.java, IValidator.java, ValidatorImpl.java from clearing-utils --- .../common/context/IValidatorContext.java | 7 -- .../common/context/ImdgValidationContext.java | 54 --------- .../common/rules/DateNotBeforeRule.java | 3 +- .../common/rules/DictionaryPresentRule.java | 3 +- .../common/rules/EnumPresentRule.java | 3 +- .../common/rules/FieldRequiredRule.java | 3 +- .../common/rules/IValidationRule.java | 44 ------- .../common/rules/IdPresentRule.java | 3 +- .../common/rules/TimeNotBeforeRule.java | 3 +- .../common/validator/IValidator.java | 46 ------- .../common/validator/ValidationHelper.java | 1 + .../common/validator/ValidatorImpl.java | 113 ------------------ 12 files changed, 13 insertions(+), 270 deletions(-) delete mode 100644 clearing-parent/clearing-utils/src/main/java/ru/spcex/clearing/validation/common/context/IValidatorContext.java delete mode 100644 clearing-parent/clearing-utils/src/main/java/ru/spcex/clearing/validation/common/context/ImdgValidationContext.java delete mode 100644 clearing-parent/clearing-utils/src/main/java/ru/spcex/clearing/validation/common/rules/IValidationRule.java delete mode 100644 clearing-parent/clearing-utils/src/main/java/ru/spcex/clearing/validation/common/validator/IValidator.java delete mode 100644 clearing-parent/clearing-utils/src/main/java/ru/spcex/clearing/validation/common/validator/ValidatorImpl.java diff --git a/clearing-parent/clearing-utils/src/main/java/ru/spcex/clearing/validation/common/context/IValidatorContext.java b/clearing-parent/clearing-utils/src/main/java/ru/spcex/clearing/validation/common/context/IValidatorContext.java deleted file mode 100644 index d1003c026..000000000 --- a/clearing-parent/clearing-utils/src/main/java/ru/spcex/clearing/validation/common/context/IValidatorContext.java +++ /dev/null @@ -1,7 +0,0 @@ -package ru.spcex.clearing.validation.common.context; - -public interface IValidatorContext { - default S getStoredObject(Enum storedObject) { - throw new UnsupportedOperationException("not implemented"); - } -} diff --git a/clearing-parent/clearing-utils/src/main/java/ru/spcex/clearing/validation/common/context/ImdgValidationContext.java b/clearing-parent/clearing-utils/src/main/java/ru/spcex/clearing/validation/common/context/ImdgValidationContext.java deleted file mode 100644 index 6e205e4eb..000000000 --- a/clearing-parent/clearing-utils/src/main/java/ru/spcex/clearing/validation/common/context/ImdgValidationContext.java +++ /dev/null @@ -1,54 +0,0 @@ -package ru.spcex.clearing.validation.common.context; - -import ru.spcex.platform.classes.base.SpcexObjectBase; -import ru.spcex.platform.imdg.api.Imdg; - -import java.util.HashMap; -import java.util.Map; - - -public class ImdgValidationContext implements IValidatorContext { - private final Map> imdgs; - private final Map, Object> storedObjects; - private T validatedObject; - - public ImdgValidationContext() { - this.imdgs = new HashMap<>(); - this.storedObjects = new HashMap<>(); - } - - public void addImdg(String key, Imdg imdg) { - imdgs.put(key, imdg); - } - - public void setValidatedObject(T validatedObject) { - this.validatedObject = validatedObject; - } - - public T getValidatedObject() { - return validatedObject; - } - - /** - * !!!не использовать один Enum в разных местах - */ - public void storeObject(Enum storedObject, Object anyObject) { - storedObjects.put(storedObject, anyObject); - } - - @Override - @SuppressWarnings("unchecked") - public S getStoredObject(Enum storedObject) { - Object o = storedObjects.get(storedObject); - return (S) o; - } - - @SuppressWarnings("unchecked") - public Imdg obtainMap(String mapName, Class clazz) { - Imdg imdg = imdgs.get(mapName); - if (imdg == null) { - throw new IllegalStateException(mapName + " imdg wasn't added to validation context"); - } - return (Imdg) imdg; - } -} diff --git a/clearing-parent/clearing-utils/src/main/java/ru/spcex/clearing/validation/common/rules/DateNotBeforeRule.java b/clearing-parent/clearing-utils/src/main/java/ru/spcex/clearing/validation/common/rules/DateNotBeforeRule.java index 154275358..df682c6ea 100644 --- a/clearing-parent/clearing-utils/src/main/java/ru/spcex/clearing/validation/common/rules/DateNotBeforeRule.java +++ b/clearing-parent/clearing-utils/src/main/java/ru/spcex/clearing/validation/common/rules/DateNotBeforeRule.java @@ -1,8 +1,9 @@ package ru.spcex.clearing.validation.common.rules; -import ru.spcex.clearing.validation.common.context.ImdgValidationContext; +import ru.spcex.platform.imdg.validation.ImdgValidationContext; import ru.spcex.platform.utils.enumeration.EnumMessage; import ru.spcex.platform.utils.enumeration.IEnumId; +import ru.spcex.platform.utils.validation.IValidationRule; import java.time.LocalDate; import java.util.Optional; diff --git a/clearing-parent/clearing-utils/src/main/java/ru/spcex/clearing/validation/common/rules/DictionaryPresentRule.java b/clearing-parent/clearing-utils/src/main/java/ru/spcex/clearing/validation/common/rules/DictionaryPresentRule.java index 11d2bc0c0..130e3ecef 100644 --- a/clearing-parent/clearing-utils/src/main/java/ru/spcex/clearing/validation/common/rules/DictionaryPresentRule.java +++ b/clearing-parent/clearing-utils/src/main/java/ru/spcex/clearing/validation/common/rules/DictionaryPresentRule.java @@ -1,12 +1,13 @@ package ru.spcex.clearing.validation.common.rules; import ru.clearing.platform.dictionary.AbstractDictionary; -import ru.spcex.clearing.validation.common.context.ImdgValidationContext; import ru.spcex.platform.imdg.api.Imdg; import ru.spcex.platform.imdg.api.predicate.ImdgPredicate; import ru.spcex.platform.imdg.api.predicate.ImdgPredicateBuilder; +import ru.spcex.platform.imdg.validation.ImdgValidationContext; import ru.spcex.platform.utils.enumeration.EnumMessage; import ru.spcex.platform.utils.enumeration.IEnumId; +import ru.spcex.platform.utils.validation.IValidationRule; import java.util.Collection; import java.util.Optional; diff --git a/clearing-parent/clearing-utils/src/main/java/ru/spcex/clearing/validation/common/rules/EnumPresentRule.java b/clearing-parent/clearing-utils/src/main/java/ru/spcex/clearing/validation/common/rules/EnumPresentRule.java index f32366483..a819a26e6 100644 --- a/clearing-parent/clearing-utils/src/main/java/ru/spcex/clearing/validation/common/rules/EnumPresentRule.java +++ b/clearing-parent/clearing-utils/src/main/java/ru/spcex/clearing/validation/common/rules/EnumPresentRule.java @@ -1,9 +1,10 @@ package ru.spcex.clearing.validation.common.rules; -import ru.spcex.clearing.validation.common.context.ImdgValidationContext; +import ru.spcex.platform.imdg.validation.ImdgValidationContext; import ru.spcex.platform.utils.enumeration.EnumMessage; import ru.spcex.platform.utils.enumeration.IEnumId; import ru.spcex.platform.utils.enumeration.IEnumKey; +import ru.spcex.platform.utils.validation.IValidationRule; import java.util.Optional; import java.util.function.Function; diff --git a/clearing-parent/clearing-utils/src/main/java/ru/spcex/clearing/validation/common/rules/FieldRequiredRule.java b/clearing-parent/clearing-utils/src/main/java/ru/spcex/clearing/validation/common/rules/FieldRequiredRule.java index 61cfd4913..93473976a 100644 --- a/clearing-parent/clearing-utils/src/main/java/ru/spcex/clearing/validation/common/rules/FieldRequiredRule.java +++ b/clearing-parent/clearing-utils/src/main/java/ru/spcex/clearing/validation/common/rules/FieldRequiredRule.java @@ -1,9 +1,10 @@ package ru.spcex.clearing.validation.common.rules; -import ru.spcex.clearing.validation.common.context.ImdgValidationContext; +import ru.spcex.platform.imdg.validation.ImdgValidationContext; import ru.spcex.platform.utils.enumeration.EnumMessage; import ru.spcex.platform.utils.enumeration.IEnumId; +import ru.spcex.platform.utils.validation.IValidationRule; import java.util.Optional; import java.util.function.Function; diff --git a/clearing-parent/clearing-utils/src/main/java/ru/spcex/clearing/validation/common/rules/IValidationRule.java b/clearing-parent/clearing-utils/src/main/java/ru/spcex/clearing/validation/common/rules/IValidationRule.java deleted file mode 100644 index 93720b21b..000000000 --- a/clearing-parent/clearing-utils/src/main/java/ru/spcex/clearing/validation/common/rules/IValidationRule.java +++ /dev/null @@ -1,44 +0,0 @@ -package ru.spcex.clearing.validation.common.rules; - -import ru.spcex.clearing.validation.common.context.IValidatorContext; -import ru.spcex.platform.utils.enumeration.EnumMessage; -import ru.spcex.platform.utils.enumeration.IEnumId; - -import java.util.Optional; - -/** - * Правило валидации, описывающее какую ошибку возвращать и при каких условиях - * Все необходимые данные берет из контекста - * @param контекст - */ -public interface IValidationRule { - Optional validate(C context); - - /** - * для логов - */ - default String ruleName() { - return getClass().getSimpleName(); - } - - /** - * если у валидатора был вызван метод проверить все, этот метод может использоваться для более тонкой настройки - * по дефолту - выполнять проверку даже если предыдущие выполнены с ошибками - */ - default boolean runIfErrorsPresent() { - return true; - } - - //*************** методы для сокращения кода *************** - default Optional of(IEnumId error) { - return Optional.of(new EnumMessage(error)); - } - - default Optional of(IEnumId error, Object... args) { - return Optional.of(new EnumMessage(error, args)); - } - - default Optional empty() { - return Optional.empty(); - } -} diff --git a/clearing-parent/clearing-utils/src/main/java/ru/spcex/clearing/validation/common/rules/IdPresentRule.java b/clearing-parent/clearing-utils/src/main/java/ru/spcex/clearing/validation/common/rules/IdPresentRule.java index c5d118461..02db04c3e 100644 --- a/clearing-parent/clearing-utils/src/main/java/ru/spcex/clearing/validation/common/rules/IdPresentRule.java +++ b/clearing-parent/clearing-utils/src/main/java/ru/spcex/clearing/validation/common/rules/IdPresentRule.java @@ -1,10 +1,11 @@ package ru.spcex.clearing.validation.common.rules; -import ru.spcex.clearing.validation.common.context.ImdgValidationContext; import ru.spcex.platform.classes.base.SpcexObjectBase; import ru.spcex.platform.imdg.api.Imdg; +import ru.spcex.platform.imdg.validation.ImdgValidationContext; import ru.spcex.platform.utils.enumeration.EnumMessage; import ru.spcex.platform.utils.enumeration.IEnumId; +import ru.spcex.platform.utils.validation.IValidationRule; import java.util.Optional; import java.util.function.Function; diff --git a/clearing-parent/clearing-utils/src/main/java/ru/spcex/clearing/validation/common/rules/TimeNotBeforeRule.java b/clearing-parent/clearing-utils/src/main/java/ru/spcex/clearing/validation/common/rules/TimeNotBeforeRule.java index 2e76dda1b..3386c66cf 100644 --- a/clearing-parent/clearing-utils/src/main/java/ru/spcex/clearing/validation/common/rules/TimeNotBeforeRule.java +++ b/clearing-parent/clearing-utils/src/main/java/ru/spcex/clearing/validation/common/rules/TimeNotBeforeRule.java @@ -1,8 +1,9 @@ package ru.spcex.clearing.validation.common.rules; -import ru.spcex.clearing.validation.common.context.ImdgValidationContext; +import ru.spcex.platform.imdg.validation.ImdgValidationContext; import ru.spcex.platform.utils.enumeration.EnumMessage; import ru.spcex.platform.utils.enumeration.IEnumId; +import ru.spcex.platform.utils.validation.IValidationRule; import java.time.LocalTime; import java.util.Optional; diff --git a/clearing-parent/clearing-utils/src/main/java/ru/spcex/clearing/validation/common/validator/IValidator.java b/clearing-parent/clearing-utils/src/main/java/ru/spcex/clearing/validation/common/validator/IValidator.java deleted file mode 100644 index c5a9b7322..000000000 --- a/clearing-parent/clearing-utils/src/main/java/ru/spcex/clearing/validation/common/validator/IValidator.java +++ /dev/null @@ -1,46 +0,0 @@ -package ru.spcex.clearing.validation.common.validator; - - -import ru.spcex.clearing.validation.common.rules.IValidationRule; -import ru.spcex.platform.utils.enumeration.EnumMessage; - -import java.util.Collection; -import java.util.Optional; - -/** - * Валидатор, в который можно добавлять правила проверок. - * Будет выполнять их в том порядке, в котором их добавляли - */ -public interface IValidator { - /** - * метод для добавления правил валидации - * если положить правило с некорректными типами, при вызове validate будет ClassCastException - */ - void addRule(IValidationRule rule); - - /** - * если хотим добавить проверки другого валидатора
- * они будут выполняться только если проверки этого успешно пройдены - * возвращает себя - */ - IValidator chain(IValidator anotherValidator); - - /** - * валидирует все (подходит для случаев когда проверки не полагаются на то что предыдущие проверки прошли нормально) - */ - Collection validateAll(); - - /** - * валидирует до первой ошибки - */ - Optional tillFirstError(); - - /** - * валидирует все, возвращает первую ошибку - для совместимости - */ - Optional validateAllReturnFirst(); - - default S getStored(Enum storedObject) { - throw new UnsupportedOperationException("not implemented"); - } -} diff --git a/clearing-parent/clearing-utils/src/main/java/ru/spcex/clearing/validation/common/validator/ValidationHelper.java b/clearing-parent/clearing-utils/src/main/java/ru/spcex/clearing/validation/common/validator/ValidationHelper.java index 9b75f02f8..948ce73aa 100644 --- a/clearing-parent/clearing-utils/src/main/java/ru/spcex/clearing/validation/common/validator/ValidationHelper.java +++ b/clearing-parent/clearing-utils/src/main/java/ru/spcex/clearing/validation/common/validator/ValidationHelper.java @@ -7,6 +7,7 @@ import ru.spcex.clearing.platform.messaging.service.RequestInfoUpdate; import ru.spcex.clearing.platform.messaging.service.Status; import ru.spcex.platform.utils.enumeration.EnumMessage; import ru.spcex.platform.utils.enumeration.IMessageResolver; +import ru.spcex.platform.utils.validation.IValidator; import java.util.Optional; import java.util.function.Function; diff --git a/clearing-parent/clearing-utils/src/main/java/ru/spcex/clearing/validation/common/validator/ValidatorImpl.java b/clearing-parent/clearing-utils/src/main/java/ru/spcex/clearing/validation/common/validator/ValidatorImpl.java deleted file mode 100644 index f647dc909..000000000 --- a/clearing-parent/clearing-utils/src/main/java/ru/spcex/clearing/validation/common/validator/ValidatorImpl.java +++ /dev/null @@ -1,113 +0,0 @@ -package ru.spcex.clearing.validation.common.validator; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import ru.spcex.clearing.validation.common.context.IValidatorContext; -import ru.spcex.clearing.validation.common.rules.IValidationRule; -import ru.spcex.platform.utils.enumeration.EnumMessage; - -import java.time.Instant; -import java.util.ArrayList; -import java.util.Collection; -import java.util.List; -import java.util.Optional; - -/** - * Валидатор, предназначенный для правил у которых есть "контекст" валидации - */ -public class ValidatorImpl implements IValidator { - private final Logger log = LoggerFactory.getLogger(getClass()); - private List> rules = new ArrayList<>(); - private C context; - private IValidator chainedValidator; - - public ValidatorImpl(C context) {this.context = context;} - - public ValidatorImpl(C context, IValidationRule... rules) { // - this.context = context; - for (IValidationRule rule : rules) { - addRule(rule); - } - } - - public void setContext(C context) { - this.context = context; - } - - @Override - @SuppressWarnings("unchecked") - public void addRule(IValidationRule rule) { - rules.add((IValidationRule) rule); - } - - @Override - public IValidator chain(IValidator anotherValidator) { - if (chainedValidator == null) { - chainedValidator = anotherValidator; - } else { - chainedValidator.chain(anotherValidator); - } - return this; - } - - @Override - public Collection validateAll() { - List errors = new ArrayList<>(); - Instant begin = Instant.now(); - for (IValidationRule rule : rules) { - if (rule.runIfErrorsPresent() || errors.size() == 0) { - Optional validationError; - validationError = rule.validate(context); - validationError.ifPresent(errors::add); - if (validationError.isPresent()) { - log.debug("validating stage: {} error", rule.ruleName()); - } else { - log.debug("validating stage: {} complete", rule.ruleName()); - } - } - } - log.debug("validation {} in {} ms", - errors.size() == 0 ? "successfully completed" : "completed with errors", - Instant.now().toEpochMilli() - begin.toEpochMilli()); - if (chainedValidator != null && errors.size() == 0) errors.addAll(chainedValidator.validateAll()); - return errors; - } - - @Override - public Optional tillFirstError() { - Instant begin = Instant.now(); - for (IValidationRule rule : rules) { - log.debug("validating stage: {}", rule.ruleName()); - Optional validationError; - validationError = rule.validate(context); - if (validationError.isPresent()) { - log.debug("validation stage: {} completed with error {} in {} ms", - rule.ruleName(), validationError.get().getSubject().getId(), - Instant.now().toEpochMilli() - begin.toEpochMilli()); - return validationError; - } - } - log.debug("validation successfully completed in {} ms", Instant.now().toEpochMilli() - begin.toEpochMilli()); - if (chainedValidator != null) return chainedValidator.tillFirstError(); - return Optional.empty(); - } - - @Override - public Optional validateAllReturnFirst() { - Collection allErrors = validateAll(); - if (allErrors.size() > 0) { - EnumMessage error = allErrors.iterator().next(); - return Optional.of(error); - } else - return Optional.empty(); - } - - @Override - public S getStored(Enum storedObject) { - return context.getStoredObject(storedObject); - } - - public C getContext() { - return context; - } -}