diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/api/InterestRateChartSlabsApiResource.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/api/InterestRateChartSlabsApiResource.java index 1be5c1e9e..95c14edbd 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/api/InterestRateChartSlabsApiResource.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/api/InterestRateChartSlabsApiResource.java @@ -19,19 +19,9 @@ package org.apache.fineract.portfolio.interestratechart.api; import static org.apache.fineract.portfolio.interestratechart.InterestRateChartSlabApiConstants.INTERESTRATE_CHART_SLAB_RESOURCE_NAME; -import static org.apache.fineract.portfolio.interestratechart.InterestRateChartSlabApiConstants.amountRangeFromParamName; -import static org.apache.fineract.portfolio.interestratechart.InterestRateChartSlabApiConstants.amountRangeToParamName; -import static org.apache.fineract.portfolio.interestratechart.InterestRateChartSlabApiConstants.annualInterestRateParamName; -import static org.apache.fineract.portfolio.interestratechart.InterestRateChartSlabApiConstants.currencyCodeParamName; -import static org.apache.fineract.portfolio.interestratechart.InterestRateChartSlabApiConstants.descriptionParamName; -import static org.apache.fineract.portfolio.interestratechart.InterestRateChartSlabApiConstants.fromPeriodParamName; -import static org.apache.fineract.portfolio.interestratechart.InterestRateChartSlabApiConstants.incentivesParamName; -import static org.apache.fineract.portfolio.interestratechart.InterestRateChartSlabApiConstants.periodTypeParamName; -import static org.apache.fineract.portfolio.interestratechart.InterestRateChartSlabApiConstants.toPeriodParamName; 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.parameters.RequestBody; @@ -49,10 +39,7 @@ 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.commands.domain.CommandWrapper; import org.apache.fineract.commands.service.CommandWrapperBuilder; @@ -62,8 +49,8 @@ import org.apache.fineract.infrastructure.core.data.CommandProcessingResult; 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.interestratechart.InterestRateChartSlabApiConstants; import org.apache.fineract.portfolio.interestratechart.data.InterestRateChartSlabData; +import org.apache.fineract.portfolio.interestratechart.data.InterestRateChartStabRequest; import org.apache.fineract.portfolio.interestratechart.service.InterestRateChartSlabReadPlatformService; import org.springframework.stereotype.Component; @@ -78,19 +65,13 @@ public class InterestRateChartSlabsApiResource { private final DefaultToApiJsonSerializer toApiJsonSerializer; private final PortfolioCommandSourceWritePlatformService commandsSourceWritePlatformService; private final ApiRequestParameterHelper apiRequestParameterHelper; - private static final Set INTERESTRATE_CHART_SLAB_RESPONSE_DATA_PARAMETERS = new HashSet<>( - Arrays.asList(InterestRateChartSlabApiConstants.localeParamName, InterestRateChartSlabApiConstants.idParamName, - descriptionParamName, periodTypeParamName, fromPeriodParamName, toPeriodParamName, amountRangeFromParamName, - amountRangeToParamName, annualInterestRateParamName, currencyCodeParamName, incentivesParamName)); @GET @Path("template") @Consumes({ MediaType.APPLICATION_JSON }) @Produces({ MediaType.APPLICATION_JSON }) - public String template(@Context final UriInfo uriInfo, @PathParam("chartId") @Parameter(description = "chartId") final Long chartId) { - InterestRateChartSlabData chartSlab = this.interestRateChartSlabReadPlatformService.retrieveTemplate(); - final ApiRequestJsonSerializationSettings settings = this.apiRequestParameterHelper.process(uriInfo.getQueryParameters()); - return this.toApiJsonSerializer.serialize(settings, chartSlab, INTERESTRATE_CHART_SLAB_RESPONSE_DATA_PARAMETERS); + public InterestRateChartSlabData template(@PathParam("chartId") @Parameter(description = "chartId") final Long chartId) { + return this.interestRateChartSlabReadPlatformService.retrieveTemplate(); } @GET @@ -98,16 +79,10 @@ public class InterestRateChartSlabsApiResource { @Produces({ MediaType.APPLICATION_JSON }) @Operation(summary = "Retrieve all Slabs", description = "Retrieve list of slabs associated with a chart\n" + "\n" + "Example Requests:\n" + "\n" + "interestratecharts/1/chartslabs") - @ApiResponses({ - @ApiResponse(responseCode = "200", description = "OK", content = @Content(array = @ArraySchema(schema = @Schema(implementation = InterestRateChartSlabsApiResourceSwagger.GetInterestRateChartsChartIdChartSlabsResponse.class)))) }) - public String retrieveAll(@PathParam("chartId") @Parameter(description = "chartId") final Long chartId, - @Context final UriInfo uriInfo) { + public List retrieveAll(@PathParam("chartId") @Parameter(description = "chartId") final Long chartId) { this.context.authenticatedUser().validateHasReadPermission(INTERESTRATE_CHART_SLAB_RESOURCE_NAME); - Collection chartSlabs = this.interestRateChartSlabReadPlatformService.retrieveAll(chartId); - final ApiRequestJsonSerializationSettings settings = this.apiRequestParameterHelper.process(uriInfo.getQueryParameters()); - - return this.toApiJsonSerializer.serialize(settings, chartSlabs, INTERESTRATE_CHART_SLAB_RESPONSE_DATA_PARAMETERS); + return this.interestRateChartSlabReadPlatformService.retrieveAll(chartId); } @GET @@ -116,9 +91,7 @@ public class InterestRateChartSlabsApiResource { @Produces({ MediaType.APPLICATION_JSON }) @Operation(summary = "Retrieve a Slab", description = "Retrieve a slab associated with an Interest rate chart\n" + "\n" + "Example Requests:\n" + "\n" + "interestratecharts/1/chartslabs/1\n") - @ApiResponses({ - @ApiResponse(responseCode = "200", description = "OK", content = @Content(schema = @Schema(implementation = InterestRateChartSlabsApiResourceSwagger.GetInterestRateChartsChartIdChartSlabsResponse.class))) }) - public String retrieveOne(@PathParam("chartId") @Parameter(description = "chartId") final Long chartId, + public InterestRateChartSlabData retrieveOne(@PathParam("chartId") @Parameter(description = "chartId") final Long chartId, @PathParam("chartSlabId") @Parameter(description = "chartSlabId") final Long chartSlabId, @Context final UriInfo uriInfo) { this.context.authenticatedUser().validateHasReadPermission(INTERESTRATE_CHART_SLAB_RESOURCE_NAME); @@ -129,7 +102,7 @@ public class InterestRateChartSlabsApiResource { chartSlab = this.interestRateChartSlabReadPlatformService.retrieveWithTemplate(chartSlab); } - return this.toApiJsonSerializer.serialize(settings, chartSlab, INTERESTRATE_CHART_SLAB_RESPONSE_DATA_PARAMETERS); + return chartSlab; } @POST @@ -138,18 +111,16 @@ public class InterestRateChartSlabsApiResource { @Operation(summary = "Create a Slab", description = "Creates a new interest rate slab for an interest rate chart.\n" + "Mandatory Fields\n" + "periodType, fromPeriod, annualInterestRate\n" + "Optional Fields\n" + "toPeriod and description\n" + "Example Requests:\n" + "\n" + "interestratecharts/1/chartslabs") - @RequestBody(required = true, content = @Content(schema = @Schema(implementation = InterestRateChartSlabsApiResourceSwagger.PostInterestRateChartsChartIdChartSlabsRequest.class))) + @RequestBody(required = true, content = @Content(schema = @Schema(implementation = InterestRateChartStabRequest.class))) @ApiResponses({ @ApiResponse(responseCode = "200", description = "OK", content = @Content(schema = @Schema(implementation = InterestRateChartSlabsApiResourceSwagger.PostInterestRateChartsChartIdChartSlabsResponse.class))) }) - public String create(@PathParam("chartId") @Parameter(description = "chartId") final Long chartId, - @Parameter(hidden = true) final String apiRequestBodyAsJson) { + public CommandProcessingResult create(@PathParam("chartId") @Parameter(description = "chartId") final Long chartId, + @Parameter(hidden = true) InterestRateChartStabRequest interestRateChartStabRequest) { final CommandWrapper commandRequest = new CommandWrapperBuilder().createInterestRateChartSlab(chartId) - .withJson(apiRequestBodyAsJson).build(); + .withJson(toApiJsonSerializer.serialize(interestRateChartStabRequest)).build(); - final CommandProcessingResult result = this.commandsSourceWritePlatformService.logCommandSource(commandRequest); - - return this.toApiJsonSerializer.serialize(result); + return this.commandsSourceWritePlatformService.logCommandSource(commandRequest); } @PUT @@ -157,19 +128,17 @@ public class InterestRateChartSlabsApiResource { @Consumes({ MediaType.APPLICATION_JSON }) @Produces({ MediaType.APPLICATION_JSON }) @Operation(summary = "Update a Slab", description = "It updates the Slab from chart") - @RequestBody(required = true, content = @Content(schema = @Schema(implementation = InterestRateChartSlabsApiResourceSwagger.PutInterestRateChartsChartIdChartSlabsChartSlabIdRequest.class))) + @RequestBody(required = true, content = @Content(schema = @Schema(implementation = InterestRateChartStabRequest.class))) @ApiResponses({ @ApiResponse(responseCode = "200", description = "OK", content = @Content(schema = @Schema(implementation = InterestRateChartSlabsApiResourceSwagger.PutInterestRateChartsChartIdChartSlabsChartSlabIdResponse.class))) }) - public String update(@PathParam("chartId") @Parameter(description = "chartId") final Long chartId, + public CommandProcessingResult update(@PathParam("chartId") @Parameter(description = "chartId") final Long chartId, @PathParam("chartSlabId") @Parameter(description = "chartSlabId") final Long chartSlabId, - @Parameter(hidden = true) final String apiRequestBodyAsJson) { + @Parameter(hidden = true) InterestRateChartStabRequest request) { final CommandWrapper commandRequest = new CommandWrapperBuilder().updateInterestRateChartSlab(chartId, chartSlabId) - .withJson(apiRequestBodyAsJson).build(); + .withJson(toApiJsonSerializer.serialize(request)).build(); - final CommandProcessingResult result = this.commandsSourceWritePlatformService.logCommandSource(commandRequest); - - return this.toApiJsonSerializer.serialize(result); + return this.commandsSourceWritePlatformService.logCommandSource(commandRequest); } @DELETE @@ -179,10 +148,9 @@ public class InterestRateChartSlabsApiResource { @Operation(summary = "Delete a Slab", description = "Delete a Slab from a chart") @ApiResponses({ @ApiResponse(responseCode = "200", description = "OK", content = @Content(schema = @Schema(implementation = InterestRateChartSlabsApiResourceSwagger.DeleteInterestRateChartsChartIdChartSlabsResponse.class))) }) - public String delete(@PathParam("chartId") @Parameter(description = "chartId") final Long chartId, + public CommandProcessingResult delete(@PathParam("chartId") @Parameter(description = "chartId") final Long chartId, @PathParam("chartSlabId") @Parameter(description = "chartSlabId") final Long chartSlabId) { final CommandWrapper commandRequest = new CommandWrapperBuilder().deleteInterestRateChartSlab(chartId, chartSlabId).build(); - final CommandProcessingResult result = this.commandsSourceWritePlatformService.logCommandSource(commandRequest); - return this.toApiJsonSerializer.serialize(result); + return this.commandsSourceWritePlatformService.logCommandSource(commandRequest); } } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/api/InterestRateChartSlabsApiResourceSwagger.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/api/InterestRateChartSlabsApiResourceSwagger.java index d3b1c9ab1..a28212fa4 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/api/InterestRateChartSlabsApiResourceSwagger.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/api/InterestRateChartSlabsApiResourceSwagger.java @@ -29,92 +29,6 @@ final class InterestRateChartSlabsApiResourceSwagger { private InterestRateChartSlabsApiResourceSwagger() {} - @Schema(description = "GetInterestRateChartsChartIdChartSlabsResponse") - public static final class GetInterestRateChartsChartIdChartSlabsResponse { - - private GetInterestRateChartsChartIdChartSlabsResponse() {} - - static final class GetInterestRateChartsChartIdChartSlabsIncentives { - - private GetInterestRateChartsChartIdChartSlabsIncentives() {} - - static final class GetInterestRateChartsChartIdChartSlabsEntityType { - - private GetInterestRateChartsChartIdChartSlabsEntityType() {} - - @Schema(example = "2") - public Long id; - @Schema(example = "InterestIncentiveEntityType.customer") - public Integer code; - @Schema(example = "Customer") - public Integer description; - } - - static final class GetInterestRateChartsChartIdChartSlabsAttributeName { - - private GetInterestRateChartsChartIdChartSlabsAttributeName() {} - - @Schema(example = "2") - public Long id; - @Schema(example = "InterestIncentiveAttributeName.gender") - public Integer code; - @Schema(example = "Gender") - public Integer description; - } - - static final class GetInterestRateChartsChartIdChartSlabsConditionType { - - private GetInterestRateChartsChartIdChartSlabsConditionType() {} - - @Schema(example = "2") - public Long id; - @Schema(example = "incentiveConditionType.equal") - public Integer code; - @Schema(example = "equal") - public Integer description; - } - - static final class GetInterestRateChartsChartIdChartSlabsIncentiveType { - - private GetInterestRateChartsChartIdChartSlabsIncentiveType() {} - - @Schema(example = "3") - public Long id; - @Schema(example = "InterestIncentiveType.incentive") - public Integer code; - @Schema(example = "Incentive") - public Integer description; - } - - @Schema(example = "1") - public Long id; - public GetInterestRateChartsChartIdChartSlabsEntityType entityType; - public GetInterestRateChartsChartIdChartSlabsAttributeName attributeName; - public GetInterestRateChartsChartIdChartSlabsConditionType conditionType; - @Schema(example = "11") - public Integer attributeValue; - @Schema(example = "FEMALE") - public String attributeValueDesc; - public GetInterestRateChartsChartIdChartSlabsIncentiveType incentiveType; - @Schema(example = "-1.000000") - public Float amount; - } - - @Schema(example = "1") - public Long id; - @Schema(example = "5% interest from 1 day till 180 days of deposit") - public String description; - public InterestRateChartsApiResourceSwagger.GetInterestRateChartsTemplateResponse.GetInterestRateChartsTemplatePeriodTypes periodTypes; - @Schema(example = "1") - public Integer fromPeriod; - @Schema(example = "180") - public Integer toPeriod; - @Schema(example = "5") - public Double annualInterestRate; - public InterestRateChartsApiResourceSwagger.GetInterestRateChartsResponse.GetInterestRateChartsCurrency currency; - public Set incentives; - } - @Schema(description = "PostInterestRateChartsChartIdChartSlabsRequest") public static final class PostInterestRateChartsChartIdChartSlabsRequest { diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/data/InterestIncentiveRequest.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/data/InterestIncentiveRequest.java new file mode 100644 index 000000000..f3c842047 --- /dev/null +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/data/InterestIncentiveRequest.java @@ -0,0 +1,39 @@ +/** + * 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.interestratechart.data; + +import java.io.Serializable; +import java.math.BigDecimal; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@NoArgsConstructor +public class InterestIncentiveRequest implements Serializable { + + private Long id; + private String description; + private Integer entityType; + private Integer attributeName; + private Integer conditionType; + private String attributeValue; + private Integer incentiveType; + private BigDecimal amount; + +} diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/data/InterestRateChartStabRequest.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/data/InterestRateChartStabRequest.java new file mode 100644 index 000000000..fd95c6925 --- /dev/null +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/data/InterestRateChartStabRequest.java @@ -0,0 +1,45 @@ +/** + * 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.interestratechart.data; + +import java.io.Serial; +import java.io.Serializable; +import java.math.BigDecimal; +import java.util.List; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@NoArgsConstructor +public class InterestRateChartStabRequest implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + private String locale; + private String currencyCode; + private String description; + private Integer periodType; + private Integer fromPeriod; + private Integer toPeriod; + private BigDecimal amountRangeFrom; + private BigDecimal amountRangeTo; + private BigDecimal annualInterestRate; + private List incentives; +} diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/service/InterestRateChartReadPlatformServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/service/InterestRateChartReadPlatformServiceImpl.java index ea7aa652b..56f9a01a8 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/service/InterestRateChartReadPlatformServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/service/InterestRateChartReadPlatformServiceImpl.java @@ -213,7 +213,7 @@ public class InterestRateChartReadPlatformServiceImpl implements InterestRateCha } @Override - public Collection extractData(ResultSet rs) throws SQLException, DataAccessException { + public List extractData(ResultSet rs) throws SQLException, DataAccessException { List chartDataList = new ArrayList<>(); diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/service/InterestRateChartSlabReadPlatformService.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/service/InterestRateChartSlabReadPlatformService.java index 8092377af..b7a483c8d 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/service/InterestRateChartSlabReadPlatformService.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/service/InterestRateChartSlabReadPlatformService.java @@ -18,12 +18,12 @@ */ package org.apache.fineract.portfolio.interestratechart.service; -import java.util.Collection; +import java.util.List; import org.apache.fineract.portfolio.interestratechart.data.InterestRateChartSlabData; public interface InterestRateChartSlabReadPlatformService { - Collection retrieveAll(Long chartId); + List retrieveAll(Long chartId); InterestRateChartSlabData retrieveOne(Long chartId, Long chartSlabId); diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/service/InterestRateChartSlabReadPlatformServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/service/InterestRateChartSlabReadPlatformServiceImpl.java index a18269e79..6c7bb0a84 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/service/InterestRateChartSlabReadPlatformServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/service/InterestRateChartSlabReadPlatformServiceImpl.java @@ -55,7 +55,7 @@ public class InterestRateChartSlabReadPlatformServiceImpl implements InterestRat private final CodeValueReadPlatformService codeValueReadPlatformService; @Override - public Collection retrieveAll(Long chartId) { + public List retrieveAll(Long chartId) { this.context.authenticatedUser(); final String sql = "select " + this.chartSlabExtractor.schema() + " where ircd.interest_rate_chart_id = ? order by ircd.id"; return this.jdbcTemplate.query(sql, this.chartSlabExtractor, new Object[] { chartId }); // NOSONAR @@ -172,7 +172,7 @@ public class InterestRateChartSlabReadPlatformServiceImpl implements InterestRat } - public static final class InterestRateChartSlabExtractor implements ResultSetExtractor> { + public static final class InterestRateChartSlabExtractor implements ResultSetExtractor> { InterestRateChartSlabsMapper chartSlabsMapper; InterestIncentiveMapper incentiveMapper = new InterestIncentiveMapper(); @@ -189,7 +189,7 @@ public class InterestRateChartSlabReadPlatformServiceImpl implements InterestRat } @Override - public Collection extractData(ResultSet rs) throws SQLException, DataAccessException { + public List extractData(ResultSet rs) throws SQLException, DataAccessException { List chartDataList = new ArrayList<>(); diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/DepositAccountInterestRateChartReadPlatformServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/DepositAccountInterestRateChartReadPlatformServiceImpl.java index eda6a2a04..58fbb50eb 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/DepositAccountInterestRateChartReadPlatformServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/DepositAccountInterestRateChartReadPlatformServiceImpl.java @@ -169,7 +169,7 @@ public class DepositAccountInterestRateChartReadPlatformServiceImpl implements D } public static final class DepositAccountInterestRateChartExtractor - implements ResultSetExtractor> { + implements ResultSetExtractor> { DepositAccountInterestRateChartMapper chartMapper = new DepositAccountInterestRateChartMapper(); InterestRateChartSlabExtractor chartSlabsMapper = new InterestRateChartSlabExtractor(); @@ -206,7 +206,7 @@ public class DepositAccountInterestRateChartReadPlatformServiceImpl implements D } @Override - public Collection extractData(ResultSet rs) throws SQLException, DataAccessException { + public List extractData(ResultSet rs) throws SQLException, DataAccessException { List chartDataList = new ArrayList<>(); diff --git a/fineract-savings/src/main/java/org/apache/fineract/portfolio/interestratechart/data/InterestRateChartSlabData.java b/fineract-savings/src/main/java/org/apache/fineract/portfolio/interestratechart/data/InterestRateChartSlabData.java index cf07e5097..94634c786 100644 --- a/fineract-savings/src/main/java/org/apache/fineract/portfolio/interestratechart/data/InterestRateChartSlabData.java +++ b/fineract-savings/src/main/java/org/apache/fineract/portfolio/interestratechart/data/InterestRateChartSlabData.java @@ -18,10 +18,13 @@ */ package org.apache.fineract.portfolio.interestratechart.data; +import java.io.Serial; +import java.io.Serializable; import java.math.BigDecimal; import java.util.Collection; import java.util.HashSet; import java.util.Set; +import lombok.Getter; import org.apache.fineract.infrastructure.codes.data.CodeValueData; import org.apache.fineract.infrastructure.core.data.EnumOptionData; import org.apache.fineract.organisation.monetary.data.CurrencyData; @@ -29,7 +32,11 @@ import org.apache.fineract.organisation.monetary.data.CurrencyData; /** * Immutable data object representing a InterestRateChartSlab. */ -public final class InterestRateChartSlabData { +@Getter +public final class InterestRateChartSlabData implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; private final Long id; private final String description;