From 1adc00a11ec18fca12244f8f700f015c96ef7fca Mon Sep 17 00:00:00 2001 From: ialbert Date: Mon, 7 Nov 2022 11:56:55 +0300 Subject: [PATCH] meta get all method unified exapmle --- .../CudMoneyMarketSecurityController.java | 17 +++---- .../response/entity/CommonGetAllResponse.java | 46 +++++++++++++++++++ .../backendapi/service/IStateLoader.java | 2 + .../service/impl/StateLoaderImpl.java | 11 ++++- .../controller/queue/config/IOperator.java | 10 +++- 5 files changed, 73 insertions(+), 13 deletions(-) create mode 100644 clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/response/entity/CommonGetAllResponse.java diff --git a/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/queue/securities/CudMoneyMarketSecurityController.java b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/queue/securities/CudMoneyMarketSecurityController.java index e7585e1d1..7feceaedb 100644 --- a/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/queue/securities/CudMoneyMarketSecurityController.java +++ b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/queue/securities/CudMoneyMarketSecurityController.java @@ -15,14 +15,14 @@ import ru.spcex.clearing.backendapi.controller.request.cud.securities.MoneyMarke import ru.spcex.clearing.backendapi.controller.request.cud.securities.MoneyMarketSecurityUpdateAction; import ru.spcex.clearing.backendapi.controller.response.BasicSpcexResponse; import ru.spcex.clearing.backendapi.controller.response.cud.CudResponse; -import ru.spcex.clearing.backendapi.controller.response.entity.securities.MoneyMarketSecurityBackendGetAll; -import ru.spcex.clearing.backendapi.meta.GetResponseFactory; +import ru.spcex.clearing.backendapi.controller.response.entity.CommonGetAllResponse; import ru.spcex.clearing.backendapi.service.IOperator; import ru.spcex.clearing.backendapi.service.IStateLoader; import ru.spcex.clearing.imdg.IMDGDistributedNames; import ru.spcex.clearing.platform.messaging.domain.Consts; import java.util.Collection; +import java.util.Map; import java.util.concurrent.ExecutionException; @Controller @@ -70,17 +70,14 @@ public class CudMoneyMarketSecurityController extends AbstractQueueController { return processRequest(Consts.DESTINATION_MONEY_MARKET_SECURITY_DELETE, deleteAction); } - @Autowired - private GetResponseFactory responseFactory; - @ApiOperation(value = "get all money market securities.") - @ApiResponses(value = {@ApiResponse(code = 200, message = "OK", response = MoneyMarketSecurityBackendGetAll.class)}) + @ApiResponses(value = {@ApiResponse(code = 200, message = "OK", response = CommonGetAllResponse.class)}) @RequestMapping(method = RequestMethod.GET) @ResponseBody - public MoneyMarketSecurityBackendGetAll getAll() { - Collection all = stateLoader.getAll(IMDGDistributedNames.Map_MoneyMarketSecurity, MoneyMarketSecurity.class); - MoneyMarketSecurityBackendGetAll response = new MoneyMarketSecurityBackendGetAll(); - response.fromEntity(responseFactory.responseFromObjectCollection(all)); + public CommonGetAllResponse getAll() { + Collection> all = stateLoader.getAllMetaTransform(IMDGDistributedNames.Map_MoneyMarketSecurity, MoneyMarketSecurity.class); + CommonGetAllResponse response = new CommonGetAllResponse(); + response.fromEntity(all); return response; } } diff --git a/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/response/entity/CommonGetAllResponse.java b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/response/entity/CommonGetAllResponse.java new file mode 100644 index 000000000..7848ac5cf --- /dev/null +++ b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/response/entity/CommonGetAllResponse.java @@ -0,0 +1,46 @@ +package ru.spcex.clearing.backendapi.controller.response.entity; + +import com.fasterxml.jackson.annotation.JsonProperty; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import ru.spcex.clearing.backendapi.controller.response.BasicSpcexResponse; + +import java.util.ArrayList; +import java.util.Collection; +import java.util.List; +import java.util.Map; + +@ApiModel(description = "Ответ при получении массива объектов.") +public class CommonGetAllResponse extends BasicSpcexResponse { + + @JsonProperty + @ApiModelProperty(value = "Полезная нагрузка") + private GetAllCommonPayload payload = new GetAllCommonPayload(); + + private static class GetAllCommonPayload { + private List> items = new ArrayList<>(); + + public List> getItems() { + return items; + } + + public void setItems(List> items) { + this.items = items; + } + } + + public GetAllCommonPayload getPayload() { + return payload; + } + + public void setPayload(GetAllCommonPayload payload) { + this.payload = payload; + } + + public void fromEntity(Collection> anyObjectFields) { + var payload = this.getPayload(); + for (Map moneyMarketSecurity : anyObjectFields) { + payload.getItems().add(moneyMarketSecurity); + } + } +} \ No newline at end of file diff --git a/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/service/IStateLoader.java b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/service/IStateLoader.java index 1f58a2a48..c8caa0caa 100644 --- a/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/service/IStateLoader.java +++ b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/service/IStateLoader.java @@ -3,6 +3,7 @@ package ru.spcex.clearing.backendapi.service; import ru.spcex.platform.classes.base.SpcexObjectBase; import java.util.Collection; +import java.util.Map; import java.util.Optional; /** @@ -11,4 +12,5 @@ import java.util.Optional; public interface IStateLoader { Optional getById(Long id, String mapName, Class clazz); Collection getAll(String mapName, Class clazz); + Collection> getAllMetaTransform(String mapName, Class clazz); } diff --git a/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/service/impl/StateLoaderImpl.java b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/service/impl/StateLoaderImpl.java index 06667bc94..8d21ba817 100644 --- a/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/service/impl/StateLoaderImpl.java +++ b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/service/impl/StateLoaderImpl.java @@ -2,6 +2,7 @@ package ru.spcex.clearing.backendapi.service.impl; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import ru.spcex.clearing.backendapi.meta.GetResponseFactory; import ru.spcex.clearing.backendapi.service.IStateLoader; import ru.spcex.platform.classes.base.SpcexObjectBase; import ru.spcex.platform.imdg.api.Imdg; @@ -16,9 +17,11 @@ import java.util.concurrent.ConcurrentHashMap; public class StateLoaderImpl implements IStateLoader { private final Map> allImdgMaps; private final ImdgProvider imdgProvider; + private final GetResponseFactory responseFactory; @Autowired - public StateLoaderImpl(ImdgProvider imdgProvider) { + public StateLoaderImpl(ImdgProvider imdgProvider, GetResponseFactory responseFactory) { + this.responseFactory = responseFactory; this.allImdgMaps = new ConcurrentHashMap<>(); this.imdgProvider = imdgProvider; } @@ -35,6 +38,12 @@ public class StateLoaderImpl implements IStateLoader { return imdg.getAllValues(); } + @Override + public Collection> getAllMetaTransform(String mapName, Class clazz) { + Collection all = getAll(mapName, clazz); + return responseFactory.responseFromObjectCollection(all); + } + @SuppressWarnings("unchecked") private Imdg getImdg(String mapName, Class clazz) { return (Imdg) allImdgMaps.computeIfAbsent(mapName, (mapName1) -> imdgProvider.getImdg(mapName, clazz)); diff --git a/clearing-parent/backend-api/src/test/ru/spcex/clearing/backendapi/controller/queue/config/IOperator.java b/clearing-parent/backend-api/src/test/ru/spcex/clearing/backendapi/controller/queue/config/IOperator.java index 065785269..9b6d845e9 100644 --- a/clearing-parent/backend-api/src/test/ru/spcex/clearing/backendapi/controller/queue/config/IOperator.java +++ b/clearing-parent/backend-api/src/test/ru/spcex/clearing/backendapi/controller/queue/config/IOperator.java @@ -6,6 +6,7 @@ import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import ru.spcex.clearing.backendapi.service.impl.OperatorImpl; +import ru.spcex.clearing.backendapi.service.validation.ActionValidationProvider; import ru.spcex.platform.imdg.iml.hazelcast.service.HazelcastService; @Configuration @@ -17,8 +18,13 @@ public class IOperator { @Autowired @Bean - public OperatorImpl createIOperator(Producer kafka) { - return new OperatorImpl(kafka, hazelcastServiceTest); + public OperatorImpl createIOperator(Producer kafka, ActionValidationProvider validationProvider) { + return new OperatorImpl(kafka, hazelcastServiceTest, validationProvider); + } + + @Bean + public ActionValidationProvider validationForActions() { + return new ActionValidationProvider(hazelcastServiceTest); } }