FINERACT-2169: Refactor field configuration api controller;
This commit is contained in:
committed by
Adam Saghy
parent
65b74ee87b
commit
1b9459b7b4
+3
-29
@@ -20,28 +20,15 @@ package org.apache.fineract.portfolio.address.api;
|
||||
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
import io.swagger.v3.oas.annotations.Parameter;
|
||||
import io.swagger.v3.oas.annotations.media.ArraySchema;
|
||||
import io.swagger.v3.oas.annotations.media.Content;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import io.swagger.v3.oas.annotations.responses.ApiResponse;
|
||||
import io.swagger.v3.oas.annotations.responses.ApiResponses;
|
||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||
import jakarta.ws.rs.Consumes;
|
||||
import jakarta.ws.rs.GET;
|
||||
import jakarta.ws.rs.Path;
|
||||
import jakarta.ws.rs.PathParam;
|
||||
import jakarta.ws.rs.Produces;
|
||||
import jakarta.ws.rs.core.Context;
|
||||
import jakarta.ws.rs.core.MediaType;
|
||||
import jakarta.ws.rs.core.UriInfo;
|
||||
import java.util.Arrays;
|
||||
import java.util.Collection;
|
||||
import java.util.HashSet;
|
||||
import java.util.Set;
|
||||
import java.util.List;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.apache.fineract.infrastructure.core.api.ApiRequestParameterHelper;
|
||||
import org.apache.fineract.infrastructure.core.serialization.ApiRequestJsonSerializationSettings;
|
||||
import org.apache.fineract.infrastructure.core.serialization.DefaultToApiJsonSerializer;
|
||||
import org.apache.fineract.infrastructure.security.service.PlatformSecurityContext;
|
||||
import org.apache.fineract.portfolio.address.data.FieldConfigurationData;
|
||||
import org.apache.fineract.portfolio.address.service.FieldConfigurationReadPlatformService;
|
||||
@@ -55,30 +42,17 @@ import org.springframework.stereotype.Component;
|
||||
@RequiredArgsConstructor
|
||||
public class EntityFieldConfigurationApiResource {
|
||||
|
||||
private static final Set<String> RESPONSE_DATA_PARAMETERS = new HashSet<>(
|
||||
Arrays.asList("clientAddressId", "client_id", "address_id", "address_type_id", "isActive", "fieldConfigurationId", "entity",
|
||||
"table", "field", "is_enabled", "is_mandatory", "validation_regex"));
|
||||
private static final String RESOURCE_NAME_FOR_PERMISSIONS = "Address";
|
||||
private final PlatformSecurityContext context;
|
||||
private final FieldConfigurationReadPlatformService readPlatformServicefld;
|
||||
private final DefaultToApiJsonSerializer<FieldConfigurationData> toApiJsonSerializerfld;
|
||||
private final ApiRequestParameterHelper apiRequestParameterHelper;
|
||||
|
||||
@GET
|
||||
@Consumes({ MediaType.APPLICATION_JSON })
|
||||
@Produces({ MediaType.APPLICATION_JSON })
|
||||
@Operation(summary = "Retrieves the Entity Field Configuration", description = "It retrieves all the Entity Field Configuration")
|
||||
@ApiResponses({
|
||||
@ApiResponse(responseCode = "200", description = "OK", content = @Content(array = @ArraySchema(schema = @Schema(implementation = EntityFieldConfigurationApiResourcesSwagger.GetFieldConfigurationEntityResponse.class)))) })
|
||||
public String getAddresses(@PathParam("entity") @Parameter(description = "entity") final String entityname,
|
||||
@Context final UriInfo uriInfo) {
|
||||
public List<FieldConfigurationData> getAddresses(@PathParam("entity") @Parameter(description = "entity") final String entityname) {
|
||||
this.context.authenticatedUser().validateHasReadPermission(RESOURCE_NAME_FOR_PERMISSIONS);
|
||||
|
||||
final Collection<FieldConfigurationData> fldconfig = this.readPlatformServicefld.retrieveFieldConfiguration(entityname);
|
||||
|
||||
final ApiRequestJsonSerializationSettings settings = this.apiRequestParameterHelper.process(uriInfo.getQueryParameters());
|
||||
return this.toApiJsonSerializerfld.serialize(settings, fldconfig, RESPONSE_DATA_PARAMETERS);
|
||||
|
||||
return this.readPlatformServicefld.retrieveFieldConfiguration(entityname);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
-51
@@ -1,51 +0,0 @@
|
||||
/**
|
||||
* Licensed to the Apache Software Foundation (ASF) under one
|
||||
* or more contributor license agreements. See the NOTICE file
|
||||
* distributed with this work for additional information
|
||||
* regarding copyright ownership. The ASF licenses this file
|
||||
* to you under the Apache License, Version 2.0 (the
|
||||
* "License"); you may not use this file except in compliance
|
||||
* with the License. You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing,
|
||||
* software distributed under the License is distributed on an
|
||||
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
* KIND, either express or implied. See the License for the
|
||||
* specific language governing permissions and limitations
|
||||
* under the License.
|
||||
*/
|
||||
package org.apache.fineract.portfolio.address.api;
|
||||
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
|
||||
/**
|
||||
* Created by Chirag Gupta on 12/01/17.
|
||||
*/
|
||||
@SuppressWarnings({ "MemberName" })
|
||||
final class EntityFieldConfigurationApiResourcesSwagger {
|
||||
|
||||
private EntityFieldConfigurationApiResourcesSwagger() {}
|
||||
|
||||
@Schema(description = "GetFieldConfigurationEntityResponse")
|
||||
public static final class GetFieldConfigurationEntityResponse {
|
||||
|
||||
private GetFieldConfigurationEntityResponse() {}
|
||||
|
||||
@Schema(example = "1")
|
||||
public Long fieldConfigurationId;
|
||||
@Schema(example = "ADDRESS")
|
||||
public String entity;
|
||||
@Schema(example = "CLIENT")
|
||||
public String subentity;
|
||||
@Schema(example = "addressType")
|
||||
public String field;
|
||||
@Schema(example = "true")
|
||||
public String is_enabled;
|
||||
@Schema(example = "false")
|
||||
public String is_mandatory;
|
||||
@Schema(example = " ")
|
||||
public String validation_regex;
|
||||
}
|
||||
}
|
||||
+6
-57
@@ -18,64 +18,13 @@
|
||||
*/
|
||||
package org.apache.fineract.portfolio.address.data;
|
||||
|
||||
public final class FieldConfigurationData {
|
||||
import java.io.Serial;
|
||||
import java.io.Serializable;
|
||||
|
||||
private final long fieldConfigurationId;
|
||||
public record FieldConfigurationData(Long fieldConfigurationId, String entity, String subentity, String field, boolean isEnabled,
|
||||
boolean isMandatory, String validationRegex) implements Serializable {
|
||||
|
||||
private final String entity;
|
||||
|
||||
private final String subentity;
|
||||
|
||||
private final String field;
|
||||
|
||||
private final boolean isEnabled;
|
||||
|
||||
private final boolean isMandatory;
|
||||
|
||||
private final String validationRegex;
|
||||
|
||||
private FieldConfigurationData(final long fieldConfigurationId, final String entity, final String subentity, final String field,
|
||||
final boolean isEnabled, final boolean isMandatory, final String validationRegex) {
|
||||
this.fieldConfigurationId = fieldConfigurationId;
|
||||
this.entity = entity;
|
||||
this.subentity = subentity;
|
||||
this.field = field;
|
||||
this.isEnabled = isEnabled;
|
||||
this.isMandatory = isMandatory;
|
||||
this.validationRegex = validationRegex;
|
||||
}
|
||||
|
||||
public static FieldConfigurationData instance(final long fieldConfigurationId, final String entity, final String subentity,
|
||||
final String field, final boolean isEnabled, final boolean isMandatory, final String validationRegex) {
|
||||
return new FieldConfigurationData(fieldConfigurationId, entity, subentity, field, isEnabled, isMandatory, validationRegex);
|
||||
}
|
||||
|
||||
public long getFieldConfigurationId() {
|
||||
return this.fieldConfigurationId;
|
||||
}
|
||||
|
||||
public String getEntity() {
|
||||
return this.entity;
|
||||
}
|
||||
|
||||
public String getSubEntity() {
|
||||
return this.subentity;
|
||||
}
|
||||
|
||||
public String getField() {
|
||||
return this.field;
|
||||
}
|
||||
|
||||
public boolean isEnabled() {
|
||||
return this.isEnabled;
|
||||
}
|
||||
|
||||
public boolean isIs_mandatory() {
|
||||
return this.isMandatory;
|
||||
}
|
||||
|
||||
public String getValidation_regex() {
|
||||
return this.validationRegex;
|
||||
}
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
}
|
||||
|
||||
+7
-9
@@ -65,10 +65,9 @@ public class AddressCommandFromApiJsonDeserializer {
|
||||
final JsonElement element = this.fromApiJsonHelper.parse(json);
|
||||
final List<FieldConfigurationData> configurationData = new ArrayList<>(this.readservice.retrieveFieldConfigurationList("ADDRESS"));
|
||||
// validate the json fields from the configuration data fields
|
||||
final List<FieldConfigurationData> configData = configurationData.stream().filter(FieldConfigurationData::isEnabled)
|
||||
.collect(Collectors.toList());
|
||||
final List<FieldConfigurationData> configData = configurationData.stream().filter(FieldConfigurationData::isEnabled).toList();
|
||||
|
||||
final Set<String> supportedParameters = configData.stream().map(FieldConfigurationData::getField).collect(Collectors.toSet());
|
||||
final Set<String> supportedParameters = configData.stream().map(FieldConfigurationData::field).collect(Collectors.toSet());
|
||||
|
||||
supportedParameters.add("locale");
|
||||
supportedParameters.add("dateFormat");
|
||||
@@ -77,20 +76,19 @@ public class AddressCommandFromApiJsonDeserializer {
|
||||
this.fromApiJsonHelper.checkForUnsupportedParameters(typeOfMap, json, supportedParameters);
|
||||
|
||||
configData.forEach(fieldConfiguration -> {
|
||||
final String field = fieldConfiguration.getField().equals("addressType") ? "addressTypeId" : fieldConfiguration.getField();
|
||||
final String field = fieldConfiguration.field().equals("addressType") ? "addressTypeId" : fieldConfiguration.field();
|
||||
final String fieldValue = this.fromApiJsonHelper.extractStringNamed(field, element);
|
||||
|
||||
if (fieldConfiguration.getField().equals("addressType") && fromNewClient) {
|
||||
if (fieldConfiguration.field().equals("addressType") && fromNewClient) {
|
||||
baseDataValidator.reset().parameter(field).value(fieldValue).notBlank();
|
||||
} else {
|
||||
if (fieldConfiguration.isIs_mandatory() && fromNewClient) {
|
||||
if (fieldConfiguration.isMandatory() && fromNewClient) {
|
||||
baseDataValidator.reset().parameter(field).value(fieldValue).notBlank();
|
||||
}
|
||||
}
|
||||
|
||||
if (!fieldConfiguration.getValidation_regex().isEmpty()) {
|
||||
baseDataValidator.reset().parameter(field).value(fieldValue)
|
||||
.matchesRegularExpression(fieldConfiguration.getValidation_regex());
|
||||
if (!fieldConfiguration.validationRegex().isEmpty()) {
|
||||
baseDataValidator.reset().parameter(field).value(fieldValue).matchesRegularExpression(fieldConfiguration.validationRegex());
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
+1
-2
@@ -18,13 +18,12 @@
|
||||
*/
|
||||
package org.apache.fineract.portfolio.address.service;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
import org.apache.fineract.portfolio.address.data.FieldConfigurationData;
|
||||
|
||||
public interface FieldConfigurationReadPlatformService {
|
||||
|
||||
Collection<FieldConfigurationData> retrieveFieldConfiguration(String entity);
|
||||
List<FieldConfigurationData> retrieveFieldConfiguration(String entity);
|
||||
|
||||
List<FieldConfigurationData> retrieveFieldConfigurationList(String entity);
|
||||
}
|
||||
|
||||
+2
-4
@@ -20,7 +20,6 @@ package org.apache.fineract.portfolio.address.service;
|
||||
|
||||
import java.sql.ResultSet;
|
||||
import java.sql.SQLException;
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
import org.apache.fineract.infrastructure.security.service.PlatformSecurityContext;
|
||||
import org.apache.fineract.portfolio.address.data.FieldConfigurationData;
|
||||
@@ -58,14 +57,13 @@ public class FieldConfigurationReadPlatformServiceImpl implements FieldConfigura
|
||||
final boolean is_mandatory = rs.getBoolean("is_mandatory");
|
||||
final String validation_regex = rs.getString("validation_regex");
|
||||
|
||||
return FieldConfigurationData.instance(fieldConfigurationId, entity, subentity, field, is_enabled, is_mandatory,
|
||||
validation_regex);
|
||||
return new FieldConfigurationData(fieldConfigurationId, entity, subentity, field, is_enabled, is_mandatory, validation_regex);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public Collection<FieldConfigurationData> retrieveFieldConfiguration(final String entity) {
|
||||
public List<FieldConfigurationData> retrieveFieldConfiguration(final String entity) {
|
||||
this.context.authenticatedUser();
|
||||
|
||||
final FieldMapper rm = new FieldMapper();
|
||||
|
||||
Reference in New Issue
Block a user