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 INTEREST_CALCULATION_DAYS_IN_YEAR = "interestCalculationDaysInYearType";
|
||||||
public static final String RECURRING_FREQUENCY_TYPE = "recurringFrequencyType";
|
public static final String RECURRING_FREQUENCY_TYPE = "recurringFrequencyType";
|
||||||
|
|
||||||
public static EnumOptionData savingEnumueration(final String typeName, final int id) {
|
public static EnumOptionData savingEnumeration(final String typeName, final int id) {
|
||||||
if (typeName.equals(INTEREST_COMPOUNDING_PERIOD_TYPE)) {
|
return switch (typeName) {
|
||||||
return compoundingInterestPeriodType(id);
|
case INTEREST_COMPOUNDING_PERIOD_TYPE -> compoundingInterestPeriodType(id);
|
||||||
} else if (typeName.equals(INTEREST_POSTING_PERIOD_TYPE)) {
|
case INTEREST_POSTING_PERIOD_TYPE -> interestPostingPeriodType(id);
|
||||||
return interestPostingPeriodType(id);
|
case INTEREST_CALCULATION_TYPE -> interestCalculationType(id);
|
||||||
} else if (typeName.equals(INTEREST_CALCULATION_TYPE)) {
|
case MIN_DEPOSIT_TERM_TYPE -> depositTermFrequencyType(id);
|
||||||
return interestCalculationType(id);
|
case MAX_DEPOSIT_TERM_TYPE -> depositTermFrequencyType(id);
|
||||||
} else if (typeName.equals(MIN_DEPOSIT_TERM_TYPE)) {
|
case IN_MULTIPLES_OF_DEPOSIT_TERM_TYPE -> inMultiplesOfDepositTermFrequencyType(id);
|
||||||
return depositTermFrequencyType(id);
|
case DEPOSIT_PERIOD_FREQUNCY_TYPE -> depositPeriodFrequency(id);
|
||||||
} else if (typeName.equals(MAX_DEPOSIT_TERM_TYPE)) {
|
case LOCKIN_PERIOD_FREQUNCY_TYPE -> lockinPeriodFrequencyType(id);
|
||||||
return depositTermFrequencyType(id);
|
case ACCOUNTING_RULE_TYPE -> AccountingEnumerations.accountingRuleType(id);
|
||||||
} else if (typeName.equals(IN_MULTIPLES_OF_DEPOSIT_TERM_TYPE)) {
|
case PRE_CLOSURE_PENAL_INTEREST_TYPE -> preClosurePenaltyInterestOnType(id);
|
||||||
return inMultiplesOfDepositTermFrequencyType(id);
|
case INTEREST_CALCULATION_DAYS_IN_YEAR -> interestCalculationDaysInYearType(id);
|
||||||
} else if (typeName.equals(DEPOSIT_PERIOD_FREQUNCY_TYPE)) {
|
case RECURRING_FREQUENCY_TYPE -> depositPeriodFrequency(id);
|
||||||
return depositPeriodFrequency(id);
|
default -> null;
|
||||||
} 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 lockinPeriodFrequencyType(final int id) {
|
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);
|
commandAsJsonMap.remove(typeName);
|
||||||
|
|
||||||
final Integer enumTypeId = auditObject.get(typeName).getAsInt();
|
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) {
|
if (code != null) {
|
||||||
commandAsJsonMap.put(typeName, code);
|
commandAsJsonMap.put(typeName, code);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user