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.spcex.clearing.imdg.IMDGDistributedNames;
|
||||
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.ReportRequestWithSessionIdList;
|
||||
import ru.spcex.clearing.reports.errors.ReportError;
|
||||
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.FieldRequiredRule;
|
||||
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.ImdgProvider;
|
||||
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.validation.IValidator;
|
||||
import ru.spcex.platform.utils.validation.ValidatorImpl;
|
||||
|
|
@ -44,8 +48,32 @@ public class ValidationConfig {
|
|||
return new ValidationHelper(messageResolver);
|
||||
}
|
||||
|
||||
@Bean("reportRequestFromExecutionValidator")
|
||||
public Function<ReportRequestWithSessionId, IValidator> reportRequestFromExecutionValidator(
|
||||
@Bean("reportRequestValidator")
|
||||
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
|
||||
) {
|
||||
return reportRequestWithSessionId -> {
|
||||
|
|
@ -58,10 +86,9 @@ public class ValidationConfig {
|
|||
return new ValidatorImpl<>(context,
|
||||
EnumPresentRule.instance("reportId",
|
||||
ReportRequestWithSessionId::getReportId,
|
||||
new ReportType[]{
|
||||
new IEnumKey[]{
|
||||
ReportType.OPERATIONAL_LIABILITIES_CLAIMS,
|
||||
ReportType.SUMMARY_LIABILITIES_CLAIMS,
|
||||
ReportType.PERIOD_LIABILITIES_CLAIMS,
|
||||
ReportType.OPERATIONAL_MONEY_CHANGE,
|
||||
ReportType.EXECUTED_DEAL_REPORT,
|
||||
ReportType.UNFULFILLED_DEAL_REPORT
|
||||
},
|
||||
|
|
@ -69,35 +96,71 @@ public class ValidationConfig {
|
|||
ReportError.RequiredFieldEmpty),
|
||||
FieldRequiredRule.instance("sessionId",
|
||||
ReportRequestWithSessionId::getSessionId,
|
||||
ReportError.RequiredFieldEmpty)
|
||||
ReportError.RequiredFieldEmpty,
|
||||
sessionId -> sessionId > 0 ? null : ReportError.WrongFieldValue)
|
||||
);
|
||||
};
|
||||
}
|
||||
|
||||
@Bean("reportRequestFromRegistryValidator")
|
||||
public Function<ReportRequest, IValidator> reportRequestFromRegistryValidator(
|
||||
@Bean("reportRequestWithSessionIdListValidator")
|
||||
public Function<ReportRequestWithSessionIdList, IValidator> reportRequestWithSessionIdListValidator(
|
||||
Map<String, Imdg<? extends SpcexObjectBase>> imdgForValidation
|
||||
) {
|
||||
return reportRequest -> {
|
||||
ImdgValidationContext<ReportRequest> context = new ImdgValidationContext<>();
|
||||
context.setValidatedObject(reportRequest);
|
||||
return reportRequestWithSessionIdList -> {
|
||||
ImdgValidationContext<ReportRequestWithSessionIdList> context = new ImdgValidationContext<>();
|
||||
context.setValidatedObject(reportRequestWithSessionIdList);
|
||||
|
||||
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 ReportType[]{
|
||||
ReportType.OPERATIONAL_MONEY_CHANGE,
|
||||
ReportType.SUMMARY_MONEY_CHANGE,
|
||||
ReportType.PERIOD_MONEY_CHANGE
|
||||
ReportRequestWithSessionIdList::getReportId,
|
||||
new IEnumKey[]{
|
||||
ReportType.PERIOD_LIABILITIES_CLAIMS
|
||||
},
|
||||
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 UserRoleVerification userRoleVerification;
|
||||
private final ValidationHelper validationHelper;
|
||||
private final Function<ReportRequestWithSessionId, IValidator> reportRequestFromExecutionValidator;
|
||||
private final Function<ReportRequest, IValidator> reportRequestFromRegistryValidator;
|
||||
private final Function<ReportRequest, IValidator> reportRequestValidator;
|
||||
private final Function<ReportRequestWithSessionId, IValidator> reportRequestWithSessionIdValidator;
|
||||
private final Function<ReportRequestWithSessionIdList, IValidator> reportRequestWithSessionIdListValidator;
|
||||
private final Function<ReportRequestWithPeriod, IValidator> reportRequestWithPeriodValidator;
|
||||
|
||||
public ReportService(Consumer<String, Object> kafkaQueue,
|
||||
Producer<String, Object> kafkaResponseQueue,
|
||||
|
|
@ -36,17 +38,23 @@ public class ReportService extends QueueConsumer implements InitializingBean {
|
|||
IMessageResolver messageResolver,
|
||||
UserRoleVerification userRoleVerification,
|
||||
ValidationHelper validationHelper,
|
||||
@Qualifier("reportRequestFromExecutionValidator")
|
||||
Function<ReportRequestWithSessionId, IValidator> reportRequestFromExecutionValidator,
|
||||
@Qualifier("reportRequestFromRegistryValidator")
|
||||
Function<ReportRequest, IValidator> reportRequestFromRegistryValidator) {
|
||||
@Qualifier("reportRequestValidator")
|
||||
Function<ReportRequest, IValidator> reportRequestValidator,
|
||||
@Qualifier("reportRequestWithSessionIdValidator")
|
||||
Function<ReportRequestWithSessionId, IValidator> reportRequestWithSessionIdValidator,
|
||||
@Qualifier("reportRequestWithSessionIdListValidator")
|
||||
Function<ReportRequestWithSessionIdList, IValidator> reportRequestWithSessionIdListValidator,
|
||||
@Qualifier("reportRequestWithPeriodValidator")
|
||||
Function<ReportRequestWithPeriod, IValidator> ReportRequestWithPeriodValidator) {
|
||||
super(kafkaQueue, kafkaResponseQueue);
|
||||
this.imdgProvider = imdgProvider;
|
||||
this.messageResolver = messageResolver;
|
||||
this.userRoleVerification = userRoleVerification;
|
||||
this.validationHelper = validationHelper;
|
||||
this.reportRequestFromExecutionValidator = reportRequestFromExecutionValidator;
|
||||
this.reportRequestFromRegistryValidator = reportRequestFromRegistryValidator;
|
||||
this.reportRequestValidator = reportRequestValidator;
|
||||
this.reportRequestWithSessionIdValidator = reportRequestWithSessionIdValidator;
|
||||
this.reportRequestWithSessionIdListValidator = reportRequestWithSessionIdListValidator;
|
||||
reportRequestWithPeriodValidator = ReportRequestWithPeriodValidator;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
@ -69,7 +77,7 @@ public class ReportService extends QueueConsumer implements InitializingBean {
|
|||
RequestInfoUpdate requestInfoUpdate = userRoleVerification.validateRoleAndGetResult(userRequest);
|
||||
if (requestInfoUpdate != null) return null;
|
||||
|
||||
requestInfoUpdate = validationHelper.validateTillFirstError(userRequest, reportRequestFromRegistryValidator);
|
||||
requestInfoUpdate = validationHelper.validateTillFirstError(userRequest, reportRequestValidator);
|
||||
if (requestInfoUpdate != null) return null;
|
||||
|
||||
return null;
|
||||
|
|
@ -79,17 +87,29 @@ public class ReportService extends QueueConsumer implements InitializingBean {
|
|||
RequestInfoUpdate requestInfoUpdate = userRoleVerification.validateRoleAndGetResult(userRequest);
|
||||
if (requestInfoUpdate != null) return null;
|
||||
|
||||
requestInfoUpdate = validationHelper.validateTillFirstError(userRequest, reportRequestFromExecutionValidator);
|
||||
requestInfoUpdate = validationHelper.validateTillFirstError(userRequest, reportRequestWithSessionIdValidator);
|
||||
if (requestInfoUpdate != null) return null;
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
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;
|
||||
}
|
||||
|
||||
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;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -14,11 +14,11 @@ public class ReportRequestWithSessionIdList extends ReportRequest {
|
|||
@JsonProperty
|
||||
protected List<Long> sessionId;
|
||||
|
||||
public List<Long> getSessionId() {
|
||||
public List<Long> getSessionIdList() {
|
||||
return sessionId;
|
||||
}
|
||||
|
||||
public void setSessionId(List<Long> sessionId) {
|
||||
public void setSessionIdList(List<Long> sessionId) {
|
||||
this.sessionId = sessionId;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue