This commit is contained in:
parent
b7eeb13040
commit
c2bb7e961c
2 changed files with 38 additions and 1 deletions
|
|
@ -0,0 +1,34 @@
|
||||||
|
package ru.spcex.clearing.dflt.management.component.validation;
|
||||||
|
|
||||||
|
import java.util.Collection;
|
||||||
|
import java.util.Optional;
|
||||||
|
import ru.clearing.classes.statics.data.misc.OvernightSettings;
|
||||||
|
import ru.spcex.clearing.dflt.management.error.DefaultManagementErrors;
|
||||||
|
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
||||||
|
import ru.spcex.clearing.platform.messaging.domain.cud.misc.OvernightSettingsNewRequest;
|
||||||
|
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 OvernightSettingAlreadyPresent implements IValidationRule<ImdgValidationContext<OvernightSettingsNewRequest>> {
|
||||||
|
|
||||||
|
public static final OvernightSettingAlreadyPresent INSTANCE = new OvernightSettingAlreadyPresent();
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Optional<EnumMessage> validate(ImdgValidationContext<OvernightSettingsNewRequest> ctx) {
|
||||||
|
OvernightSettingsNewRequest validatedObject = ctx.getValidatedObject();
|
||||||
|
Imdg<OvernightSettings> osImdg = ctx.obtainMap(IMDGDistributedNames.Map_OvernightSettings, OvernightSettings.class);
|
||||||
|
ImdgPredicateBuilder pb = osImdg.predicateBuilder();
|
||||||
|
|
||||||
|
Collection<OvernightSettings> alreadyPresentOs = osImdg.getCollectionObjectsByPredicate(pb.and(
|
||||||
|
pb.equals("market", validatedObject.getMarket()),
|
||||||
|
pb.equals("companyId", validatedObject.getCompanyId())
|
||||||
|
));
|
||||||
|
if (!alreadyPresentOs.isEmpty()) {
|
||||||
|
return of(DefaultManagementErrors.RecordAlreadyPresent);
|
||||||
|
}
|
||||||
|
return empty();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -16,6 +16,7 @@ import ru.clearing.platform.dictionary.OvernightTypeDictionary;
|
||||||
import ru.spcex.clearing.dflt.management.component.validation.OrderCurrencyByCompanyAndTcrAlreadyPresent;
|
import ru.spcex.clearing.dflt.management.component.validation.OrderCurrencyByCompanyAndTcrAlreadyPresent;
|
||||||
import ru.spcex.clearing.dflt.management.component.validation.OrderCurrencyPLBLCheck;
|
import ru.spcex.clearing.dflt.management.component.validation.OrderCurrencyPLBLCheck;
|
||||||
import ru.spcex.clearing.dflt.management.component.validation.OrderCurrencyValidationStored;
|
import ru.spcex.clearing.dflt.management.component.validation.OrderCurrencyValidationStored;
|
||||||
|
import ru.spcex.clearing.dflt.management.component.validation.OvernightSettingAlreadyPresent;
|
||||||
import ru.spcex.clearing.dflt.management.component.validation.OvernightTypeChanged;
|
import ru.spcex.clearing.dflt.management.component.validation.OvernightTypeChanged;
|
||||||
import ru.spcex.clearing.dflt.management.component.validation.QuantityLotGreaterThanZero;
|
import ru.spcex.clearing.dflt.management.component.validation.QuantityLotGreaterThanZero;
|
||||||
import ru.spcex.clearing.dflt.management.component.validation.SpotPairPresent;
|
import ru.spcex.clearing.dflt.management.component.validation.SpotPairPresent;
|
||||||
|
|
@ -99,7 +100,8 @@ public class ValidationConfig {
|
||||||
DefaultManagementErrors.DictionaryNotFound,
|
DefaultManagementErrors.DictionaryNotFound,
|
||||||
true
|
true
|
||||||
),
|
),
|
||||||
DictionaryPresentRule.instance("overnightType", OvernightSettingsNewRequest::getOvernightType, IMDGDistributedNames.Map_OvernightTypeDictionary, OvernightTypeDictionary.class, DefaultManagementErrors.RequiredFieldIsEmpty, DefaultManagementErrors.DictionaryNotFound, true) //fixme
|
DictionaryPresentRule.instance("overnightType", OvernightSettingsNewRequest::getOvernightType, IMDGDistributedNames.Map_OvernightTypeDictionary, OvernightTypeDictionary.class, DefaultManagementErrors.RequiredFieldIsEmpty, DefaultManagementErrors.DictionaryNotFound, true), //fixme
|
||||||
|
OvernightSettingAlreadyPresent.INSTANCE
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
@ -114,6 +116,7 @@ public class ValidationConfig {
|
||||||
ctx.addImdg(IMDGDistributedNames.Map_OvernightTypeDictionary, osTypeDictionaryImdg);
|
ctx.addImdg(IMDGDistributedNames.Map_OvernightTypeDictionary, osTypeDictionaryImdg);
|
||||||
ctx.addImdg(IMDGDistributedNames.Map_OvernightSettings, overnightSettingsImdg);
|
ctx.addImdg(IMDGDistributedNames.Map_OvernightSettings, overnightSettingsImdg);
|
||||||
//fixme error codes
|
//fixme error codes
|
||||||
|
//fixme в ТЗ нет проверки OvernightSettingAlreadyPresent - скорее всего ошибка
|
||||||
return new ValidatorImpl<>(ctx,
|
return new ValidatorImpl<>(ctx,
|
||||||
IdPresentRule.instance("companyId",
|
IdPresentRule.instance("companyId",
|
||||||
OvernightSettingsUpdateRequest::getCompanyId,
|
OvernightSettingsUpdateRequest::getCompanyId,
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue