utility-service http://jira.mfd.msk:8088/browse/CLS-844 Обработка ValidationSymbols*Request
This commit is contained in:
parent
3dae3cc633
commit
0c22729906
9 changed files with 655 additions and 0 deletions
|
|
@ -32,6 +32,14 @@
|
|||
<groupId>ru.spcex.clearing</groupId>
|
||||
<artifactId>classes</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>ru.spcex.clearing</groupId>
|
||||
<artifactId>clearing-validation</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>ru.spcex.clearing</groupId>
|
||||
<artifactId>security-util</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter</artifactId>
|
||||
|
|
|
|||
|
|
@ -0,0 +1,23 @@
|
|||
package ru.spcex.clearing.utility.Enum;
|
||||
|
||||
import ru.spcex.platform.utils.enumeration.IErrorEnumId;
|
||||
|
||||
public enum UtilityError implements IErrorEnumId {
|
||||
GeneralError(2000L),
|
||||
UserVerifyDenial(2001L),
|
||||
RequiredFieldEmpty(2002L),
|
||||
RecordAlreadyExist(2005L),
|
||||
RecordNotFound(2006L),
|
||||
;
|
||||
|
||||
private final Long id;
|
||||
|
||||
UtilityError(Long id) {
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Long getId() {
|
||||
return id;
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,146 @@
|
|||
package ru.spcex.clearing.utility.config.validation;
|
||||
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
import ru.clearing.classes.statics.data.misc.ValidationSymbols;
|
||||
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
||||
import ru.spcex.clearing.platform.messaging.domain.cud.common.CommonIdRequest;
|
||||
import ru.spcex.clearing.platform.messaging.domain.cud.misc.ValidationSymbolsNewRequest;
|
||||
import ru.spcex.clearing.platform.messaging.domain.cud.misc.ValidationSymbolsUpdateRequest;
|
||||
import ru.spcex.clearing.utility.Enum.UtilityError;
|
||||
import ru.spcex.clearing.validation.common.rules.FieldRequiredRule;
|
||||
import ru.spcex.clearing.validation.common.rules.IdPresentRule;
|
||||
import ru.spcex.platform.classes.base.SpcexObjectBase;
|
||||
import ru.spcex.platform.imdg.api.Imdg;
|
||||
import ru.spcex.platform.imdg.api.predicate.ImdgPredicate;
|
||||
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;
|
||||
import ru.spcex.platform.utils.validation.IValidator;
|
||||
import ru.spcex.platform.utils.validation.ValidatorImpl;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.Map;
|
||||
import java.util.Optional;
|
||||
import java.util.function.Consumer;
|
||||
import java.util.function.Function;
|
||||
|
||||
@Configuration
|
||||
public class ValidateSymbolsValidationConfig {
|
||||
|
||||
@Bean("validationSymbolsNewRequestRequestValidator")
|
||||
public Function<ValidationSymbolsNewRequest, IValidator> validateSymbolsNewRequestValidator(
|
||||
Map<String, Imdg<? extends SpcexObjectBase>> imdgForValidation
|
||||
) {
|
||||
return validationSymbolsNewRequest -> {
|
||||
ImdgValidationContext<ValidationSymbolsNewRequest> context = new ImdgValidationContext<>();
|
||||
context.setValidatedObject(validationSymbolsNewRequest);
|
||||
Consumer<String> addImdg = (s) -> context.addImdg(s, imdgForValidation.get(s));
|
||||
addImdg.accept(IMDGDistributedNames.Map_ValidationSymbols);
|
||||
|
||||
return new ValidatorImpl<>(context,
|
||||
FieldRequiredRule.instance("code",
|
||||
ValidationSymbolsNewRequest::getCode,
|
||||
UtilityError.RequiredFieldEmpty),
|
||||
FieldRequiredRule.instance("symbols",
|
||||
ValidationSymbolsNewRequest::getSymbols,
|
||||
UtilityError.RequiredFieldEmpty),
|
||||
new newVSDuplicateCheck()
|
||||
);
|
||||
};
|
||||
}
|
||||
|
||||
static class newVSDuplicateCheck implements IValidationRule<ImdgValidationContext<ValidationSymbolsNewRequest>> {
|
||||
@Override
|
||||
public Optional<EnumMessage> validate(ImdgValidationContext<ValidationSymbolsNewRequest> context) {
|
||||
ValidationSymbolsNewRequest validatedObject = context.getValidatedObject();
|
||||
Imdg<ValidationSymbols> tcrMap = context.obtainMap(IMDGDistributedNames.Map_ValidationSymbols, ValidationSymbols.class);
|
||||
|
||||
if (validatedObject.getCode() == null) {
|
||||
return empty();
|
||||
}
|
||||
ImdgPredicateBuilder pb = tcrMap.predicateBuilder();
|
||||
ImdgPredicate query = pb.equals("code", validatedObject.getCode());
|
||||
|
||||
Collection<ValidationSymbols> existVS = tcrMap.getCollectionObjectsByPredicate(query);
|
||||
|
||||
if (existVS.isEmpty()) {
|
||||
return empty();
|
||||
} else {
|
||||
return of(UtilityError.RecordAlreadyExist, validatedObject.getCode());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static class updateVSDuplicateCheck implements IValidationRule<ImdgValidationContext<ValidationSymbolsUpdateRequest>> {
|
||||
@Override
|
||||
public Optional<EnumMessage> validate(ImdgValidationContext<ValidationSymbolsUpdateRequest> context) {
|
||||
ValidationSymbolsUpdateRequest validatedObject = context.getValidatedObject();
|
||||
Imdg<ValidationSymbols> tcrMap = context.obtainMap(IMDGDistributedNames.Map_ValidationSymbols, ValidationSymbols.class);
|
||||
|
||||
if (validatedObject.getCode() == null) {
|
||||
return empty();
|
||||
}
|
||||
ImdgPredicateBuilder pb = tcrMap.predicateBuilder();
|
||||
ImdgPredicate query = pb.and(pb.equals("code", validatedObject.getCode()),
|
||||
pb.not(pb.equals("id", validatedObject.getId())));
|
||||
|
||||
Collection<ValidationSymbols> existVS = tcrMap.getCollectionObjectsByPredicate(query);
|
||||
|
||||
if (existVS.isEmpty()) {
|
||||
return empty();
|
||||
} else {
|
||||
return of(UtilityError.RecordAlreadyExist, validatedObject.getCode());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@Bean("validationSymbolsUpdateRequestRequestValidator")
|
||||
public Function<ValidationSymbolsUpdateRequest, IValidator> validationSymbolsUpdateRequestValidator(
|
||||
Map<String, Imdg<? extends SpcexObjectBase>> imdgForValidation
|
||||
) {
|
||||
return validationSymbolsUpdateRequest -> {
|
||||
ImdgValidationContext<ValidationSymbolsUpdateRequest> context = new ImdgValidationContext<>();
|
||||
context.setValidatedObject(validationSymbolsUpdateRequest);
|
||||
Consumer<String> addImdg = (s) -> context.addImdg(s, imdgForValidation.get(s));
|
||||
addImdg.accept(IMDGDistributedNames.Map_ValidationSymbols);
|
||||
return new ValidatorImpl<>(context,
|
||||
IdPresentRule.instance("id",
|
||||
ValidationSymbolsUpdateRequest::getId,
|
||||
IMDGDistributedNames.Map_ValidationSymbols,
|
||||
ValidationSymbols.class,
|
||||
UtilityError.RequiredFieldEmpty,
|
||||
UtilityError.RecordNotFound),
|
||||
FieldRequiredRule.instance("code",
|
||||
ValidationSymbolsNewRequest::getCode,
|
||||
UtilityError.RequiredFieldEmpty),
|
||||
FieldRequiredRule.instance("symbols",
|
||||
ValidationSymbolsNewRequest::getSymbols,
|
||||
UtilityError.RequiredFieldEmpty),
|
||||
new updateVSDuplicateCheck()
|
||||
);
|
||||
};
|
||||
}
|
||||
|
||||
@Bean("validationSymbolsDeleteRequestRequestValidator")
|
||||
public Function<CommonIdRequest, IValidator> validationSymbolsDeleteRequestValidator(
|
||||
Map<String, Imdg<? extends SpcexObjectBase>> imdgForValidation
|
||||
) {
|
||||
return validateSymbolsDeleteRequest -> {
|
||||
ImdgValidationContext<CommonIdRequest> context = new ImdgValidationContext<>();
|
||||
context.setValidatedObject(validateSymbolsDeleteRequest);
|
||||
Consumer<String> addImdg = (s) -> context.addImdg(s, imdgForValidation.get(s));
|
||||
addImdg.accept(IMDGDistributedNames.Map_ValidationSymbols);
|
||||
return new ValidatorImpl<>(context,
|
||||
IdPresentRule.instance("id",
|
||||
CommonIdRequest::getId,
|
||||
IMDGDistributedNames.Map_ValidationSymbols,
|
||||
ValidationSymbols.class,
|
||||
UtilityError.RequiredFieldEmpty,
|
||||
UtilityError.RecordNotFound)
|
||||
);
|
||||
};
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,55 @@
|
|||
package ru.spcex.clearing.utility.config.validation;
|
||||
|
||||
|
||||
import org.springframework.beans.factory.config.ConfigurableBeanFactory;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
import org.springframework.context.annotation.Scope;
|
||||
import ru.clearing.classes.statics.data.misc.ValidationSymbols;
|
||||
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
||||
import ru.spcex.clearing.util.security.UserRoleVerification;
|
||||
import ru.spcex.clearing.util.services.IMDGMessageResolver;
|
||||
import ru.spcex.clearing.utility.Enum.UtilityError;
|
||||
import ru.spcex.clearing.validation.common.ValidationHelper;
|
||||
import ru.spcex.platform.classes.base.SpcexObjectBase;
|
||||
import ru.spcex.platform.enumeration.UserRole;
|
||||
import ru.spcex.platform.imdg.api.Imdg;
|
||||
import ru.spcex.platform.imdg.api.ImdgProvider;
|
||||
import ru.spcex.platform.utils.enumeration.IMessageResolver;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
import java.util.function.BiConsumer;
|
||||
|
||||
@Configuration
|
||||
public class ValidationConfig {
|
||||
|
||||
@Bean("imdgForValidation")
|
||||
public Map<String, Imdg<? extends SpcexObjectBase>> imdgForValidation(ImdgProvider imdgProvider) {
|
||||
final Map<String, Imdg<? extends SpcexObjectBase>> imdg = new HashMap<>();
|
||||
BiConsumer<String, Class<? extends SpcexObjectBase>> addImdg = (s, aClass) -> imdg.put(s, imdgProvider.getImdg(s, aClass));
|
||||
|
||||
addImdg.accept(IMDGDistributedNames.Map_ValidationSymbols, ValidationSymbols.class);
|
||||
|
||||
return imdg;
|
||||
}
|
||||
|
||||
@Bean("validationHelper")
|
||||
public ValidationHelper validationHelper(IMessageResolver messageResolver) {
|
||||
return new ValidationHelper(messageResolver);
|
||||
}
|
||||
|
||||
|
||||
@Bean
|
||||
public IMessageResolver messageResolver(ImdgProvider imdgProvider) {
|
||||
return new IMDGMessageResolver(imdgProvider);
|
||||
}
|
||||
|
||||
|
||||
@Bean
|
||||
@Scope(value = ConfigurableBeanFactory.SCOPE_PROTOTYPE)
|
||||
public UserRoleVerification userRoleVerification(ImdgProvider imdgProvider, IMessageResolver messageResolver) {
|
||||
return new UserRoleVerification(imdgProvider, messageResolver, UserRole.Admin, UtilityError.UserVerifyDenial);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -0,0 +1,164 @@
|
|||
package ru.spcex.clearing.utility.service;
|
||||
|
||||
import org.apache.kafka.clients.consumer.Consumer;
|
||||
import org.apache.kafka.clients.producer.Producer;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.beans.factory.InitializingBean;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.beans.factory.annotation.Qualifier;
|
||||
import org.springframework.stereotype.Service;
|
||||
import ru.clearing.classes.statics.data.account.ClientCode;
|
||||
import ru.clearing.classes.statics.data.misc.ValidationSymbols;
|
||||
import ru.clearing.classes.statics.data.registry.Registry;
|
||||
import ru.clearing.classes.statics.data.registry.TradingClearingRegistry;
|
||||
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
||||
import ru.spcex.clearing.platform.messaging.domain.BaseRequest;
|
||||
import ru.spcex.clearing.platform.messaging.domain.Consts;
|
||||
import ru.spcex.clearing.platform.messaging.domain.cud.account.ClientCodeNewRequest;
|
||||
import ru.spcex.clearing.platform.messaging.domain.cud.common.CommonIdRequest;
|
||||
import ru.spcex.clearing.platform.messaging.domain.cud.misc.ValidationSymbolsNewRequest;
|
||||
import ru.spcex.clearing.platform.messaging.domain.cud.misc.ValidationSymbolsUpdateRequest;
|
||||
import ru.spcex.clearing.platform.messaging.domain.cud.schedule.LauncherCommandRequest;
|
||||
import ru.spcex.clearing.platform.messaging.domain.cud.utilities.NotificationNewRequest;
|
||||
import ru.spcex.clearing.platform.messaging.serialization.LogFormatter;
|
||||
import ru.spcex.clearing.platform.messaging.service.QueueConsumer;
|
||||
import ru.spcex.clearing.platform.messaging.service.RequestInfoUpdate;
|
||||
import ru.spcex.clearing.platform.messaging.service.sender.KafkaSender;
|
||||
import ru.spcex.clearing.util.security.UserRoleVerification;
|
||||
import ru.spcex.clearing.validation.common.ValidationHelper;
|
||||
import ru.spcex.platform.enumeration.*;
|
||||
import ru.spcex.platform.imdg.api.Imdg;
|
||||
import ru.spcex.platform.imdg.api.ImdgProvider;
|
||||
import ru.spcex.platform.imdg.api.predicate.ImdgPredicate;
|
||||
import ru.spcex.platform.imdg.api.predicate.ImdgPredicateBuilder;
|
||||
import ru.spcex.platform.imdg.api.predicate.specific.RegistryCodeSqlBuilder;
|
||||
import ru.spcex.platform.imdg.iml.hazelcast.adapter.predicate.ImdgPredicateBuilderHazelcast;
|
||||
import ru.spcex.platform.utils.collection.Pair;
|
||||
import ru.spcex.platform.utils.number.BigDecimalUtil;
|
||||
import ru.spcex.platform.utils.validation.IValidator;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.math.RoundingMode;
|
||||
import java.time.Instant;
|
||||
import java.time.LocalDateTime;
|
||||
import java.time.format.DateTimeFormatter;
|
||||
import java.util.*;
|
||||
import java.util.function.Function;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@Service
|
||||
public class ValidationSymbolsService extends QueueConsumer implements InitializingBean {
|
||||
private final Logger log = LoggerFactory.getLogger(getClass());
|
||||
|
||||
private final Imdg<ValidationSymbols> validationSymbolsImdg;
|
||||
private final ImdgProvider imdgProvider;
|
||||
private final KafkaSender kafkaSender;
|
||||
|
||||
private final ValidationHelper validationHelper;
|
||||
private final UserRoleVerification userRoleVerification;
|
||||
final Function<ValidationSymbolsNewRequest, IValidator> validationSymbolsNewRequestValidator;
|
||||
final Function<ValidationSymbolsUpdateRequest, IValidator> validationSymbolsUpdateRequestValidator;
|
||||
final Function<CommonIdRequest, IValidator> validationSymbolsDeleteRequestValidator;
|
||||
|
||||
|
||||
@Autowired
|
||||
public ValidationSymbolsService(ImdgProvider imdgProvider,
|
||||
UserRoleVerification userRoleVerification,
|
||||
ValidationHelper validationHelper,
|
||||
|
||||
@Qualifier("validationSymbolsNewRequestRequestValidator")
|
||||
Function<ValidationSymbolsNewRequest, IValidator> validationSymbolsNewRequestValidator,
|
||||
@Qualifier("validationSymbolsUpdateRequestRequestValidator")
|
||||
Function<ValidationSymbolsUpdateRequest, IValidator> validationSymbolsUpdateRequestValidator,
|
||||
@Qualifier("validationSymbolsDeleteRequestRequestValidator")
|
||||
Function<CommonIdRequest, IValidator> validationSymbolsDeleteRequestValidator,
|
||||
|
||||
KafkaSender kafkaSender,
|
||||
Producer<String, Object> kafkaProducer,
|
||||
Consumer<String, Object> kafkaQueue) {
|
||||
super(kafkaQueue, kafkaProducer);
|
||||
this.imdgProvider = imdgProvider;
|
||||
this.kafkaSender = kafkaSender;
|
||||
this.validationSymbolsImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_ValidationSymbols, ValidationSymbols.class);
|
||||
|
||||
this.userRoleVerification = userRoleVerification;
|
||||
this.validationHelper = validationHelper;
|
||||
this.validationSymbolsNewRequestValidator = validationSymbolsNewRequestValidator;
|
||||
this.validationSymbolsUpdateRequestValidator = validationSymbolsUpdateRequestValidator;
|
||||
this.validationSymbolsDeleteRequestValidator = validationSymbolsDeleteRequestValidator;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void afterPropertiesSet() throws Exception {
|
||||
callback(ValidationSymbolsNewRequest.class)
|
||||
.setFunction(this::onValidateSymbolNewRequest)
|
||||
.forDestination(Consts.DESTINATION_VALIDATE_SYMBOLS_NEW, callbacks::put);
|
||||
callback(ValidationSymbolsUpdateRequest.class)
|
||||
.setFunction(this::onValidateSymbolUpdateRequest)
|
||||
.forDestination(Consts.DESTINATION_VALIDATE_SYMBOLS_UPDATE, callbacks::put);
|
||||
callback(CommonIdRequest.class)
|
||||
.setFunction(this::onValidateSymbolDeleteRequest)
|
||||
.forDestination(Consts.DESTINATION_VALIDATE_SYMBOLS_DELETE, callbacks::put);
|
||||
init();
|
||||
}
|
||||
|
||||
public RequestInfoUpdate onValidateSymbolNewRequest(BaseRequest<ValidationSymbolsNewRequest> userRequest) {
|
||||
log.debug("ValidationSymbolsNewRequest received {}", userRequest.getId());
|
||||
|
||||
RequestInfoUpdate requestInfoUpdate = userRoleVerification.validateRoleAndGetResult(userRequest);
|
||||
if (requestInfoUpdate != null) return requestInfoUpdate;
|
||||
|
||||
requestInfoUpdate = validationHelper.validateTillFirstError(userRequest, validationSymbolsNewRequestValidator);
|
||||
if (requestInfoUpdate != null) return requestInfoUpdate;
|
||||
|
||||
ValidationSymbolsNewRequest req = userRequest.getRequestPayload();
|
||||
|
||||
ValidationSymbols vs = new ValidationSymbols();
|
||||
vs.setId(validationSymbolsImdg.nextIDSequenceFor());
|
||||
vs.setCode(req.getCode());
|
||||
vs.setSymbols(req.getSymbols());
|
||||
vs.setComment(req.getComment());
|
||||
validationSymbolsImdg.insert(vs);
|
||||
log.info("New ValidationSymbols.id={} was created.", vs.getId());
|
||||
return null;
|
||||
//return requestHelper.success(vs.getId()); // new RequestInfoUpdate(id, Status.Success, null)
|
||||
}
|
||||
|
||||
public RequestInfoUpdate onValidateSymbolUpdateRequest(BaseRequest<ValidationSymbolsUpdateRequest> userRequest) {
|
||||
log.debug("ValidationSymbolsUpdateRequest received {}", userRequest.getId());
|
||||
|
||||
RequestInfoUpdate requestInfoUpdate = userRoleVerification.validateRoleAndGetResult(userRequest);
|
||||
if (requestInfoUpdate != null) return requestInfoUpdate;
|
||||
|
||||
requestInfoUpdate = validationHelper.validateTillFirstError(userRequest, validationSymbolsUpdateRequestValidator);
|
||||
if (requestInfoUpdate != null) return requestInfoUpdate;
|
||||
|
||||
ValidationSymbolsUpdateRequest req = userRequest.getRequestPayload();
|
||||
ValidationSymbols vs = validationSymbolsImdg.getSingleObjectByID(req.getId());
|
||||
vs.setCode(req.getCode());
|
||||
vs.setSymbols(req.getSymbols());
|
||||
vs.setComment(req.getComment());
|
||||
validationSymbolsImdg.update(vs);
|
||||
log.info("Update ValidationSymbols.id={} was created.", vs.getId());
|
||||
return null;
|
||||
//return requestHelper.success(vs.getId()); // new RequestInfoUpdate(id, Status.Success, null)
|
||||
}
|
||||
|
||||
public RequestInfoUpdate onValidateSymbolDeleteRequest(BaseRequest<CommonIdRequest> userRequest) {
|
||||
log.debug("ValidationSymbolsDeleteRequest received {}", userRequest.getId());
|
||||
|
||||
RequestInfoUpdate requestInfoUpdate = userRoleVerification.validateRoleAndGetResult(userRequest);
|
||||
if (requestInfoUpdate != null) return requestInfoUpdate;
|
||||
|
||||
requestInfoUpdate = validationHelper.validateTillFirstError(userRequest, validationSymbolsDeleteRequestValidator);
|
||||
if (requestInfoUpdate != null) return requestInfoUpdate;
|
||||
|
||||
CommonIdRequest req = userRequest.getRequestPayload();
|
||||
ValidationSymbols vs = validationSymbolsImdg.getSingleObjectByID(req.getId());
|
||||
validationSymbolsImdg.delete(vs);
|
||||
log.info("Delete ValidationSymbols.id={} was created.", vs.getId());
|
||||
return null;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,170 @@
|
|||
package ru.spcex.clearing.utility.service;
|
||||
|
||||
import org.apache.kafka.clients.consumer.MockConsumer;
|
||||
import org.apache.kafka.clients.producer.Producer;
|
||||
import org.junit.jupiter.api.Disabled;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.junit.jupiter.api.extension.ExtendWith;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.beans.factory.annotation.Qualifier;
|
||||
import org.springframework.test.context.ContextConfiguration;
|
||||
import org.springframework.test.context.junit.jupiter.SpringExtension;
|
||||
import ru.clearing.classes.statics.data.misc.ValidationSymbols;
|
||||
import ru.clearing.classes.statics.data.register.PairSdf;
|
||||
import ru.clearing.classes.statics.data.sdf.SDf01;
|
||||
import ru.clearing.classes.statics.data.sdf.SDf02;
|
||||
import ru.clearing.classes.statics.data.security.DigitalCertificateSecurity;
|
||||
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
||||
import ru.spcex.clearing.platform.messaging.domain.Consts;
|
||||
import ru.spcex.clearing.platform.messaging.domain.cud.common.CommonIdRequest;
|
||||
import ru.spcex.clearing.platform.messaging.domain.cud.misc.ValidationSymbolsNewRequest;
|
||||
import ru.spcex.clearing.platform.messaging.domain.cud.misc.ValidationSymbolsUpdateRequest;
|
||||
import ru.spcex.clearing.platform.messaging.domain.cud.utilities.PairSdfRequest;
|
||||
import ru.spcex.clearing.test.MatcherFactory;
|
||||
import ru.spcex.clearing.test.config.ImdgTestConfig;
|
||||
import ru.spcex.clearing.test.config.KafkaTestConfig;
|
||||
import ru.spcex.clearing.utility.config.TestConfig;
|
||||
import ru.spcex.clearing.utility.config.settings.UtilityServiceSettings;
|
||||
import ru.spcex.clearing.utility.config.validation.ValidateSymbolsValidationConfig;
|
||||
import ru.spcex.clearing.utility.config.validation.ValidationConfig;
|
||||
import ru.spcex.platform.imdg.api.Imdg;
|
||||
import ru.spcex.platform.imdg.api.ImdgProvider;
|
||||
|
||||
import javax.annotation.PostConstruct;
|
||||
import java.io.File;
|
||||
import java.nio.file.Path;
|
||||
import java.nio.file.Paths;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.*;
|
||||
import static ru.spcex.clearing.test.MatcherFactory.usingIgnoringFieldsComparator;
|
||||
import static ru.spcex.clearing.test.TestUtils.*;
|
||||
import static ru.spcex.clearing.test.TestUtils.waitingSendAndCheckRecord;
|
||||
import static ru.spcex.clearing.test.config.ImdgTestConfig.currentID;
|
||||
import static ru.spcex.clearing.test.config.ImdgTestConfig.waitAvailableImdgProviderAndAddAdminWithDefaultId;
|
||||
|
||||
@ExtendWith(SpringExtension.class)
|
||||
@ContextConfiguration(classes = {
|
||||
|
||||
// UtilityServiceSettings.class,
|
||||
TestConfig.class,
|
||||
ImdgTestConfig.class,
|
||||
KafkaTestConfig.class,
|
||||
|
||||
ValidationConfig.class,
|
||||
ValidateSymbolsValidationConfig.class,
|
||||
ValidationSymbolsService.class
|
||||
})
|
||||
class ValidationSymbolsServiceTest {
|
||||
private static final MatcherFactory.Matcher<ValidationSymbols> VS_MATCHER = usingIgnoringFieldsComparator();
|
||||
|
||||
// private static final Long inGenerationId = currentID.getAndIncrement();
|
||||
// private static final Long outGenerationId = currentID.getAndIncrement();
|
||||
// private static final Long inSdfId = currentID.getAndIncrement();
|
||||
|
||||
@Autowired
|
||||
private ValidationSymbolsService validationSymbolsService;
|
||||
|
||||
@Autowired
|
||||
@Qualifier("hazelcastServiceTest")
|
||||
protected ImdgProvider imdgProvider;
|
||||
|
||||
@Autowired
|
||||
@Qualifier("mockProducer")
|
||||
protected Producer<String, Object> mockProducer;
|
||||
|
||||
private Imdg<ValidationSymbols> validationSymbolsIMDG;
|
||||
|
||||
static {
|
||||
Path path = Paths.get("src", "main", "resources");
|
||||
String currentPath = path.toAbsolutePath().toString();
|
||||
System.setProperty("spring.config.location", currentPath + File.separator);
|
||||
}
|
||||
|
||||
@PostConstruct
|
||||
public void init(){
|
||||
waitAvailableImdgProviderAndAddAdminWithDefaultId();
|
||||
this.validationSymbolsIMDG = imdgProvider.getImdg(IMDGDistributedNames.Map_ValidationSymbols, ValidationSymbols.class);
|
||||
// SDf02 sDf02 = new SDf02();
|
||||
// sDf02.setGenerationId(outGenerationId);
|
||||
// sDf02.setInSDfId(inSdfId);
|
||||
// sDf02Imdg.insert(sDf02);
|
||||
}
|
||||
|
||||
@Test
|
||||
void onValidateSymbolNewRequest() {
|
||||
Long ID = currentID.getAndIncrement();
|
||||
|
||||
ValidationSymbolsNewRequest newReq = new ValidationSymbolsNewRequest();
|
||||
newReq.setCode("Alphabet Az");
|
||||
newReq.setSymbols("A-z");
|
||||
newReq.setComment("Testing aZ");
|
||||
|
||||
String jsonString = getJsonStringForNew(newReq, ID);
|
||||
addRecordToKafka((MockConsumer) validationSymbolsService.getConsumer(), Consts.DESTINATION_VALIDATE_SYMBOLS_NEW, 0, 0, jsonString);
|
||||
waitingSendAndCheckRecord(ID, mockProducer);
|
||||
|
||||
|
||||
ValidationSymbols newValidateSymbols = validationSymbolsIMDG.getFirstObjectBySQL(
|
||||
String.format("comment = %s", newReq.getComment())
|
||||
);
|
||||
ValidationSymbols vsPrediction=new ValidationSymbols();
|
||||
vsPrediction.setId(newValidateSymbols.getId());
|
||||
vsPrediction.setCode("Alphabet Az");
|
||||
vsPrediction.setSymbols("A-z");
|
||||
vsPrediction.setComment("Testing aZ");
|
||||
VS_MATCHER.assertMatch(newValidateSymbols, vsPrediction);
|
||||
}
|
||||
|
||||
@Test
|
||||
void onValidateSymbolUpdateRequest() {
|
||||
Long ID = currentID.getAndIncrement();
|
||||
ValidationSymbols vsOld = new ValidationSymbols();
|
||||
vsOld.setId(ID);
|
||||
vsOld.setCode("Alphabet Az");
|
||||
vsOld.setSymbols("A-F");
|
||||
vsOld.setComment("Testing aZ");
|
||||
validationSymbolsIMDG.insert(vsOld);
|
||||
|
||||
|
||||
ValidationSymbolsUpdateRequest newReq = new ValidationSymbolsUpdateRequest();
|
||||
newReq.setId(ID);
|
||||
newReq.setCode("Alphabet Az");
|
||||
newReq.setSymbols("A-F");
|
||||
newReq.setComment("Testing aZ");
|
||||
|
||||
String jsonString = getJsonStringForNew(newReq, ID);
|
||||
addRecordToKafka((MockConsumer) validationSymbolsService.getConsumer(), Consts.DESTINATION_VALIDATE_SYMBOLS_UPDATE, 0, 0, jsonString);
|
||||
waitingSendAndCheckRecord(ID, mockProducer);
|
||||
|
||||
|
||||
ValidationSymbols newValidateSymbols = validationSymbolsIMDG.getSingleObjectByID(ID);
|
||||
ValidationSymbols vsPrediction = new ValidationSymbols();
|
||||
vsPrediction.setId(newValidateSymbols.getId());
|
||||
vsPrediction.setCode("Alphabet Az");
|
||||
vsPrediction.setSymbols("A-F");
|
||||
vsPrediction.setComment("Testing aZ");
|
||||
VS_MATCHER.assertMatch(newValidateSymbols, vsPrediction);
|
||||
}
|
||||
|
||||
@Test
|
||||
void onValidateSymbolDeleteRequest() {
|
||||
Long ID = currentID.getAndIncrement();
|
||||
ValidationSymbols vsOld = new ValidationSymbols();
|
||||
vsOld.setId(ID);
|
||||
vsOld.setCode("Alphabet Az");
|
||||
vsOld.setSymbols("A-F");
|
||||
vsOld.setComment("Testing aZ");
|
||||
validationSymbolsIMDG.insert(vsOld);
|
||||
|
||||
CommonIdRequest deleteReq = new CommonIdRequest();
|
||||
deleteReq.setId(ID);
|
||||
|
||||
String jsonString = getJsonStringForNew(deleteReq, ID);
|
||||
addRecordToKafka((MockConsumer) validationSymbolsService.getConsumer(), Consts.DESTINATION_VALIDATE_SYMBOLS_DELETE, 0, 0, jsonString);
|
||||
waitingSendAndCheckRecord(ID, mockProducer);
|
||||
|
||||
|
||||
ValidationSymbols newValidateSymbols = validationSymbolsIMDG.getSingleObjectByID(ID);
|
||||
assertNull(newValidateSymbols);
|
||||
}
|
||||
}
|
||||
|
|
@ -134,6 +134,11 @@ public interface Consts {
|
|||
String DESTINATION_RATES_NEW = "rates-new";
|
||||
String DESTINATION_RATES_UPDATE = "rates-update";
|
||||
|
||||
String DESTINATION_VALIDATE_SYMBOLS_NEW = "validate-symbols-new";
|
||||
String DESTINATION_VALIDATE_SYMBOLS_UPDATE = "validate-symbols-update";
|
||||
String DESTINATION_VALIDATE_SYMBOLS_DELETE = "validate-symbols-delete";
|
||||
|
||||
|
||||
String DESTINATION_SDF08_NEW = "s-df-08-new";
|
||||
String DESTINATION_SDF02_NEW = "s-df-02-new";
|
||||
|
||||
|
|
|
|||
|
|
@ -0,0 +1,37 @@
|
|||
package ru.spcex.clearing.platform.messaging.domain.cud.misc;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||
|
||||
public class ValidationSymbolsNewRequest {
|
||||
@JsonProperty
|
||||
private String code;
|
||||
@JsonProperty
|
||||
private String symbols;
|
||||
@JsonProperty
|
||||
private String comment;
|
||||
|
||||
|
||||
public String getCode() {
|
||||
return code;
|
||||
}
|
||||
|
||||
public void setCode(String code) {
|
||||
this.code = code;
|
||||
}
|
||||
|
||||
public String getSymbols() {
|
||||
return symbols;
|
||||
}
|
||||
|
||||
public void setSymbols(String symbols) {
|
||||
this.symbols = symbols;
|
||||
}
|
||||
|
||||
public String getComment() {
|
||||
return comment;
|
||||
}
|
||||
|
||||
public void setComment(String comment) {
|
||||
this.comment = comment;
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,47 @@
|
|||
package ru.spcex.clearing.platform.messaging.domain.cud.misc;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||
|
||||
public class ValidationSymbolsUpdateRequest {
|
||||
@JsonProperty
|
||||
private Long id;
|
||||
@JsonProperty
|
||||
private String code;
|
||||
@JsonProperty
|
||||
private String symbols;
|
||||
@JsonProperty
|
||||
private String comment;
|
||||
|
||||
|
||||
public Long getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
public void setId(Long id) {
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
public String getCode() {
|
||||
return code;
|
||||
}
|
||||
|
||||
public void setCode(String code) {
|
||||
this.code = code;
|
||||
}
|
||||
|
||||
public String getSymbols() {
|
||||
return symbols;
|
||||
}
|
||||
|
||||
public void setSymbols(String symbols) {
|
||||
this.symbols = symbols;
|
||||
}
|
||||
|
||||
public String getComment() {
|
||||
return comment;
|
||||
}
|
||||
|
||||
public void setComment(String comment) {
|
||||
this.comment = comment;
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Reference in a new issue