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);
                     }

Reply via email to