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
The following commit(s) were added to refs/heads/develop by this push:
new 92f8b3d0d4 FINERACT-2491: Refactor SavingsEnumerations to use switch
expression
92f8b3d0d4 is described below
commit 92f8b3d0d48b1dafb090b9d6f8f79181810f7550
Author: Abdelrahman Mostafa <[email protected]>
AuthorDate: Mon Feb 16 04:12:13 2026 +0200
FINERACT-2491: Refactor SavingsEnumerations to use switch expression
---
.../savings/service/SavingsEnumerations.java | 43 ++----
.../savings/service/SavingsEnumerationsTest.java | 162 +++++++++++++++++++++
.../service/AuditReadPlatformServiceImpl.java | 2 +-
3 files changed, 179 insertions(+), 28 deletions(-)
diff --git
a/fineract-core/src/main/java/org/apache/fineract/portfolio/savings/service/SavingsEnumerations.java
b/fineract-core/src/main/java/org/apache/fineract/portfolio/savings/service/SavingsEnumerations.java
index 21c5943622..7f4cab97be 100644
---
a/fineract-core/src/main/java/org/apache/fineract/portfolio/savings/service/SavingsEnumerations.java
+++
b/fineract-core/src/main/java/org/apache/fineract/portfolio/savings/service/SavingsEnumerations.java
@@ -59,33 +59,22 @@ public final class SavingsEnumerations {
public static final String INTEREST_CALCULATION_DAYS_IN_YEAR =
"interestCalculationDaysInYearType";
public static final String RECURRING_FREQUENCY_TYPE =
"recurringFrequencyType";
- public static EnumOptionData savingEnumueration(final String typeName,
final int id) {
- if (typeName.equals(INTEREST_COMPOUNDING_PERIOD_TYPE)) {
- return compoundingInterestPeriodType(id);
- } else if (typeName.equals(INTEREST_POSTING_PERIOD_TYPE)) {
- return interestPostingPeriodType(id);
- } else if (typeName.equals(INTEREST_CALCULATION_TYPE)) {
- return interestCalculationType(id);
- } else if (typeName.equals(MIN_DEPOSIT_TERM_TYPE)) {
- return depositTermFrequencyType(id);
- } else if (typeName.equals(MAX_DEPOSIT_TERM_TYPE)) {
- return depositTermFrequencyType(id);
- } else if (typeName.equals(IN_MULTIPLES_OF_DEPOSIT_TERM_TYPE)) {
- return inMultiplesOfDepositTermFrequencyType(id);
- } else if (typeName.equals(DEPOSIT_PERIOD_FREQUNCY_TYPE)) {
- return depositPeriodFrequency(id);
- } else if (typeName.equals(LOCKIN_PERIOD_FREQUNCY_TYPE)) {
- return lockinPeriodFrequencyType(id);
- } else if (typeName.equals(ACCOUNTING_RULE_TYPE)) {
- return AccountingEnumerations.accountingRuleType(id);
- } else if (typeName.equals(PRE_CLOSURE_PENAL_INTEREST_TYPE)) {
- return preClosurePenaltyInterestOnType(id);
- } else if (typeName.equals(INTEREST_CALCULATION_DAYS_IN_YEAR)) {
- return interestCalculationDaysInYearType(id);
- } else if (typeName.equals(RECURRING_FREQUENCY_TYPE)) {
- return depositPeriodFrequency(id);
- }
- return null;
+ public static EnumOptionData savingEnumeration(final String typeName,
final int id) {
+ return switch (typeName) {
+ case INTEREST_COMPOUNDING_PERIOD_TYPE ->
compoundingInterestPeriodType(id);
+ case INTEREST_POSTING_PERIOD_TYPE -> interestPostingPeriodType(id);
+ case INTEREST_CALCULATION_TYPE -> interestCalculationType(id);
+ case MIN_DEPOSIT_TERM_TYPE -> depositTermFrequencyType(id);
+ case MAX_DEPOSIT_TERM_TYPE -> depositTermFrequencyType(id);
+ case IN_MULTIPLES_OF_DEPOSIT_TERM_TYPE ->
inMultiplesOfDepositTermFrequencyType(id);
+ case DEPOSIT_PERIOD_FREQUNCY_TYPE -> depositPeriodFrequency(id);
+ case LOCKIN_PERIOD_FREQUNCY_TYPE -> lockinPeriodFrequencyType(id);
+ case ACCOUNTING_RULE_TYPE ->
AccountingEnumerations.accountingRuleType(id);
+ case PRE_CLOSURE_PENAL_INTEREST_TYPE ->
preClosurePenaltyInterestOnType(id);
+ case INTEREST_CALCULATION_DAYS_IN_YEAR ->
interestCalculationDaysInYearType(id);
+ case RECURRING_FREQUENCY_TYPE -> depositPeriodFrequency(id);
+ default -> null;
+ };
}
public static EnumOptionData lockinPeriodFrequencyType(final int id) {
diff --git
a/fineract-core/src/test/java/org/apache/fineract/portfolio/savings/service/SavingsEnumerationsTest.java
b/fineract-core/src/test/java/org/apache/fineract/portfolio/savings/service/SavingsEnumerationsTest.java
new file mode 100644
index 0000000000..4f0ea3a05f
--- /dev/null
+++
b/fineract-core/src/test/java/org/apache/fineract/portfolio/savings/service/SavingsEnumerationsTest.java
@@ -0,0 +1,162 @@
+/**
+ * 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.savings.service;
+
+import org.apache.fineract.accounting.common.AccountingEnumerations;
+import org.apache.fineract.accounting.common.AccountingRuleType;
+import org.apache.fineract.infrastructure.core.data.EnumOptionData;
+import org.apache.fineract.portfolio.savings.PreClosurePenalInterestOnType;
+import
org.apache.fineract.portfolio.savings.SavingsCompoundingInterestPeriodType;
+import
org.apache.fineract.portfolio.savings.SavingsInterestCalculationDaysInYearType;
+import org.apache.fineract.portfolio.savings.SavingsInterestCalculationType;
+import org.apache.fineract.portfolio.savings.SavingsPeriodFrequencyType;
+import org.apache.fineract.portfolio.savings.SavingsPostingInterestPeriodType;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.Test;
+
+public class SavingsEnumerationsTest {
+
+ @Test
+ void savingEnumerationMapsCompoundingInterestPeriodType() {
+ int id = SavingsCompoundingInterestPeriodType.MONTHLY.getValue();
+
+ EnumOptionData data =
SavingsEnumerations.savingEnumeration(SavingsEnumerations.INTEREST_COMPOUNDING_PERIOD_TYPE,
id);
+ EnumOptionData expected =
SavingsEnumerations.compoundingInterestPeriodType(id);
+
+ Assertions.assertEquals(data, expected);
+ }
+
+ @Test
+ void savingEnumerationMapsPostingInterestPeriodType() {
+ int id = SavingsPostingInterestPeriodType.BIANNUAL.getValue();
+
+ EnumOptionData data =
SavingsEnumerations.savingEnumeration(SavingsEnumerations.INTEREST_POSTING_PERIOD_TYPE,
id);
+ EnumOptionData expected =
SavingsEnumerations.interestPostingPeriodType(id);
+
+ Assertions.assertEquals(data, expected);
+ }
+
+ @Test
+ void savingEnumerationMapsInterestCalculationType() {
+ int id = SavingsInterestCalculationType.DAILY_BALANCE.getValue();
+
+ EnumOptionData data =
SavingsEnumerations.savingEnumeration(SavingsEnumerations.INTEREST_CALCULATION_TYPE,
id);
+ EnumOptionData expected =
SavingsEnumerations.interestCalculationType(id);
+
+ Assertions.assertEquals(data, expected);
+ }
+
+ @Test
+ void savingEnumerationMapsMinDepositTermType() {
+ int id = SavingsPeriodFrequencyType.WEEKS.getValue();
+
+ EnumOptionData data =
SavingsEnumerations.savingEnumeration(SavingsEnumerations.MIN_DEPOSIT_TERM_TYPE,
id);
+ EnumOptionData expected =
SavingsEnumerations.depositTermFrequencyType(id);
+
+ Assertions.assertEquals(data, expected);
+ }
+
+ @Test
+ void savingEnumerationMapsMaxDepositTermType() {
+ int id = SavingsPeriodFrequencyType.YEARS.getValue();
+
+ EnumOptionData data =
SavingsEnumerations.savingEnumeration(SavingsEnumerations.MAX_DEPOSIT_TERM_TYPE,
id);
+ EnumOptionData expected =
SavingsEnumerations.depositTermFrequencyType(id);
+
+ Assertions.assertEquals(data, expected);
+ }
+
+ @Test
+ void savingEnumerationMapsInMultiplesOfDepositTermType() {
+ int id = SavingsPeriodFrequencyType.DAYS.getValue();
+
+ EnumOptionData data =
SavingsEnumerations.savingEnumeration(SavingsEnumerations.IN_MULTIPLES_OF_DEPOSIT_TERM_TYPE,
id);
+ EnumOptionData expected =
SavingsEnumerations.inMultiplesOfDepositTermFrequencyType(id);
+
+ Assertions.assertEquals(data, expected);
+ }
+
+ @Test
+ void savingEnumerationMapsDepositPeriodFrequencyType() {
+ int id = SavingsPeriodFrequencyType.MONTHS.getValue();
+
+ EnumOptionData data =
SavingsEnumerations.savingEnumeration(SavingsEnumerations.DEPOSIT_PERIOD_FREQUNCY_TYPE,
id);
+ EnumOptionData expected =
SavingsEnumerations.depositPeriodFrequency(id);
+
+ Assertions.assertEquals(data, expected);
+ }
+
+ @Test
+ void savingEnumerationMapsLockinPeriodFrequencyType() {
+ int id = SavingsPeriodFrequencyType.MONTHS.getValue();
+
+ EnumOptionData data =
SavingsEnumerations.savingEnumeration(SavingsEnumerations.LOCKIN_PERIOD_FREQUNCY_TYPE,
id);
+ EnumOptionData expected =
SavingsEnumerations.lockinPeriodFrequencyType(id);
+
+ Assertions.assertEquals(data, expected);
+ }
+
+ @Test
+ void savingEnumerationMapsAccountingRuleType() {
+ int id = AccountingRuleType.CASH_BASED.getValue();
+
+ EnumOptionData data =
SavingsEnumerations.savingEnumeration(SavingsEnumerations.ACCOUNTING_RULE_TYPE,
id);
+ EnumOptionData expected =
AccountingEnumerations.accountingRuleType(id);
+
+ Assertions.assertEquals(data, expected);
+ }
+
+ @Test
+ void savingEnumerationMapsPreClosurePenaltyInterestType() {
+ int id = PreClosurePenalInterestOnType.WHOLE_TERM.getValue();
+
+ EnumOptionData data =
SavingsEnumerations.savingEnumeration(SavingsEnumerations.PRE_CLOSURE_PENAL_INTEREST_TYPE,
id);
+ EnumOptionData expected =
SavingsEnumerations.preClosurePenaltyInterestOnType(id);
+
+ Assertions.assertEquals(data, expected);
+ }
+
+ @Test
+ void savingEnumerationMapsInterestCalculationDaysInYearType() {
+ int id = SavingsInterestCalculationDaysInYearType.DAYS_365.getValue();
+
+ EnumOptionData data =
SavingsEnumerations.savingEnumeration(SavingsEnumerations.INTEREST_CALCULATION_DAYS_IN_YEAR,
id);
+ EnumOptionData expected =
SavingsEnumerations.interestCalculationDaysInYearType(id);
+
+ Assertions.assertEquals(data, expected);
+ }
+
+ @Test
+ void savingEnumerationMapsRecurringFrequencyType() {
+ int id = SavingsPeriodFrequencyType.WEEKS.getValue();
+
+ EnumOptionData data =
SavingsEnumerations.savingEnumeration(SavingsEnumerations.RECURRING_FREQUENCY_TYPE,
id);
+ EnumOptionData expected =
SavingsEnumerations.depositPeriodFrequency(id);
+
+ Assertions.assertEquals(data, expected);
+ }
+
+ @Test
+ void savingEnumerationReturnsNullForUnknownType() {
+ EnumOptionData data =
SavingsEnumerations.savingEnumeration("unknownType", 1);
+
+ Assertions.assertNull(data);
+ }
+
+}
diff --git
a/fineract-provider/src/main/java/org/apache/fineract/commands/service/AuditReadPlatformServiceImpl.java
b/fineract-provider/src/main/java/org/apache/fineract/commands/service/AuditReadPlatformServiceImpl.java
index 0feb1610a2..40ce1284b1 100644
---
a/fineract-provider/src/main/java/org/apache/fineract/commands/service/AuditReadPlatformServiceImpl.java
+++
b/fineract-provider/src/main/java/org/apache/fineract/commands/service/AuditReadPlatformServiceImpl.java
@@ -393,7 +393,7 @@ public class AuditReadPlatformServiceImpl implements
AuditReadPlatformService {
commandAsJsonMap.remove(typeName);
final Integer enumTypeId =
auditObject.get(typeName).getAsInt();
- final String code =
SavingsEnumerations.savingEnumueration(typeName, enumTypeId).getValue();
+ final String code =
SavingsEnumerations.savingEnumeration(typeName, enumTypeId).getValue();
if (code != null) {
commandAsJsonMap.put(typeName, code);
}