FINERACT-2232: Generalization of StringEnumOptionData enums

This commit is contained in:
adam.magyari
2025-04-15 19:45:25 +02:00
committed by Adam Saghy
parent 7df7be2b16
commit cb8cbd2043
11 changed files with 87 additions and 95 deletions
@@ -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();
}
}
@@ -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();
}
}
@@ -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());
}
}
@@ -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,
@@ -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());
}
}