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.ImdgProvider;
|
||||
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.ValidatorImpl;
|
||||
|
||||
|
|
@ -79,6 +80,7 @@ public class ValidationConfig {
|
|||
context.addImdg(IMDGDistributedNames.Map_Company, imdgCompany);
|
||||
context.addImdg(IMDGDistributedNames.Map_Account, imdgAccount);
|
||||
context.addImdg(IMDGDistributedNames.Map_AccountBalance, imdgAccountBalance);
|
||||
context.setLogPrefix(LogPrefixId.INSTANCE);
|
||||
return new ValidatorImpl<>(context,
|
||||
ExecutionDepositValidationRule.ClearingIsAllowed,
|
||||
ExecutionDepositValidationRule.AccountIsNotBlocked,
|
||||
|
|
@ -96,6 +98,7 @@ public class ValidationConfig {
|
|||
context.addImdg(IMDGDistributedNames.Map_MoneyMarketSecurity, imdgMoneyMarketSecurity);
|
||||
context.addImdg(IMDGDistributedNames.Map_Company, imdgCompany);
|
||||
context.addImdg(IMDGDistributedNames.Map_TradingClearingRegistry, imdgTradingClearingRegistry);
|
||||
context.setLogPrefix(LogPrefixId.INSTANCE);
|
||||
return new ValidatorImpl<>(context,
|
||||
STradesValidationRule.SecurityPresentFond,
|
||||
STradesValidationRule.CompanyPresent,
|
||||
|
|
@ -113,6 +116,7 @@ public class ValidationConfig {
|
|||
context.addImdg(IMDGDistributedNames.Map_MoneyMarketSecurity, imdgMoneyMarketSecurity);
|
||||
context.addImdg(IMDGDistributedNames.Map_Company, imdgCompany);
|
||||
context.addImdg(IMDGDistributedNames.Map_TradingClearingRegistry, imdgTradingClearingRegistry);
|
||||
context.setLogPrefix(LogPrefixId.INSTANCE);
|
||||
return new ValidatorImpl<>(context,
|
||||
STradesValidationRule.SecurityPresentDeposit,
|
||||
STradesValidationRule.CompanyPresent,
|
||||
|
|
@ -132,6 +136,7 @@ public class ValidationConfig {
|
|||
context.addImdg(IMDGDistributedNames.Map_Account, imdgAccount);
|
||||
context.addImdg(IMDGDistributedNames.Map_Company, imdgCompany);
|
||||
context.addImdg(IMDGDistributedNames.Map_TradingClearingRegistry, imdgTradingClearingRegistry);
|
||||
context.setLogPrefix(LogPrefixId.INSTANCE);
|
||||
return new ValidatorImpl<>(context,
|
||||
RegistryStep3ValidationRule.ClearingAvailable,
|
||||
RegistryStep3ValidationRule.AccountActive,
|
||||
|
|
@ -146,6 +151,7 @@ public class ValidationConfig {
|
|||
context.setValidatedObject(sDf01);
|
||||
context.addImdg(IMDGDistributedNames.Map_Account, imdgAccount);
|
||||
context.addImdg(IMDGDistributedNames.Map_Company, imdgCompany);
|
||||
context.setLogPrefix(LogPrefixId.INSTANCE);
|
||||
return new ValidatorImpl<>(context,
|
||||
Sdf01ValidationRule.CompanyPresent,
|
||||
Sdf01ValidationRule.AccountPresent,
|
||||
|
|
@ -163,6 +169,7 @@ public class ValidationConfig {
|
|||
context.setValidatedObject(sDf57);
|
||||
context.addImdg(IMDGDistributedNames.Map_Account, imdgAccount);
|
||||
context.addImdg(IMDGDistributedNames.Map_Company, imdgCompany);
|
||||
context.setLogPrefix(LogPrefixId.INSTANCE);
|
||||
return new ValidatorImpl<>(context,
|
||||
Sdf57ValidationRule.CompanyDebOrCredPresent,
|
||||
Sdf57ValidationRule.AccountDebOrCredPresent,
|
||||
|
|
@ -178,6 +185,7 @@ public class ValidationConfig {
|
|||
context.setValidatedObject(sDf01);
|
||||
context.addImdg(IMDGDistributedNames.Map_Account, imdgAccount);
|
||||
context.addImdg(IMDGDistributedNames.Map_Company, imdgCompany);
|
||||
context.setLogPrefix(LogPrefixId.INSTANCE);
|
||||
return new ValidatorImpl<>(context,
|
||||
Sdf01NewValidationRule.CompanyPresent,
|
||||
Sdf01NewValidationRule.AccountType,
|
||||
|
|
@ -195,6 +203,7 @@ public class ValidationConfig {
|
|||
context.setValidatedObject(sDf08);
|
||||
context.addImdg(IMDGDistributedNames.Map_Account, imdgAccount);
|
||||
context.addImdg(IMDGDistributedNames.Map_Company, imdgCompany);
|
||||
context.setLogPrefix(LogPrefixId.INSTANCE);
|
||||
return new ValidatorImpl<>(context,
|
||||
Sdf08NewValidationRule.AccountPresent
|
||||
);
|
||||
|
|
@ -211,6 +220,7 @@ public class ValidationConfig {
|
|||
context.addImdg(IMDGDistributedNames.Map_Company, imdgCompany);
|
||||
context.addImdg(IMDGDistributedNames.Map_Registry, imdgRegistry);
|
||||
context.addImdg(IMDGDistributedNames.Map_Session, imdgSession);
|
||||
context.setLogPrefix(LogPrefixId.INSTANCE);
|
||||
return new ValidatorImpl<>(context,
|
||||
Sdf06NewValidationRule.CompanySymbolAndCompanyPresent,
|
||||
Sdf06NewValidationRule.AccountPresent,
|
||||
|
|
|
|||
|
|
@ -6,11 +6,13 @@ import ru.spcex.platform.utils.validation.IValidatorContext;
|
|||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
import java.util.function.Function;
|
||||
|
||||
public class ImdgValidationContext<T> implements IValidatorContext {
|
||||
private final Map<String, Imdg<?>> imdgs;
|
||||
private final Map<Enum<?>, Object> storedObjects;
|
||||
private T validatedObject;
|
||||
private Function<? super T, String> logPrefix;
|
||||
|
||||
public ImdgValidationContext() {
|
||||
this.imdgs = new HashMap<>();
|
||||
|
|
@ -29,6 +31,18 @@ public class ImdgValidationContext<T> implements IValidatorContext {
|
|||
return validatedObject;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String logPrefix() {
|
||||
try {
|
||||
if (logPrefix == null) {
|
||||
return "";
|
||||
}
|
||||
return logPrefix.apply(validatedObject);
|
||||
} catch (Throwable e) {
|
||||
return "(logPrefix) ";
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* !!!не использовать один Enum в разных местах
|
||||
*/
|
||||
|
|
@ -51,4 +65,8 @@ public class ImdgValidationContext<T> implements IValidatorContext {
|
|||
}
|
||||
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) {
|
||||
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.ifPresent(errors::add);
|
||||
if (validationError.isPresent()) {
|
||||
log.debug("validating stage: {} error", rule.ruleName());
|
||||
log.debug("{}validating stage: {} error", context.logPrefix(), rule.ruleName());
|
||||
} 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() {
|
||||
Instant begin = Instant.now();
|
||||
for (IValidationRule<C> rule : rules) {
|
||||
log.debug("validating stage: {}", rule.ruleName());
|
||||
log.debug("{}validating stage: {}", context.logPrefix(), rule.ruleName());
|
||||
Optional<EnumMessage> validationError;
|
||||
validationError = rule.validate(context);
|
||||
if (validationError.isPresent()) {
|
||||
log.debug("validation stage: {} completed with error {} in {} ms",
|
||||
rule.ruleName(), validationError.get().getSubject().getId(),
|
||||
log.debug("{}validation stage: {} completed with error {} in {} ms",
|
||||
context.logPrefix(), 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());
|
||||
log.debug("{}validation successfully completed in {} ms", context.logPrefix(), Instant.now().toEpochMilli() - begin.toEpochMilli());
|
||||
if (chainedValidator != null) return chainedValidator.tillFirstError();
|
||||
return Optional.empty();
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue