securities-service поправил валидаторы (в соответствии с метой)

This commit is contained in:
AKurakin 2023-05-27 16:10:56 +03:00
parent 5e5133b580
commit 602604aa81
3 changed files with 47 additions and 22 deletions

View file

@ -64,14 +64,15 @@ public class ValidationProvider {
MoneyMarketSecurityNewRequest::getStartDate,
MoneyMarketSecurityNewRequest::getEndDate,
SecuritiesError.RequiredFieldIsEmpty,
SecuritiesError.WrongFieldValue),
SecuritiesError.WrongFieldValue,
false),
new NotPresentBySecuritySymbolAndWorkflowStatusActv(IMDGDistributedNames.Map_MoneyMarketSecurity, SecuritiesError.InstrumentAlreadyExists, MoneyMarketSecurityNewRequest.class),
new IsValidInstrumentTypeFromRequest(SecuritiesError.RequiredFieldIsEmpty, "RATE"),
MmsNewValidationRule.RequiredFieldIsNotEmpty,
new HaveValidCompanyId<>(MoneyMarketSecurityNewRequest::getIssuerId, "issuerId"),
new HaveValidCodeByDictionary<>(IMDGDistributedNames.Map_InstrumentTypeDictionary, MoneyMarketSecurityNewRequest::getInstrumentType, "instrumentType"),
new HaveValidCodeByDictionary<>(IMDGDistributedNames.Map_WorkflowStatusDictionary, MoneyMarketSecurityNewRequest::getWorkflowStatus, "workflowStatus"),
new HaveValidCodeByDictionary<>(IMDGDistributedNames.Map_TermTypeDictionary, MoneyMarketSecurityNewRequest::getTermType, "termType"),
new HaveValidCodeByDictionary<>(IMDGDistributedNames.Map_WorkflowStatusDictionary, MoneyMarketSecurityNewRequest::getWorkflowStatus, "workflowStatus", false),
new HaveValidCodeByDictionary<>(IMDGDistributedNames.Map_TermTypeDictionary, MoneyMarketSecurityNewRequest::getTermType, "termType", false),
new HaveValidCodeByDictionary<>(IMDGDistributedNames.Map_CurrencyCodeDictionary, MoneyMarketSecurityNewRequest::getNominalCurrency, "nominalCurrency")
);
};
@ -92,15 +93,16 @@ public class ValidationProvider {
MoneyMarketSecurityUpdateRequest::getStartDate,
MoneyMarketSecurityUpdateRequest::getEndDate,
SecuritiesError.RequiredFieldIsEmpty,
SecuritiesError.WrongFieldValue),
SecuritiesError.WrongFieldValue,
false),
new PresentById(IMDGDistributedNames.Map_MoneyMarketSecurity, SecuritiesError.InstrumentNotFound, true),
new IsValidInstrumentTypeById(SecuritiesError.InstrumentNotFound, "RATE"),
new WorkflowStatusActv(),
new HaveValidCompanyId<>(MoneyMarketSecurityUpdateRequest::getIssuerId, "issuerId"),
new HaveValidCompanyId<>(MoneyMarketSecurityUpdateRequest::getIssuerId, "issuerId", false),
new HaveValidCodeByDictionary<>(IMDGDistributedNames.Map_InstrumentTypeDictionary, MoneyMarketSecurityUpdateRequest::getInstrumentType, "instrumentType"),
new HaveValidCodeByDictionary<>(IMDGDistributedNames.Map_WorkflowStatusDictionary, MoneyMarketSecurityUpdateRequest::getWorkflowStatus, "workflowStatus"),
new HaveValidCodeByDictionary<>(IMDGDistributedNames.Map_TermTypeDictionary, MoneyMarketSecurityUpdateRequest::getTermType, "termType"),
new HaveValidCodeByDictionary<>(IMDGDistributedNames.Map_CurrencyCodeDictionary, MoneyMarketSecurityUpdateRequest::getNominalCurrency, "nominalCurrency")
new HaveValidCodeByDictionary<>(IMDGDistributedNames.Map_WorkflowStatusDictionary, MoneyMarketSecurityUpdateRequest::getWorkflowStatus, "workflowStatus", false),
new HaveValidCodeByDictionary<>(IMDGDistributedNames.Map_TermTypeDictionary, MoneyMarketSecurityUpdateRequest::getTermType, "termType", false),
new HaveValidCodeByDictionary<>(IMDGDistributedNames.Map_CurrencyCodeDictionary, MoneyMarketSecurityUpdateRequest::getNominalCurrency, "nominalCurrency", false)
);
};
}
@ -133,8 +135,8 @@ public class ValidationProvider {
EquityNewValidationRule.RequiredFieldIsNotEmpty,
new HaveValidCompanyId<>(EquitySecurityNewRequest::getIssuerId, "issuerId"),
new HaveValidCodeByDictionary<>(IMDGDistributedNames.Map_InstrumentTypeDictionary, EquitySecurityNewRequest::getInstrumentType, "instrumentType"),
new HaveValidCodeByDictionary<>(IMDGDistributedNames.Map_WorkflowStatusDictionary, EquitySecurityNewRequest::getWorkflowStatus, "workflowStatus"),
new HaveValidCodeByDictionary<>(IMDGDistributedNames.Map_ShareTypeDictionary, EquitySecurityNewRequest::getShareType, "shareType"));
new HaveValidCodeByDictionary<>(IMDGDistributedNames.Map_WorkflowStatusDictionary, EquitySecurityNewRequest::getWorkflowStatus, "workflowStatus", false),
new HaveValidCodeByDictionary<>(IMDGDistributedNames.Map_ShareTypeDictionary, EquitySecurityNewRequest::getShareType, "shareType", false));
};
}
@ -151,10 +153,10 @@ public class ValidationProvider {
new PresentById(IMDGDistributedNames.Map_EquitySecurity, SecuritiesError.InstrumentNotFound, true),
new IsValidInstrumentTypeById(SecuritiesError.InstrumentNotFound, "EQTY"),
new WorkflowStatusActv(),
new HaveValidCompanyId<>(EquitySecurityUpdateRequest::getIssuerId, "issuerId"),
new HaveValidCompanyId<>(EquitySecurityUpdateRequest::getIssuerId, "issuerId", false),
new HaveValidCodeByDictionary<>(IMDGDistributedNames.Map_InstrumentTypeDictionary, EquitySecurityUpdateRequest::getInstrumentType, "instrumentType"),
new HaveValidCodeByDictionary<>(IMDGDistributedNames.Map_WorkflowStatusDictionary, EquitySecurityUpdateRequest::getWorkflowStatus, "workflowStatus"),
new HaveValidCodeByDictionary<>(IMDGDistributedNames.Map_ShareTypeDictionary, EquitySecurityUpdateRequest::getShareType, "shareType"));
new HaveValidCodeByDictionary<>(IMDGDistributedNames.Map_WorkflowStatusDictionary, EquitySecurityUpdateRequest::getWorkflowStatus, "workflowStatus", false),
new HaveValidCodeByDictionary<>(IMDGDistributedNames.Map_ShareTypeDictionary, EquitySecurityUpdateRequest::getShareType, "shareType", false));
};
}
@ -185,11 +187,11 @@ public class ValidationProvider {
new NotPresentBySecuritySymbolAndWorkflowStatusActv(IMDGDistributedNames.Map_FixedIncomeSecurity, SecuritiesError.InstrumentAlreadyExists, FixedIncomeSecurityNewRequest.class),
new IsValidInstrumentTypeFromRequest(SecuritiesError.RequiredFieldIsEmpty, "BOND"),
FixedIncomeNewValidationRule.RequiredFieldIsNotEmpty,
new HaveValidCompanyId<>(FixedIncomeSecurityNewRequest::getIssuerId, "issuerId"),
new HaveValidCompanyId<>(FixedIncomeSecurityNewRequest::getIssuerId, "issuerId", false),
new HaveValidCodeByDictionary<>(IMDGDistributedNames.Map_InstrumentTypeDictionary, FixedIncomeSecurityNewRequest::getInstrumentType, "instrumentType"),
new HaveValidCodeByDictionary<>(IMDGDistributedNames.Map_WorkflowStatusDictionary, FixedIncomeSecurityNewRequest::getWorkflowStatus, "workflowStatus"),
new HaveValidCodeByDictionary<>(IMDGDistributedNames.Map_BondTypeDictionary, FixedIncomeSecurityNewRequest::getBondType, "bondType"),
new HaveValidCodeByDictionary<>(IMDGDistributedNames.Map_CurrencyCodeDictionary, FixedIncomeSecurityNewRequest::getNominalCurrency, "nominalCurrency")
new HaveValidCodeByDictionary<>(IMDGDistributedNames.Map_WorkflowStatusDictionary, FixedIncomeSecurityNewRequest::getWorkflowStatus, "workflowStatus", false),
new HaveValidCodeByDictionary<>(IMDGDistributedNames.Map_BondTypeDictionary, FixedIncomeSecurityNewRequest::getBondType, "bondType", false),
new HaveValidCodeByDictionary<>(IMDGDistributedNames.Map_CurrencyCodeDictionary, FixedIncomeSecurityNewRequest::getNominalCurrency, "nominalCurrency", false)
);
};
}
@ -211,9 +213,9 @@ public class ValidationProvider {
new WorkflowStatusActv(),
new HaveValidCompanyId<>(FixedIncomeSecurityUpdateRequest::getIssuerId, "issuerId"),
new HaveValidCodeByDictionary<>(IMDGDistributedNames.Map_InstrumentTypeDictionary, FixedIncomeSecurityUpdateRequest::getInstrumentType, "instrumentType"),
new HaveValidCodeByDictionary<>(IMDGDistributedNames.Map_WorkflowStatusDictionary, FixedIncomeSecurityUpdateRequest::getWorkflowStatus, "workflowStatus"),
new HaveValidCodeByDictionary<>(IMDGDistributedNames.Map_BondTypeDictionary, FixedIncomeSecurityUpdateRequest::getBondType, "bondType"),
new HaveValidCodeByDictionary<>(IMDGDistributedNames.Map_CurrencyCodeDictionary, FixedIncomeSecurityUpdateRequest::getNominalCurrency, "nominalCurrency")
new HaveValidCodeByDictionary<>(IMDGDistributedNames.Map_WorkflowStatusDictionary, FixedIncomeSecurityUpdateRequest::getWorkflowStatus, "workflowStatus", false),
new HaveValidCodeByDictionary<>(IMDGDistributedNames.Map_BondTypeDictionary, FixedIncomeSecurityUpdateRequest::getBondType, "bondType", false),
new HaveValidCodeByDictionary<>(IMDGDistributedNames.Map_CurrencyCodeDictionary, FixedIncomeSecurityUpdateRequest::getNominalCurrency, "nominalCurrency", false)
);
};
}

