This is an automated email from the ASF dual-hosted git repository. adamsaghy pushed a commit to branch develop in repository https://gitbox.apache.org/repos/asf/fineract.git
commit cb8cbd2043fe2d3074594d5331eb81bfa8c3809a Author: adam.magyari <[email protected]> AuthorDate: Mon Apr 14 12:14:13 2025 +0200 FINERACT-2232: Generalization of StringEnumOptionData enums --- .../infrastructure/core/api/ApiFacingEnum.java | 31 ++++++++++------------ .../domain/DaysInYearCustomStrategyType.java | 17 ++---------- .../LoanCapitalizedIncomeCalculationType.java | 18 ++----------- .../domain/LoanCapitalizedIncomeStrategy.java | 17 ++---------- .../loanaccount/domain/LoanChargeOffBehaviour.java | 13 ++------- .../loanproduct/data/LoanProductData.java | 8 +++--- .../domain/LoanSupportedInterestRefundTypes.java | 13 ++------- .../loanaccount/api/LoansApiResource.java | 7 ++--- .../service/LoanReadPlatformServiceImpl.java | 13 ++++----- .../loanproduct/api/LoanProductsApiResource.java | 20 +++++++------- .../LoanProductReadPlatformServiceImpl.java | 13 ++++----- 11 files changed, 58 insertions(+), 112 deletions(-) diff --git a/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanChargeOffBehaviour.java b/fineract-core/src/main/java/org/apache/fineract/infrastructure/core/api/ApiFacingEnum.java similarity index 51% copy from fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanChargeOffBehaviour.java copy to fineract-core/src/main/java/org/apache/fineract/infrastructure/core/api/ApiFacingEnum.java index 7d7ee2a387..9b73a7f90e 100644 --- a/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanChargeOffBehaviour.java +++ b/fineract-core/src/main/java/org/apache/fineract/infrastructure/core/api/ApiFacingEnum.java @@ -16,31 +16,28 @@ * specific language governing permissions and limitations * under the License. */ -package org.apache.fineract.portfolio.loanaccount.domain; +package org.apache.fineract.infrastructure.core.api; import java.util.Arrays; import java.util.List; -import lombok.Getter; -import lombok.RequiredArgsConstructor; import org.apache.fineract.infrastructure.core.data.StringEnumOptionData; -@Getter -@RequiredArgsConstructor -public enum LoanChargeOffBehaviour { +public interface ApiFacingEnum<T extends Enum<T> & ApiFacingEnum<T>> { - REGULAR("chargeOffBehaviour.regular", "Regular"), // - ZERO_INTEREST("chargeOffBehaviour.zeroInterest", "Zero interest after charge-off"), // - ACCELERATE_MATURITY("chargeOffBehaviour.accelerateMaturity", "Accelerate maturity to charge-off date"), // - ; - - private final String code; - private final String humanReadableName; + static <T extends Enum<T> & ApiFacingEnum<T>> List<StringEnumOptionData> getValuesAsStringEnumOptionDataList(Class<T> clazz) { + return Arrays.stream(clazz.getEnumConstants()).map(v -> new StringEnumOptionData(v.name(), v.getCode(), v.getHumanReadableName())) + .toList(); + } - public static List<StringEnumOptionData> getValuesAsStringEnumOptionDataList() { - return Arrays.stream(values()).map(v -> new StringEnumOptionData(v.name(), v.getCode(), v.getHumanReadableName())).toList(); + static <T extends Enum<T> & ApiFacingEnum<T>> StringEnumOptionData getStringEnumOptionData(Class<T> clazz, String name) { + return name == null || name.trim().isEmpty() ? null : Enum.valueOf(clazz, name).getValueAsStringEnumOptionData(); } - public StringEnumOptionData getValueAsStringEnumOptionData() { - return new StringEnumOptionData(name(), getCode(), getHumanReadableName()); + default StringEnumOptionData getValueAsStringEnumOptionData() { + return new StringEnumOptionData(((Enum<T>) this).name(), getCode(), getHumanReadableName()); } + + String getCode(); + + String getHumanReadableName(); } diff --git a/fineract-core/src/main/java/org/apache/fineract/portfolio/common/domain/DaysInYearCustomStrategyType.java b/fineract-core/src/main/java/org/apache/fineract/portfolio/common/domain/DaysInYearCustomStrategyType.java index 97bdf8c99b..80d62d90f8 100644 --- a/fineract-core/src/main/java/org/apache/fineract/portfolio/common/domain/DaysInYearCustomStrategyType.java +++ b/fineract-core/src/main/java/org/apache/fineract/portfolio/common/domain/DaysInYearCustomStrategyType.java @@ -18,11 +18,9 @@ */ package org.apache.fineract.portfolio.common.domain; -import java.util.Arrays; -import java.util.List; import lombok.Getter; import lombok.RequiredArgsConstructor; -import org.apache.fineract.infrastructure.core.data.StringEnumOptionData; +import org.apache.fineract.infrastructure.core.api.ApiFacingEnum; /** * Defines the method of leap year calculation for determining the number of days in a year. @@ -53,7 +51,7 @@ import org.apache.fineract.infrastructure.core.data.StringEnumOptionData; */ @Getter @RequiredArgsConstructor -public enum DaysInYearCustomStrategyType { +public enum DaysInYearCustomStrategyType implements ApiFacingEnum<DaysInYearCustomStrategyType> { /** Always considers 366 days in a leap year. */ FULL_LEAP_YEAR("DaysInYearCustomStrategyType.fullLeapYear", "Full Leap Year"), @@ -64,15 +62,4 @@ public enum DaysInYearCustomStrategyType { private final String code; private final String humanReadableName; - public static List<StringEnumOptionData> getValuesAsStringEnumOptionDataList() { - return Arrays.stream(values()).map(v -> new StringEnumOptionData(v.name(), v.getCode(), v.getHumanReadableName())).toList(); - } - - public StringEnumOptionData getValueAsStringEnumOptionData() { - return new StringEnumOptionData(name(), getCode(), getHumanReadableName()); - } - - public static StringEnumOptionData getStringEnumOptionData(String name) { - return name == null || name.trim().isEmpty() ? null : DaysInYearCustomStrategyType.valueOf(name).getValueAsStringEnumOptionData(); - } } diff --git a/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanCapitalizedIncomeCalculationType.java b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanCapitalizedIncomeCalculationType.java index 5916b0074e..8b30a94594 100644 --- a/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanCapitalizedIncomeCalculationType.java +++ b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanCapitalizedIncomeCalculationType.java @@ -18,31 +18,17 @@ */ package org.apache.fineract.portfolio.loanaccount.domain; -import java.util.Arrays; -import java.util.List; import lombok.Getter; import lombok.RequiredArgsConstructor; -import org.apache.fineract.infrastructure.core.data.StringEnumOptionData; +import org.apache.fineract.infrastructure.core.api.ApiFacingEnum; @Getter @RequiredArgsConstructor -public enum LoanCapitalizedIncomeCalculationType { +public enum LoanCapitalizedIncomeCalculationType implements ApiFacingEnum<LoanCapitalizedIncomeCalculationType> { FLAT("loanCapitalizedIncomeCalculationType.flat", "Flat"); private final String code; private final String humanReadableName; - public static List<StringEnumOptionData> getValuesAsStringEnumOptionDataList() { - return Arrays.stream(values()).map(v -> new StringEnumOptionData(v.name(), v.getCode(), v.getHumanReadableName())).toList(); - } - - public StringEnumOptionData getValueAsStringEnumOptionData() { - return new StringEnumOptionData(name(), getCode(), getHumanReadableName()); - } - - public static StringEnumOptionData getStringEnumOptionData(String name) { - return name == null || name.trim().isEmpty() ? null - : LoanCapitalizedIncomeCalculationType.valueOf(name).getValueAsStringEnumOptionData(); - } } diff --git a/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanCapitalizedIncomeStrategy.java b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanCapitalizedIncomeStrategy.java index b0d489ce6b..16df54bae5 100644 --- a/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanCapitalizedIncomeStrategy.java +++ b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanCapitalizedIncomeStrategy.java @@ -18,30 +18,17 @@ */ package org.apache.fineract.portfolio.loanaccount.domain; -import java.util.Arrays; -import java.util.List; import lombok.Getter; import lombok.RequiredArgsConstructor; -import org.apache.fineract.infrastructure.core.data.StringEnumOptionData; +import org.apache.fineract.infrastructure.core.api.ApiFacingEnum; @Getter @RequiredArgsConstructor -public enum LoanCapitalizedIncomeStrategy { +public enum LoanCapitalizedIncomeStrategy implements ApiFacingEnum<LoanCapitalizedIncomeStrategy> { EQUAL_AMORTIZATION("capitalizedIncome.strategy.equalAmortization", "Equal amortization"); private final String code; private final String humanReadableName; - public static List<StringEnumOptionData> getValuesAsStringEnumOptionDataList() { - return Arrays.stream(values()).map(v -> new StringEnumOptionData(v.name(), v.getCode(), v.getHumanReadableName())).toList(); - } - - public StringEnumOptionData getValueAsStringEnumOptionData() { - return new StringEnumOptionData(name(), getCode(), getHumanReadableName()); - } - - public static StringEnumOptionData getStringEnumOptionData(String name) { - return name == null || name.trim().isEmpty() ? null : LoanCapitalizedIncomeStrategy.valueOf(name).getValueAsStringEnumOptionData(); - } } diff --git a/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanChargeOffBehaviour.java b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanChargeOffBehaviour.java index 7d7ee2a387..0441e9fece 100644 --- a/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanChargeOffBehaviour.java +++ b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanChargeOffBehaviour.java @@ -18,15 +18,13 @@ */ package org.apache.fineract.portfolio.loanaccount.domain; -import java.util.Arrays; -import java.util.List; import lombok.Getter; import lombok.RequiredArgsConstructor; -import org.apache.fineract.infrastructure.core.data.StringEnumOptionData; +import org.apache.fineract.infrastructure.core.api.ApiFacingEnum; @Getter @RequiredArgsConstructor -public enum LoanChargeOffBehaviour { +public enum LoanChargeOffBehaviour implements ApiFacingEnum<LoanChargeOffBehaviour> { REGULAR("chargeOffBehaviour.regular", "Regular"), // ZERO_INTEREST("chargeOffBehaviour.zeroInterest", "Zero interest after charge-off"), // @@ -36,11 +34,4 @@ public enum LoanChargeOffBehaviour { private final String code; private final String humanReadableName; - public static List<StringEnumOptionData> getValuesAsStringEnumOptionDataList() { - return Arrays.stream(values()).map(v -> new StringEnumOptionData(v.name(), v.getCode(), v.getHumanReadableName())).toList(); - } - - public StringEnumOptionData getValueAsStringEnumOptionData() { - return new StringEnumOptionData(name(), getCode(), getHumanReadableName()); - } } diff --git a/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanproduct/data/LoanProductData.java b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanproduct/data/LoanProductData.java index 4ed7c23820..bcece9c7a4 100644 --- a/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanproduct/data/LoanProductData.java +++ b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanproduct/data/LoanProductData.java @@ -34,6 +34,7 @@ import org.apache.fineract.accounting.producttoaccountmapping.data.ChargeOffReas import org.apache.fineract.accounting.producttoaccountmapping.data.ChargeToGLAccountMapper; import org.apache.fineract.accounting.producttoaccountmapping.data.PaymentTypeToGLAccountMapper; import org.apache.fineract.infrastructure.codes.data.CodeValueData; +import org.apache.fineract.infrastructure.core.api.ApiFacingEnum; import org.apache.fineract.infrastructure.core.data.EnumOptionData; import org.apache.fineract.infrastructure.core.data.StringEnumOptionData; import org.apache.fineract.organisation.monetary.data.CurrencyData; @@ -976,9 +977,10 @@ public class LoanProductData implements Serializable { this.chargeOffBehaviourOptions = null; this.chargeOffReasonOptions = null; this.interestRecognitionOnDisbursementDate = interestRecognitionOnDisbursementDate; - this.daysInYearCustomStrategyOptions = DaysInYearCustomStrategyType.getValuesAsStringEnumOptionDataList(); - this.capitalizedIncomeCalculationTypeOptions = LoanCapitalizedIncomeCalculationType.getValuesAsStringEnumOptionDataList(); - this.capitalizedIncomeStrategyOptions = LoanCapitalizedIncomeStrategy.getValuesAsStringEnumOptionDataList(); + this.daysInYearCustomStrategyOptions = ApiFacingEnum.getValuesAsStringEnumOptionDataList(DaysInYearCustomStrategyType.class); + this.capitalizedIncomeCalculationTypeOptions = ApiFacingEnum + .getValuesAsStringEnumOptionDataList(LoanCapitalizedIncomeCalculationType.class); + this.capitalizedIncomeStrategyOptions = ApiFacingEnum.getValuesAsStringEnumOptionDataList(LoanCapitalizedIncomeStrategy.class); } public LoanProductData(final LoanProductData productData, final Collection<ChargeData> chargeOptions, diff --git a/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanproduct/domain/LoanSupportedInterestRefundTypes.java b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanproduct/domain/LoanSupportedInterestRefundTypes.java index 565c862ee4..9e89908006 100644 --- a/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanproduct/domain/LoanSupportedInterestRefundTypes.java +++ b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanproduct/domain/LoanSupportedInterestRefundTypes.java @@ -18,16 +18,14 @@ */ package org.apache.fineract.portfolio.loanproduct.domain; -import java.util.Arrays; -import java.util.List; import lombok.Getter; import lombok.RequiredArgsConstructor; -import org.apache.fineract.infrastructure.core.data.StringEnumOptionData; +import org.apache.fineract.infrastructure.core.api.ApiFacingEnum; import org.apache.fineract.portfolio.loanaccount.domain.LoanTransactionType; @Getter @RequiredArgsConstructor -public enum LoanSupportedInterestRefundTypes { +public enum LoanSupportedInterestRefundTypes implements ApiFacingEnum<LoanSupportedInterestRefundTypes> { MERCHANT_ISSUED_REFUND(LoanTransactionType.MERCHANT_ISSUED_REFUND, "loanRefundType.merchant_issued_refund", "Merchant issued refund"), // PAYOUT_REFUND(LoanTransactionType.PAYOUT_REFUND, "loanRefundType.payout_refund", "Payout refund"), // @@ -37,11 +35,4 @@ public enum LoanSupportedInterestRefundTypes { private final String code; private final String humanReadableName; - public static List<StringEnumOptionData> getValuesAsStringEnumOptionDataList() { - return Arrays.stream(values()).map(v -> new StringEnumOptionData(v.name(), v.getCode(), v.getHumanReadableName())).toList(); - } - - public StringEnumOptionData getValueAsStringEnumOptionData() { - return new StringEnumOptionData(name(), getCode(), getHumanReadableName()); - } } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/api/LoansApiResource.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/api/LoansApiResource.java index b57888bc03..b3485d1788 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/api/LoansApiResource.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/api/LoansApiResource.java @@ -67,6 +67,7 @@ import org.apache.fineract.infrastructure.bulkimport.service.BulkImportWorkbookS import org.apache.fineract.infrastructure.codes.data.CodeValueData; import org.apache.fineract.infrastructure.codes.service.CodeValueReadPlatformService; import org.apache.fineract.infrastructure.configuration.domain.ConfigurationDomainService; +import org.apache.fineract.infrastructure.core.api.ApiFacingEnum; import org.apache.fineract.infrastructure.core.api.ApiParameterHelper; import org.apache.fineract.infrastructure.core.api.ApiRequestParameterHelper; import org.apache.fineract.infrastructure.core.api.JsonQuery; @@ -1137,9 +1138,9 @@ public class LoansApiResource { loanCollateralOptions, calendarOptions, notes, accountLinkingOptions, linkedAccount, disbursementData, emiAmountVariations, overdueCharges, paidInAdvanceTemplate, interestRatesPeriods, clientActiveLoanOptions, rates, isRatesEnabled, collectionData, LoanScheduleType.getValuesAsEnumOptionDataList(), LoanScheduleProcessingType.getValuesAsEnumOptionDataList(), - loanTermVariations, DaysInYearCustomStrategyType.getValuesAsStringEnumOptionDataList(), - LoanCapitalizedIncomeCalculationType.getValuesAsStringEnumOptionDataList(), - LoanCapitalizedIncomeStrategy.getValuesAsStringEnumOptionDataList()); + loanTermVariations, ApiFacingEnum.getValuesAsStringEnumOptionDataList(DaysInYearCustomStrategyType.class), + ApiFacingEnum.getValuesAsStringEnumOptionDataList(LoanCapitalizedIncomeCalculationType.class), + ApiFacingEnum.getValuesAsStringEnumOptionDataList(LoanCapitalizedIncomeStrategy.class)); final ApiRequestJsonSerializationSettings settings = this.apiRequestParameterHelper.process(uriInfo.getQueryParameters(), mandatoryResponseParameters); diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/service/LoanReadPlatformServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/service/LoanReadPlatformServiceImpl.java index e2399aeeab..6cdd349306 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/service/LoanReadPlatformServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/service/LoanReadPlatformServiceImpl.java @@ -43,6 +43,7 @@ import org.apache.commons.lang3.StringUtils; import org.apache.fineract.infrastructure.codes.data.CodeValueData; import org.apache.fineract.infrastructure.codes.service.CodeValueReadPlatformService; import org.apache.fineract.infrastructure.configuration.domain.ConfigurationDomainService; +import org.apache.fineract.infrastructure.core.api.ApiFacingEnum; import org.apache.fineract.infrastructure.core.data.EnumOptionData; import org.apache.fineract.infrastructure.core.data.StringEnumOptionData; import org.apache.fineract.infrastructure.core.domain.ExternalId; @@ -1101,13 +1102,13 @@ public class LoanReadPlatformServiceImpl implements LoanReadPlatformService, Loa final Integer fixedLength = JdbcSupport.getInteger(rs, "fixedLength"); final LoanChargeOffBehaviour chargeOffBehaviour = LoanChargeOffBehaviour.valueOf(rs.getString("chargeOffBehaviour")); final boolean interestRecognitionOnDisbursementDate = rs.getBoolean("interestRecognitionOnDisbursementDate"); - final StringEnumOptionData daysInYearCustomStrategy = DaysInYearCustomStrategyType - .getStringEnumOptionData(rs.getString("daysInYearCustomStrategy")); + final StringEnumOptionData daysInYearCustomStrategy = ApiFacingEnum.getStringEnumOptionData(DaysInYearCustomStrategyType.class, + rs.getString("daysInYearCustomStrategy")); final boolean enableIncomeCapitalization = rs.getBoolean("enableIncomeCapitalization"); - final StringEnumOptionData capitalizedIncomeCalculationType = LoanCapitalizedIncomeCalculationType - .getStringEnumOptionData(rs.getString("capitalizedIncomeCalculationType")); - final StringEnumOptionData capitalizedIncomeStrategy = LoanCapitalizedIncomeStrategy - .getStringEnumOptionData(rs.getString("capitalizedIncomeStrategy")); + final StringEnumOptionData capitalizedIncomeCalculationType = ApiFacingEnum + .getStringEnumOptionData(LoanCapitalizedIncomeCalculationType.class, rs.getString("capitalizedIncomeCalculationType")); + final StringEnumOptionData capitalizedIncomeStrategy = ApiFacingEnum + .getStringEnumOptionData(LoanCapitalizedIncomeStrategy.class, rs.getString("capitalizedIncomeStrategy")); return LoanAccountData.basicLoanDetails(id, accountNo, status, externalId, clientId, clientAccountNo, clientName, clientOfficeId, clientExternalId, groupData, loanType, loanProductId, loanProductName, loanProductDescription, diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanproduct/api/LoanProductsApiResource.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanproduct/api/LoanProductsApiResource.java index 271b1f7107..eb41c4228d 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanproduct/api/LoanProductsApiResource.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanproduct/api/LoanProductsApiResource.java @@ -58,6 +58,7 @@ import org.apache.fineract.commands.service.PortfolioCommandSourceWritePlatformS import org.apache.fineract.infrastructure.codes.data.CodeValueData; import org.apache.fineract.infrastructure.codes.service.CodeValueReadPlatformService; import org.apache.fineract.infrastructure.configuration.domain.ConfigurationDomainService; +import org.apache.fineract.infrastructure.core.api.ApiFacingEnum; import org.apache.fineract.infrastructure.core.api.ApiParameterHelper; import org.apache.fineract.infrastructure.core.api.ApiRequestParameterHelper; import org.apache.fineract.infrastructure.core.data.CommandProcessingResult; @@ -437,17 +438,18 @@ public class LoanProductsApiResource { final List<EnumOptionData> advancedPaymentAllocationTypes = PaymentAllocationType.getValuesAsEnumOptionDataList(); final List<EnumOptionData> creditAllocationTransactionTypes = CreditAllocationTransactionType.getValuesAsEnumOptionDataList(); final List<EnumOptionData> creditAllocationAllocationTypes = AllocationType.getValuesAsEnumOptionDataList(); - final List<StringEnumOptionData> supportedInterestRefundTypesOptions = LoanSupportedInterestRefundTypes - .getValuesAsStringEnumOptionDataList(); - final List<StringEnumOptionData> chargeOffBehaviourOptions = LoanChargeOffBehaviour.getValuesAsStringEnumOptionDataList(); + final List<StringEnumOptionData> supportedInterestRefundTypesOptions = ApiFacingEnum + .getValuesAsStringEnumOptionDataList(LoanSupportedInterestRefundTypes.class); + final List<StringEnumOptionData> chargeOffBehaviourOptions = ApiFacingEnum + .getValuesAsStringEnumOptionDataList(LoanChargeOffBehaviour.class); final List<CodeValueData> chargeOffReasonOptions = codeValueReadPlatformService .retrieveCodeValuesByCode(LoanApiConstants.CHARGE_OFF_REASONS); - final List<StringEnumOptionData> daysInYearCustomStrategyOptions = DaysInYearCustomStrategyType - .getValuesAsStringEnumOptionDataList(); - final List<StringEnumOptionData> capitalizedIncomeCalculationTypeOptions = LoanCapitalizedIncomeCalculationType - .getValuesAsStringEnumOptionDataList(); - final List<StringEnumOptionData> capitalizedIncomeStrategyOptions = LoanCapitalizedIncomeStrategy - .getValuesAsStringEnumOptionDataList(); + final List<StringEnumOptionData> daysInYearCustomStrategyOptions = ApiFacingEnum + .getValuesAsStringEnumOptionDataList(DaysInYearCustomStrategyType.class); + final List<StringEnumOptionData> capitalizedIncomeCalculationTypeOptions = ApiFacingEnum + .getValuesAsStringEnumOptionDataList(LoanCapitalizedIncomeCalculationType.class); + final List<StringEnumOptionData> capitalizedIncomeStrategyOptions = ApiFacingEnum + .getValuesAsStringEnumOptionDataList(LoanCapitalizedIncomeStrategy.class); return new LoanProductData(productData, chargeOptions, penaltyOptions, paymentTypeOptions, currencyOptions, amortizationTypeOptions, interestTypeOptions, interestCalculationPeriodTypeOptions, repaymentFrequencyTypeOptions, interestRateFrequencyTypeOptions, diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanproduct/service/LoanProductReadPlatformServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanproduct/service/LoanProductReadPlatformServiceImpl.java index 4c436216c1..7c316aa180 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanproduct/service/LoanProductReadPlatformServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanproduct/service/LoanProductReadPlatformServiceImpl.java @@ -29,6 +29,7 @@ import java.util.List; import java.util.concurrent.atomic.AtomicInteger; import lombok.RequiredArgsConstructor; import org.apache.fineract.accounting.common.AccountingEnumerations; +import org.apache.fineract.infrastructure.core.api.ApiFacingEnum; import org.apache.fineract.infrastructure.core.data.EnumOptionData; import org.apache.fineract.infrastructure.core.data.StringEnumOptionData; import org.apache.fineract.infrastructure.core.domain.ExternalId; @@ -435,8 +436,8 @@ public class LoanProductReadPlatformServiceImpl implements LoanProductReadPlatfo final int daysInMonth = JdbcSupport.getInteger(rs, "daysInMonth"); final EnumOptionData daysInMonthType = CommonEnumerations.daysInMonthType(daysInMonth); final int daysInYear = JdbcSupport.getInteger(rs, "daysInYear"); - final StringEnumOptionData daysInYearCustomStrategy = DaysInYearCustomStrategyType - .getStringEnumOptionData(rs.getString("daysInYearCustomStrategy")); + final StringEnumOptionData daysInYearCustomStrategy = ApiFacingEnum.getStringEnumOptionData(DaysInYearCustomStrategyType.class, + rs.getString("daysInYearCustomStrategy")); final EnumOptionData daysInYearType = CommonEnumerations.daysInYearType(daysInYear); final Integer installmentAmountInMultiplesOf = JdbcSupport.getInteger(rs, "installmentAmountInMultiplesOf"); final boolean canDefineInstallmentAmount = rs.getBoolean("canDefineInstallmentAmount"); @@ -558,10 +559,10 @@ public class LoanProductReadPlatformServiceImpl implements LoanProductReadPlatfo final LoanChargeOffBehaviour loanChargeOffBehaviour = LoanChargeOffBehaviour.valueOf(chargeOffBehaviourStr); final boolean interestRecognitionOnDisbursementDate = rs.getBoolean("interestRecognitionOnDisbursementDate"); final boolean enableIncomeCapitalization = rs.getBoolean("enableIncomeCapitalization"); - final StringEnumOptionData capitalizedIncomeCalculationType = LoanCapitalizedIncomeCalculationType - .getStringEnumOptionData(rs.getString("capitalizedIncomeCalculationType")); - final StringEnumOptionData capitalizedIncomeStrategy = LoanCapitalizedIncomeStrategy - .getStringEnumOptionData(rs.getString("capitalizedIncomeStrategy")); + final StringEnumOptionData capitalizedIncomeCalculationType = ApiFacingEnum + .getStringEnumOptionData(LoanCapitalizedIncomeCalculationType.class, rs.getString("capitalizedIncomeCalculationType")); + final StringEnumOptionData capitalizedIncomeStrategy = ApiFacingEnum + .getStringEnumOptionData(LoanCapitalizedIncomeStrategy.class, rs.getString("capitalizedIncomeStrategy")); return new LoanProductData(id, name, shortName, description, currency, principal, minPrincipal, maxPrincipal, tolerance, numberOfRepayments, minNumberOfRepayments, maxNumberOfRepayments, repaymentEvery, interestRatePerPeriod,
