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