logPrefix для валидации
This commit is contained in:
parent
dfe3e271d7
commit
5b3fedfc0c
5 changed files with 60 additions and 6 deletions
|
|
@ -25,6 +25,7 @@ import ru.spcex.platform.enumeration.ClearingCategory;
|
||||||
import ru.spcex.platform.imdg.api.Imdg;
|
import ru.spcex.platform.imdg.api.Imdg;
|
||||||
import ru.spcex.platform.imdg.api.ImdgProvider;
|
import ru.spcex.platform.imdg.api.ImdgProvider;
|
||||||
import ru.spcex.platform.imdg.validation.ImdgValidationContext;
|
import ru.spcex.platform.imdg.validation.ImdgValidationContext;
|
||||||
|
import ru.spcex.platform.imdg.validation.LogPrefixId;
|
||||||
import ru.spcex.platform.utils.validation.IValidator;
|
import ru.spcex.platform.utils.validation.IValidator;
|
||||||
import ru.spcex.platform.utils.validation.ValidatorImpl;
|
import ru.spcex.platform.utils.validation.ValidatorImpl;
|
||||||
|
|
||||||
|
|
@ -79,6 +80,7 @@ public class ValidationConfig {
|
||||||
context.addImdg(IMDGDistributedNames.Map_Company, imdgCompany);
|
context.addImdg(IMDGDistributedNames.Map_Company, imdgCompany);
|
||||||
context.addImdg(IMDGDistributedNames.Map_Account, imdgAccount);
|
context.addImdg(IMDGDistributedNames.Map_Account, imdgAccount);
|
||||||
context.addImdg(IMDGDistributedNames.Map_AccountBalance, imdgAccountBalance);
|
context.addImdg(IMDGDistributedNames.Map_AccountBalance, imdgAccountBalance);
|
||||||
|
context.setLogPrefix(LogPrefixId.INSTANCE);
|
||||||
return new ValidatorImpl<>(context,
|
return new ValidatorImpl<>(context,
|
||||||
ExecutionDepositValidationRule.ClearingIsAllowed,
|
ExecutionDepositValidationRule.ClearingIsAllowed,
|
||||||
ExecutionDepositValidationRule.AccountIsNotBlocked,
|
ExecutionDepositValidationRule.AccountIsNotBlocked,
|
||||||
|
|
@ -96,6 +98,7 @@ public class ValidationConfig {
|
||||||
context.addImdg(IMDGDistributedNames.Map_MoneyMarketSecurity, imdgMoneyMarketSecurity);
|
context.addImdg(IMDGDistributedNames.Map_MoneyMarketSecurity, imdgMoneyMarketSecurity);
|
||||||
context.addImdg(IMDGDistributedNames.Map_Company, imdgCompany);
|
context.addImdg(IMDGDistributedNames.Map_Company, imdgCompany);
|
||||||
context.addImdg(IMDGDistributedNames.Map_TradingClearingRegistry, imdgTradingClearingRegistry);
|
context.addImdg(IMDGDistributedNames.Map_TradingClearingRegistry, imdgTradingClearingRegistry);
|
||||||
|
context.setLogPrefix(LogPrefixId.INSTANCE);
|
||||||
return new ValidatorImpl<>(context,
|
return new ValidatorImpl<>(context,
|
||||||
STradesValidationRule.SecurityPresentFond,
|
STradesValidationRule.SecurityPresentFond,
|
||||||
STradesValidationRule.CompanyPresent,
|
STradesValidationRule.CompanyPresent,
|
||||||
|
|
@ -113,6 +116,7 @@ public class ValidationConfig {
|
||||||
context.addImdg(IMDGDistributedNames.Map_MoneyMarketSecurity, imdgMoneyMarketSecurity);
|
context.addImdg(IMDGDistributedNames.Map_MoneyMarketSecurity, imdgMoneyMarketSecurity);
|
||||||
context.addImdg(IMDGDistributedNames.Map_Company, imdgCompany);
|
context.addImdg(IMDGDistributedNames.Map_Company, imdgCompany);
|
||||||
context.addImdg(IMDGDistributedNames.Map_TradingClearingRegistry, imdgTradingClearingRegistry);
|
context.addImdg(IMDGDistributedNames.Map_TradingClearingRegistry, imdgTradingClearingRegistry);
|
||||||
|
context.setLogPrefix(LogPrefixId.INSTANCE);
|
||||||
return new ValidatorImpl<>(context,
|
return new ValidatorImpl<>(context,
|
||||||
STradesValidationRule.SecurityPresentDeposit,
|
STradesValidationRule.SecurityPresentDeposit,
|
||||||
STradesValidationRule.CompanyPresent,
|
STradesValidationRule.CompanyPresent,
|
||||||
|
|
@ -132,6 +136,7 @@ public class ValidationConfig {
|
||||||
context.addImdg(IMDGDistributedNames.Map_Account, imdgAccount);
|
context.addImdg(IMDGDistributedNames.Map_Account, imdgAccount);
|
||||||
context.addImdg(IMDGDistributedNames.Map_Company, imdgCompany);
|
context.addImdg(IMDGDistributedNames.Map_Company, imdgCompany);
|
||||||
context.addImdg(IMDGDistributedNames.Map_TradingClearingRegistry, imdgTradingClearingRegistry);
|
context.addImdg(IMDGDistributedNames.Map_TradingClearingRegistry, imdgTradingClearingRegistry);
|
||||||
|
context.setLogPrefix(LogPrefixId.INSTANCE);
|
||||||
return new ValidatorImpl<>(context,
|
return new ValidatorImpl<>(context,
|
||||||
RegistryStep3ValidationRule.ClearingAvailable,
|
RegistryStep3ValidationRule.ClearingAvailable,
|
||||||
RegistryStep3ValidationRule.AccountActive,
|
RegistryStep3ValidationRule.AccountActive,
|
||||||
|
|
@ -146,6 +151,7 @@ public class ValidationConfig {
|
||||||
context.setValidatedObject(sDf01);
|
context.setValidatedObject(sDf01);
|
||||||
context.addImdg(IMDGDistributedNames.Map_Account, imdgAccount);
|
context.addImdg(IMDGDistributedNames.Map_Account, imdgAccount);
|
||||||
context.addImdg(IMDGDistributedNames.Map_Company, imdgCompany);
|
context.addImdg(IMDGDistributedNames.Map_Company, imdgCompany);
|
||||||
|
context.setLogPrefix(LogPrefixId.INSTANCE);
|
||||||
return new ValidatorImpl<>(context,
|
return new ValidatorImpl<>(context,
|
||||||
Sdf01ValidationRule.CompanyPresent,
|
Sdf01ValidationRule.CompanyPresent,
|
||||||
Sdf01ValidationRule.AccountPresent,
|
Sdf01ValidationRule.AccountPresent,
|
||||||
|
|
@ -163,6 +169,7 @@ public class ValidationConfig {
|
||||||
context.setValidatedObject(sDf57);
|
context.setValidatedObject(sDf57);
|
||||||
context.addImdg(IMDGDistributedNames.Map_Account, imdgAccount);
|
context.addImdg(IMDGDistributedNames.Map_Account, imdgAccount);
|
||||||
context.addImdg(IMDGDistributedNames.Map_Company, imdgCompany);
|
context.addImdg(IMDGDistributedNames.Map_Company, imdgCompany);
|
||||||
|
context.setLogPrefix(LogPrefixId.INSTANCE);
|
||||||
return new ValidatorImpl<>(context,
|
return new ValidatorImpl<>(context,
|
||||||
Sdf57ValidationRule.CompanyDebOrCredPresent,
|
Sdf57ValidationRule.CompanyDebOrCredPresent,
|
||||||
Sdf57ValidationRule.AccountDebOrCredPresent,
|
Sdf57ValidationRule.AccountDebOrCredPresent,
|
||||||
|
|
@ -178,6 +185,7 @@ public class ValidationConfig {
|
||||||
context.setValidatedObject(sDf01);
|
context.setValidatedObject(sDf01);
|
||||||
context.addImdg(IMDGDistributedNames.Map_Account, imdgAccount);
|
context.addImdg(IMDGDistributedNames.Map_Account, imdgAccount);
|
||||||
context.addImdg(IMDGDistributedNames.Map_Company, imdgCompany);
|
context.addImdg(IMDGDistributedNames.Map_Company, imdgCompany);
|
||||||
|
context.setLogPrefix(LogPrefixId.INSTANCE);
|
||||||
return new ValidatorImpl<>(context,
|
return new ValidatorImpl<>(context,
|
||||||
Sdf01NewValidationRule.CompanyPresent,
|
Sdf01NewValidationRule.CompanyPresent,
|
||||||
Sdf01NewValidationRule.AccountType,
|
Sdf01NewValidationRule.AccountType,
|
||||||
|
|
@ -195,6 +203,7 @@ public class ValidationConfig {
|
||||||
context.setValidatedObject(sDf08);
|
context.setValidatedObject(sDf08);
|
||||||
context.addImdg(IMDGDistributedNames.Map_Account, imdgAccount);
|
context.addImdg(IMDGDistributedNames.Map_Account, imdgAccount);
|
||||||
context.addImdg(IMDGDistributedNames.Map_Company, imdgCompany);
|
context.addImdg(IMDGDistributedNames.Map_Company, imdgCompany);
|
||||||
|
context.setLogPrefix(LogPrefixId.INSTANCE);
|
||||||
return new ValidatorImpl<>(context,
|
return new ValidatorImpl<>(context,
|
||||||
Sdf08NewValidationRule.AccountPresent
|
Sdf08NewValidationRule.AccountPresent
|
||||||
);
|
);
|
||||||
|
|
@ -211,6 +220,7 @@ public class ValidationConfig {
|
||||||
context.addImdg(IMDGDistributedNames.Map_Company, imdgCompany);
|
context.addImdg(IMDGDistributedNames.Map_Company, imdgCompany);
|
||||||
context.addImdg(IMDGDistributedNames.Map_Registry, imdgRegistry);
|
context.addImdg(IMDGDistributedNames.Map_Registry, imdgRegistry);
|
||||||
context.addImdg(IMDGDistributedNames.Map_Session, imdgSession);
|
context.addImdg(IMDGDistributedNames.Map_Session, imdgSession);
|
||||||
|
context.setLogPrefix(LogPrefixId.INSTANCE);
|
||||||
return new ValidatorImpl<>(context,
|
return new ValidatorImpl<>(context,
|
||||||
Sdf06NewValidationRule.CompanySymbolAndCompanyPresent,
|
Sdf06NewValidationRule.CompanySymbolAndCompanyPresent,
|
||||||
Sdf06NewValidationRule.AccountPresent,
|
Sdf06NewValidationRule.AccountPresent,
|
||||||
|
|
|
||||||
|
|
@ -6,11 +6,13 @@ import ru.spcex.platform.utils.validation.IValidatorContext;
|
||||||
|
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
import java.util.function.Function;
|
||||||
|
|
||||||
public class ImdgValidationContext<T> implements IValidatorContext {
|
public class ImdgValidationContext<T> implements IValidatorContext {
|
||||||
private final Map<String, Imdg<?>> imdgs;
|
private final Map<String, Imdg<?>> imdgs;
|
||||||
private final Map<Enum<?>, Object> storedObjects;
|
private final Map<Enum<?>, Object> storedObjects;
|
||||||
private T validatedObject;
|
private T validatedObject;
|
||||||
|
private Function<? super T, String> logPrefix;
|
||||||
|
|
||||||
public ImdgValidationContext() {
|
public ImdgValidationContext() {
|
||||||
this.imdgs = new HashMap<>();
|
this.imdgs = new HashMap<>();
|
||||||
|
|
@ -29,6 +31,18 @@ public class ImdgValidationContext<T> implements IValidatorContext {
|
||||||
return validatedObject;
|
return validatedObject;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String logPrefix() {
|
||||||
|
try {
|
||||||
|
if (logPrefix == null) {
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
return logPrefix.apply(validatedObject);
|
||||||
|
} catch (Throwable e) {
|
||||||
|
return "(logPrefix) ";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* !!!не использовать один Enum в разных местах
|
* !!!не использовать один Enum в разных местах
|
||||||
*/
|
*/
|
||||||
|
|
@ -51,4 +65,8 @@ public class ImdgValidationContext<T> implements IValidatorContext {
|
||||||
}
|
}
|
||||||
return (Imdg<V>) imdg;
|
return (Imdg<V>) imdg;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void setLogPrefix(Function<? super T, String> logPrefix) {
|
||||||
|
this.logPrefix = logPrefix;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,22 @@
|
||||||
|
package ru.spcex.platform.imdg.validation;
|
||||||
|
|
||||||
|
import ru.spcex.platform.classes.base.interfaces.WithId;
|
||||||
|
|
||||||
|
import java.util.function.Function;
|
||||||
|
|
||||||
|
public class LogPrefixId implements Function<WithId, String> {
|
||||||
|
|
||||||
|
public static final LogPrefixId INSTANCE = new LogPrefixId();
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String apply(WithId withId) {
|
||||||
|
if (withId != null && withId.getId() != null)
|
||||||
|
return "(#id=%d) ".formatted(withId.getId());
|
||||||
|
else if (withId != null && withId.getId() == null)
|
||||||
|
return "(#id=null) ";
|
||||||
|
else if (withId == null) {
|
||||||
|
return "(obj=null) ";
|
||||||
|
}
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -4,4 +4,8 @@ public interface IValidatorContext {
|
||||||
default <S> S getStoredObject(Enum<?> storedObject) {
|
default <S> S getStoredObject(Enum<?> storedObject) {
|
||||||
throw new UnsupportedOperationException("not implemented");
|
throw new UnsupportedOperationException("not implemented");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
default String logPrefix() {
|
||||||
|
return "";
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -58,9 +58,9 @@ public class ValidatorImpl<C extends IValidatorContext> implements IValidator {
|
||||||
validationError = rule.validate(context);
|
validationError = rule.validate(context);
|
||||||
validationError.ifPresent(errors::add);
|
validationError.ifPresent(errors::add);
|
||||||
if (validationError.isPresent()) {
|
if (validationError.isPresent()) {
|
||||||
log.debug("validating stage: {} error", rule.ruleName());
|
log.debug("{}validating stage: {} error", context.logPrefix(), rule.ruleName());
|
||||||
} else {
|
} else {
|
||||||
log.debug("validating stage: {} complete", rule.ruleName());
|
log.debug("{}validating stage: {} complete", context.logPrefix(), rule.ruleName());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -75,17 +75,17 @@ public class ValidatorImpl<C extends IValidatorContext> implements IValidator {
|
||||||
public Optional<EnumMessage> tillFirstError() {
|
public Optional<EnumMessage> tillFirstError() {
|
||||||
Instant begin = Instant.now();
|
Instant begin = Instant.now();
|
||||||
for (IValidationRule<C> rule : rules) {
|
for (IValidationRule<C> rule : rules) {
|
||||||
log.debug("validating stage: {}", rule.ruleName());
|
log.debug("{}validating stage: {}", context.logPrefix(), rule.ruleName());
|
||||||
Optional<EnumMessage> validationError;
|
Optional<EnumMessage> validationError;
|
||||||
validationError = rule.validate(context);
|
validationError = rule.validate(context);
|
||||||
if (validationError.isPresent()) {
|
if (validationError.isPresent()) {
|
||||||
log.debug("validation stage: {} completed with error {} in {} ms",
|
log.debug("{}validation stage: {} completed with error {} in {} ms",
|
||||||
rule.ruleName(), validationError.get().getSubject().getId(),
|
context.logPrefix(), rule.ruleName(), validationError.get().getSubject().getId(),
|
||||||
Instant.now().toEpochMilli() - begin.toEpochMilli());
|
Instant.now().toEpochMilli() - begin.toEpochMilli());
|
||||||
return validationError;
|
return validationError;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
log.debug("validation successfully completed in {} ms", Instant.now().toEpochMilli() - begin.toEpochMilli());
|
log.debug("{}validation successfully completed in {} ms", context.logPrefix(), Instant.now().toEpochMilli() - begin.toEpochMilli());
|
||||||
if (chainedValidator != null) return chainedValidator.tillFirstError();
|
if (chainedValidator != null) return chainedValidator.tillFirstError();
|
||||||
return Optional.empty();
|
return Optional.empty();
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue