report requests validators
This commit is contained in:
parent
a2873620a3
commit
c76aee2428
3 changed files with 112 additions and 29 deletions
|
|
@ -6,9 +6,12 @@ import org.springframework.context.annotation.Configuration;
|
||||||
import ru.clearing.classes.statics.data.company.Company;
|
import ru.clearing.classes.statics.data.company.Company;
|
||||||
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
||||||
import ru.spcex.clearing.platform.messaging.domain.cud.reports.ReportRequest;
|
import ru.spcex.clearing.platform.messaging.domain.cud.reports.ReportRequest;
|
||||||
|
import ru.spcex.clearing.platform.messaging.domain.cud.reports.ReportRequestWithPeriod;
|
||||||
import ru.spcex.clearing.platform.messaging.domain.cud.reports.ReportRequestWithSessionId;
|
import ru.spcex.clearing.platform.messaging.domain.cud.reports.ReportRequestWithSessionId;
|
||||||
|
import ru.spcex.clearing.platform.messaging.domain.cud.reports.ReportRequestWithSessionIdList;
|
||||||
import ru.spcex.clearing.reports.errors.ReportError;
|
import ru.spcex.clearing.reports.errors.ReportError;
|
||||||
import ru.spcex.clearing.validation.common.ValidationHelper;
|
import ru.spcex.clearing.validation.common.ValidationHelper;
|
||||||
|
import ru.spcex.clearing.validation.common.rules.EndDtAfterStartDtRule;
|
||||||
import ru.spcex.clearing.validation.common.rules.EnumPresentRule;
|
import ru.spcex.clearing.validation.common.rules.EnumPresentRule;
|
||||||
import ru.spcex.clearing.validation.common.rules.FieldRequiredRule;
|
import ru.spcex.clearing.validation.common.rules.FieldRequiredRule;
|
||||||
import ru.spcex.platform.classes.base.SpcexObjectBase;
|
import ru.spcex.platform.classes.base.SpcexObjectBase;
|
||||||
|
|
@ -16,6 +19,7 @@ import ru.spcex.platform.enumeration.ReportType;
|
||||||
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.utils.enumeration.IEnumKey;
|
||||||
import ru.spcex.platform.utils.enumeration.IMessageResolver;
|
import ru.spcex.platform.utils.enumeration.IMessageResolver;
|
||||||
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;
|
||||||
|
|
@ -44,8 +48,32 @@ public class ValidationConfig {
|
||||||
return new ValidationHelper(messageResolver);
|
return new ValidationHelper(messageResolver);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Bean("reportRequestFromExecutionValidator")
|
@Bean("reportRequestValidator")
|
||||||
public Function<ReportRequestWithSessionId, IValidator> reportRequestFromExecutionValidator(
|
public Function<ReportRequest, IValidator> reportRequestValidator(
|
||||||
|
Map<String, Imdg<? extends SpcexObjectBase>> imdgForValidation
|
||||||
|
) {
|
||||||
|
return reportRequest -> {
|
||||||
|
ImdgValidationContext<ReportRequest> context = new ImdgValidationContext<>();
|
||||||
|
context.setValidatedObject(reportRequest);
|
||||||
|
|
||||||
|
Consumer<String> addImdg = (s) -> context.addImdg(s, imdgForValidation.get(s));
|
||||||
|
// todo add dictionary for check reportId
|
||||||
|
|
||||||
|
return new ValidatorImpl<>(context,
|
||||||
|
EnumPresentRule.instance("reportId",
|
||||||
|
ReportRequest::getReportId,
|
||||||
|
new IEnumKey[]{
|
||||||
|
ReportType.SUMMARY_LIABILITIES_CLAIMS,
|
||||||
|
ReportType.SUMMARY_MONEY_CHANGE
|
||||||
|
},
|
||||||
|
ReportError.WrongFieldValue,
|
||||||
|
ReportError.RequiredFieldEmpty)
|
||||||
|
);
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
@Bean("reportRequestWithSessionIdValidator")
|
||||||
|
public Function<ReportRequestWithSessionId, IValidator> reportRequestWithSessionIdValidator(
|
||||||
Map<String, Imdg<? extends SpcexObjectBase>> imdgForValidation
|
Map<String, Imdg<? extends SpcexObjectBase>> imdgForValidation
|
||||||
) {
|
) {
|
||||||
return reportRequestWithSessionId -> {
|
return reportRequestWithSessionId -> {
|
||||||
|
|
@ -58,10 +86,9 @@ public class ValidationConfig {
|
||||||
return new ValidatorImpl<>(context,
|
return new ValidatorImpl<>(context,
|
||||||
EnumPresentRule.instance("reportId",
|
EnumPresentRule.instance("reportId",
|
||||||
ReportRequestWithSessionId::getReportId,
|
ReportRequestWithSessionId::getReportId,
|
||||||
new ReportType[]{
|
new IEnumKey[]{
|
||||||
ReportType.OPERATIONAL_LIABILITIES_CLAIMS,
|
ReportType.OPERATIONAL_LIABILITIES_CLAIMS,
|
||||||
ReportType.SUMMARY_LIABILITIES_CLAIMS,
|
ReportType.OPERATIONAL_MONEY_CHANGE,
|
||||||
ReportType.PERIOD_LIABILITIES_CLAIMS,
|
|
||||||
ReportType.EXECUTED_DEAL_REPORT,
|
ReportType.EXECUTED_DEAL_REPORT,
|
||||||
ReportType.UNFULFILLED_DEAL_REPORT
|
ReportType.UNFULFILLED_DEAL_REPORT
|
||||||
},
|
},
|
||||||
|
|
@ -69,35 +96,71 @@ public class ValidationConfig {
|
||||||
ReportError.RequiredFieldEmpty),
|
ReportError.RequiredFieldEmpty),
|
||||||
FieldRequiredRule.instance("sessionId",
|
FieldRequiredRule.instance("sessionId",
|
||||||
ReportRequestWithSessionId::getSessionId,
|
ReportRequestWithSessionId::getSessionId,
|
||||||
ReportError.RequiredFieldEmpty)
|
ReportError.RequiredFieldEmpty,
|
||||||
|
sessionId -> sessionId > 0 ? null : ReportError.WrongFieldValue)
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
@Bean("reportRequestFromRegistryValidator")
|
@Bean("reportRequestWithSessionIdListValidator")
|
||||||
public Function<ReportRequest, IValidator> reportRequestFromRegistryValidator(
|
public Function<ReportRequestWithSessionIdList, IValidator> reportRequestWithSessionIdListValidator(
|
||||||
Map<String, Imdg<? extends SpcexObjectBase>> imdgForValidation
|
Map<String, Imdg<? extends SpcexObjectBase>> imdgForValidation
|
||||||
) {
|
) {
|
||||||
return reportRequest -> {
|
return reportRequestWithSessionIdList -> {
|
||||||
ImdgValidationContext<ReportRequest> context = new ImdgValidationContext<>();
|
ImdgValidationContext<ReportRequestWithSessionIdList> context = new ImdgValidationContext<>();
|
||||||
context.setValidatedObject(reportRequest);
|
context.setValidatedObject(reportRequestWithSessionIdList);
|
||||||
|
|
||||||
Consumer<String> addImdg = (s) -> context.addImdg(s, imdgForValidation.get(s));
|
Consumer<String> addImdg = (s) -> context.addImdg(s, imdgForValidation.get(s));
|
||||||
// todo add dictionary for check reportId
|
// todo add dictionary for check reportId
|
||||||
|
|
||||||
return new ValidatorImpl<>(context,
|
return new ValidatorImpl<>(context,
|
||||||
EnumPresentRule.instance("reportId",
|
EnumPresentRule.instance("reportId",
|
||||||
reportRequest::getReportId,
|
ReportRequestWithSessionIdList::getReportId,
|
||||||
new ReportType[]{
|
new IEnumKey[]{
|
||||||
ReportType.OPERATIONAL_MONEY_CHANGE,
|
ReportType.PERIOD_LIABILITIES_CLAIMS
|
||||||
ReportType.SUMMARY_MONEY_CHANGE,
|
|
||||||
ReportType.PERIOD_MONEY_CHANGE
|
|
||||||
},
|
},
|
||||||
ReportError.WrongFieldValue,
|
ReportError.WrongFieldValue,
|
||||||
ReportError.RequiredFieldEmpty)
|
ReportError.RequiredFieldEmpty),
|
||||||
|
FieldRequiredRule.instance("sessionIdList",
|
||||||
|
ReportRequestWithSessionIdList::getSessionIdList,
|
||||||
|
ReportError.RequiredFieldEmpty,
|
||||||
|
sessionIdList -> {
|
||||||
|
if (sessionIdList == null || sessionIdList.isEmpty())
|
||||||
|
return ReportError.WrongFieldValue;
|
||||||
|
return null;
|
||||||
|
})
|
||||||
|
);
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
@Bean("reportRequestWithPeriodValidator")
|
||||||
|
public Function<ReportRequestWithPeriod, IValidator> reportRequestWithPeriodValidator(
|
||||||
|
Map<String, Imdg<? extends SpcexObjectBase>> imdgForValidation
|
||||||
|
) {
|
||||||
|
return reportRequestWithPeriod -> {
|
||||||
|
ImdgValidationContext<ReportRequestWithPeriod> context = new ImdgValidationContext<>();
|
||||||
|
context.setValidatedObject(reportRequestWithPeriod);
|
||||||
|
|
||||||
|
Consumer<String> addImdg = (s) -> context.addImdg(s, imdgForValidation.get(s));
|
||||||
|
// todo add dictionary for check reportId
|
||||||
|
|
||||||
|
return new ValidatorImpl<>(context,
|
||||||
|
EnumPresentRule.instance("reportId",
|
||||||
|
ReportRequestWithPeriod::getReportId,
|
||||||
|
new IEnumKey[]{
|
||||||
|
ReportType.PERIOD_MONEY_CHANGE,
|
||||||
|
},
|
||||||
|
ReportError.WrongFieldValue,
|
||||||
|
ReportError.RequiredFieldEmpty),
|
||||||
|
EndDtAfterStartDtRule.instance("endDate", "startDate",
|
||||||
|
ReportRequestWithPeriod::getEndDate,
|
||||||
|
ReportRequestWithPeriod::getStartDate,
|
||||||
|
ReportError.RequiredFieldEmpty,
|
||||||
|
ReportError.WrongFieldValue)
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -27,8 +27,10 @@ public class ReportService extends QueueConsumer implements InitializingBean {
|
||||||
private final IMessageResolver messageResolver;
|
private final IMessageResolver messageResolver;
|
||||||
private final UserRoleVerification userRoleVerification;
|
private final UserRoleVerification userRoleVerification;
|
||||||
private final ValidationHelper validationHelper;
|
private final ValidationHelper validationHelper;
|
||||||
private final Function<ReportRequestWithSessionId, IValidator> reportRequestFromExecutionValidator;
|
private final Function<ReportRequest, IValidator> reportRequestValidator;
|
||||||
private final Function<ReportRequest, IValidator> reportRequestFromRegistryValidator;
|
private final Function<ReportRequestWithSessionId, IValidator> reportRequestWithSessionIdValidator;
|
||||||
|
private final Function<ReportRequestWithSessionIdList, IValidator> reportRequestWithSessionIdListValidator;
|
||||||
|
private final Function<ReportRequestWithPeriod, IValidator> reportRequestWithPeriodValidator;
|
||||||
|
|
||||||
public ReportService(Consumer<String, Object> kafkaQueue,
|
public ReportService(Consumer<String, Object> kafkaQueue,
|
||||||
Producer<String, Object> kafkaResponseQueue,
|
Producer<String, Object> kafkaResponseQueue,
|
||||||
|
|
@ -36,17 +38,23 @@ public class ReportService extends QueueConsumer implements InitializingBean {
|
||||||
IMessageResolver messageResolver,
|
IMessageResolver messageResolver,
|
||||||
UserRoleVerification userRoleVerification,
|
UserRoleVerification userRoleVerification,
|
||||||
ValidationHelper validationHelper,
|
ValidationHelper validationHelper,
|
||||||
@Qualifier("reportRequestFromExecutionValidator")
|
@Qualifier("reportRequestValidator")
|
||||||
Function<ReportRequestWithSessionId, IValidator> reportRequestFromExecutionValidator,
|
Function<ReportRequest, IValidator> reportRequestValidator,
|
||||||
@Qualifier("reportRequestFromRegistryValidator")
|
@Qualifier("reportRequestWithSessionIdValidator")
|
||||||
Function<ReportRequest, IValidator> reportRequestFromRegistryValidator) {
|
Function<ReportRequestWithSessionId, IValidator> reportRequestWithSessionIdValidator,
|
||||||
|
@Qualifier("reportRequestWithSessionIdListValidator")
|
||||||
|
Function<ReportRequestWithSessionIdList, IValidator> reportRequestWithSessionIdListValidator,
|
||||||
|
@Qualifier("reportRequestWithPeriodValidator")
|
||||||
|
Function<ReportRequestWithPeriod, IValidator> ReportRequestWithPeriodValidator) {
|
||||||
super(kafkaQueue, kafkaResponseQueue);
|
super(kafkaQueue, kafkaResponseQueue);
|
||||||
this.imdgProvider = imdgProvider;
|
this.imdgProvider = imdgProvider;
|
||||||
this.messageResolver = messageResolver;
|
this.messageResolver = messageResolver;
|
||||||
this.userRoleVerification = userRoleVerification;
|
this.userRoleVerification = userRoleVerification;
|
||||||
this.validationHelper = validationHelper;
|
this.validationHelper = validationHelper;
|
||||||
this.reportRequestFromExecutionValidator = reportRequestFromExecutionValidator;
|
this.reportRequestValidator = reportRequestValidator;
|
||||||
this.reportRequestFromRegistryValidator = reportRequestFromRegistryValidator;
|
this.reportRequestWithSessionIdValidator = reportRequestWithSessionIdValidator;
|
||||||
|
this.reportRequestWithSessionIdListValidator = reportRequestWithSessionIdListValidator;
|
||||||
|
reportRequestWithPeriodValidator = ReportRequestWithPeriodValidator;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
@ -69,7 +77,7 @@ public class ReportService extends QueueConsumer implements InitializingBean {
|
||||||
RequestInfoUpdate requestInfoUpdate = userRoleVerification.validateRoleAndGetResult(userRequest);
|
RequestInfoUpdate requestInfoUpdate = userRoleVerification.validateRoleAndGetResult(userRequest);
|
||||||
if (requestInfoUpdate != null) return null;
|
if (requestInfoUpdate != null) return null;
|
||||||
|
|
||||||
requestInfoUpdate = validationHelper.validateTillFirstError(userRequest, reportRequestFromRegistryValidator);
|
requestInfoUpdate = validationHelper.validateTillFirstError(userRequest, reportRequestValidator);
|
||||||
if (requestInfoUpdate != null) return null;
|
if (requestInfoUpdate != null) return null;
|
||||||
|
|
||||||
return null;
|
return null;
|
||||||
|
|
@ -79,17 +87,29 @@ public class ReportService extends QueueConsumer implements InitializingBean {
|
||||||
RequestInfoUpdate requestInfoUpdate = userRoleVerification.validateRoleAndGetResult(userRequest);
|
RequestInfoUpdate requestInfoUpdate = userRoleVerification.validateRoleAndGetResult(userRequest);
|
||||||
if (requestInfoUpdate != null) return null;
|
if (requestInfoUpdate != null) return null;
|
||||||
|
|
||||||
requestInfoUpdate = validationHelper.validateTillFirstError(userRequest, reportRequestFromExecutionValidator);
|
requestInfoUpdate = validationHelper.validateTillFirstError(userRequest, reportRequestWithSessionIdValidator);
|
||||||
if (requestInfoUpdate != null) return null;
|
if (requestInfoUpdate != null) return null;
|
||||||
|
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
public RequestInfoUpdate createReportForSessionIdList(BaseRequest<ReportRequestWithSessionIdList> userRequest) {
|
public RequestInfoUpdate createReportForSessionIdList(BaseRequest<ReportRequestWithSessionIdList> userRequest) {
|
||||||
|
RequestInfoUpdate requestInfoUpdate = userRoleVerification.validateRoleAndGetResult(userRequest);
|
||||||
|
if (requestInfoUpdate != null) return null;
|
||||||
|
|
||||||
|
requestInfoUpdate = validationHelper.validateTillFirstError(userRequest, reportRequestWithSessionIdListValidator);
|
||||||
|
if (requestInfoUpdate != null) return null;
|
||||||
|
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
public RequestInfoUpdate createReportForPeriod(BaseRequest<ReportRequestWithPeriod> userRequest) {
|
public RequestInfoUpdate createReportForPeriod(BaseRequest<ReportRequestWithPeriod> userRequest) {
|
||||||
|
RequestInfoUpdate requestInfoUpdate = userRoleVerification.validateRoleAndGetResult(userRequest);
|
||||||
|
if (requestInfoUpdate != null) return null;
|
||||||
|
|
||||||
|
requestInfoUpdate = validationHelper.validateTillFirstError(userRequest, reportRequestWithPeriodValidator);
|
||||||
|
if (requestInfoUpdate != null) return null;
|
||||||
|
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -14,11 +14,11 @@ public class ReportRequestWithSessionIdList extends ReportRequest {
|
||||||
@JsonProperty
|
@JsonProperty
|
||||||
protected List<Long> sessionId;
|
protected List<Long> sessionId;
|
||||||
|
|
||||||
public List<Long> getSessionId() {
|
public List<Long> getSessionIdList() {
|
||||||
return sessionId;
|
return sessionId;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setSessionId(List<Long> sessionId) {
|
public void setSessionIdList(List<Long> sessionId) {
|
||||||
this.sessionId = sessionId;
|
this.sessionId = sessionId;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue