FINERACT-2491: Refactor SavingsEnumerations to use switch expression
This commit is contained in:
committed by
Adam Saghy
parent
e4e0082872
commit
92f8b3d0d4
+16
-27
@@ -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) {
|
||||
|
||||
+162
@@ -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);
|
||||
}
|
||||
|
||||
}
|
||||
+1
-1
@@ -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);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user