View file

@ -12,21 +12,33 @@ import java.util.Map;
import java.util.Optional;
import java.util.function.Function;
@Deprecated // use common validator
public class HaveValidCodeByDictionary<R> implements IValidationRule<ImdgValidationContext<R>> {
String mapName;
String errArg;
Function<R, String> codeGetter;
boolean required;
public HaveValidCodeByDictionary(String mapName, Function<R, String> codeGetter, String errArg, boolean required) {
this.mapName = mapName;
this.codeGetter = codeGetter;
this.errArg = errArg;
this.required = required;
}
public HaveValidCodeByDictionary(String mapName, Function<R, String> codeGetter, String errArg) {
this.mapName = mapName;
this.codeGetter = codeGetter;
this.errArg = errArg;
this.required = true;
}
@Override
public Optional<EnumMessage> validate(ImdgValidationContext<R> context) {
R validatedObject = context.getValidatedObject();
String code = codeGetter.apply(validatedObject);
if(!StringUtils.hasText(code)) {
return of(SecuritiesError.RequiredFieldIsEmpty, errArg);
if (required)
return of(SecuritiesError.RequiredFieldIsEmpty, errArg);
else
return null;
}
Imdg<SpcexObjectBase> imdgDictionary = context.obtainMap(mapName, SpcexObjectBase.class);
SpcexObjectBase dictionary = imdgDictionary.getSingleObjectByFieldValues(Map.of(

View file

@ -11,19 +11,30 @@ import ru.spcex.platform.utils.validation.IValidationRule;
import java.util.Optional;
import java.util.function.Function;
@Deprecated // use common validator
public class HaveValidCompanyId<R> implements IValidationRule<ImdgValidationContext<R>> {
Function<R, Long> idGetter;
String errArg;
boolean required;
public HaveValidCompanyId(Function<R, Long> idGetter, String errArg, boolean required) {
this.idGetter = idGetter;
this.errArg = errArg;
this.required=required;
}
public HaveValidCompanyId(Function<R, Long> idGetter, String errArg) {
this.idGetter = idGetter;
this.errArg = errArg;
this.required=true;
}
@Override
public Optional<EnumMessage> validate(ImdgValidationContext<R> context) {
R validatedObject = context.getValidatedObject();
Long id = idGetter.apply(validatedObject);
if(id == null) {
return of(SecuritiesError.RequiredFieldIsEmpty, errArg);
if (required)
return of(SecuritiesError.RequiredFieldIsEmpty, errArg);
else
return empty();
}
Imdg<SpcexObjectBase> imdgDictionary = context.obtainMap(IMDGDistributedNames.Map_Company, SpcexObjectBase.class);
SpcexObjectBase dictionary = imdgDictionary.getSingleObjectByID(id);