This commit is contained in:
parent
434089c005
commit
263b77598d
9 changed files with 45 additions and 19 deletions
|
|
@ -5,19 +5,25 @@ import java.util.Optional;
|
||||||
import ru.clearing.classes.statics.data.misc.OrderCurrency;
|
import ru.clearing.classes.statics.data.misc.OrderCurrency;
|
||||||
import ru.spcex.clearing.dflt.management.error.DefaultManagementErrors;
|
import ru.spcex.clearing.dflt.management.error.DefaultManagementErrors;
|
||||||
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
||||||
import ru.spcex.clearing.platform.messaging.domain.cud.order.OrderCompanyNewRequest;
|
import ru.spcex.platform.classes.base.interfaces.WithCompanyId;
|
||||||
|
import ru.spcex.platform.classes.base.interfaces.WithTcrId;
|
||||||
import ru.spcex.platform.imdg.api.Imdg;
|
import ru.spcex.platform.imdg.api.Imdg;
|
||||||
import ru.spcex.platform.imdg.api.predicate.ImdgPredicateBuilder;
|
import ru.spcex.platform.imdg.api.predicate.ImdgPredicateBuilder;
|
||||||
import ru.spcex.platform.imdg.validation.ImdgValidationContext;
|
import ru.spcex.platform.imdg.validation.ImdgValidationContext;
|
||||||
import ru.spcex.platform.utils.enumeration.EnumMessage;
|
import ru.spcex.platform.utils.enumeration.EnumMessage;
|
||||||
import ru.spcex.platform.utils.validation.IValidationRule;
|
import ru.spcex.platform.utils.validation.IValidationRule;
|
||||||
|
|
||||||
public class OrderCurrencyByCompanyAndTcrAlreadyPresent implements IValidationRule<ImdgValidationContext<OrderCompanyNewRequest>> {
|
public class OrderCurrencyByCompanyAndTcrAlreadyPresent<T extends WithTcrId & WithCompanyId>
|
||||||
public static final OrderCurrencyByCompanyAndTcrAlreadyPresent INSTANCE = new OrderCurrencyByCompanyAndTcrAlreadyPresent();
|
implements IValidationRule<ImdgValidationContext<T>> {
|
||||||
|
|
||||||
|
public static <T extends WithTcrId & WithCompanyId>
|
||||||
|
OrderCurrencyByCompanyAndTcrAlreadyPresent<T> getInstance(Class<T> clazz) {
|
||||||
|
return new OrderCurrencyByCompanyAndTcrAlreadyPresent<>();
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Optional<EnumMessage> validate(ImdgValidationContext<OrderCompanyNewRequest> ctx) {
|
public Optional<EnumMessage> validate(ImdgValidationContext<T> ctx) {
|
||||||
OrderCompanyNewRequest validatedObject = ctx.getValidatedObject();
|
T validatedObject = ctx.getValidatedObject();
|
||||||
Imdg<OrderCurrency> imdg = ctx.obtainMap(IMDGDistributedNames.Map_OrderCurrency, OrderCurrency.class);
|
Imdg<OrderCurrency> imdg = ctx.obtainMap(IMDGDistributedNames.Map_OrderCurrency, OrderCurrency.class);
|
||||||
ImdgPredicateBuilder pb = imdg.predicateBuilder();
|
ImdgPredicateBuilder pb = imdg.predicateBuilder();
|
||||||
Collection<OrderCurrency> orders = imdg.getCollectionObjectsByPredicate(
|
Collection<OrderCurrency> orders = imdg.getCollectionObjectsByPredicate(
|
||||||
|
|
|
||||||
|
|
@ -3,17 +3,16 @@ package ru.spcex.clearing.dflt.management.component.validation;
|
||||||
import java.util.Optional;
|
import java.util.Optional;
|
||||||
import ru.clearing.classes.statics.data.misc.OrderCurrency;
|
import ru.clearing.classes.statics.data.misc.OrderCurrency;
|
||||||
import ru.spcex.clearing.dflt.management.error.DefaultManagementErrors;
|
import ru.spcex.clearing.dflt.management.error.DefaultManagementErrors;
|
||||||
import ru.spcex.clearing.platform.messaging.domain.cud.order.OrderCompanyNewRequest;
|
|
||||||
import ru.spcex.platform.enumeration.OrderAffil;
|
import ru.spcex.platform.enumeration.OrderAffil;
|
||||||
import ru.spcex.platform.imdg.validation.ImdgValidationContext;
|
import ru.spcex.platform.imdg.validation.ImdgValidationContext;
|
||||||
import ru.spcex.platform.utils.enumeration.EnumMessage;
|
import ru.spcex.platform.utils.enumeration.EnumMessage;
|
||||||
import ru.spcex.platform.utils.validation.IValidationRule;
|
import ru.spcex.platform.utils.validation.IValidationRule;
|
||||||
|
|
||||||
public class OrderCurrencyPLBLCheck implements IValidationRule<ImdgValidationContext<OrderCompanyNewRequest>> {
|
public class OrderCurrencyPLBLCheck implements IValidationRule<ImdgValidationContext<?>> {
|
||||||
public static final OrderCurrencyPLBLCheck INSTANCE = new OrderCurrencyPLBLCheck();
|
public static final OrderCurrencyPLBLCheck INSTANCE = new OrderCurrencyPLBLCheck();
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Optional<EnumMessage> validate(ImdgValidationContext<OrderCompanyNewRequest> ctx) {
|
public Optional<EnumMessage> validate(ImdgValidationContext<?> ctx) {
|
||||||
OrderCurrency order = ctx.getStoredObject(OrderCurrencyValidationStored.OrderCurrency);
|
OrderCurrency order = ctx.getStoredObject(OrderCurrencyValidationStored.OrderCurrency);
|
||||||
if (!OrderAffil.PLBL.equalsByKey(order.getType())) {
|
if (!OrderAffil.PLBL.equalsByKey(order.getType())) {
|
||||||
return of(DefaultManagementErrors.OnlyBalancingOrdersAllowed);
|
return of(DefaultManagementErrors.OnlyBalancingOrdersAllowed);
|
||||||
|
|
|
||||||
|
|
@ -2,17 +2,17 @@ package ru.spcex.clearing.dflt.management.component.validation;
|
||||||
|
|
||||||
import java.util.Optional;
|
import java.util.Optional;
|
||||||
import ru.spcex.clearing.dflt.management.error.DefaultManagementErrors;
|
import ru.spcex.clearing.dflt.management.error.DefaultManagementErrors;
|
||||||
import ru.spcex.clearing.platform.messaging.domain.cud.order.OrderCompanyNewRequest;
|
import ru.spcex.platform.classes.base.interfaces.WithQuantityLot;
|
||||||
import ru.spcex.platform.imdg.validation.ImdgValidationContext;
|
import ru.spcex.platform.imdg.validation.ImdgValidationContext;
|
||||||
import ru.spcex.platform.utils.enumeration.EnumMessage;
|
import ru.spcex.platform.utils.enumeration.EnumMessage;
|
||||||
import ru.spcex.platform.utils.validation.IValidationRule;
|
import ru.spcex.platform.utils.validation.IValidationRule;
|
||||||
|
|
||||||
public class QuantityLotGreaterThanZero implements IValidationRule<ImdgValidationContext<OrderCompanyNewRequest>> {
|
public class QuantityLotGreaterThanZero<T extends WithQuantityLot> implements IValidationRule<ImdgValidationContext<T>> {
|
||||||
public static final QuantityLotGreaterThanZero INSTANCE = new QuantityLotGreaterThanZero();
|
public static final QuantityLotGreaterThanZero<WithQuantityLot> INSTANCE = new QuantityLotGreaterThanZero<>();
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Optional<EnumMessage> validate(ImdgValidationContext<OrderCompanyNewRequest> ctx) {
|
public Optional<EnumMessage> validate(ImdgValidationContext<T> ctx) {
|
||||||
OrderCompanyNewRequest validatedObject = ctx.getValidatedObject();
|
T validatedObject = ctx.getValidatedObject();
|
||||||
if (validatedObject.getQuantityLot() == null || validatedObject.getQuantityLot() < 0) {
|
if (validatedObject.getQuantityLot() == null || validatedObject.getQuantityLot() < 0) {
|
||||||
return of(DefaultManagementErrors.RequiredFieldIsEmpty, "quantityLot");
|
return of(DefaultManagementErrors.RequiredFieldIsEmpty, "quantityLot");
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -177,7 +177,7 @@ public class ValidationConfig {
|
||||||
OvernightTypeChanged.INSTANCE,
|
OvernightTypeChanged.INSTANCE,
|
||||||
DictionaryPresentRule.instance(
|
DictionaryPresentRule.instance(
|
||||||
"overnightType",
|
"overnightType",
|
||||||
OvernightSettingsNewRequest::getOvernightType,
|
OrderCurrencyUpdateRequest::getOvernightType,
|
||||||
IMDGDistributedNames.Map_OvernightTypeDictionary,
|
IMDGDistributedNames.Map_OvernightTypeDictionary,
|
||||||
OvernightTypeDictionary.class,
|
OvernightTypeDictionary.class,
|
||||||
DefaultManagementErrors.RequiredFieldIsEmpty,
|
DefaultManagementErrors.RequiredFieldIsEmpty,
|
||||||
|
|
@ -292,7 +292,7 @@ public class ValidationConfig {
|
||||||
companyPresentRule,
|
companyPresentRule,
|
||||||
tcrPresent,
|
tcrPresent,
|
||||||
QuantityLotGreaterThanZero.INSTANCE,
|
QuantityLotGreaterThanZero.INSTANCE,
|
||||||
OrderCurrencyByCompanyAndTcrAlreadyPresent.INSTANCE,
|
OrderCurrencyByCompanyAndTcrAlreadyPresent.getInstance(OrderCompanyNewRequest.class),
|
||||||
OrderCurrencyPLBLCheck.INSTANCE,
|
OrderCurrencyPLBLCheck.INSTANCE,
|
||||||
counterTcrPresent);
|
counterTcrPresent);
|
||||||
};
|
};
|
||||||
|
|
@ -328,7 +328,7 @@ public class ValidationConfig {
|
||||||
var tcrPresent = PresentByPredicate
|
var tcrPresent = PresentByPredicate
|
||||||
.builder(new IdEqualPredicate<>(
|
.builder(new IdEqualPredicate<>(
|
||||||
tcrImdg.predicateBuilder(),
|
tcrImdg.predicateBuilder(),
|
||||||
OrderCompanyNewRequest::getTradingClearingRegistryId)
|
OrderCompanyUpdateRequest::getTradingClearingRegistryId)
|
||||||
)
|
)
|
||||||
.mapName(IMDGDistributedNames.Map_TradingClearingRegistry)
|
.mapName(IMDGDistributedNames.Map_TradingClearingRegistry)
|
||||||
.errorProvider(r -> recordNotFound("tcr.id=" + r.getTradingClearingRegistryId()))
|
.errorProvider(r -> recordNotFound("tcr.id=" + r.getTradingClearingRegistryId()))
|
||||||
|
|
@ -357,7 +357,7 @@ public class ValidationConfig {
|
||||||
companyPresentRule,
|
companyPresentRule,
|
||||||
tcrPresent,
|
tcrPresent,
|
||||||
QuantityLotGreaterThanZero.INSTANCE,
|
QuantityLotGreaterThanZero.INSTANCE,
|
||||||
OrderCurrencyByCompanyAndTcrAlreadyPresent.INSTANCE,
|
OrderCurrencyByCompanyAndTcrAlreadyPresent.getInstance(OrderCompanyUpdateRequest.class),
|
||||||
OrderCurrencyPLBLCheck.INSTANCE,
|
OrderCurrencyPLBLCheck.INSTANCE,
|
||||||
counterOrderPresent);
|
counterOrderPresent);
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,5 @@
|
||||||
|
package ru.spcex.platform.classes.base.interfaces;
|
||||||
|
|
||||||
|
public interface WithCompanyId {
|
||||||
|
Long getCompanyId();
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,5 @@
|
||||||
|
package ru.spcex.platform.classes.base.interfaces;
|
||||||
|
|
||||||
|
public interface WithQuantityLot {
|
||||||
|
Long getQuantityLot();
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,5 @@
|
||||||
|
package ru.spcex.platform.classes.base.interfaces;
|
||||||
|
|
||||||
|
public interface WithTcrId {
|
||||||
|
Long getTradingClearingRegistryId();
|
||||||
|
}
|
||||||
|
|
@ -1,8 +1,11 @@
|
||||||
package ru.spcex.clearing.platform.messaging.domain.cud.order;
|
package ru.spcex.clearing.platform.messaging.domain.cud.order;
|
||||||
|
|
||||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||||
|
import ru.spcex.platform.classes.base.interfaces.WithCompanyId;
|
||||||
|
import ru.spcex.platform.classes.base.interfaces.WithQuantityLot;
|
||||||
|
import ru.spcex.platform.classes.base.interfaces.WithTcrId;
|
||||||
|
|
||||||
public class OrderCompanyNewRequest {
|
public class OrderCompanyNewRequest implements WithQuantityLot, WithTcrId, WithCompanyId {
|
||||||
@JsonProperty
|
@JsonProperty
|
||||||
private Long orderId;
|
private Long orderId;
|
||||||
@JsonProperty
|
@JsonProperty
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,12 @@
|
||||||
package ru.spcex.clearing.platform.messaging.domain.cud.order;
|
package ru.spcex.clearing.platform.messaging.domain.cud.order;
|
||||||
|
|
||||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||||
|
import ru.spcex.platform.classes.base.interfaces.WithCompanyId;
|
||||||
import ru.spcex.platform.classes.base.interfaces.WithId;
|
import ru.spcex.platform.classes.base.interfaces.WithId;
|
||||||
|
import ru.spcex.platform.classes.base.interfaces.WithQuantityLot;
|
||||||
|
import ru.spcex.platform.classes.base.interfaces.WithTcrId;
|
||||||
|
|
||||||
public class OrderCompanyUpdateRequest implements WithId {
|
public class OrderCompanyUpdateRequest implements WithId, WithQuantityLot, WithTcrId, WithCompanyId {
|
||||||
@JsonProperty
|
@JsonProperty
|
||||||
private Long id;
|
private Long id;
|
||||||
@JsonProperty
|
@JsonProperty
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue