From c8e129d5839255f05ee37ccb3b0fcffa580ceda8 Mon Sep 17 00:00:00 2001 From: varunreddy-egov Date: Thu, 5 Sep 2024 18:28:47 +0530 Subject: [PATCH 01/14] Added logic to process egov-location.TenantBoundary schema code separately --- .../handler/config/ServiceConfiguration.java | 9 ++ .../egov/handler/config/ServiceConstants.java | 2 + .../handler/service/DataHandlerService.java | 108 +++++++++++++++++- .../org/egov/handler/util/MdmsV2Util.java | 59 +++++++--- .../egov/handler/web/models/MdmsRequest.java | 38 ++++++ .../handler/web/models/SchemaDefCriteria.java | 50 ++++++++ .../web/models/SchemaDefSearchRequest.java | 32 ++++++ .../handler/web/models/SchemaDefinition.java | 60 ++++++++++ .../web/models/SchemaDefinitionRequest.java | 36 ++++++ .../web/models/SchemaDefinitionResponse.java | 47 ++++++++ .../src/main/resources/application.properties | 3 + 11 files changed, 424 insertions(+), 20 deletions(-) create mode 100644 core-services/default-data-handler/src/main/java/org/egov/handler/web/models/MdmsRequest.java create mode 100644 core-services/default-data-handler/src/main/java/org/egov/handler/web/models/SchemaDefCriteria.java create mode 100644 core-services/default-data-handler/src/main/java/org/egov/handler/web/models/SchemaDefSearchRequest.java create mode 100644 core-services/default-data-handler/src/main/java/org/egov/handler/web/models/SchemaDefinition.java create mode 100644 core-services/default-data-handler/src/main/java/org/egov/handler/web/models/SchemaDefinitionRequest.java create mode 100644 core-services/default-data-handler/src/main/java/org/egov/handler/web/models/SchemaDefinitionResponse.java diff --git a/core-services/default-data-handler/src/main/java/org/egov/handler/config/ServiceConfiguration.java b/core-services/default-data-handler/src/main/java/org/egov/handler/config/ServiceConfiguration.java index 47bd06e5f2..45cce8dccf 100644 --- a/core-services/default-data-handler/src/main/java/org/egov/handler/config/ServiceConfiguration.java +++ b/core-services/default-data-handler/src/main/java/org/egov/handler/config/ServiceConfiguration.java @@ -21,6 +21,15 @@ public class ServiceConfiguration { @Value("${egov.mdms.host}${egov.mdms.default.data.create.endpoint}") private String mdmsDefaultDataCreateURI; + @Value("${egov.mdms.host}${egov.mdms.schema.create.endpoint}") + private String mdmsSchemaCreateURI; + + @Value("${egov.mdms.host}${egov.mdms.schema.search.endpoint}") + private String mdmsSchemaSearchURI; + + @Value("${egov.mdms.host}${egov.mdms.data.create.endpoint}") + private String mdmsDataCreateURI; + @Value("${egov.mdms.host}${egov.mdms.data.search.endpoint}") private String mdmsDataSearchURI; diff --git a/core-services/default-data-handler/src/main/java/org/egov/handler/config/ServiceConstants.java b/core-services/default-data-handler/src/main/java/org/egov/handler/config/ServiceConstants.java index 07b6958a1d..d466778330 100644 --- a/core-services/default-data-handler/src/main/java/org/egov/handler/config/ServiceConstants.java +++ b/core-services/default-data-handler/src/main/java/org/egov/handler/config/ServiceConstants.java @@ -5,6 +5,8 @@ @Component public class ServiceConstants { + public static final String TENANT_BOUNDARY_SCHEMA = "egov-location.TenantBoundary"; + public static final String EXTERNAL_SERVICE_EXCEPTION = "External Service threw an Exception: "; public static final String SEARCHER_SERVICE_EXCEPTION = "Exception while fetching from searcher: "; diff --git a/core-services/default-data-handler/src/main/java/org/egov/handler/service/DataHandlerService.java b/core-services/default-data-handler/src/main/java/org/egov/handler/service/DataHandlerService.java index 369644b439..bb043c9dd3 100644 --- a/core-services/default-data-handler/src/main/java/org/egov/handler/service/DataHandlerService.java +++ b/core-services/default-data-handler/src/main/java/org/egov/handler/service/DataHandlerService.java @@ -1,7 +1,10 @@ package org.egov.handler.service; +import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.node.ObjectNode; import lombok.extern.slf4j.Slf4j; +import org.egov.common.contract.request.RequestInfo; import org.egov.handler.config.ServiceConfiguration; import org.egov.handler.util.LocalizationUtil; import org.egov.handler.util.MdmsV2Util; @@ -18,6 +21,8 @@ import java.io.InputStream; import java.util.*; +import static org.egov.handler.config.ServiceConstants.TENANT_BOUNDARY_SCHEMA; + @Slf4j @Service public class DataHandlerService { @@ -55,13 +60,17 @@ public DataHandlerService(MdmsV2Util mdmsV2Util, public void createDefaultData(DefaultDataRequest defaultDataRequest) { if (defaultDataRequest.getSchemaCodes() != null) { + if (defaultDataRequest.getSchemaCodes().contains(TENANT_BOUNDARY_SCHEMA)) { + createTenantBoundarydata(defaultDataRequest.getRequestInfo(), defaultDataRequest.getTargetTenantId()); + defaultDataRequest.getSchemaCodes().remove(TENANT_BOUNDARY_SCHEMA); + } DefaultMdmsDataRequest defaultMdmsDataRequest = DefaultMdmsDataRequest.builder() .requestInfo(defaultDataRequest.getRequestInfo()) .targetTenantId(defaultDataRequest.getTargetTenantId()) .schemaCodes(defaultDataRequest.getSchemaCodes()) .onlySchemas(defaultDataRequest.getOnlySchemas()) .build(); - mdmsV2Util.createMdmsData(defaultMdmsDataRequest); + mdmsV2Util.createDefaultMdmsData(defaultMdmsDataRequest); } if (defaultDataRequest.getLocale() != null && defaultDataRequest.getModules() != null) { @@ -75,6 +84,91 @@ public void createDefaultData(DefaultDataRequest defaultDataRequest) { } } + private void createTenantBoundarydata(RequestInfo requestInfo, String targetTenantId) { + List schemaCodes = new ArrayList<>(Collections.singletonList(TENANT_BOUNDARY_SCHEMA)); + + SchemaDefCriteria schemaDefCriteria = SchemaDefCriteria.builder() + .tenantId(serviceConfig.getDefaultTenantId()) + .codes(schemaCodes) + .build(); + SchemaDefSearchRequest schemaDefSearchRequest = SchemaDefSearchRequest.builder() + .requestInfo(requestInfo) + .schemaDefCriteria(schemaDefCriteria) + .build(); + SchemaDefinitionResponse schemaSearchResponse = mdmsV2Util.searchMdmsSchema(schemaDefSearchRequest); + List schemaDefinitionList = schemaSearchResponse.getSchemaDefinitions(); + for (SchemaDefinition schemaDefinition : schemaDefinitionList) { + schemaDefinition.setTenantId(targetTenantId); + SchemaDefinitionRequest schemaDefinitionRequest = SchemaDefinitionRequest.builder() + .requestInfo(requestInfo) + .schemaDefinition(schemaDefinition) + .build(); + mdmsV2Util.createMdmsSchema(schemaDefinitionRequest); + //Search data for the schema code in default tenetId + List mdmsList = getAllMdmsResults(serviceConfig.getDefaultTenantId(), schemaDefinition.getCode(), requestInfo); + //Create schema data in the given tenantId + for (Mdms mdms : mdmsList) { + mdms.setTenantId(targetTenantId); + + JsonNode dataNode = mdms.getData(); + if (dataNode.has("boundary")) { + // Cast the 'boundary' node to ObjectNode so that we can modify it + ObjectNode boundaryNode = (ObjectNode) dataNode.get("boundary"); + + // Modify the 'code' field within the 'boundary' node + boundaryNode.put("code", targetTenantId); + + // Set the modified 'data' back to the Mdms object (optional, since it's mutable) + ((ObjectNode) dataNode).set("boundary", boundaryNode); + mdms.setData(dataNode); + } else { + log.info("Boundary node does not exist in the data."); + } + MdmsRequest mdmsRequest = MdmsRequest.builder().requestInfo(requestInfo).mdms(mdms).build(); + log.info("{} : {}", mdms.getSchemaCode(), mdms.getUniqueIdentifier()); + mdmsV2Util.createMdmsData(mdmsRequest); + } + } + } + + // Method to get all search results with pagination + public List getAllMdmsResults(String tenantId, String schemaCode, RequestInfo requestInfo) { + List allMdmsResults = new ArrayList<>(); + int limit = 100; // Default limit + int offset = 0; // Default offset + + while (true) { + // Create MdmsCriteriaV2 with current offset and limit + MdmsCriteriaV2 mdmsCriteria = MdmsCriteriaV2.builder() + .tenantId(tenantId) + .schemaCode(schemaCode) + .offset(offset) + .limit(limit) + .build(); + + MdmsCriteriaReqV2 mdmsCriteriaReq = MdmsCriteriaReqV2.builder() + .requestInfo(requestInfo) + .mdmsCriteria(mdmsCriteria) + .build(); + + // Fetch results from the repository + MdmsResponseV2 dataSearchResponse = mdmsV2Util.searchMdmsData(mdmsCriteriaReq); + List mdmsList = dataSearchResponse.getMdms(); + + // Add the current batch of results to the list + allMdmsResults.addAll(mdmsList); + + // Check if there are fewer results than the limit; if so, this is the last page + if (mdmsList.size() < limit) { + break; + } + + // Update offset for the next batch + offset += limit; + } + return allMdmsResults; + } + public void createTenantConfig(TenantRequest tenantRequest) { TenantConfigResponse tenantConfigSearchResponse = tenantManagementUtil.searchTenantConfig(serviceConfig.getDefaultTenantId(), tenantRequest.getRequestInfo()); List tenantConfigList = tenantConfigSearchResponse.getTenantConfigs(); @@ -101,7 +195,17 @@ public DefaultDataRequest setupDefaultData(DataSetupRequest dataSetupRequest) { Set uniqueIdentifiers = new HashSet<>(); uniqueIdentifiers.add(dataSetupRequest.getModule()); - MdmsResponseV2 mdmsResponseV2 = mdmsV2Util.searchMdmsData(dataSetupRequest.getRequestInfo(), serviceConfig.getDefaultTenantId(), serviceConfig.getModuleMasterConfig(), uniqueIdentifiers); + MdmsCriteriaV2 mdmsCriteriaV2 = MdmsCriteriaV2.builder() + .tenantId(serviceConfig.getDefaultTenantId()) + .schemaCode(serviceConfig.getModuleMasterConfig()) + .uniqueIdentifiers(uniqueIdentifiers) + .build(); + MdmsCriteriaReqV2 mdmsCriteriaReqV2 = MdmsCriteriaReqV2.builder() + .requestInfo(dataSetupRequest.getRequestInfo()) + .mdmsCriteria(mdmsCriteriaV2) + .build(); + + MdmsResponseV2 mdmsResponseV2 = mdmsV2Util.searchMdmsData(mdmsCriteriaReqV2); List mdmsList = mdmsResponseV2.getMdms(); List schemaCodes = new ArrayList<>(); diff --git a/core-services/default-data-handler/src/main/java/org/egov/handler/util/MdmsV2Util.java b/core-services/default-data-handler/src/main/java/org/egov/handler/util/MdmsV2Util.java index b9b7c51c78..76f499f66e 100644 --- a/core-services/default-data-handler/src/main/java/org/egov/handler/util/MdmsV2Util.java +++ b/core-services/default-data-handler/src/main/java/org/egov/handler/util/MdmsV2Util.java @@ -1,20 +1,14 @@ package org.egov.handler.util; import lombok.extern.slf4j.Slf4j; -import org.egov.common.contract.request.RequestInfo; import org.egov.common.contract.response.ResponseInfo; import org.egov.handler.config.ServiceConfiguration; -import org.egov.handler.web.models.DefaultMdmsDataRequest; -import org.egov.handler.web.models.MdmsCriteriaReqV2; -import org.egov.handler.web.models.MdmsCriteriaV2; -import org.egov.handler.web.models.MdmsResponseV2; +import org.egov.handler.web.models.*; import org.egov.tracer.model.CustomException; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import org.springframework.web.client.RestTemplate; -import java.util.Set; - @Slf4j @Component public class MdmsV2Util { @@ -29,7 +23,7 @@ public MdmsV2Util(RestTemplate restTemplate, ServiceConfiguration serviceConfig) this.serviceConfig = serviceConfig; } - public void createMdmsData(DefaultMdmsDataRequest defaultMdmsDataRequest) { + public void createDefaultMdmsData(DefaultMdmsDataRequest defaultMdmsDataRequest) { StringBuilder uri = new StringBuilder(); uri.append(serviceConfig.getMdmsDefaultDataCreateURI()); @@ -41,19 +35,48 @@ public void createMdmsData(DefaultMdmsDataRequest defaultMdmsDataRequest) { } } - public MdmsResponseV2 searchMdmsData(RequestInfo requestInfo, String defaultTenantId, String schemaCode, Set uniqueIdentifiers) { + public SchemaDefinitionResponse createMdmsSchema(SchemaDefinitionRequest schemaDefinitionRequest) { + StringBuilder uri = new StringBuilder(); + uri.append(serviceConfig.getMdmsSchemaCreateURI()); + + try { + return restTemplate.postForObject(uri.toString(), schemaDefinitionRequest, SchemaDefinitionResponse.class); + } catch (Exception e) { + log.error("Error creating MDMS schema for {}", schemaDefinitionRequest.getSchemaDefinition().getTenantId()); + throw new CustomException("MDMS_SCHEMA_CREATE_FAILED", "Failed to create mdms schema for " + schemaDefinitionRequest.getSchemaDefinition().getTenantId()); + } + } + + public SchemaDefinitionResponse searchMdmsSchema(SchemaDefSearchRequest schemaDefSearchRequest) { + StringBuilder uri = new StringBuilder(); + uri.append(serviceConfig.getMdmsSchemaSearchURI()); + + try { + return restTemplate.postForObject(uri.toString(), schemaDefSearchRequest, SchemaDefinitionResponse.class); + } catch (Exception e) { + log.error("Error searching MDMS schema for {}", schemaDefSearchRequest.getSchemaDefCriteria().getTenantId()); + throw new CustomException("MDMS_SCHEMA_SEARCH_FAILED", "Failed to search mdms schema for " + schemaDefSearchRequest.getSchemaDefCriteria().getTenantId()); + } + } + + public MdmsResponseV2 createMdmsData(MdmsRequest mdmsRequest) { + StringBuilder uri = new StringBuilder(); + uri.append(serviceConfig.getMdmsDataCreateURI()); + uri.append("/"); + uri.append(mdmsRequest.getMdms().getSchemaCode()); + + try { + return restTemplate.postForObject(uri.toString(), mdmsRequest, MdmsResponseV2.class); + } catch (Exception e) { + log.error("Error creating MDMS data for {}", mdmsRequest.getMdms().getTenantId()); + throw new CustomException("MDMS_DATA_CREATE_FAILED", "Failed to create mdms schema for " + mdmsRequest.getMdms().getTenantId()); + } + } + + public MdmsResponseV2 searchMdmsData(MdmsCriteriaReqV2 mdmsCriteriaReqV2) { StringBuilder uri = new StringBuilder(); uri.append(serviceConfig.getMdmsDataSearchURI()); - MdmsCriteriaV2 mdmsCriteriaV2 = MdmsCriteriaV2.builder() - .tenantId(defaultTenantId) - .schemaCode(schemaCode) - .uniqueIdentifiers(uniqueIdentifiers) - .build(); - MdmsCriteriaReqV2 mdmsCriteriaReqV2 = MdmsCriteriaReqV2.builder() - .requestInfo(requestInfo) - .mdmsCriteria(mdmsCriteriaV2) - .build(); try { return restTemplate.postForObject(uri.toString(), mdmsCriteriaReqV2, MdmsResponseV2.class); } catch (Exception e) { diff --git a/core-services/default-data-handler/src/main/java/org/egov/handler/web/models/MdmsRequest.java b/core-services/default-data-handler/src/main/java/org/egov/handler/web/models/MdmsRequest.java new file mode 100644 index 0000000000..610dd408a8 --- /dev/null +++ b/core-services/default-data-handler/src/main/java/org/egov/handler/web/models/MdmsRequest.java @@ -0,0 +1,38 @@ +package org.egov.handler.web.models; + +import com.fasterxml.jackson.annotation.JsonProperty; +import jakarta.validation.Valid; +import jakarta.validation.constraints.NotNull; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; +import org.egov.common.contract.request.RequestInfo; +import org.springframework.validation.annotation.Validated; + +/** + * MdmsRequest + */ +@Validated +@jakarta.annotation.Generated(value = "org.egov.codegen.SpringBootCodegen", date = "2023-05-30T09:26:57.838+05:30[Asia/Kolkata]") +@Data +@AllArgsConstructor +@NoArgsConstructor +@Builder +public class MdmsRequest { + @JsonProperty("RequestInfo") + @Valid + private RequestInfo requestInfo = null; + + @JsonProperty("Mdms") + @Valid + @NotNull + private Mdms mdms = null; + + /*@JsonProperty("Workflow") + + @Valid + private Workflow workflow = null;*/ + + +} diff --git a/core-services/default-data-handler/src/main/java/org/egov/handler/web/models/SchemaDefCriteria.java b/core-services/default-data-handler/src/main/java/org/egov/handler/web/models/SchemaDefCriteria.java new file mode 100644 index 0000000000..13a8b448a4 --- /dev/null +++ b/core-services/default-data-handler/src/main/java/org/egov/handler/web/models/SchemaDefCriteria.java @@ -0,0 +1,50 @@ +package org.egov.handler.web.models; + +import com.fasterxml.jackson.annotation.JsonProperty; +import jakarta.validation.constraints.NotNull; +import jakarta.validation.constraints.Size; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; +import org.springframework.validation.annotation.Validated; + +import java.util.ArrayList; +import java.util.List; + +/** + * SchemaDefCriteria + */ +@Validated +@jakarta.annotation.Generated(value = "org.egov.codegen.SpringBootCodegen", date = "2023-05-30T09:26:57.838+05:30[Asia/Kolkata]") +@Data +@AllArgsConstructor +@NoArgsConstructor +@Builder +public class SchemaDefCriteria { + + @JsonProperty("tenantId") + @Size(min = 1, max = 100) + @NotNull + private String tenantId = null; + + @JsonProperty("codes") + private List codes = null; + + @JsonProperty("offset") + private Integer offset; + + @JsonProperty("limit") + private Integer limit; + + + public SchemaDefCriteria addCodesItem(String codesItem) { + if (this.codes == null) { + this.codes = new ArrayList<>(); + } + this.codes.add(codesItem); + return this; + } + +} + diff --git a/core-services/default-data-handler/src/main/java/org/egov/handler/web/models/SchemaDefSearchRequest.java b/core-services/default-data-handler/src/main/java/org/egov/handler/web/models/SchemaDefSearchRequest.java new file mode 100644 index 0000000000..d73b43da21 --- /dev/null +++ b/core-services/default-data-handler/src/main/java/org/egov/handler/web/models/SchemaDefSearchRequest.java @@ -0,0 +1,32 @@ +package org.egov.handler.web.models; + +import com.fasterxml.jackson.annotation.JsonProperty; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.Valid; +import jakarta.validation.constraints.NotNull; +import lombok.*; +import org.egov.common.contract.request.RequestInfo; +import org.springframework.validation.annotation.Validated; + +/** + * Bind the request meta data(RequestInfo) and Schema defination + */ +@Schema(description = "Bind the request meta data(RequestInfo) and Schema defination") +@Validated +@jakarta.annotation.Generated(value = "org.egov.codegen.SpringBootCodegen", date = "2023-05-30T09:26:57.838+05:30[Asia/Kolkata]") +@Data +@AllArgsConstructor +@NoArgsConstructor +@Builder +@ToString +public class SchemaDefSearchRequest { + @JsonProperty("RequestInfo") + @NotNull + @Valid + private RequestInfo requestInfo = null; + + @JsonProperty("SchemaDefCriteria") + @NotNull + @Valid + private SchemaDefCriteria schemaDefCriteria = null; +} diff --git a/core-services/default-data-handler/src/main/java/org/egov/handler/web/models/SchemaDefinition.java b/core-services/default-data-handler/src/main/java/org/egov/handler/web/models/SchemaDefinition.java new file mode 100644 index 0000000000..1d7c33fb6b --- /dev/null +++ b/core-services/default-data-handler/src/main/java/org/egov/handler/web/models/SchemaDefinition.java @@ -0,0 +1,60 @@ +package org.egov.handler.web.models; + +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.databind.JsonNode; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.Valid; +import jakarta.validation.constraints.NotNull; +import jakarta.validation.constraints.Size; +import lombok.*; +import org.egov.common.contract.models.AuditDetails; +import org.springframework.validation.annotation.Validated; + +import java.io.Serializable; + +/** + * Bind the request meta data(RequestInfo) and Schema defination + */ +@Schema(description = "Bind the request meta data(RequestInfo) and Schema defination") +@Validated +@jakarta.annotation.Generated(value = "org.egov.codegen.SpringBootCodegen", date = "2023-05-30T09:26:57.838+05:30[Asia/Kolkata]") +@Data +@AllArgsConstructor +@NoArgsConstructor +@Builder +@ToString +public class SchemaDefinition implements Serializable { + + @JsonProperty("id") + @Size(min = 2, max = 128) + private String id = null; + + @JsonProperty("tenantId") + @NotNull + @Size(min = 2, max = 128) + private String tenantId = null; + + @JsonProperty("code") + @NotNull + @Size(min = 2, max = 128) + private String code = null; + + @JsonProperty("description") + + @Size(min = 2, max = 512) + private String description = null; + + @JsonProperty("definition") + @NotNull + private JsonNode definition = null; + + @JsonProperty("isActive") + private Boolean isActive = true; + + @JsonProperty("auditDetails") + @Valid + private AuditDetails auditDetails = null; + +} + + diff --git a/core-services/default-data-handler/src/main/java/org/egov/handler/web/models/SchemaDefinitionRequest.java b/core-services/default-data-handler/src/main/java/org/egov/handler/web/models/SchemaDefinitionRequest.java new file mode 100644 index 0000000000..5ddfbb20ae --- /dev/null +++ b/core-services/default-data-handler/src/main/java/org/egov/handler/web/models/SchemaDefinitionRequest.java @@ -0,0 +1,36 @@ +package org.egov.handler.web.models; + +import com.fasterxml.jackson.annotation.JsonProperty; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.Valid; +import jakarta.validation.constraints.NotNull; +import lombok.*; +import org.egov.common.contract.request.RequestInfo; +import org.springframework.validation.annotation.Validated; + +/** + * Bind the request meta data(RequestInfo) and Schema defination + */ +@Schema(description = "Bind the request meta data(RequestInfo) and Schema defination") +@Validated +@jakarta.annotation.Generated(value = "org.egov.codegen.SpringBootCodegen", date = "2023-05-30T09:26:57.838+05:30[Asia/Kolkata]") +@Data +@AllArgsConstructor +@NoArgsConstructor +@Builder +@ToString +public class SchemaDefinitionRequest { + @JsonProperty("RequestInfo") + @NotNull + @Valid + private RequestInfo requestInfo = null; + + @JsonProperty("SchemaDefinition") + @NotNull + @Valid + private SchemaDefinition schemaDefinition = null; + + +} + + diff --git a/core-services/default-data-handler/src/main/java/org/egov/handler/web/models/SchemaDefinitionResponse.java b/core-services/default-data-handler/src/main/java/org/egov/handler/web/models/SchemaDefinitionResponse.java new file mode 100644 index 0000000000..9748a7fda8 --- /dev/null +++ b/core-services/default-data-handler/src/main/java/org/egov/handler/web/models/SchemaDefinitionResponse.java @@ -0,0 +1,47 @@ +package org.egov.handler.web.models; + +import com.fasterxml.jackson.annotation.JsonProperty; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.Valid; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; +import org.egov.common.contract.response.ResponseInfo; +import org.springframework.validation.annotation.Validated; + +import java.util.ArrayList; +import java.util.List; + +/** + * Response from server + */ +@Schema(description = "Response from server") +@Validated +@jakarta.annotation.Generated(value = "org.egov.codegen.SpringBootCodegen", date = "2023-05-30T09:26:57.838+05:30[Asia/Kolkata]") +@Data +@AllArgsConstructor +@NoArgsConstructor +@Builder +public class SchemaDefinitionResponse { + @JsonProperty("ResponseInfo") + + @Valid + private ResponseInfo responseInfo = null; + + @JsonProperty("SchemaDefinitions") + @Valid + private List schemaDefinitions = null; + + + public SchemaDefinitionResponse addSchemaDefinitionsItem(SchemaDefinition schemaDefinitionsItem) { + if (this.schemaDefinitions == null) { + this.schemaDefinitions = new ArrayList<>(); + } + this.schemaDefinitions.add(schemaDefinitionsItem); + return this; + } + +} + + diff --git a/core-services/default-data-handler/src/main/resources/application.properties b/core-services/default-data-handler/src/main/resources/application.properties index 489a4495bf..dec5c34de7 100644 --- a/core-services/default-data-handler/src/main/resources/application.properties +++ b/core-services/default-data-handler/src/main/resources/application.properties @@ -42,6 +42,9 @@ logging.level.org.springframework=DEBUG #mdms urls egov.mdms.host=http://localhost:8081 egov.mdms.default.data.create.endpoint=/mdms-v2/defaultdata/_create +egov.mdms.schema.create.endpoint=/mdms-v2/schema/v1/_create +egov.mdms.schema.search.endpoint=/mdms-v2/schema/v1/_search +egov.mdms.data.create.endpoint=/mdms-v2/v2/_create egov.mdms.data.search.endpoint=/mdms-v2/v2/_search default.mdms.schema.create.list=ACCESSCONTROL-ACTIONS-TEST.actions-test,ACCESSCONTROL-ROLES.roles,ACCESSCONTROL-ROLEACTIONS.roleactions,DataSecurity.DecryptionABAC,DataSecurity.EncryptionPolicy,DataSecurity.MaskingPatterns,DataSecurity.SecurityPolicy,sandbox-ui.ModuleMasterConfig,common-masters.uiHomePage,tenant.citymodule,DIGIT-UI.ApiCachingSettings,tenant.tenants,egov-location.TenantBoundary From 8f133f119025ca6f7d32e2ea37762ee3c06b0614 Mon Sep 17 00:00:00 2001 From: varunreddy-egov Date: Thu, 5 Sep 2024 19:34:43 +0530 Subject: [PATCH 02/14] Enhanced error handling --- .../egov/handler/util/LocalizationUtil.java | 8 ++++---- .../org/egov/handler/util/MdmsV2Util.java | 20 +++++++++---------- .../org/egov/handler/util/WorkflowUtil.java | 4 ++-- 3 files changed, 16 insertions(+), 16 deletions(-) diff --git a/core-services/default-data-handler/src/main/java/org/egov/handler/util/LocalizationUtil.java b/core-services/default-data-handler/src/main/java/org/egov/handler/util/LocalizationUtil.java index f8a4da4b2c..cb8166bd0a 100644 --- a/core-services/default-data-handler/src/main/java/org/egov/handler/util/LocalizationUtil.java +++ b/core-services/default-data-handler/src/main/java/org/egov/handler/util/LocalizationUtil.java @@ -4,6 +4,7 @@ import org.egov.common.contract.response.ResponseInfo; import org.egov.handler.config.ServiceConfiguration; import org.egov.handler.web.models.DefaultLocalizationDataRequest; +import org.egov.tracer.model.CustomException; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import org.springframework.web.client.RestTemplate; @@ -27,11 +28,10 @@ public void createLocalizationData(DefaultLocalizationDataRequest defaultLocaliz StringBuilder uri = new StringBuilder(); uri.append(serviceConfig.getLocalizationDefaultDataCreateURI()); try { - ResponseInfo responseInfo = restTemplate.postForObject(uri.toString(), defaultLocalizationDataRequest, ResponseInfo.class); - + restTemplate.postForObject(uri.toString(), defaultLocalizationDataRequest, ResponseInfo.class); } catch (Exception e) { - log.error("Error creating default localization data for {}", defaultLocalizationDataRequest.getTargetTenantId()); + log.error("Error creating default localization data for {} : {}", defaultLocalizationDataRequest.getTargetTenantId(), e.getMessage()); + throw new CustomException("LOCALIZATION_DEFAULT_DATA_CREATE_FAILED", "Failed to create localization data for " + defaultLocalizationDataRequest.getTargetTenantId() + " : " + e.getMessage()); } - } } diff --git a/core-services/default-data-handler/src/main/java/org/egov/handler/util/MdmsV2Util.java b/core-services/default-data-handler/src/main/java/org/egov/handler/util/MdmsV2Util.java index 76f499f66e..728cecf738 100644 --- a/core-services/default-data-handler/src/main/java/org/egov/handler/util/MdmsV2Util.java +++ b/core-services/default-data-handler/src/main/java/org/egov/handler/util/MdmsV2Util.java @@ -30,8 +30,8 @@ public void createDefaultMdmsData(DefaultMdmsDataRequest defaultMdmsDataRequest) try { restTemplate.postForObject(uri.toString(), defaultMdmsDataRequest, ResponseInfo.class); } catch (Exception e) { - log.error("Error creating default MDMS data for {}", defaultMdmsDataRequest.getTargetTenantId()); - throw new CustomException("MDMS_DATA_CREATE_FAILED", "Failed to create mdms data for " + defaultMdmsDataRequest.getTargetTenantId()); + log.error("Error creating default MDMS data for {} : {}", defaultMdmsDataRequest.getTargetTenantId(), e.getMessage()); + throw new CustomException("MDMS_DEFAULT_DATA_CREATE_FAILED", "Failed to create default mdms data for " + defaultMdmsDataRequest.getTargetTenantId() + " : " + e.getMessage()); } } @@ -42,8 +42,8 @@ public SchemaDefinitionResponse createMdmsSchema(SchemaDefinitionRequest schemaD try { return restTemplate.postForObject(uri.toString(), schemaDefinitionRequest, SchemaDefinitionResponse.class); } catch (Exception e) { - log.error("Error creating MDMS schema for {}", schemaDefinitionRequest.getSchemaDefinition().getTenantId()); - throw new CustomException("MDMS_SCHEMA_CREATE_FAILED", "Failed to create mdms schema for " + schemaDefinitionRequest.getSchemaDefinition().getTenantId()); + log.error("Error creating MDMS schema for {} : {}", schemaDefinitionRequest.getSchemaDefinition().getTenantId(), e.getMessage()); + throw new CustomException("MDMS_SCHEMA_CREATE_FAILED", "Failed to create mdms schema for " + schemaDefinitionRequest.getSchemaDefinition().getTenantId() + " : " + e.getMessage()); } } @@ -54,8 +54,8 @@ public SchemaDefinitionResponse searchMdmsSchema(SchemaDefSearchRequest schemaDe try { return restTemplate.postForObject(uri.toString(), schemaDefSearchRequest, SchemaDefinitionResponse.class); } catch (Exception e) { - log.error("Error searching MDMS schema for {}", schemaDefSearchRequest.getSchemaDefCriteria().getTenantId()); - throw new CustomException("MDMS_SCHEMA_SEARCH_FAILED", "Failed to search mdms schema for " + schemaDefSearchRequest.getSchemaDefCriteria().getTenantId()); + log.error("Error searching MDMS schema for {} : {}", schemaDefSearchRequest.getSchemaDefCriteria().getTenantId(), e.getMessage()); + throw new CustomException("MDMS_SCHEMA_SEARCH_FAILED", "Failed to search mdms schema for " + schemaDefSearchRequest.getSchemaDefCriteria().getTenantId() + " : " + e.getMessage()); } } @@ -68,8 +68,8 @@ public MdmsResponseV2 createMdmsData(MdmsRequest mdmsRequest) { try { return restTemplate.postForObject(uri.toString(), mdmsRequest, MdmsResponseV2.class); } catch (Exception e) { - log.error("Error creating MDMS data for {}", mdmsRequest.getMdms().getTenantId()); - throw new CustomException("MDMS_DATA_CREATE_FAILED", "Failed to create mdms schema for " + mdmsRequest.getMdms().getTenantId()); + log.error("Error creating MDMS data for {} : {}", mdmsRequest.getMdms().getTenantId(), e.getMessage()); + throw new CustomException("MDMS_DATA_CREATE_FAILED", "Failed to create mdms schema for " + mdmsRequest.getMdms().getTenantId() + " : " + e.getMessage()); } } @@ -80,8 +80,8 @@ public MdmsResponseV2 searchMdmsData(MdmsCriteriaReqV2 mdmsCriteriaReqV2) { try { return restTemplate.postForObject(uri.toString(), mdmsCriteriaReqV2, MdmsResponseV2.class); } catch (Exception e) { - log.error("Error searching MDMS data for {}", mdmsCriteriaReqV2.getMdmsCriteria().getTenantId()); - throw new CustomException("MDMS_DATA_SEARCH_FAILED", "Failed to search mdms data for " + mdmsCriteriaReqV2.getMdmsCriteria().getTenantId()); + log.error("Error searching MDMS data for {} : {}", mdmsCriteriaReqV2.getMdmsCriteria().getTenantId(), e.getMessage()); + throw new CustomException("MDMS_DATA_SEARCH_FAILED", "Failed to search mdms data for " + mdmsCriteriaReqV2.getMdmsCriteria().getTenantId() + " : " + e.getMessage()); } } } diff --git a/core-services/default-data-handler/src/main/java/org/egov/handler/util/WorkflowUtil.java b/core-services/default-data-handler/src/main/java/org/egov/handler/util/WorkflowUtil.java index 75be19eaaf..2e06bd7ee3 100644 --- a/core-services/default-data-handler/src/main/java/org/egov/handler/util/WorkflowUtil.java +++ b/core-services/default-data-handler/src/main/java/org/egov/handler/util/WorkflowUtil.java @@ -31,8 +31,8 @@ public void createWfConfig(BusinessServiceRequest businessServiceRequest) { try { restTemplate.postForObject(uri.toString(), businessServiceRequest, Map.class); } catch (Exception e) { - log.error("Error creating workflow configuration"); - throw new CustomException("WF_CONFIG_CREATE_FAILED", "Failed to create workflow configuration"); + log.error("Error creating workflow configuration: {}", e.getMessage()); + throw new CustomException("WF_CONFIG_CREATE_FAILED", "Failed to create workflow configuration: " + e.getMessage()); } } } From 17161e9b6765d7b49056b4d73e0a0a962050a81d Mon Sep 17 00:00:00 2001 From: varunreddy-egov Date: Fri, 6 Sep 2024 12:44:41 +0530 Subject: [PATCH 03/14] Added uuid in userInfo --- .../main/java/org/egov/handler/kafka/TenantConsumer.java | 7 +++++++ .../src/main/resources/application.properties | 4 ++-- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/core-services/default-data-handler/src/main/java/org/egov/handler/kafka/TenantConsumer.java b/core-services/default-data-handler/src/main/java/org/egov/handler/kafka/TenantConsumer.java index e05fec2735..1bca28d518 100644 --- a/core-services/default-data-handler/src/main/java/org/egov/handler/kafka/TenantConsumer.java +++ b/core-services/default-data-handler/src/main/java/org/egov/handler/kafka/TenantConsumer.java @@ -3,6 +3,7 @@ import com.fasterxml.jackson.databind.ObjectMapper; import lombok.extern.slf4j.Slf4j; +import org.egov.common.contract.request.User; import org.egov.handler.config.ServiceConfiguration; import org.egov.handler.service.DataHandlerService; import org.egov.handler.util.OtpUtil; @@ -49,6 +50,12 @@ public void listen(final HashMap record, @Header(KafkaHeaders.RE if (Objects.isNull(tenantRequest.getTenant().getParentId())) { log.info("Configuring Tenant: {}", tenantRequest.getTenant().getCode()); + // Setting userInfo with UUID + User userInfo = User.builder() + .uuid("40dceade-992d-4a8f-8243-19dda76a4171") + .build(); + tenantRequest.getRequestInfo().setUserInfo(userInfo); + DefaultDataRequest defaultDataRequest = DefaultDataRequest.builder() .requestInfo(tenantRequest.getRequestInfo()) .targetTenantId(tenantRequest.getTenant().getCode()) diff --git a/core-services/default-data-handler/src/main/resources/application.properties b/core-services/default-data-handler/src/main/resources/application.properties index dec5c34de7..b61e7c3be0 100644 --- a/core-services/default-data-handler/src/main/resources/application.properties +++ b/core-services/default-data-handler/src/main/resources/application.properties @@ -47,14 +47,14 @@ egov.mdms.schema.search.endpoint=/mdms-v2/schema/v1/_search egov.mdms.data.create.endpoint=/mdms-v2/v2/_create egov.mdms.data.search.endpoint=/mdms-v2/v2/_search -default.mdms.schema.create.list=ACCESSCONTROL-ACTIONS-TEST.actions-test,ACCESSCONTROL-ROLES.roles,ACCESSCONTROL-ROLEACTIONS.roleactions,DataSecurity.DecryptionABAC,DataSecurity.EncryptionPolicy,DataSecurity.MaskingPatterns,DataSecurity.SecurityPolicy,sandbox-ui.ModuleMasterConfig,common-masters.uiHomePage,tenant.citymodule,DIGIT-UI.ApiCachingSettings,tenant.tenants,egov-location.TenantBoundary +default.mdms.schema.create.list="egov-hrms.Degree,egov-hrms.DeactivationReason,egov-hrms.EmployeeStatus,egov-hrms.EmployeeType,egov-hrms.EmploymentTest,egov-hrms.Specalization,sandbox-ui.ModuleMasterConfig,common-masters.uiHomePage,tenant.citymodule,DIGIT-UI.ApiCachingSettings,tenant.tenants,egov-location.TenantBoundary,common-masters.GenderType,ACCESSCONTROL-ACTIONS-TEST.actions-test,ACCESSCONTROL-ROLES.roles,ACCESSCONTROL-ROLEACTIONS.roleactions,DataSecurity.DecryptionABAC,DataSecurity.EncryptionPolicy,DataSecurity.MaskingPatterns,DataSecurity.SecurityPolicy" #localization urls egov.localization.host=http://localhost:8087 egov.localization.default.data.create.endpoint=/localization/defaultdata/_create default.localization.locale=en_IN -default.localization.module.create.list=digit-ui,digit-sandbox,rainmaker-common,digit-privacy-policy,rainmaker-pgr,rainmaker-hr +default.localization.module.create.list=digit-ui,digit-sandbox,rainmaker-common,digit-privacy-policy,rainmaker-pgr,rainmaker-hr,rainmaker-workbench,rainmaker-mdms,rainmaker-schema #User config egov.user.host=http://localhost:8083 From 35f55bc7bdeb0b3147c377aeceef587ce9f60858 Mon Sep 17 00:00:00 2001 From: varunreddy-egov Date: Fri, 6 Sep 2024 13:16:48 +0530 Subject: [PATCH 04/14] Modified service layer --- .../main/java/org/egov/handler/service/DataHandlerService.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core-services/default-data-handler/src/main/java/org/egov/handler/service/DataHandlerService.java b/core-services/default-data-handler/src/main/java/org/egov/handler/service/DataHandlerService.java index bb043c9dd3..e2a8592adc 100644 --- a/core-services/default-data-handler/src/main/java/org/egov/handler/service/DataHandlerService.java +++ b/core-services/default-data-handler/src/main/java/org/egov/handler/service/DataHandlerService.java @@ -62,7 +62,7 @@ public void createDefaultData(DefaultDataRequest defaultDataRequest) { if (defaultDataRequest.getSchemaCodes() != null) { if (defaultDataRequest.getSchemaCodes().contains(TENANT_BOUNDARY_SCHEMA)) { createTenantBoundarydata(defaultDataRequest.getRequestInfo(), defaultDataRequest.getTargetTenantId()); - defaultDataRequest.getSchemaCodes().remove(TENANT_BOUNDARY_SCHEMA); +// defaultDataRequest.getSchemaCodes().remove(TENANT_BOUNDARY_SCHEMA); } DefaultMdmsDataRequest defaultMdmsDataRequest = DefaultMdmsDataRequest.builder() .requestInfo(defaultDataRequest.getRequestInfo()) From 1429e9284645b143ad7d1accb03944e3899e4653 Mon Sep 17 00:00:00 2001 From: Rishabh-egov Date: Fri, 6 Sep 2024 17:49:19 +0530 Subject: [PATCH 05/14] Added functionality to dynamically add tenant code --- .../handler/config/ServiceConfiguration.java | 3 + .../egov/handler/kafka/TenantConsumer.java | 93 +++++++++++-------- .../egov/handler/util/LocalizationUtil.java | 72 +++++++++++--- .../web/models/CreateMessagesRequest.java | 35 +++++++ .../org/egov/handler/web/models/Message.java | 27 ++++++ .../src/main/resources/application.properties | 1 + 6 files changed, 180 insertions(+), 51 deletions(-) create mode 100644 core-services/default-data-handler/src/main/java/org/egov/handler/web/models/CreateMessagesRequest.java create mode 100644 core-services/default-data-handler/src/main/java/org/egov/handler/web/models/Message.java diff --git a/core-services/default-data-handler/src/main/java/org/egov/handler/config/ServiceConfiguration.java b/core-services/default-data-handler/src/main/java/org/egov/handler/config/ServiceConfiguration.java index 45cce8dccf..d94b1768ff 100644 --- a/core-services/default-data-handler/src/main/java/org/egov/handler/config/ServiceConfiguration.java +++ b/core-services/default-data-handler/src/main/java/org/egov/handler/config/ServiceConfiguration.java @@ -40,6 +40,9 @@ public class ServiceConfiguration { @Value("${egov.localization.host}${egov.localization.default.data.create.endpoint}") private String localizationDefaultDataCreateURI; + @Value("${egov.localization.host}${egov.localization.upsert.path}") + private String upsertLocalizationURI; + @Value("${default.localization.locale}") private String defaultLocalizationLocale; diff --git a/core-services/default-data-handler/src/main/java/org/egov/handler/kafka/TenantConsumer.java b/core-services/default-data-handler/src/main/java/org/egov/handler/kafka/TenantConsumer.java index 1bca28d518..74bbcb733b 100644 --- a/core-services/default-data-handler/src/main/java/org/egov/handler/kafka/TenantConsumer.java +++ b/core-services/default-data-handler/src/main/java/org/egov/handler/kafka/TenantConsumer.java @@ -6,16 +6,20 @@ import org.egov.common.contract.request.User; import org.egov.handler.config.ServiceConfiguration; import org.egov.handler.service.DataHandlerService; +import org.egov.handler.util.LocalizationUtil; import org.egov.handler.util.OtpUtil; import org.egov.handler.util.UserUtil; import org.egov.handler.web.models.DefaultDataRequest; +import org.egov.handler.web.models.DefaultLocalizationDataRequest; import org.egov.handler.web.models.TenantRequest; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.cglib.core.Local; import org.springframework.kafka.annotation.KafkaListener; import org.springframework.kafka.support.KafkaHeaders; import org.springframework.messaging.handler.annotation.Header; import org.springframework.stereotype.Component; +import java.util.Collections; import java.util.HashMap; import java.util.Objects; @@ -23,53 +27,66 @@ @Component public class TenantConsumer { - private final ObjectMapper mapper; + private final ObjectMapper mapper; - private final DataHandlerService dataHandlerService; + private final DataHandlerService dataHandlerService; - private final UserUtil userUtil; + private final UserUtil userUtil; - private final OtpUtil otpUtil; + private final OtpUtil otpUtil; - private final ServiceConfiguration serviceConfig; + private final ServiceConfiguration serviceConfig; - @Autowired - public TenantConsumer(ObjectMapper mapper, DataHandlerService dataHandlerService, UserUtil userUtil, OtpUtil otpUtil, ServiceConfiguration serviceConfig) { - this.mapper = mapper; - this.dataHandlerService = dataHandlerService; - this.userUtil = userUtil; - this.otpUtil = otpUtil; - this.serviceConfig = serviceConfig; - } + private LocalizationUtil localizationUtil; - @KafkaListener(topics = {"${kafka.topics.create.tenant}"}) - public void listen(final HashMap record, @Header(KafkaHeaders.RECEIVED_TOPIC) String topic) { - TenantRequest tenantRequest = mapper.convertValue(record, TenantRequest.class); + @Autowired + public TenantConsumer(ObjectMapper mapper, DataHandlerService dataHandlerService, UserUtil userUtil, OtpUtil otpUtil, ServiceConfiguration serviceConfig, LocalizationUtil localizationUtil) { + this.mapper = mapper; + this.dataHandlerService = dataHandlerService; + this.userUtil = userUtil; + this.otpUtil = otpUtil; + this.serviceConfig = serviceConfig; + this.localizationUtil = localizationUtil; + } - // create user only for root tenant - if (Objects.isNull(tenantRequest.getTenant().getParentId())) { - log.info("Configuring Tenant: {}", tenantRequest.getTenant().getCode()); + @KafkaListener(topics = {"${kafka.topics.create.tenant}"}) + public void listen(final HashMap record, @Header(KafkaHeaders.RECEIVED_TOPIC) String topic) { + TenantRequest tenantRequest = mapper.convertValue(record, TenantRequest.class); - // Setting userInfo with UUID - User userInfo = User.builder() - .uuid("40dceade-992d-4a8f-8243-19dda76a4171") - .build(); - tenantRequest.getRequestInfo().setUserInfo(userInfo); + // Setting userInfo with UUID + User userInfo = User.builder() + .uuid("40dceade-992d-4a8f-8243-19dda76a4171") + .build(); + tenantRequest.getRequestInfo().setUserInfo(userInfo); - DefaultDataRequest defaultDataRequest = DefaultDataRequest.builder() - .requestInfo(tenantRequest.getRequestInfo()) - .targetTenantId(tenantRequest.getTenant().getCode()) - .schemaCodes(serviceConfig.getDefaultMdmsSchemaList()) - .onlySchemas(Boolean.FALSE) - .locale(serviceConfig.getDefaultLocalizationLocale()) - .modules(serviceConfig.getDefaultLocalizationModuleList()) - .build(); - dataHandlerService.createDefaultData(defaultDataRequest); - dataHandlerService.createTenantConfig(tenantRequest); + DefaultLocalizationDataRequest defaultLocalizationDataRequest = DefaultLocalizationDataRequest.builder() + .requestInfo(tenantRequest.getRequestInfo()) + .targetTenantId(tenantRequest.getTenant().getCode()) + .locale(serviceConfig.getDefaultLocalizationLocale()) + .modules(Collections.singletonList("rainmaker-common")) + .build(); - userUtil.createUser(tenantRequest); - otpUtil.sendOtp(tenantRequest); - } - } + localizationUtil.upsertLocalization(defaultLocalizationDataRequest, tenantRequest); + + // create user only for root tenant + if (Objects.isNull(tenantRequest.getTenant().getParentId())) { + log.info("Configuring Tenant: {}", tenantRequest.getTenant().getCode()); + + DefaultDataRequest defaultDataRequest = DefaultDataRequest.builder() + .requestInfo(tenantRequest.getRequestInfo()) + .targetTenantId(tenantRequest.getTenant().getCode()) + .schemaCodes(serviceConfig.getDefaultMdmsSchemaList()) + .onlySchemas(Boolean.FALSE) + .locale(serviceConfig.getDefaultLocalizationLocale()) + .modules(serviceConfig.getDefaultLocalizationModuleList()) + .build(); + + dataHandlerService.createDefaultData(defaultDataRequest); + dataHandlerService.createTenantConfig(tenantRequest); + + userUtil.createUser(tenantRequest); + otpUtil.sendOtp(tenantRequest); + } + } } diff --git a/core-services/default-data-handler/src/main/java/org/egov/handler/util/LocalizationUtil.java b/core-services/default-data-handler/src/main/java/org/egov/handler/util/LocalizationUtil.java index cb8166bd0a..79ac4d621e 100644 --- a/core-services/default-data-handler/src/main/java/org/egov/handler/util/LocalizationUtil.java +++ b/core-services/default-data-handler/src/main/java/org/egov/handler/util/LocalizationUtil.java @@ -3,35 +3,81 @@ import lombok.extern.slf4j.Slf4j; import org.egov.common.contract.response.ResponseInfo; import org.egov.handler.config.ServiceConfiguration; -import org.egov.handler.web.models.DefaultLocalizationDataRequest; +import org.egov.handler.web.models.*; import org.egov.tracer.model.CustomException; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; +import org.springframework.util.CollectionUtils; import org.springframework.web.client.RestTemplate; +import java.util.Collection; +import java.util.Collections; +import java.util.List; + @Slf4j @Component public class LocalizationUtil { - private final RestTemplate restTemplate; + private final RestTemplate restTemplate; - private final ServiceConfiguration serviceConfig; + private final ServiceConfiguration serviceConfig; - @Autowired - public LocalizationUtil(RestTemplate restTemplate, ServiceConfiguration serviceConfig) { - this.restTemplate = restTemplate; - this.serviceConfig = serviceConfig; - } + @Autowired + public LocalizationUtil(RestTemplate restTemplate, ServiceConfiguration serviceConfig) { + this.restTemplate = restTemplate; + this.serviceConfig = serviceConfig; + } + + public void createLocalizationData(DefaultLocalizationDataRequest defaultLocalizationDataRequest) { + + StringBuilder uri = new StringBuilder(); + uri.append(serviceConfig.getLocalizationDefaultDataCreateURI()); + try { + restTemplate.postForObject(uri.toString(), defaultLocalizationDataRequest, ResponseInfo.class); + } catch (Exception e) { + log.error("Error creating default localization data for {} : {}", defaultLocalizationDataRequest.getTargetTenantId(), e.getMessage()); + throw new CustomException("LOCALIZATION_DEFAULT_DATA_CREATE_FAILED", "Failed to create localization data for " + defaultLocalizationDataRequest.getTargetTenantId() + " : " + e.getMessage()); + } + } + + public void upsertLocalization(DefaultLocalizationDataRequest defaultLocalizationDataRequest, TenantRequest tenantRequest) { - public void createLocalizationData(DefaultLocalizationDataRequest defaultLocalizationDataRequest) { + List messageList = generateDynamicMessage(tenantRequest); + defaultLocalizationDataRequest.getRequestInfo().getUserInfo().setId(128L); + CreateMessagesRequest createMessagesRequest = CreateMessagesRequest.builder() + .requestInfo(defaultLocalizationDataRequest.getRequestInfo()) + .tenantId(defaultLocalizationDataRequest.getTargetTenantId()) + .messages(messageList) + .build(); StringBuilder uri = new StringBuilder(); - uri.append(serviceConfig.getLocalizationDefaultDataCreateURI()); + uri.append(serviceConfig.getUpsertLocalizationURI()); try { - restTemplate.postForObject(uri.toString(), defaultLocalizationDataRequest, ResponseInfo.class); + restTemplate.postForObject(uri.toString(), createMessagesRequest, ResponseInfo.class); } catch (Exception e) { - log.error("Error creating default localization data for {} : {}", defaultLocalizationDataRequest.getTargetTenantId(), e.getMessage()); - throw new CustomException("LOCALIZATION_DEFAULT_DATA_CREATE_FAILED", "Failed to create localization data for " + defaultLocalizationDataRequest.getTargetTenantId() + " : " + e.getMessage()); + log.error("Error creating Tenant localization data for {} : {}", defaultLocalizationDataRequest.getTargetTenantId(), e.getMessage()); + throw new CustomException("TENANT", "Failed to create localization data for " + defaultLocalizationDataRequest.getTargetTenantId() + " : " + e.getMessage()); } + } + + public List generateDynamicMessage(TenantRequest tenantRequest){ + + Tenant tenant = tenantRequest.getTenant(); + + String tenantCode = tenant != null && tenant.getCode() != null + ? tenant.getCode().toUpperCase().replace(".", "_") + : null; + + String ulbKey = tenantCode != null + ? "TENANT_TENANTS_" + tenantCode + : null; + + Message message = Message.builder() + .code(ulbKey) + .module("rainmaker-common") + .message(tenant.getName()) + .locale("en_IN") + .build(); + return Collections.singletonList(message); } } diff --git a/core-services/default-data-handler/src/main/java/org/egov/handler/web/models/CreateMessagesRequest.java b/core-services/default-data-handler/src/main/java/org/egov/handler/web/models/CreateMessagesRequest.java new file mode 100644 index 0000000000..866916c274 --- /dev/null +++ b/core-services/default-data-handler/src/main/java/org/egov/handler/web/models/CreateMessagesRequest.java @@ -0,0 +1,35 @@ +package org.egov.handler.web.models; + +import com.fasterxml.jackson.annotation.JsonProperty; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Getter; +import lombok.NoArgsConstructor; +import org.egov.common.contract.request.RequestInfo; + +import javax.validation.Valid; +import javax.validation.constraints.NotNull; +import javax.validation.constraints.Size; +import java.util.List; + + +@Getter +@Builder +@AllArgsConstructor +@NoArgsConstructor +public class CreateMessagesRequest { + + @JsonProperty("RequestInfo") + private RequestInfo requestInfo; + + @NotNull + @Size(max = 256) + @JsonProperty("tenantId") + private String tenantId; + + @Size(min = 1) + @Valid + @JsonProperty("messages") + private List messages; + +} \ No newline at end of file diff --git a/core-services/default-data-handler/src/main/java/org/egov/handler/web/models/Message.java b/core-services/default-data-handler/src/main/java/org/egov/handler/web/models/Message.java new file mode 100644 index 0000000000..7aebd16ad8 --- /dev/null +++ b/core-services/default-data-handler/src/main/java/org/egov/handler/web/models/Message.java @@ -0,0 +1,27 @@ +package org.egov.handler.web.models; + +import com.fasterxml.jackson.annotation.JsonProperty; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Getter; +import lombok.NoArgsConstructor; + + +@Builder +@Getter +@AllArgsConstructor +@NoArgsConstructor +public class Message { + + @JsonProperty("code") + private String code; + + @JsonProperty("message") + private String message; + + @JsonProperty("module") + private String module; + + @JsonProperty("locale") + private String locale; +} \ No newline at end of file diff --git a/core-services/default-data-handler/src/main/resources/application.properties b/core-services/default-data-handler/src/main/resources/application.properties index b61e7c3be0..0d752b929f 100644 --- a/core-services/default-data-handler/src/main/resources/application.properties +++ b/core-services/default-data-handler/src/main/resources/application.properties @@ -52,6 +52,7 @@ default.mdms.schema.create.list="egov-hrms.Degree,egov-hrms.DeactivationReason,e #localization urls egov.localization.host=http://localhost:8087 egov.localization.default.data.create.endpoint=/localization/defaultdata/_create +egov.localization.upsert.path=/localization/messages/v1/_upsert default.localization.locale=en_IN default.localization.module.create.list=digit-ui,digit-sandbox,rainmaker-common,digit-privacy-policy,rainmaker-pgr,rainmaker-hr,rainmaker-workbench,rainmaker-mdms,rainmaker-schema From 78688569fd41785420b74cd9b70e4b49c28f431a Mon Sep 17 00:00:00 2001 From: Rishabh-egov Date: Mon, 16 Sep 2024 19:39:50 +0530 Subject: [PATCH 06/14] add mdms data from json file for action-roles --- .../handler/service/DataHandlerService.java | 92 ++++++++++++++++--- .../web/controller/DataHandlerController.java | 1 + .../src/main/resources/MDMS.json | 30 ++++++ 3 files changed, 110 insertions(+), 13 deletions(-) create mode 100644 core-services/default-data-handler/src/main/resources/MDMS.json diff --git a/core-services/default-data-handler/src/main/java/org/egov/handler/service/DataHandlerService.java b/core-services/default-data-handler/src/main/java/org/egov/handler/service/DataHandlerService.java index e2a8592adc..7b14af7632 100644 --- a/core-services/default-data-handler/src/main/java/org/egov/handler/service/DataHandlerService.java +++ b/core-services/default-data-handler/src/main/java/org/egov/handler/service/DataHandlerService.java @@ -3,6 +3,9 @@ import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.node.ObjectNode; + +import aj.org.objectweb.asm.TypeReference; +import jakarta.annotation.PostConstruct; import lombok.extern.slf4j.Slf4j; import org.egov.common.contract.request.RequestInfo; import org.egov.handler.config.ServiceConfiguration; @@ -20,6 +23,7 @@ import java.io.IOException; import java.io.InputStream; import java.util.*; +import java.util.stream.Collectors; import static org.egov.handler.config.ServiceConstants.TENANT_BOUNDARY_SCHEMA; @@ -43,12 +47,12 @@ public class DataHandlerService { @Autowired public DataHandlerService(MdmsV2Util mdmsV2Util, - LocalizationUtil localizationUtil, - TenantManagementUtil tenantManagementUtil, - ServiceConfiguration serviceConfig, - ObjectMapper objectMapper, - ResourceLoader resourceLoader, - WorkflowUtil workflowUtil) { + LocalizationUtil localizationUtil, + TenantManagementUtil tenantManagementUtil, + ServiceConfiguration serviceConfig, + ObjectMapper objectMapper, + ResourceLoader resourceLoader, + WorkflowUtil workflowUtil) { this.mdmsV2Util = mdmsV2Util; this.localizationUtil = localizationUtil; this.tenantManagementUtil = tenantManagementUtil; @@ -62,7 +66,7 @@ public void createDefaultData(DefaultDataRequest defaultDataRequest) { if (defaultDataRequest.getSchemaCodes() != null) { if (defaultDataRequest.getSchemaCodes().contains(TENANT_BOUNDARY_SCHEMA)) { createTenantBoundarydata(defaultDataRequest.getRequestInfo(), defaultDataRequest.getTargetTenantId()); -// defaultDataRequest.getSchemaCodes().remove(TENANT_BOUNDARY_SCHEMA); + // defaultDataRequest.getSchemaCodes().remove(TENANT_BOUNDARY_SCHEMA); } DefaultMdmsDataRequest defaultMdmsDataRequest = DefaultMdmsDataRequest.builder() .requestInfo(defaultDataRequest.getRequestInfo()) @@ -104,9 +108,10 @@ private void createTenantBoundarydata(RequestInfo requestInfo, String targetTena .schemaDefinition(schemaDefinition) .build(); mdmsV2Util.createMdmsSchema(schemaDefinitionRequest); - //Search data for the schema code in default tenetId - List mdmsList = getAllMdmsResults(serviceConfig.getDefaultTenantId(), schemaDefinition.getCode(), requestInfo); - //Create schema data in the given tenantId + // Search data for the schema code in default tenetId + List mdmsList = getAllMdmsResults(serviceConfig.getDefaultTenantId(), schemaDefinition.getCode(), + requestInfo); + // Create schema data in the given tenantId for (Mdms mdms : mdmsList) { mdms.setTenantId(targetTenantId); @@ -118,7 +123,8 @@ private void createTenantBoundarydata(RequestInfo requestInfo, String targetTena // Modify the 'code' field within the 'boundary' node boundaryNode.put("code", targetTenantId); - // Set the modified 'data' back to the Mdms object (optional, since it's mutable) + // Set the modified 'data' back to the Mdms object (optional, since it's + // mutable) ((ObjectNode) dataNode).set("boundary", boundaryNode); mdms.setData(dataNode); } else { @@ -170,7 +176,8 @@ public List getAllMdmsResults(String tenantId, String schemaCode, RequestI } public void createTenantConfig(TenantRequest tenantRequest) { - TenantConfigResponse tenantConfigSearchResponse = tenantManagementUtil.searchTenantConfig(serviceConfig.getDefaultTenantId(), tenantRequest.getRequestInfo()); + TenantConfigResponse tenantConfigSearchResponse = tenantManagementUtil + .searchTenantConfig(serviceConfig.getDefaultTenantId(), tenantRequest.getRequestInfo()); List tenantConfigList = tenantConfigSearchResponse.getTenantConfigs(); for (TenantConfig tenantConfig : tenantConfigList) { @@ -241,7 +248,8 @@ private void createPgrWorkflowConfig(String targetTenantId) { // Load the JSON file Resource resource = resourceLoader.getResource("classpath:PgrWorkflowConfig.json"); try (InputStream inputStream = resource.getInputStream()) { - BusinessServiceRequest businessServiceRequest = objectMapper.readValue(inputStream, BusinessServiceRequest.class); + BusinessServiceRequest businessServiceRequest = objectMapper.readValue(inputStream, + BusinessServiceRequest.class); businessServiceRequest.getBusinessServices().forEach(service -> service.setTenantId(targetTenantId)); workflowUtil.createWfConfig(businessServiceRequest); } catch (IOException e) { @@ -260,4 +268,62 @@ private void processMasterList(List masterList, List schemaCodes } } } + + public void addMdmsData(DataSetupRequest dataSetupRequest) { + + Resource resource = resourceLoader.getResource("classpath:MDMS.json"); + + try (InputStream inputStream = resource.getInputStream()) { + + JsonNode rootNode = objectMapper.readTree(inputStream); + Map> mdmsMap = new HashMap<>(); + + // Iterate over each module (PGR, HRMS, etc.) + Iterator> fields = rootNode.fields(); + while (fields.hasNext()) { + Map.Entry field = fields.next(); + String module = field.getKey(); + JsonNode moduleNode = field.getValue(); + + // Convert the module node to List + List mdmsList = new ArrayList<>(); + if (moduleNode.isArray()) { + for (JsonNode itemNode : moduleNode) { + Mdms mdms = objectMapper.treeToValue(itemNode, Mdms.class); + mdms.setData(itemNode); + mdmsList.add(mdms); + } + } + + mdmsMap.put(module, mdmsList); + } + + // Get the target tenant ID from the request + String targetTenantId = dataSetupRequest.getTargetTenantId(); + + // Filter the mdmsData based on the targetTenantId if needed + List filteredMdmsData = mdmsMap.get(dataSetupRequest.getModule()); + + // Iterate over each filtered Mdms entry and create an MDMS entry + for (Mdms mdms : filteredMdmsData) { + + mdms.setTenantId(targetTenantId); + mdms.setSchemaCode("ACCESSCONTROL-ROLEACTIONS.roleactions"); + String uniqueId = mdms.getData().get("actionid").asText()+"."+mdms.getData().get("rolecode").asText(); + mdms.setUniqueIdentifier(uniqueId); + // Build an MdmsRequest for each entry + MdmsRequest mdmsRequest = MdmsRequest.builder() + .requestInfo(dataSetupRequest.getRequestInfo()) + .mdms(mdms) // Assuming MdmsRequest has a field to set Mdms data + .build(); + + // Call createMdmsData for each mdmsRequest + mdmsV2Util.createMdmsData(mdmsRequest); + } + + } catch (IOException e) { + throw new CustomException("IO_EXCEPTION", "Error reading or mapping JSON file: " + e.getMessage()); + } + } + } diff --git a/core-services/default-data-handler/src/main/java/org/egov/handler/web/controller/DataHandlerController.java b/core-services/default-data-handler/src/main/java/org/egov/handler/web/controller/DataHandlerController.java index 7cc3dc2cd0..9afde209a6 100644 --- a/core-services/default-data-handler/src/main/java/org/egov/handler/web/controller/DataHandlerController.java +++ b/core-services/default-data-handler/src/main/java/org/egov/handler/web/controller/DataHandlerController.java @@ -31,6 +31,7 @@ public DataHandlerController(DataHandlerService dataHandlerService, ResponseInfo @RequestMapping(value = "/defaultdata/setup", method = RequestMethod.POST) public ResponseEntity DefaultDataCreatePost(@Valid @RequestBody DataSetupRequest dataSetupRequest) { + dataHandlerService.addMdmsData(dataSetupRequest); DefaultDataRequest defaultDataRequest = dataHandlerService.setupDefaultData(dataSetupRequest); ResponseInfo responseInfo = responseInfoFactory.createResponseInfoFromRequestInfo(dataSetupRequest.getRequestInfo(), true); diff --git a/core-services/default-data-handler/src/main/resources/MDMS.json b/core-services/default-data-handler/src/main/resources/MDMS.json new file mode 100644 index 0000000000..dc62e87cb8 --- /dev/null +++ b/core-services/default-data-handler/src/main/resources/MDMS.json @@ -0,0 +1,30 @@ +{ + "PGR":[ + { + "actionid": 2200, + "rolecode": "SUPERUSER", + "tenantId": "pg", + "actioncode": "" + }, + { + "actionid": 2201, + "rolecode": "SUPERUSER", + "tenantId": "pg", + "actioncode": "" + } + ], + "HRMS":[ + { + "actionid": 2203, + "rolecode": "SUPERUSER", + "tenantId": "pg", + "actioncode": "" + }, + { + "actionid": 2204, + "rolecode": "SUPERUSER", + "tenantId": "pg", + "actioncode": "" + } + ] +} \ No newline at end of file From 74b4d49f3fef1c9a232518db59dede3da2771cdd Mon Sep 17 00:00:00 2001 From: varunreddy-egov Date: Wed, 18 Sep 2024 15:20:08 +0530 Subject: [PATCH 07/14] Modified according to the changes in MDMS and localization --- .../handler/config/ServiceConfiguration.java | 6 + .../egov/handler/kafka/TenantConsumer.java | 96 ++++++------- .../handler/service/DataHandlerService.java | 127 ++++++------------ .../DefaultLocalizationDataRequest.java | 13 +- .../web/models/DefaultMdmsDataRequest.java | 11 +- .../src/main/resources/application.properties | 4 +- 6 files changed, 118 insertions(+), 139 deletions(-) diff --git a/core-services/default-data-handler/src/main/java/org/egov/handler/config/ServiceConfiguration.java b/core-services/default-data-handler/src/main/java/org/egov/handler/config/ServiceConfiguration.java index d94b1768ff..8e20a2d8c1 100644 --- a/core-services/default-data-handler/src/main/java/org/egov/handler/config/ServiceConfiguration.java +++ b/core-services/default-data-handler/src/main/java/org/egov/handler/config/ServiceConfiguration.java @@ -36,6 +36,12 @@ public class ServiceConfiguration { @Value("#{'${default.mdms.schema.create.list}'.split(',')}") private List defaultMdmsSchemaList; + @Value("#{'${pgr.mdms.schema.create.list}'.split(',')}") + private List pgrMdmsSchemaList; + + @Value("#{'${hrms.mdms.schema.create.list}'.split(',')}") + private List hrmsMdmsSchemaList; + //Localization Configs @Value("${egov.localization.host}${egov.localization.default.data.create.endpoint}") private String localizationDefaultDataCreateURI; diff --git a/core-services/default-data-handler/src/main/java/org/egov/handler/kafka/TenantConsumer.java b/core-services/default-data-handler/src/main/java/org/egov/handler/kafka/TenantConsumer.java index 74bbcb733b..b1a92ab2cf 100644 --- a/core-services/default-data-handler/src/main/java/org/egov/handler/kafka/TenantConsumer.java +++ b/core-services/default-data-handler/src/main/java/org/egov/handler/kafka/TenantConsumer.java @@ -13,7 +13,6 @@ import org.egov.handler.web.models.DefaultLocalizationDataRequest; import org.egov.handler.web.models.TenantRequest; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.cglib.core.Local; import org.springframework.kafka.annotation.KafkaListener; import org.springframework.kafka.support.KafkaHeaders; import org.springframework.messaging.handler.annotation.Header; @@ -27,66 +26,67 @@ @Component public class TenantConsumer { - private final ObjectMapper mapper; + private final ObjectMapper mapper; - private final DataHandlerService dataHandlerService; + private final DataHandlerService dataHandlerService; - private final UserUtil userUtil; + private final UserUtil userUtil; - private final OtpUtil otpUtil; + private final OtpUtil otpUtil; - private final ServiceConfiguration serviceConfig; + private final ServiceConfiguration serviceConfig; - private LocalizationUtil localizationUtil; + private final LocalizationUtil localizationUtil; - @Autowired - public TenantConsumer(ObjectMapper mapper, DataHandlerService dataHandlerService, UserUtil userUtil, OtpUtil otpUtil, ServiceConfiguration serviceConfig, LocalizationUtil localizationUtil) { - this.mapper = mapper; - this.dataHandlerService = dataHandlerService; - this.userUtil = userUtil; - this.otpUtil = otpUtil; - this.serviceConfig = serviceConfig; - this.localizationUtil = localizationUtil; - } + @Autowired + public TenantConsumer(ObjectMapper mapper, DataHandlerService dataHandlerService, UserUtil userUtil, OtpUtil otpUtil, ServiceConfiguration serviceConfig, LocalizationUtil localizationUtil) { + this.mapper = mapper; + this.dataHandlerService = dataHandlerService; + this.userUtil = userUtil; + this.otpUtil = otpUtil; + this.serviceConfig = serviceConfig; + this.localizationUtil = localizationUtil; + } - @KafkaListener(topics = {"${kafka.topics.create.tenant}"}) - public void listen(final HashMap record, @Header(KafkaHeaders.RECEIVED_TOPIC) String topic) { - TenantRequest tenantRequest = mapper.convertValue(record, TenantRequest.class); + @KafkaListener(topics = {"${kafka.topics.create.tenant}"}) + public void listen(final HashMap record, @Header(KafkaHeaders.RECEIVED_TOPIC) String topic) { + TenantRequest tenantRequest = mapper.convertValue(record, TenantRequest.class); - // Setting userInfo with UUID - User userInfo = User.builder() - .uuid("40dceade-992d-4a8f-8243-19dda76a4171") - .build(); - tenantRequest.getRequestInfo().setUserInfo(userInfo); + // Setting userInfo with UUID + User userInfo = User.builder() + .uuid("40dceade-992d-4a8f-8243-19dda76a4171") + .build(); + tenantRequest.getRequestInfo().setUserInfo(userInfo); - DefaultLocalizationDataRequest defaultLocalizationDataRequest = DefaultLocalizationDataRequest.builder() - .requestInfo(tenantRequest.getRequestInfo()) - .targetTenantId(tenantRequest.getTenant().getCode()) - .locale(serviceConfig.getDefaultLocalizationLocale()) - .modules(Collections.singletonList("rainmaker-common")) - .build(); + DefaultLocalizationDataRequest defaultLocalizationDataRequest = DefaultLocalizationDataRequest.builder() + .requestInfo(tenantRequest.getRequestInfo()) + .targetTenantId(tenantRequest.getTenant().getCode()) + .locale(serviceConfig.getDefaultLocalizationLocale()) + .modules(Collections.singletonList("rainmaker-common")) + .defaultTenantId(serviceConfig.getDefaultTenantId()) + .build(); - localizationUtil.upsertLocalization(defaultLocalizationDataRequest, tenantRequest); + localizationUtil.upsertLocalization(defaultLocalizationDataRequest, tenantRequest); - // create user only for root tenant - if (Objects.isNull(tenantRequest.getTenant().getParentId())) { - log.info("Configuring Tenant: {}", tenantRequest.getTenant().getCode()); + // create user only for root tenant + if (Objects.isNull(tenantRequest.getTenant().getParentId())) { + log.info("Configuring Tenant: {}", tenantRequest.getTenant().getCode()); - DefaultDataRequest defaultDataRequest = DefaultDataRequest.builder() - .requestInfo(tenantRequest.getRequestInfo()) - .targetTenantId(tenantRequest.getTenant().getCode()) - .schemaCodes(serviceConfig.getDefaultMdmsSchemaList()) - .onlySchemas(Boolean.FALSE) - .locale(serviceConfig.getDefaultLocalizationLocale()) - .modules(serviceConfig.getDefaultLocalizationModuleList()) - .build(); + DefaultDataRequest defaultDataRequest = DefaultDataRequest.builder() + .requestInfo(tenantRequest.getRequestInfo()) + .targetTenantId(tenantRequest.getTenant().getCode()) + .schemaCodes(serviceConfig.getDefaultMdmsSchemaList()) + .onlySchemas(Boolean.FALSE) + .locale(serviceConfig.getDefaultLocalizationLocale()) + .modules(serviceConfig.getDefaultLocalizationModuleList()) + .build(); - dataHandlerService.createDefaultData(defaultDataRequest); - dataHandlerService.createTenantConfig(tenantRequest); + dataHandlerService.createDefaultData(defaultDataRequest); + dataHandlerService.createTenantConfig(tenantRequest); - userUtil.createUser(tenantRequest); - otpUtil.sendOtp(tenantRequest); - } - } + userUtil.createUser(tenantRequest); + otpUtil.sendOtp(tenantRequest); + } + } } diff --git a/core-services/default-data-handler/src/main/java/org/egov/handler/service/DataHandlerService.java b/core-services/default-data-handler/src/main/java/org/egov/handler/service/DataHandlerService.java index 7b14af7632..aeb0e4c53a 100644 --- a/core-services/default-data-handler/src/main/java/org/egov/handler/service/DataHandlerService.java +++ b/core-services/default-data-handler/src/main/java/org/egov/handler/service/DataHandlerService.java @@ -3,9 +3,6 @@ import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.node.ObjectNode; - -import aj.org.objectweb.asm.TypeReference; -import jakarta.annotation.PostConstruct; import lombok.extern.slf4j.Slf4j; import org.egov.common.contract.request.RequestInfo; import org.egov.handler.config.ServiceConfiguration; @@ -23,7 +20,6 @@ import java.io.IOException; import java.io.InputStream; import java.util.*; -import java.util.stream.Collectors; import static org.egov.handler.config.ServiceConstants.TENANT_BOUNDARY_SCHEMA; @@ -47,12 +43,12 @@ public class DataHandlerService { @Autowired public DataHandlerService(MdmsV2Util mdmsV2Util, - LocalizationUtil localizationUtil, - TenantManagementUtil tenantManagementUtil, - ServiceConfiguration serviceConfig, - ObjectMapper objectMapper, - ResourceLoader resourceLoader, - WorkflowUtil workflowUtil) { + LocalizationUtil localizationUtil, + TenantManagementUtil tenantManagementUtil, + ServiceConfiguration serviceConfig, + ObjectMapper objectMapper, + ResourceLoader resourceLoader, + WorkflowUtil workflowUtil) { this.mdmsV2Util = mdmsV2Util; this.localizationUtil = localizationUtil; this.tenantManagementUtil = tenantManagementUtil; @@ -64,15 +60,17 @@ public DataHandlerService(MdmsV2Util mdmsV2Util, public void createDefaultData(DefaultDataRequest defaultDataRequest) { if (defaultDataRequest.getSchemaCodes() != null) { - if (defaultDataRequest.getSchemaCodes().contains(TENANT_BOUNDARY_SCHEMA)) { + List schemaCodes = new ArrayList<>(defaultDataRequest.getSchemaCodes()); + if (schemaCodes.contains(TENANT_BOUNDARY_SCHEMA)) { createTenantBoundarydata(defaultDataRequest.getRequestInfo(), defaultDataRequest.getTargetTenantId()); - // defaultDataRequest.getSchemaCodes().remove(TENANT_BOUNDARY_SCHEMA); + schemaCodes.remove(TENANT_BOUNDARY_SCHEMA); } DefaultMdmsDataRequest defaultMdmsDataRequest = DefaultMdmsDataRequest.builder() .requestInfo(defaultDataRequest.getRequestInfo()) .targetTenantId(defaultDataRequest.getTargetTenantId()) - .schemaCodes(defaultDataRequest.getSchemaCodes()) + .schemaCodes(schemaCodes) .onlySchemas(defaultDataRequest.getOnlySchemas()) + .defaultTenantId(serviceConfig.getDefaultTenantId()) .build(); mdmsV2Util.createDefaultMdmsData(defaultMdmsDataRequest); } @@ -83,6 +81,7 @@ public void createDefaultData(DefaultDataRequest defaultDataRequest) { .targetTenantId(defaultDataRequest.getTargetTenantId()) .locale(defaultDataRequest.getLocale()) .modules(defaultDataRequest.getModules()) + .defaultTenantId(serviceConfig.getDefaultTenantId()) .build(); localizationUtil.createLocalizationData(defaultLocalizationDataRequest); } @@ -195,46 +194,20 @@ public void createTenantConfig(TenantRequest tenantRequest) { } public DefaultDataRequest setupDefaultData(DataSetupRequest dataSetupRequest) { - if (Objects.equals(dataSetupRequest.getModule(), "PGR")) { - createPgrWorkflowConfig(dataSetupRequest.getTargetTenantId()); - } - - Set uniqueIdentifiers = new HashSet<>(); - uniqueIdentifiers.add(dataSetupRequest.getModule()); - - MdmsCriteriaV2 mdmsCriteriaV2 = MdmsCriteriaV2.builder() - .tenantId(serviceConfig.getDefaultTenantId()) - .schemaCode(serviceConfig.getModuleMasterConfig()) - .uniqueIdentifiers(uniqueIdentifiers) - .build(); - MdmsCriteriaReqV2 mdmsCriteriaReqV2 = MdmsCriteriaReqV2.builder() - .requestInfo(dataSetupRequest.getRequestInfo()) - .mdmsCriteria(mdmsCriteriaV2) - .build(); - - MdmsResponseV2 mdmsResponseV2 = mdmsV2Util.searchMdmsData(mdmsCriteriaReqV2); - List mdmsList = mdmsResponseV2.getMdms(); - - List schemaCodes = new ArrayList<>(); - List modules = new ArrayList<>(); - - for (Mdms mdms : mdmsList) { - try { - MdmsData mdmsData = objectMapper.treeToValue(mdms.getData(), MdmsData.class); - processMasterList(mdmsData.getMasterList(), schemaCodes, modules); - } catch (IOException e) { - log.error("Failed to parse MDMS data :{}", mdms.getData(), e); - throw new CustomException("MDMS_DATA_PARSE_FAILED", "Failed to parse mdms data "); - } - } - DefaultDataRequest defaultDataRequest = DefaultDataRequest.builder() .requestInfo(dataSetupRequest.getRequestInfo()) .targetTenantId(dataSetupRequest.getTargetTenantId()) - .schemaCodes(schemaCodes) .onlySchemas(dataSetupRequest.getOnlySchemas()) .build(); + if (Objects.equals(dataSetupRequest.getModule(), "PGR")) { + createPgrWorkflowConfig(dataSetupRequest.getTargetTenantId()); + defaultDataRequest.setSchemaCodes(serviceConfig.getPgrMdmsSchemaList()); + } + if (Objects.equals(dataSetupRequest.getModule(), "HRMS")) { + defaultDataRequest.setSchemaCodes(serviceConfig.getHrmsMdmsSchemaList()); + } + try { createDefaultData(defaultDataRequest); } catch (Exception e) { @@ -257,50 +230,38 @@ private void createPgrWorkflowConfig(String targetTenantId) { } } - private void processMasterList(List masterList, List schemaCodes, List modules) { - for (Master master : masterList) { - if ("module".equals(master.getType()) || - "common".equals(master.getType()) || - "config".equals(master.getType())) { - schemaCodes.add(master.getCode()); - } else if ("localisation".equals(master.getType())) { - modules.add(master.getCode()); - } - } - } - public void addMdmsData(DataSetupRequest dataSetupRequest) { Resource resource = resourceLoader.getResource("classpath:MDMS.json"); try (InputStream inputStream = resource.getInputStream()) { - JsonNode rootNode = objectMapper.readTree(inputStream); - Map> mdmsMap = new HashMap<>(); - - // Iterate over each module (PGR, HRMS, etc.) - Iterator> fields = rootNode.fields(); - while (fields.hasNext()) { - Map.Entry field = fields.next(); - String module = field.getKey(); - JsonNode moduleNode = field.getValue(); - - // Convert the module node to List - List mdmsList = new ArrayList<>(); - if (moduleNode.isArray()) { - for (JsonNode itemNode : moduleNode) { - Mdms mdms = objectMapper.treeToValue(itemNode, Mdms.class); - mdms.setData(itemNode); - mdmsList.add(mdms); - } - } - - mdmsMap.put(module, mdmsList); + JsonNode rootNode = objectMapper.readTree(inputStream); + Map> mdmsMap = new HashMap<>(); + + // Iterate over each module (PGR, HRMS, etc.) + Iterator> fields = rootNode.fields(); + while (fields.hasNext()) { + Map.Entry field = fields.next(); + String module = field.getKey(); + JsonNode moduleNode = field.getValue(); + + // Convert the module node to List + List mdmsList = new ArrayList<>(); + if (moduleNode.isArray()) { + for (JsonNode itemNode : moduleNode) { + Mdms mdms = objectMapper.treeToValue(itemNode, Mdms.class); + mdms.setData(itemNode); + mdmsList.add(mdms); } - + } + + mdmsMap.put(module, mdmsList); + } + // Get the target tenant ID from the request String targetTenantId = dataSetupRequest.getTargetTenantId(); - + // Filter the mdmsData based on the targetTenantId if needed List filteredMdmsData = mdmsMap.get(dataSetupRequest.getModule()); @@ -309,7 +270,7 @@ public void addMdmsData(DataSetupRequest dataSetupRequest) { mdms.setTenantId(targetTenantId); mdms.setSchemaCode("ACCESSCONTROL-ROLEACTIONS.roleactions"); - String uniqueId = mdms.getData().get("actionid").asText()+"."+mdms.getData().get("rolecode").asText(); + String uniqueId = mdms.getData().get("actionid").asText() + "." + mdms.getData().get("rolecode").asText(); mdms.setUniqueIdentifier(uniqueId); // Build an MdmsRequest for each entry MdmsRequest mdmsRequest = MdmsRequest.builder() diff --git a/core-services/default-data-handler/src/main/java/org/egov/handler/web/models/DefaultLocalizationDataRequest.java b/core-services/default-data-handler/src/main/java/org/egov/handler/web/models/DefaultLocalizationDataRequest.java index 601ecc8e82..775de60c39 100644 --- a/core-services/default-data-handler/src/main/java/org/egov/handler/web/models/DefaultLocalizationDataRequest.java +++ b/core-services/default-data-handler/src/main/java/org/egov/handler/web/models/DefaultLocalizationDataRequest.java @@ -3,6 +3,7 @@ import com.fasterxml.jackson.annotation.JsonProperty; import jakarta.validation.Valid; import jakarta.validation.constraints.NotNull; +import jakarta.validation.constraints.Size; import lombok.*; import org.egov.common.contract.request.RequestInfo; import org.springframework.validation.annotation.Validated; @@ -23,16 +24,20 @@ public class DefaultLocalizationDataRequest { @JsonProperty("targetTenantId") @NotNull - @Valid + @Size(min = 1, max = 100) private String targetTenantId = null; @JsonProperty("locale") @NotNull - @Valid private String locale = null; @JsonProperty("modules") @NotNull - @Valid + @Size(min = 1, max = 128) private List modules = null; -} + + @JsonProperty("defaultTenantId") + @NotNull + @Size(min = 1, max = 100) + private String defaultTenantId = null; +} \ No newline at end of file diff --git a/core-services/default-data-handler/src/main/java/org/egov/handler/web/models/DefaultMdmsDataRequest.java b/core-services/default-data-handler/src/main/java/org/egov/handler/web/models/DefaultMdmsDataRequest.java index 16629f2f71..a49cce7e35 100644 --- a/core-services/default-data-handler/src/main/java/org/egov/handler/web/models/DefaultMdmsDataRequest.java +++ b/core-services/default-data-handler/src/main/java/org/egov/handler/web/models/DefaultMdmsDataRequest.java @@ -3,6 +3,7 @@ import com.fasterxml.jackson.annotation.JsonProperty; import jakarta.validation.Valid; import jakarta.validation.constraints.NotNull; +import jakarta.validation.constraints.Size; import lombok.*; import org.egov.common.contract.request.RequestInfo; import org.springframework.validation.annotation.Validated; @@ -23,15 +24,19 @@ public class DefaultMdmsDataRequest { @JsonProperty("targetTenantId") @NotNull - @Valid + @Size(min = 1, max = 100) private String targetTenantId = null; @JsonProperty("schemaCodes") @NotNull - @Valid + @Size(min = 1, max = 128) private List schemaCodes = null; @JsonProperty("onlySchemas") - @Valid private Boolean onlySchemas = Boolean.TRUE; + + @JsonProperty("defaultTenantId") + @NotNull + @Size(min = 1, max = 100) + private String defaultTenantId = null; } \ No newline at end of file diff --git a/core-services/default-data-handler/src/main/resources/application.properties b/core-services/default-data-handler/src/main/resources/application.properties index 0d752b929f..52b06f18e4 100644 --- a/core-services/default-data-handler/src/main/resources/application.properties +++ b/core-services/default-data-handler/src/main/resources/application.properties @@ -47,7 +47,9 @@ egov.mdms.schema.search.endpoint=/mdms-v2/schema/v1/_search egov.mdms.data.create.endpoint=/mdms-v2/v2/_create egov.mdms.data.search.endpoint=/mdms-v2/v2/_search -default.mdms.schema.create.list="egov-hrms.Degree,egov-hrms.DeactivationReason,egov-hrms.EmployeeStatus,egov-hrms.EmployeeType,egov-hrms.EmploymentTest,egov-hrms.Specalization,sandbox-ui.ModuleMasterConfig,common-masters.uiHomePage,tenant.citymodule,DIGIT-UI.ApiCachingSettings,tenant.tenants,egov-location.TenantBoundary,common-masters.GenderType,ACCESSCONTROL-ACTIONS-TEST.actions-test,ACCESSCONTROL-ROLES.roles,ACCESSCONTROL-ROLEACTIONS.roleactions,DataSecurity.DecryptionABAC,DataSecurity.EncryptionPolicy,DataSecurity.MaskingPatterns,DataSecurity.SecurityPolicy" +default.mdms.schema.create.list=egov-hrms.Degree,egov-hrms.DeactivationReason,egov-hrms.EmployeeStatus,egov-hrms.EmployeeType,egov-hrms.EmploymentTest,egov-hrms.Specalization,sandbox-ui.ModuleMasterConfig,common-masters.uiHomePage,tenant.citymodule,DIGIT-UI.ApiCachingSettings,tenant.tenants,egov-location.TenantBoundary,common-masters.GenderType,ACCESSCONTROL-ACTIONS-TEST.actions-test,ACCESSCONTROL-ROLES.roles,ACCESSCONTROL-ROLEACTIONS.roleactions,DataSecurity.DecryptionABAC,DataSecurity.EncryptionPolicy,DataSecurity.MaskingPatterns,DataSecurity.SecurityPolicy +pgr.mdms.schema.create.list=RAINMAKER-PGR.ServiceDefs,common-masters.Department,common-masters.IdFormat +hrms.mdms.schema.create.list=common-masters.Department,common-masters.Designation,common-masters.IdFormat,common-masters.GenderType,egov-hrms.Specalization,egov-hrms.EmployeeType,egov-hrms.EmployeeStatus,egov-hrms.EmployeeDepartment,egov-hrms.DeactivationReason,egov-hrms.CommonFieldsConfig,egov-hrms.CampaignAssignmentFieldsConfig #localization urls egov.localization.host=http://localhost:8087 From b9d98fdee0c913e262aa178a909872c3d47b7d47 Mon Sep 17 00:00:00 2001 From: varunreddy-egov Date: Wed, 18 Sep 2024 17:25:34 +0530 Subject: [PATCH 08/14] Modified how pgr and hrms schemacodes loaded --- .../handler/config/ServiceConfiguration.java | 12 ++--- .../handler/service/DataHandlerService.java | 4 +- .../egov/handler/util/LocalizationUtil.java | 54 +++++++++---------- .../src/main/resources/application.properties | 5 +- 4 files changed, 32 insertions(+), 43 deletions(-) diff --git a/core-services/default-data-handler/src/main/java/org/egov/handler/config/ServiceConfiguration.java b/core-services/default-data-handler/src/main/java/org/egov/handler/config/ServiceConfiguration.java index 8e20a2d8c1..2b3bd70f14 100644 --- a/core-services/default-data-handler/src/main/java/org/egov/handler/config/ServiceConfiguration.java +++ b/core-services/default-data-handler/src/main/java/org/egov/handler/config/ServiceConfiguration.java @@ -5,6 +5,7 @@ import org.springframework.stereotype.Component; import java.util.List; +import java.util.Map; @Component @Data @@ -36,11 +37,8 @@ public class ServiceConfiguration { @Value("#{'${default.mdms.schema.create.list}'.split(',')}") private List defaultMdmsSchemaList; - @Value("#{'${pgr.mdms.schema.create.list}'.split(',')}") - private List pgrMdmsSchemaList; - - @Value("#{'${hrms.mdms.schema.create.list}'.split(',')}") - private List hrmsMdmsSchemaList; + @Value("#{${mdms.schemacode.list}}") + private Map> mdmsSchemacodeList; //Localization Configs @Value("${egov.localization.host}${egov.localization.default.data.create.endpoint}") @@ -89,10 +87,6 @@ public class ServiceConfiguration { @Value("${default.tenant.id}") private String defaultTenantId; - // Module Master Configuration - @Value("${sandbox-ui.module.master.config}") - private String moduleMasterConfig; - // Workflow Configuration @Value("${egov.workflow.host}${egov.workflow.businessservice.create.path}") private String wfBusinessServiceCreateURI; diff --git a/core-services/default-data-handler/src/main/java/org/egov/handler/service/DataHandlerService.java b/core-services/default-data-handler/src/main/java/org/egov/handler/service/DataHandlerService.java index aeb0e4c53a..7d36c8ca55 100644 --- a/core-services/default-data-handler/src/main/java/org/egov/handler/service/DataHandlerService.java +++ b/core-services/default-data-handler/src/main/java/org/egov/handler/service/DataHandlerService.java @@ -202,10 +202,10 @@ public DefaultDataRequest setupDefaultData(DataSetupRequest dataSetupRequest) { if (Objects.equals(dataSetupRequest.getModule(), "PGR")) { createPgrWorkflowConfig(dataSetupRequest.getTargetTenantId()); - defaultDataRequest.setSchemaCodes(serviceConfig.getPgrMdmsSchemaList()); + defaultDataRequest.setSchemaCodes(serviceConfig.getMdmsSchemacodeList().get("PGR")); } if (Objects.equals(dataSetupRequest.getModule(), "HRMS")) { - defaultDataRequest.setSchemaCodes(serviceConfig.getHrmsMdmsSchemaList()); + defaultDataRequest.setSchemaCodes(serviceConfig.getMdmsSchemacodeList().get("HRMS")); } try { diff --git a/core-services/default-data-handler/src/main/java/org/egov/handler/util/LocalizationUtil.java b/core-services/default-data-handler/src/main/java/org/egov/handler/util/LocalizationUtil.java index 79ac4d621e..13ec7f597e 100644 --- a/core-services/default-data-handler/src/main/java/org/egov/handler/util/LocalizationUtil.java +++ b/core-services/default-data-handler/src/main/java/org/egov/handler/util/LocalizationUtil.java @@ -7,10 +7,8 @@ import org.egov.tracer.model.CustomException; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; -import org.springframework.util.CollectionUtils; import org.springframework.web.client.RestTemplate; -import java.util.Collection; import java.util.Collections; import java.util.List; @@ -18,37 +16,37 @@ @Component public class LocalizationUtil { - private final RestTemplate restTemplate; + private final RestTemplate restTemplate; - private final ServiceConfiguration serviceConfig; + private final ServiceConfiguration serviceConfig; - @Autowired - public LocalizationUtil(RestTemplate restTemplate, ServiceConfiguration serviceConfig) { - this.restTemplate = restTemplate; - this.serviceConfig = serviceConfig; - } + @Autowired + public LocalizationUtil(RestTemplate restTemplate, ServiceConfiguration serviceConfig) { + this.restTemplate = restTemplate; + this.serviceConfig = serviceConfig; + } - public void createLocalizationData(DefaultLocalizationDataRequest defaultLocalizationDataRequest) { + public void createLocalizationData(DefaultLocalizationDataRequest defaultLocalizationDataRequest) { - StringBuilder uri = new StringBuilder(); - uri.append(serviceConfig.getLocalizationDefaultDataCreateURI()); - try { - restTemplate.postForObject(uri.toString(), defaultLocalizationDataRequest, ResponseInfo.class); - } catch (Exception e) { - log.error("Error creating default localization data for {} : {}", defaultLocalizationDataRequest.getTargetTenantId(), e.getMessage()); - throw new CustomException("LOCALIZATION_DEFAULT_DATA_CREATE_FAILED", "Failed to create localization data for " + defaultLocalizationDataRequest.getTargetTenantId() + " : " + e.getMessage()); - } - } + StringBuilder uri = new StringBuilder(); + uri.append(serviceConfig.getLocalizationDefaultDataCreateURI()); + try { + restTemplate.postForObject(uri.toString(), defaultLocalizationDataRequest, ResponseInfo.class); + } catch (Exception e) { + log.error("Error creating default localization data for {} : {}", defaultLocalizationDataRequest.getTargetTenantId(), e.getMessage()); + throw new CustomException("LOCALIZATION_DEFAULT_DATA_CREATE_FAILED", "Failed to create localization data for " + defaultLocalizationDataRequest.getTargetTenantId() + " : " + e.getMessage()); + } + } - public void upsertLocalization(DefaultLocalizationDataRequest defaultLocalizationDataRequest, TenantRequest tenantRequest) { + public void upsertLocalization(DefaultLocalizationDataRequest defaultLocalizationDataRequest, TenantRequest tenantRequest) { - List messageList = generateDynamicMessage(tenantRequest); + List messageList = generateDynamicMessage(tenantRequest); defaultLocalizationDataRequest.getRequestInfo().getUserInfo().setId(128L); - CreateMessagesRequest createMessagesRequest = CreateMessagesRequest.builder() + CreateMessagesRequest createMessagesRequest = CreateMessagesRequest.builder() .requestInfo(defaultLocalizationDataRequest.getRequestInfo()) - .tenantId(defaultLocalizationDataRequest.getTargetTenantId()) - .messages(messageList) - .build(); + .tenantId(defaultLocalizationDataRequest.getTargetTenantId()) + .messages(messageList) + .build(); StringBuilder uri = new StringBuilder(); uri.append(serviceConfig.getUpsertLocalizationURI()); @@ -58,9 +56,9 @@ public void upsertLocalization(DefaultLocalizationDataRequest defaultLocalizatio log.error("Error creating Tenant localization data for {} : {}", defaultLocalizationDataRequest.getTargetTenantId(), e.getMessage()); throw new CustomException("TENANT", "Failed to create localization data for " + defaultLocalizationDataRequest.getTargetTenantId() + " : " + e.getMessage()); } - } + } - public List generateDynamicMessage(TenantRequest tenantRequest){ + public List generateDynamicMessage(TenantRequest tenantRequest) { Tenant tenant = tenantRequest.getTenant(); @@ -72,7 +70,7 @@ public List generateDynamicMessage(TenantRequest tenantRequest){ ? "TENANT_TENANTS_" + tenantCode : null; - Message message = Message.builder() + Message message = Message.builder() .code(ulbKey) .module("rainmaker-common") .message(tenant.getName()) diff --git a/core-services/default-data-handler/src/main/resources/application.properties b/core-services/default-data-handler/src/main/resources/application.properties index 52b06f18e4..dd9bbd3249 100644 --- a/core-services/default-data-handler/src/main/resources/application.properties +++ b/core-services/default-data-handler/src/main/resources/application.properties @@ -48,8 +48,7 @@ egov.mdms.data.create.endpoint=/mdms-v2/v2/_create egov.mdms.data.search.endpoint=/mdms-v2/v2/_search default.mdms.schema.create.list=egov-hrms.Degree,egov-hrms.DeactivationReason,egov-hrms.EmployeeStatus,egov-hrms.EmployeeType,egov-hrms.EmploymentTest,egov-hrms.Specalization,sandbox-ui.ModuleMasterConfig,common-masters.uiHomePage,tenant.citymodule,DIGIT-UI.ApiCachingSettings,tenant.tenants,egov-location.TenantBoundary,common-masters.GenderType,ACCESSCONTROL-ACTIONS-TEST.actions-test,ACCESSCONTROL-ROLES.roles,ACCESSCONTROL-ROLEACTIONS.roleactions,DataSecurity.DecryptionABAC,DataSecurity.EncryptionPolicy,DataSecurity.MaskingPatterns,DataSecurity.SecurityPolicy -pgr.mdms.schema.create.list=RAINMAKER-PGR.ServiceDefs,common-masters.Department,common-masters.IdFormat -hrms.mdms.schema.create.list=common-masters.Department,common-masters.Designation,common-masters.IdFormat,common-masters.GenderType,egov-hrms.Specalization,egov-hrms.EmployeeType,egov-hrms.EmployeeStatus,egov-hrms.EmployeeDepartment,egov-hrms.DeactivationReason,egov-hrms.CommonFieldsConfig,egov-hrms.CampaignAssignmentFieldsConfig +mdms.schemacode.list={PGR:'RAINMAKER-PGR.ServiceDefs,common-masters.Department,common-masters.IdFormat', HRMS:'common-masters.Department,common-masters.Designation,common-masters.IdFormat,common-masters.GenderType,egov-hrms.Specalization,egov-hrms.EmployeeType,egov-hrms.EmployeeStatus,egov-hrms.EmployeeDepartment,egov-hrms.DeactivationReason,egov-hrms.CommonFieldsConfig,egov-hrms.CampaignAssignmentFieldsConfig'} #localization urls egov.localization.host=http://localhost:8087 @@ -78,8 +77,6 @@ egov.tenant.management.config.search.path=/tenant/config/_search default.tenant.id=pg -sandbox-ui.module.master.config=sandbox-ui.ModuleMasterConfig - # Workflow Configuration egov.workflow.host=http://localhost:8082 egov.workflow.businessservice.create.path=/egov-workflow-v2/egov-wf/businessservice/_create From 83b0a81c839c6f8be641c16a6954dd907cee0809 Mon Sep 17 00:00:00 2001 From: varunreddy-egov Date: Wed, 18 Sep 2024 17:32:18 +0530 Subject: [PATCH 09/14] Modified application.properties --- .../java/org/egov/handler/config/ServiceConfiguration.java | 4 ++-- .../java/org/egov/handler/service/DataHandlerService.java | 4 ++-- .../src/main/resources/application.properties | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/core-services/default-data-handler/src/main/java/org/egov/handler/config/ServiceConfiguration.java b/core-services/default-data-handler/src/main/java/org/egov/handler/config/ServiceConfiguration.java index 2b3bd70f14..ac78793871 100644 --- a/core-services/default-data-handler/src/main/java/org/egov/handler/config/ServiceConfiguration.java +++ b/core-services/default-data-handler/src/main/java/org/egov/handler/config/ServiceConfiguration.java @@ -37,8 +37,8 @@ public class ServiceConfiguration { @Value("#{'${default.mdms.schema.create.list}'.split(',')}") private List defaultMdmsSchemaList; - @Value("#{${mdms.schemacode.list}}") - private Map> mdmsSchemacodeList; + @Value("#{${mdms.schemacode.map}}") + private Map> mdmsSchemacodeMap; //Localization Configs @Value("${egov.localization.host}${egov.localization.default.data.create.endpoint}") diff --git a/core-services/default-data-handler/src/main/java/org/egov/handler/service/DataHandlerService.java b/core-services/default-data-handler/src/main/java/org/egov/handler/service/DataHandlerService.java index 7d36c8ca55..acdb6256e6 100644 --- a/core-services/default-data-handler/src/main/java/org/egov/handler/service/DataHandlerService.java +++ b/core-services/default-data-handler/src/main/java/org/egov/handler/service/DataHandlerService.java @@ -202,10 +202,10 @@ public DefaultDataRequest setupDefaultData(DataSetupRequest dataSetupRequest) { if (Objects.equals(dataSetupRequest.getModule(), "PGR")) { createPgrWorkflowConfig(dataSetupRequest.getTargetTenantId()); - defaultDataRequest.setSchemaCodes(serviceConfig.getMdmsSchemacodeList().get("PGR")); + defaultDataRequest.setSchemaCodes(serviceConfig.getMdmsSchemacodeMap().get("PGR")); } if (Objects.equals(dataSetupRequest.getModule(), "HRMS")) { - defaultDataRequest.setSchemaCodes(serviceConfig.getMdmsSchemacodeList().get("HRMS")); + defaultDataRequest.setSchemaCodes(serviceConfig.getMdmsSchemacodeMap().get("HRMS")); } try { diff --git a/core-services/default-data-handler/src/main/resources/application.properties b/core-services/default-data-handler/src/main/resources/application.properties index dd9bbd3249..79067eeba8 100644 --- a/core-services/default-data-handler/src/main/resources/application.properties +++ b/core-services/default-data-handler/src/main/resources/application.properties @@ -48,7 +48,7 @@ egov.mdms.data.create.endpoint=/mdms-v2/v2/_create egov.mdms.data.search.endpoint=/mdms-v2/v2/_search default.mdms.schema.create.list=egov-hrms.Degree,egov-hrms.DeactivationReason,egov-hrms.EmployeeStatus,egov-hrms.EmployeeType,egov-hrms.EmploymentTest,egov-hrms.Specalization,sandbox-ui.ModuleMasterConfig,common-masters.uiHomePage,tenant.citymodule,DIGIT-UI.ApiCachingSettings,tenant.tenants,egov-location.TenantBoundary,common-masters.GenderType,ACCESSCONTROL-ACTIONS-TEST.actions-test,ACCESSCONTROL-ROLES.roles,ACCESSCONTROL-ROLEACTIONS.roleactions,DataSecurity.DecryptionABAC,DataSecurity.EncryptionPolicy,DataSecurity.MaskingPatterns,DataSecurity.SecurityPolicy -mdms.schemacode.list={PGR:'RAINMAKER-PGR.ServiceDefs,common-masters.Department,common-masters.IdFormat', HRMS:'common-masters.Department,common-masters.Designation,common-masters.IdFormat,common-masters.GenderType,egov-hrms.Specalization,egov-hrms.EmployeeType,egov-hrms.EmployeeStatus,egov-hrms.EmployeeDepartment,egov-hrms.DeactivationReason,egov-hrms.CommonFieldsConfig,egov-hrms.CampaignAssignmentFieldsConfig'} +mdms.schemacode.map={PGR:'RAINMAKER-PGR.ServiceDefs,common-masters.Department,common-masters.IdFormat', HRMS:'common-masters.Department,common-masters.Designation,common-masters.IdFormat,common-masters.GenderType,egov-hrms.Specalization,egov-hrms.EmployeeType,egov-hrms.EmployeeStatus,egov-hrms.EmployeeDepartment,egov-hrms.DeactivationReason,egov-hrms.CommonFieldsConfig,egov-hrms.CampaignAssignmentFieldsConfig'} #localization urls egov.localization.host=http://localhost:8087 From 8fac80682770889efcdeb771db11a6d1d55d822b Mon Sep 17 00:00:00 2001 From: varunreddy-egov Date: Thu, 19 Sep 2024 15:55:21 +0530 Subject: [PATCH 10/14] Modified API payload --- .../egov/handler/service/DataHandlerService.java | 16 +++++++++++----- .../web/controller/DataHandlerController.java | 3 +-- .../handler/web/models/DataSetupRequest.java | 7 +++++++ .../handler/web/models/DataSetupResponse.java | 12 ++++-------- 4 files changed, 23 insertions(+), 15 deletions(-) diff --git a/core-services/default-data-handler/src/main/java/org/egov/handler/service/DataHandlerService.java b/core-services/default-data-handler/src/main/java/org/egov/handler/service/DataHandlerService.java index acdb6256e6..560e10f77a 100644 --- a/core-services/default-data-handler/src/main/java/org/egov/handler/service/DataHandlerService.java +++ b/core-services/default-data-handler/src/main/java/org/egov/handler/service/DataHandlerService.java @@ -122,8 +122,7 @@ private void createTenantBoundarydata(RequestInfo requestInfo, String targetTena // Modify the 'code' field within the 'boundary' node boundaryNode.put("code", targetTenantId); - // Set the modified 'data' back to the Mdms object (optional, since it's - // mutable) + // Set the modified 'data' back to the Mdms object (optional, since it's mutable) ((ObjectNode) dataNode).set("boundary", boundaryNode); mdms.setData(dataNode); } else { @@ -202,10 +201,17 @@ public DefaultDataRequest setupDefaultData(DataSetupRequest dataSetupRequest) { if (Objects.equals(dataSetupRequest.getModule(), "PGR")) { createPgrWorkflowConfig(dataSetupRequest.getTargetTenantId()); - defaultDataRequest.setSchemaCodes(serviceConfig.getMdmsSchemacodeMap().get("PGR")); } - if (Objects.equals(dataSetupRequest.getModule(), "HRMS")) { - defaultDataRequest.setSchemaCodes(serviceConfig.getMdmsSchemacodeMap().get("HRMS")); + + if(dataSetupRequest.getSchemaCodes() == null) { + if (Objects.equals(dataSetupRequest.getModule(), "PGR")) { + defaultDataRequest.setSchemaCodes(serviceConfig.getMdmsSchemacodeMap().get("PGR")); + } + if (Objects.equals(dataSetupRequest.getModule(), "HRMS")) { + defaultDataRequest.setSchemaCodes(serviceConfig.getMdmsSchemacodeMap().get("HRMS")); + } + } else { + defaultDataRequest.setSchemaCodes(dataSetupRequest.getSchemaCodes()); } try { diff --git a/core-services/default-data-handler/src/main/java/org/egov/handler/web/controller/DataHandlerController.java b/core-services/default-data-handler/src/main/java/org/egov/handler/web/controller/DataHandlerController.java index 9afde209a6..2bd4d772b0 100644 --- a/core-services/default-data-handler/src/main/java/org/egov/handler/web/controller/DataHandlerController.java +++ b/core-services/default-data-handler/src/main/java/org/egov/handler/web/controller/DataHandlerController.java @@ -38,10 +38,9 @@ public ResponseEntity DefaultDataCreatePost(@Valid @RequestBo DataSetupResponse dataSetupResponse = DataSetupResponse.builder() .responseInfo(responseInfo) .targetTenantId(defaultDataRequest.getTargetTenantId()) + .module(dataSetupRequest.getModule()) .schemaCodes(defaultDataRequest.getSchemaCodes()) .onlySchemas(defaultDataRequest.getOnlySchemas()) - .locale(defaultDataRequest.getLocale()) - .modules(defaultDataRequest.getModules()) .build(); return new ResponseEntity<>(dataSetupResponse, HttpStatus.ACCEPTED); } diff --git a/core-services/default-data-handler/src/main/java/org/egov/handler/web/models/DataSetupRequest.java b/core-services/default-data-handler/src/main/java/org/egov/handler/web/models/DataSetupRequest.java index c86b2d717d..5e3cbf4463 100644 --- a/core-services/default-data-handler/src/main/java/org/egov/handler/web/models/DataSetupRequest.java +++ b/core-services/default-data-handler/src/main/java/org/egov/handler/web/models/DataSetupRequest.java @@ -3,10 +3,13 @@ import com.fasterxml.jackson.annotation.JsonProperty; import jakarta.validation.Valid; import jakarta.validation.constraints.NotNull; +import jakarta.validation.constraints.Size; import lombok.*; import org.egov.common.contract.request.RequestInfo; import org.springframework.validation.annotation.Validated; +import java.util.List; + @Validated @Data @AllArgsConstructor @@ -30,6 +33,10 @@ public class DataSetupRequest { @Valid private String module = null; + @JsonProperty("schemaCodes") + @Size(min = 1, max = 128) + private List schemaCodes = null; + @JsonProperty("onlySchemas") @Valid private Boolean onlySchemas = Boolean.TRUE; diff --git a/core-services/default-data-handler/src/main/java/org/egov/handler/web/models/DataSetupResponse.java b/core-services/default-data-handler/src/main/java/org/egov/handler/web/models/DataSetupResponse.java index 9e6ed832f6..8a3892fb2c 100644 --- a/core-services/default-data-handler/src/main/java/org/egov/handler/web/models/DataSetupResponse.java +++ b/core-services/default-data-handler/src/main/java/org/egov/handler/web/models/DataSetupResponse.java @@ -23,6 +23,10 @@ public class DataSetupResponse { @Valid private String targetTenantId = null; + @JsonProperty("module") + @Valid + private String module = null; + @JsonProperty("schemaCodes") @Valid private List schemaCodes = null; @@ -31,12 +35,4 @@ public class DataSetupResponse { @Valid private Boolean onlySchemas = Boolean.TRUE; - @JsonProperty("locale") - @Valid - private String locale = null; - - @JsonProperty("modules") - @Valid - private List modules = null; - } From 6343610b5764c0e2ec2bc468325202ee24d2914d Mon Sep 17 00:00:00 2001 From: varunreddy-egov Date: Thu, 19 Sep 2024 17:45:46 +0530 Subject: [PATCH 11/14] Modified MDMS data create error handling --- .../handler/service/DataHandlerService.java | 42 ++++++++----------- .../org/egov/handler/util/MdmsV2Util.java | 42 ++++++++++++++++--- 2 files changed, 55 insertions(+), 29 deletions(-) diff --git a/core-services/default-data-handler/src/main/java/org/egov/handler/service/DataHandlerService.java b/core-services/default-data-handler/src/main/java/org/egov/handler/service/DataHandlerService.java index 560e10f77a..026d976a8a 100644 --- a/core-services/default-data-handler/src/main/java/org/egov/handler/service/DataHandlerService.java +++ b/core-services/default-data-handler/src/main/java/org/egov/handler/service/DataHandlerService.java @@ -238,6 +238,8 @@ private void createPgrWorkflowConfig(String targetTenantId) { public void addMdmsData(DataSetupRequest dataSetupRequest) { + List filteredMdmsData = new ArrayList<>(); + Resource resource = resourceLoader.getResource("classpath:MDMS.json"); try (InputStream inputStream = resource.getInputStream()) { @@ -264,33 +266,25 @@ public void addMdmsData(DataSetupRequest dataSetupRequest) { mdmsMap.put(module, mdmsList); } - - // Get the target tenant ID from the request - String targetTenantId = dataSetupRequest.getTargetTenantId(); - - // Filter the mdmsData based on the targetTenantId if needed - List filteredMdmsData = mdmsMap.get(dataSetupRequest.getModule()); - - // Iterate over each filtered Mdms entry and create an MDMS entry - for (Mdms mdms : filteredMdmsData) { - - mdms.setTenantId(targetTenantId); - mdms.setSchemaCode("ACCESSCONTROL-ROLEACTIONS.roleactions"); - String uniqueId = mdms.getData().get("actionid").asText() + "." + mdms.getData().get("rolecode").asText(); - mdms.setUniqueIdentifier(uniqueId); - // Build an MdmsRequest for each entry - MdmsRequest mdmsRequest = MdmsRequest.builder() - .requestInfo(dataSetupRequest.getRequestInfo()) - .mdms(mdms) // Assuming MdmsRequest has a field to set Mdms data - .build(); - - // Call createMdmsData for each mdmsRequest - mdmsV2Util.createMdmsData(mdmsRequest); - } - + filteredMdmsData = mdmsMap.get(dataSetupRequest.getModule()); } catch (IOException e) { throw new CustomException("IO_EXCEPTION", "Error reading or mapping JSON file: " + e.getMessage()); } + // Iterate over each filtered Mdms entry and create an MDMS entry + for (Mdms mdms : filteredMdmsData) { + mdms.setTenantId(dataSetupRequest.getTargetTenantId()); + mdms.setSchemaCode("ACCESSCONTROL-ROLEACTIONS.roleactions"); + String uniqueId = mdms.getData().get("actionid").asText() + "." + mdms.getData().get("rolecode").asText(); + mdms.setUniqueIdentifier(uniqueId); + // Build an MdmsRequest for each entry + MdmsRequest mdmsRequest = MdmsRequest.builder() + .requestInfo(dataSetupRequest.getRequestInfo()) + .mdms(mdms) // Assuming MdmsRequest has a field to set Mdms data + .build(); + + // Call createMdmsData for each mdmsRequest + mdmsV2Util.createMdmsData(mdmsRequest); + } } } diff --git a/core-services/default-data-handler/src/main/java/org/egov/handler/util/MdmsV2Util.java b/core-services/default-data-handler/src/main/java/org/egov/handler/util/MdmsV2Util.java index 728cecf738..443a3ad19e 100644 --- a/core-services/default-data-handler/src/main/java/org/egov/handler/util/MdmsV2Util.java +++ b/core-services/default-data-handler/src/main/java/org/egov/handler/util/MdmsV2Util.java @@ -1,5 +1,7 @@ package org.egov.handler.util; +import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.databind.ObjectMapper; import lombok.extern.slf4j.Slf4j; import org.egov.common.contract.response.ResponseInfo; import org.egov.handler.config.ServiceConfiguration; @@ -7,6 +9,7 @@ import org.egov.tracer.model.CustomException; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; +import org.springframework.web.client.HttpClientErrorException; import org.springframework.web.client.RestTemplate; @Slf4j @@ -35,12 +38,12 @@ public void createDefaultMdmsData(DefaultMdmsDataRequest defaultMdmsDataRequest) } } - public SchemaDefinitionResponse createMdmsSchema(SchemaDefinitionRequest schemaDefinitionRequest) { + public void createMdmsSchema(SchemaDefinitionRequest schemaDefinitionRequest) { StringBuilder uri = new StringBuilder(); uri.append(serviceConfig.getMdmsSchemaCreateURI()); try { - return restTemplate.postForObject(uri.toString(), schemaDefinitionRequest, SchemaDefinitionResponse.class); + restTemplate.postForObject(uri.toString(), schemaDefinitionRequest, SchemaDefinitionResponse.class); } catch (Exception e) { log.error("Error creating MDMS schema for {} : {}", schemaDefinitionRequest.getSchemaDefinition().getTenantId(), e.getMessage()); throw new CustomException("MDMS_SCHEMA_CREATE_FAILED", "Failed to create mdms schema for " + schemaDefinitionRequest.getSchemaDefinition().getTenantId() + " : " + e.getMessage()); @@ -59,17 +62,25 @@ public SchemaDefinitionResponse searchMdmsSchema(SchemaDefSearchRequest schemaDe } } - public MdmsResponseV2 createMdmsData(MdmsRequest mdmsRequest) { + public void createMdmsData(MdmsRequest mdmsRequest) { StringBuilder uri = new StringBuilder(); uri.append(serviceConfig.getMdmsDataCreateURI()); uri.append("/"); uri.append(mdmsRequest.getMdms().getSchemaCode()); try { - return restTemplate.postForObject(uri.toString(), mdmsRequest, MdmsResponseV2.class); + restTemplate.postForObject(uri.toString(), mdmsRequest, MdmsResponseV2.class); } catch (Exception e) { + if (e instanceof HttpClientErrorException httpException && (httpException.getStatusCode().value() == 400)) { + String responseBody = httpException.getResponseBodyAsString(); + JsonNode errorNode = parseErrorResponse(responseBody); + if (errorNode != null && isDuplicateRecordError(errorNode)) { + log.error("Duplicate record error for schema {}: {}", mdmsRequest.getMdms().getSchemaCode(), httpException.getMessage()); + return; // No need to throw further if it's a duplicate record + } + } log.error("Error creating MDMS data for {} : {}", mdmsRequest.getMdms().getTenantId(), e.getMessage()); - throw new CustomException("MDMS_DATA_CREATE_FAILED", "Failed to create mdms schema for " + mdmsRequest.getMdms().getTenantId() + " : " + e.getMessage()); + throw new CustomException("MDMS_DATA_CREATE_FAILED", "Failed to create mdms data for " + mdmsRequest.getMdms().getTenantId() + " : " + e.getMessage()); } } @@ -84,4 +95,25 @@ public MdmsResponseV2 searchMdmsData(MdmsCriteriaReqV2 mdmsCriteriaReqV2) { throw new CustomException("MDMS_DATA_SEARCH_FAILED", "Failed to search mdms data for " + mdmsCriteriaReqV2.getMdmsCriteria().getTenantId() + " : " + e.getMessage()); } } + + private JsonNode parseErrorResponse(String responseBody) { + try { + return new ObjectMapper().readTree(responseBody); + } catch (Exception e) { + log.error("Failed to parse error response body: {}", responseBody); + return null; + } + } + + private boolean isDuplicateRecordError(JsonNode errorNode) { + JsonNode errors = errorNode.path("Errors"); + if (errors.isArray()) { + for (JsonNode error : errors) { + if ("DUPLICATE_RECORD".equals(error.path("code").asText())) { + return true; + } + } + } + return false; + } } From 1c538c9bd13318c8a6b3f75eb13ef5375b89168f Mon Sep 17 00:00:00 2001 From: varunreddy-egov Date: Thu, 19 Sep 2024 17:55:22 +0530 Subject: [PATCH 12/14] Modified localization module name --- .../java/org/egov/handler/config/ServiceConfiguration.java | 3 +++ .../src/main/java/org/egov/handler/kafka/TenantConsumer.java | 2 +- .../src/main/resources/application.properties | 1 + 3 files changed, 5 insertions(+), 1 deletion(-) diff --git a/core-services/default-data-handler/src/main/java/org/egov/handler/config/ServiceConfiguration.java b/core-services/default-data-handler/src/main/java/org/egov/handler/config/ServiceConfiguration.java index ac78793871..e5ddc47b41 100644 --- a/core-services/default-data-handler/src/main/java/org/egov/handler/config/ServiceConfiguration.java +++ b/core-services/default-data-handler/src/main/java/org/egov/handler/config/ServiceConfiguration.java @@ -53,6 +53,9 @@ public class ServiceConfiguration { @Value("#{'${default.localization.module.create.list}'.split(',')}") private List defaultLocalizationModuleList; + @Value("${tenant.localization.module}") + private String tenantLocalizationModule; + // User Config @Value("${egov.user.host}") private String userHost; diff --git a/core-services/default-data-handler/src/main/java/org/egov/handler/kafka/TenantConsumer.java b/core-services/default-data-handler/src/main/java/org/egov/handler/kafka/TenantConsumer.java index b1a92ab2cf..08e88ea0fb 100644 --- a/core-services/default-data-handler/src/main/java/org/egov/handler/kafka/TenantConsumer.java +++ b/core-services/default-data-handler/src/main/java/org/egov/handler/kafka/TenantConsumer.java @@ -63,7 +63,7 @@ public void listen(final HashMap record, @Header(KafkaHeaders.RE .requestInfo(tenantRequest.getRequestInfo()) .targetTenantId(tenantRequest.getTenant().getCode()) .locale(serviceConfig.getDefaultLocalizationLocale()) - .modules(Collections.singletonList("rainmaker-common")) + .modules(Collections.singletonList(serviceConfig.getTenantLocalizationModule())) .defaultTenantId(serviceConfig.getDefaultTenantId()) .build(); diff --git a/core-services/default-data-handler/src/main/resources/application.properties b/core-services/default-data-handler/src/main/resources/application.properties index 79067eeba8..d96f49f39c 100644 --- a/core-services/default-data-handler/src/main/resources/application.properties +++ b/core-services/default-data-handler/src/main/resources/application.properties @@ -57,6 +57,7 @@ egov.localization.upsert.path=/localization/messages/v1/_upsert default.localization.locale=en_IN default.localization.module.create.list=digit-ui,digit-sandbox,rainmaker-common,digit-privacy-policy,rainmaker-pgr,rainmaker-hr,rainmaker-workbench,rainmaker-mdms,rainmaker-schema +tenant.localization.module=digit-tenants #User config egov.user.host=http://localhost:8083 From 6100f3fcdf7f86a9293230872d501c433b8acb95 Mon Sep 17 00:00:00 2001 From: varunreddy-egov Date: Fri, 20 Sep 2024 13:50:42 +0530 Subject: [PATCH 13/14] Modified egov-location.TenantBoundary schema code logic --- .../handler/service/DataHandlerService.java | 70 ++++++++----------- 1 file changed, 30 insertions(+), 40 deletions(-) diff --git a/core-services/default-data-handler/src/main/java/org/egov/handler/service/DataHandlerService.java b/core-services/default-data-handler/src/main/java/org/egov/handler/service/DataHandlerService.java index 026d976a8a..38ed5db9f2 100644 --- a/core-services/default-data-handler/src/main/java/org/egov/handler/service/DataHandlerService.java +++ b/core-services/default-data-handler/src/main/java/org/egov/handler/service/DataHandlerService.java @@ -90,48 +90,38 @@ public void createDefaultData(DefaultDataRequest defaultDataRequest) { private void createTenantBoundarydata(RequestInfo requestInfo, String targetTenantId) { List schemaCodes = new ArrayList<>(Collections.singletonList(TENANT_BOUNDARY_SCHEMA)); - SchemaDefCriteria schemaDefCriteria = SchemaDefCriteria.builder() - .tenantId(serviceConfig.getDefaultTenantId()) - .codes(schemaCodes) - .build(); - SchemaDefSearchRequest schemaDefSearchRequest = SchemaDefSearchRequest.builder() + DefaultMdmsDataRequest defaultMdmsDataRequest = DefaultMdmsDataRequest.builder() .requestInfo(requestInfo) - .schemaDefCriteria(schemaDefCriteria) + .targetTenantId(targetTenantId) + .schemaCodes(schemaCodes) + .onlySchemas(Boolean.TRUE) + .defaultTenantId(serviceConfig.getDefaultTenantId()) .build(); - SchemaDefinitionResponse schemaSearchResponse = mdmsV2Util.searchMdmsSchema(schemaDefSearchRequest); - List schemaDefinitionList = schemaSearchResponse.getSchemaDefinitions(); - for (SchemaDefinition schemaDefinition : schemaDefinitionList) { - schemaDefinition.setTenantId(targetTenantId); - SchemaDefinitionRequest schemaDefinitionRequest = SchemaDefinitionRequest.builder() - .requestInfo(requestInfo) - .schemaDefinition(schemaDefinition) - .build(); - mdmsV2Util.createMdmsSchema(schemaDefinitionRequest); - // Search data for the schema code in default tenetId - List mdmsList = getAllMdmsResults(serviceConfig.getDefaultTenantId(), schemaDefinition.getCode(), - requestInfo); - // Create schema data in the given tenantId - for (Mdms mdms : mdmsList) { - mdms.setTenantId(targetTenantId); - - JsonNode dataNode = mdms.getData(); - if (dataNode.has("boundary")) { - // Cast the 'boundary' node to ObjectNode so that we can modify it - ObjectNode boundaryNode = (ObjectNode) dataNode.get("boundary"); - - // Modify the 'code' field within the 'boundary' node - boundaryNode.put("code", targetTenantId); - - // Set the modified 'data' back to the Mdms object (optional, since it's mutable) - ((ObjectNode) dataNode).set("boundary", boundaryNode); - mdms.setData(dataNode); - } else { - log.info("Boundary node does not exist in the data."); - } - MdmsRequest mdmsRequest = MdmsRequest.builder().requestInfo(requestInfo).mdms(mdms).build(); - log.info("{} : {}", mdms.getSchemaCode(), mdms.getUniqueIdentifier()); - mdmsV2Util.createMdmsData(mdmsRequest); + mdmsV2Util.createDefaultMdmsData(defaultMdmsDataRequest); + + // Search data for the schema code in default tenetId + List mdmsList = getAllMdmsResults(serviceConfig.getDefaultTenantId(), TENANT_BOUNDARY_SCHEMA, requestInfo); + // Create schema data in the given tenantId + for (Mdms mdms : mdmsList) { + mdms.setTenantId(targetTenantId); + + JsonNode dataNode = mdms.getData(); + if (dataNode.has("boundary")) { + // Cast the 'boundary' node to ObjectNode so that we can modify it + ObjectNode boundaryNode = (ObjectNode) dataNode.get("boundary"); + + // Modify the 'code' field within the 'boundary' node + boundaryNode.put("code", targetTenantId); + + // Set the modified 'data' back to the Mdms object (optional, since it's mutable) + ((ObjectNode) dataNode).set("boundary", boundaryNode); + mdms.setData(dataNode); + } else { + log.info("Boundary node does not exist in the data."); } + MdmsRequest mdmsRequest = MdmsRequest.builder().requestInfo(requestInfo).mdms(mdms).build(); + log.info("{} : {}", mdms.getSchemaCode(), mdms.getUniqueIdentifier()); + mdmsV2Util.createMdmsData(mdmsRequest); } } @@ -203,7 +193,7 @@ public DefaultDataRequest setupDefaultData(DataSetupRequest dataSetupRequest) { createPgrWorkflowConfig(dataSetupRequest.getTargetTenantId()); } - if(dataSetupRequest.getSchemaCodes() == null) { + if (dataSetupRequest.getSchemaCodes() == null) { if (Objects.equals(dataSetupRequest.getModule(), "PGR")) { defaultDataRequest.setSchemaCodes(serviceConfig.getMdmsSchemacodeMap().get("PGR")); } From 803fcff7f204c7e5590cdb5ce2a1afdb84049733 Mon Sep 17 00:00:00 2001 From: varunreddy-egov Date: Fri, 20 Sep 2024 18:07:12 +0530 Subject: [PATCH 14/14] Modified digit-tenants localization logic --- .../org/egov/handler/kafka/TenantConsumer.java | 13 +------------ .../org/egov/handler/util/LocalizationUtil.java | 14 +++++++------- 2 files changed, 8 insertions(+), 19 deletions(-) diff --git a/core-services/default-data-handler/src/main/java/org/egov/handler/kafka/TenantConsumer.java b/core-services/default-data-handler/src/main/java/org/egov/handler/kafka/TenantConsumer.java index 08e88ea0fb..cd5fb6912e 100644 --- a/core-services/default-data-handler/src/main/java/org/egov/handler/kafka/TenantConsumer.java +++ b/core-services/default-data-handler/src/main/java/org/egov/handler/kafka/TenantConsumer.java @@ -10,7 +10,6 @@ import org.egov.handler.util.OtpUtil; import org.egov.handler.util.UserUtil; import org.egov.handler.web.models.DefaultDataRequest; -import org.egov.handler.web.models.DefaultLocalizationDataRequest; import org.egov.handler.web.models.TenantRequest; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.kafka.annotation.KafkaListener; @@ -18,7 +17,6 @@ import org.springframework.messaging.handler.annotation.Header; import org.springframework.stereotype.Component; -import java.util.Collections; import java.util.HashMap; import java.util.Objects; @@ -58,16 +56,7 @@ public void listen(final HashMap record, @Header(KafkaHeaders.RE .build(); tenantRequest.getRequestInfo().setUserInfo(userInfo); - - DefaultLocalizationDataRequest defaultLocalizationDataRequest = DefaultLocalizationDataRequest.builder() - .requestInfo(tenantRequest.getRequestInfo()) - .targetTenantId(tenantRequest.getTenant().getCode()) - .locale(serviceConfig.getDefaultLocalizationLocale()) - .modules(Collections.singletonList(serviceConfig.getTenantLocalizationModule())) - .defaultTenantId(serviceConfig.getDefaultTenantId()) - .build(); - - localizationUtil.upsertLocalization(defaultLocalizationDataRequest, tenantRequest); + localizationUtil.upsertLocalization(tenantRequest); // create user only for root tenant if (Objects.isNull(tenantRequest.getTenant().getParentId())) { diff --git a/core-services/default-data-handler/src/main/java/org/egov/handler/util/LocalizationUtil.java b/core-services/default-data-handler/src/main/java/org/egov/handler/util/LocalizationUtil.java index 13ec7f597e..71ff11352f 100644 --- a/core-services/default-data-handler/src/main/java/org/egov/handler/util/LocalizationUtil.java +++ b/core-services/default-data-handler/src/main/java/org/egov/handler/util/LocalizationUtil.java @@ -38,13 +38,13 @@ public void createLocalizationData(DefaultLocalizationDataRequest defaultLocaliz } } - public void upsertLocalization(DefaultLocalizationDataRequest defaultLocalizationDataRequest, TenantRequest tenantRequest) { + public void upsertLocalization(TenantRequest tenantRequest) { List messageList = generateDynamicMessage(tenantRequest); - defaultLocalizationDataRequest.getRequestInfo().getUserInfo().setId(128L); + tenantRequest.getRequestInfo().getUserInfo().setId(128L); CreateMessagesRequest createMessagesRequest = CreateMessagesRequest.builder() - .requestInfo(defaultLocalizationDataRequest.getRequestInfo()) - .tenantId(defaultLocalizationDataRequest.getTargetTenantId()) + .requestInfo(tenantRequest.getRequestInfo()) + .tenantId(tenantRequest.getTenant().getCode()) .messages(messageList) .build(); @@ -53,8 +53,8 @@ public void upsertLocalization(DefaultLocalizationDataRequest defaultLocalizatio try { restTemplate.postForObject(uri.toString(), createMessagesRequest, ResponseInfo.class); } catch (Exception e) { - log.error("Error creating Tenant localization data for {} : {}", defaultLocalizationDataRequest.getTargetTenantId(), e.getMessage()); - throw new CustomException("TENANT", "Failed to create localization data for " + defaultLocalizationDataRequest.getTargetTenantId() + " : " + e.getMessage()); + log.error("Error creating Tenant localization data for {} : {}", tenantRequest.getTenant().getCode(), e.getMessage()); + throw new CustomException("TENANT", "Failed to create localization data for " + tenantRequest.getTenant().getCode() + " : " + e.getMessage()); } } @@ -72,7 +72,7 @@ public List generateDynamicMessage(TenantRequest tenantRequest) { Message message = Message.builder() .code(ulbKey) - .module("rainmaker-common") + .module(serviceConfig.getTenantLocalizationModule()) .message(tenant.getName()) .locale("en_IN") .build();