FINERACT-2169: refactoring FloatingRatesApiResource - update swagger docs

This commit is contained in:
oleksandr.masliuk
2025-03-26 10:01:45 +01:00
committed by Adam Saghy
parent 7dd058b5f1
commit f73b352727
4 changed files with 17 additions and 163 deletions
@@ -35,10 +35,7 @@ import jakarta.ws.rs.Path;
import jakarta.ws.rs.PathParam;
import jakarta.ws.rs.Produces;
import jakarta.ws.rs.core.MediaType;
import java.util.Arrays;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import lombok.RequiredArgsConstructor;
import org.apache.fineract.commands.domain.CommandWrapper;
import org.apache.fineract.commands.service.CommandWrapperBuilder;
@@ -58,10 +55,6 @@ import org.springframework.stereotype.Component;
public class FloatingRatesApiResource {
private static final String RESOURCE_NAME = "FLOATINGRATE";
private static final Set<String> LIST_FLOATING_RATES_PARAMETERS = new HashSet<>(
Arrays.asList("id", "name", "isBaseLendingRate", "isActive", "createdby", "createdOn", "modifiedBy", "modifiedOn"));
private static final Set<String> INDIVIDUAL_FLOATING_RATES_PARAMETERS = new HashSet<>(Arrays.asList("id", "name", "isBaseLendingRate",
"isActive", "createdBy", "createdOn", "modifiedBy", "modifiedOn", "ratePeriods"));
private final PlatformSecurityContext context;
private final PortfolioCommandSourceWritePlatformService commandsSourceWritePlatformService;
private final DefaultToApiJsonSerializer<FloatingRateData> toApiJsonSerializer;
@@ -72,7 +65,7 @@ public class FloatingRatesApiResource {
@Produces({ MediaType.APPLICATION_JSON })
@Operation(summary = "Create a new Floating Rate", description = "Creates a new Floating Rate\n" + "Mandatory Fields: name\n"
+ "Optional Fields: isBaseLendingRate, isActive, ratePeriods")
@RequestBody(required = true, content = @Content(schema = @Schema(implementation = FloatingRatesApiResourceSwagger.PostFloatingRatesRequest.class)))
@RequestBody(required = true, content = @Content(schema = @Schema(implementation = FloatingRateRequest.class)))
@ApiResponses({
@ApiResponse(responseCode = "200", description = "OK", content = @Content(schema = @Schema(implementation = FloatingRatesApiResourceSwagger.PostFloatingRatesResponse.class))) })
public CommandProcessingResult createFloatingRate(@Parameter(hidden = true) final FloatingRateRequest floatingRateRequest) {
@@ -97,8 +90,6 @@ public class FloatingRatesApiResource {
@Consumes({ MediaType.APPLICATION_JSON })
@Produces({ MediaType.APPLICATION_JSON })
@Operation(summary = "Retrieve Floating Rate", description = "Retrieves Floating Rate")
@ApiResponses({
@ApiResponse(responseCode = "200", description = "OK", content = @Content(schema = @Schema(implementation = FloatingRatesApiResourceSwagger.GetFloatingRatesFloatingRateIdResponse.class))) })
public FloatingRateData retrieveOne(@PathParam("floatingRateId") @Parameter(description = "floatingRateId") final Long floatingRateId) {
this.context.authenticatedUser().validateHasReadPermission(RESOURCE_NAME);
return floatingRatesReadPlatformService.retrieveOne(floatingRateId);
@@ -109,7 +100,7 @@ public class FloatingRatesApiResource {
@Consumes({ MediaType.APPLICATION_JSON })
@Produces({ MediaType.APPLICATION_JSON })
@Operation(summary = "Update Floating Rate", description = "Updates new Floating Rate. Rate Periods in the past cannot be modified. All the future rateperiods would be replaced with the new ratePeriods data sent.")
@RequestBody(required = true, content = @Content(schema = @Schema(implementation = FloatingRatesApiResourceSwagger.PutFloatingRatesFloatingRateIdRequest.class)))
@RequestBody(required = true, content = @Content(schema = @Schema(implementation = FloatingRateRequest.class)))
@ApiResponses({
@ApiResponse(responseCode = "200", description = "OK", content = @Content(schema = @Schema(implementation = FloatingRatesApiResourceSwagger.PutFloatingRatesFloatingRateIdResponse.class))) })
public CommandProcessingResult updateFloatingRate(
@@ -88,68 +88,6 @@ final class FloatingRatesApiResourceSwagger {
public String modifiedOn;
}
@Schema(description = "GetFloatingRatesFloatingRateIdResponse")
public static final class GetFloatingRatesFloatingRateIdResponse {
private GetFloatingRatesFloatingRateIdResponse() {}
static final class GetFloatingRatesRatePeriods {
private GetFloatingRatesRatePeriods() {}
@Schema(example = "1")
public Long id;
@Schema(example = "Dec 15, 2015")
public String fromDate;
@Schema(example = "11")
public Double interestRate;
@Schema(example = "false")
public Boolean isDifferentialToBaseLendingRate;
@Schema(example = "true")
public Boolean isActive;
@Schema(example = "mifos")
public String createdBy;
@Schema(example = "Nov 18, 2015")
public String createdOn;
@Schema(example = "mifos")
public String modifiedBy;
@Schema(example = "Nov 18, 2015")
public String modifiedOn;
}
@Schema(example = "1")
public Long id;
@Schema(example = "Floating Rate 1")
public String name;
@Schema(example = "true")
public Boolean isBaseLendingRate;
@Schema(example = "true")
public Boolean isActive;
@Schema(example = "mifos")
public String createdBy;
@Schema(example = "Nov 18, 2015")
public String createdOn;
@Schema(example = "mifos")
public String modifiedBy;
@Schema(example = "Nov 18, 2015")
public String modifiedOn;
public Set<GetFloatingRatesRatePeriods> ratePeriods;
}
@Schema(description = "PutFloatingRatesFloatingRateIdRequest")
public static final class PutFloatingRatesFloatingRateIdRequest {
private PutFloatingRatesFloatingRateIdRequest() {}
@Schema(example = "Floating Rate 1")
public String name;
@Schema(example = "true")
public Boolean isBaseLendingRate;
@Schema(example = "true")
public Boolean isActive;
public Set<PostFloatingRatesRequest.PostFloatingRatesRatePeriods> ratePeriods;
}
@Schema(description = "PutFloatingRatesFloatingRateIdResponse")
public static final class PutFloatingRatesFloatingRateIdResponse {
@@ -18,34 +18,30 @@
*/
package org.apache.fineract.portfolio.floatingrates.data;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonProperty;
import java.io.Serializable;
import java.time.OffsetDateTime;
import java.util.List;
import lombok.Getter;
import org.apache.commons.lang3.builder.CompareToBuilder;
import org.apache.commons.lang3.builder.EqualsBuilder;
import org.apache.commons.lang3.builder.HashCodeBuilder;
import org.apache.fineract.infrastructure.core.data.EnumOptionData;
@JsonInclude(JsonInclude.Include.NON_NULL)
@Getter
public class FloatingRateData implements Comparable<FloatingRateData>, Serializable {
private final Long id;
private final String name;
@JsonProperty("isBaseLendingRate")
private final boolean isBaseLendingRate;
@JsonProperty("isActive")
private final boolean isActive;
private final Boolean isBaseLendingRate;
private final Boolean isActive;
private final String createdBy;
private final OffsetDateTime createdOn;
private final String modifiedBy;
private final OffsetDateTime modifiedOn;
private final List<FloatingRatePeriodData> ratePeriods;
@SuppressWarnings("unused")
private final List<EnumOptionData> interestRateFrequencyTypeOptions;
public FloatingRateData(Long id, String name, boolean isBaseLendingRate, boolean isActive, String createdBy, OffsetDateTime createdOn,
public FloatingRateData(Long id, String name, Boolean isBaseLendingRate, Boolean isActive, String createdBy, OffsetDateTime createdOn,
String modifiedBy, OffsetDateTime modifiedOn, List<FloatingRatePeriodData> ratePeriods,
List<EnumOptionData> interestRateFrequencyTypeOptions) {
this.id = id;
@@ -60,42 +56,6 @@ public class FloatingRateData implements Comparable<FloatingRateData>, Serializa
this.interestRateFrequencyTypeOptions = interestRateFrequencyTypeOptions;
}
public Long getId() {
return this.id;
}
public String getName() {
return this.name;
}
public boolean isBaseLendingRate() {
return this.isBaseLendingRate;
}
public boolean isActive() {
return this.isActive;
}
public String getCreatedBy() {
return this.createdBy;
}
public OffsetDateTime getCreatedOn() {
return this.createdOn;
}
public String getModifiedBy() {
return this.modifiedBy;
}
public OffsetDateTime getModifiedOn() {
return this.modifiedOn;
}
public List<FloatingRatePeriodData> getRatePeriods() {
return this.ratePeriods;
}
@Override
public int compareTo(final FloatingRateData obj) {
if (obj == null) {
@@ -18,33 +18,33 @@
*/
package org.apache.fineract.portfolio.floatingrates.data;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonProperty;
import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDate;
import java.time.OffsetDateTime;
import lombok.Getter;
import org.apache.commons.lang3.builder.CompareToBuilder;
import org.apache.commons.lang3.builder.EqualsBuilder;
import org.apache.commons.lang3.builder.HashCodeBuilder;
@Getter
@JsonInclude(JsonInclude.Include.NON_NULL)
public class FloatingRatePeriodData implements Comparable<FloatingRatePeriodData>, Serializable {
private Long id;
private LocalDate fromDate;
private BigDecimal interestRate;
@JsonProperty("isDifferentialToBaseLendingRate")
private boolean isDifferentialToBaseLendingRate;
@JsonProperty("isActive")
private boolean isActive;
private Boolean isDifferentialToBaseLendingRate;
private Boolean isActive;
private String createdBy;
private OffsetDateTime createdOn;
private String modifiedBy;
private OffsetDateTime modifiedOn;
public FloatingRatePeriodData(Long id, LocalDate fromDate, BigDecimal interestRate, boolean isDifferentialToBaseLendingRate,
boolean isActive, String createdBy, OffsetDateTime createdOn, String modifiedBy, OffsetDateTime modifiedOn) {
public FloatingRatePeriodData(Long id, LocalDate fromDate, BigDecimal interestRate, Boolean isDifferentialToBaseLendingRate,
Boolean isActive, String createdBy, OffsetDateTime createdOn, String modifiedBy, OffsetDateTime modifiedOn) {
this.id = id;
this.fromDate = fromDate;
this.interestRate = interestRate;
@@ -56,8 +56,8 @@ public class FloatingRatePeriodData implements Comparable<FloatingRatePeriodData
this.modifiedOn = modifiedOn;
}
public FloatingRatePeriodData(Long id, LocalDate fromDate, BigDecimal interestRate, boolean isDifferentialToBaseLendingRate,
boolean isActive) {
public FloatingRatePeriodData(Long id, LocalDate fromDate, BigDecimal interestRate, Boolean isDifferentialToBaseLendingRate,
Boolean isActive) {
this.id = id;
this.fromDate = fromDate;
this.interestRate = interestRate;
@@ -65,46 +65,11 @@ public class FloatingRatePeriodData implements Comparable<FloatingRatePeriodData
this.isActive = isActive;
}
public Long getId() {
return this.id;
}
public LocalDate getFromDate() {
return this.fromDate;
}
@JsonIgnore
public LocalDate getFromDateAsLocalDate() {
return this.fromDate;
}
public BigDecimal getInterestRate() {
return this.interestRate;
}
public boolean isDifferentialToBaseLendingRate() {
return this.isDifferentialToBaseLendingRate;
}
public boolean isActive() {
return this.isActive;
}
public String getCreatedBy() {
return this.createdBy;
}
public OffsetDateTime getCreatedOn() {
return this.createdOn;
}
public String getModifiedBy() {
return this.modifiedBy;
}
public OffsetDateTime getModifiedOn() {
return this.modifiedOn;
}
@Override
public int compareTo(final FloatingRatePeriodData obj) {
if (obj == null) {