diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanproduct/data/LoanProductData.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanproduct/data/LoanProductData.java index 6c5676ac3..e6493ca40 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanproduct/data/LoanProductData.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanproduct/data/LoanProductData.java @@ -49,6 +49,7 @@ import java.util.ArrayList; import java.util.Collection; import java.util.List; import java.util.Map; +import net.sf.ehcache.util.FindBugsSuppressWarnings; /** * Immutable data object to represent loan products. @@ -473,10 +474,10 @@ public class LoanProductData implements Serializable { } public static LoanProductData loanProductWithFloatingRates(final Long id, final String name, - final boolean isLinkedToFloatingInterestRates, final Integer floatingRateId, final String floatingRateName, - final BigDecimal interestRateDifferential, final BigDecimal minDifferentialLendingRate, - final BigDecimal defaultDifferentialLendingRate, final BigDecimal maxDifferentialLendingRate, - final boolean isFloatingInterestRateCalculationAllowed) { + final boolean isLinkedToFloatingInterestRates, final Integer floatingRateId, final String floatingRateName, + final BigDecimal interestRateDifferential, final BigDecimal minDifferentialLendingRate, + final BigDecimal defaultDifferentialLendingRate, final BigDecimal maxDifferentialLendingRate, + final boolean isFloatingInterestRateCalculationAllowed) { final String shortName = null; final String description = null; final CurrencyData currency = CurrencyData.blank(); @@ -567,9 +568,9 @@ public class LoanProductData implements Serializable { } public static LoanProductData withAccountingDetails(final LoanProductData productData, final Map accountingMappings, - final Collection paymentChannelToFundSourceMappings, - final Collection feeToGLAccountMappings, - final Collection penaltyToGLAccountMappings) { + final Collection paymentChannelToFundSourceMappings, + final Collection feeToGLAccountMappings, + final Collection penaltyToGLAccountMappings) { productData.accountingMappings = accountingMappings; productData.paymentChannelToFundSourceMappings = paymentChannelToFundSourceMappings; productData.feeToIncomeAccountMappings = feeToGLAccountMappings; @@ -578,30 +579,30 @@ public class LoanProductData implements Serializable { } public LoanProductData(final Long id, final String name, final String shortName, final String description, final CurrencyData currency, - final BigDecimal principal, final BigDecimal minPrincipal, final BigDecimal maxPrincipal, final BigDecimal tolerance, - final Integer numberOfRepayments, final Integer minNumberOfRepayments, final Integer maxNumberOfRepayments, - final Integer repaymentEvery, final BigDecimal interestRatePerPeriod, final BigDecimal minInterestRatePerPeriod, - final BigDecimal maxInterestRatePerPeriod, final BigDecimal annualInterestRate, final EnumOptionData repaymentFrequencyType, - final EnumOptionData interestRateFrequencyType, final EnumOptionData amortizationType, final EnumOptionData interestType, - final EnumOptionData interestCalculationPeriodType, final Boolean allowPartialPeriodInterestCalcualtion, final Long fundId, - final String fundName, final Long transactionProcessingStrategyId, final String transactionProcessingStrategyName, - final Integer graceOnPrincipalPayment, final Integer recurringMoratoriumOnPrincipalPeriods, final Integer graceOnInterestPayment, final Integer graceOnInterestCharged, - final Collection charges, final EnumOptionData accountingType, final boolean includeInBorrowerCycle, boolean useBorrowerCycle, final LocalDate startDate, - final LocalDate closeDate, final String status, final String externalId, - Collection principalVariations, - Collection interestRateVariations, - Collection numberOfRepaymentVariations, Boolean multiDisburseLoan, - Integer maxTrancheCount, BigDecimal outstandingLoanBalance, final Integer graceOnArrearsAgeing, final Integer overdueDaysForNPA, - final EnumOptionData daysInMonthType, final EnumOptionData daysInYearType, final boolean isInterestRecalculationEnabled, final LoanProductInterestRecalculationData interestRecalculationData, - final Integer minimumDaysBetweenDisbursalAndFirstRepayment, boolean holdGuaranteeFunds, - final LoanProductGuaranteeData loanProductGuaranteeData, final BigDecimal principalThresholdForLastInstallment, - final boolean accountMovesOutOfNPAOnlyOnArrearsCompletion, boolean canDefineInstallmentAmount, - Integer installmentAmountInMultiplesOf, LoanProductConfigurableAttributes allowAttributeOverrides, - boolean isLinkedToFloatingInterestRates, Integer floatingRateId, String floatingRateName, BigDecimal interestRateDifferential, - BigDecimal minDifferentialLendingRate, BigDecimal defaultDifferentialLendingRate, BigDecimal maxDifferentialLendingRate, - boolean isFloatingInterestRateCalculationAllowed, final boolean isVariableInstallmentsAllowed, - final Integer minimumGapBetweenInstallments, final Integer maximumGapBetweenInstallments, - final boolean syncExpectedWithDisbursementDate, final boolean canUseForTopup, final boolean isEqualAmortization) { + final BigDecimal principal, final BigDecimal minPrincipal, final BigDecimal maxPrincipal, final BigDecimal tolerance, + final Integer numberOfRepayments, final Integer minNumberOfRepayments, final Integer maxNumberOfRepayments, + final Integer repaymentEvery, final BigDecimal interestRatePerPeriod, final BigDecimal minInterestRatePerPeriod, + final BigDecimal maxInterestRatePerPeriod, final BigDecimal annualInterestRate, final EnumOptionData repaymentFrequencyType, + final EnumOptionData interestRateFrequencyType, final EnumOptionData amortizationType, final EnumOptionData interestType, + final EnumOptionData interestCalculationPeriodType, final Boolean allowPartialPeriodInterestCalcualtion, final Long fundId, + final String fundName, final Long transactionProcessingStrategyId, final String transactionProcessingStrategyName, + final Integer graceOnPrincipalPayment, final Integer recurringMoratoriumOnPrincipalPeriods, final Integer graceOnInterestPayment, final Integer graceOnInterestCharged, + final Collection charges, final EnumOptionData accountingType, final boolean includeInBorrowerCycle, boolean useBorrowerCycle, final LocalDate startDate, + final LocalDate closeDate, final String status, final String externalId, + Collection principalVariations, + Collection interestRateVariations, + Collection numberOfRepaymentVariations, Boolean multiDisburseLoan, + Integer maxTrancheCount, BigDecimal outstandingLoanBalance, final Integer graceOnArrearsAgeing, final Integer overdueDaysForNPA, + final EnumOptionData daysInMonthType, final EnumOptionData daysInYearType, final boolean isInterestRecalculationEnabled, final LoanProductInterestRecalculationData interestRecalculationData, + final Integer minimumDaysBetweenDisbursalAndFirstRepayment, boolean holdGuaranteeFunds, + final LoanProductGuaranteeData loanProductGuaranteeData, final BigDecimal principalThresholdForLastInstallment, + final boolean accountMovesOutOfNPAOnlyOnArrearsCompletion, boolean canDefineInstallmentAmount, + Integer installmentAmountInMultiplesOf, LoanProductConfigurableAttributes allowAttributeOverrides, + boolean isLinkedToFloatingInterestRates, Integer floatingRateId, String floatingRateName, BigDecimal interestRateDifferential, + BigDecimal minDifferentialLendingRate, BigDecimal defaultDifferentialLendingRate, BigDecimal maxDifferentialLendingRate, + boolean isFloatingInterestRateCalculationAllowed, final boolean isVariableInstallmentsAllowed, + final Integer minimumGapBetweenInstallments, final Integer maximumGapBetweenInstallments, + final boolean syncExpectedWithDisbursementDate, final boolean canUseForTopup, final boolean isEqualAmortization) { this.id = id; this.name = name; this.shortName = shortName; @@ -710,18 +711,18 @@ public class LoanProductData implements Serializable { } public LoanProductData(final LoanProductData productData, final Collection chargeOptions, - final Collection penaltyOptions, final Collection paymentTypeOptions, - final Collection currencyOptions, final List amortizationTypeOptions, - final List interestTypeOptions, final List interestCalculationPeriodTypeOptions, - final List repaymentFrequencyTypeOptions, final List interestRateFrequencyTypeOptions, - final Collection fundOptions, final Collection transactionStrategyOptions, - final Map> accountingMappingOptions, final List accountingRuleOptions, - final List valueConditionTypeOptions, final List daysInMonthTypeOptions, - final List daysInYearTypeOptions, final List interestRecalculationCompoundingTypeOptions, - final List rescheduleStrategyTypeOptions, final List interestRecalculationFrequencyTypeOptions, - final List preCloseInterestCalculationStrategyOptions, final List floatingRateOptions, - final List interestRecalculationNthDayTypeOptions, - final List interestRecalculationDayOfWeekTypeOptions) { + final Collection penaltyOptions, final Collection paymentTypeOptions, + final Collection currencyOptions, final List amortizationTypeOptions, + final List interestTypeOptions, final List interestCalculationPeriodTypeOptions, + final List repaymentFrequencyTypeOptions, final List interestRateFrequencyTypeOptions, + final Collection fundOptions, final Collection transactionStrategyOptions, + final Map> accountingMappingOptions, final List accountingRuleOptions, + final List valueConditionTypeOptions, final List daysInMonthTypeOptions, + final List daysInYearTypeOptions, final List interestRecalculationCompoundingTypeOptions, + final List rescheduleStrategyTypeOptions, final List interestRecalculationFrequencyTypeOptions, + final List preCloseInterestCalculationStrategyOptions, final List floatingRateOptions, + final List interestRecalculationNthDayTypeOptions, + final List interestRecalculationDayOfWeekTypeOptions) { this.id = productData.id; this.name = productData.name; this.shortName = productData.shortName; @@ -1134,17 +1135,15 @@ public class LoanProductData implements Serializable { if (isInterestRecalculationEnabled()) { return this.interestRecalculationData.getRecalculationCompoundingFrequencyInterval(); } return null; } + + @FindBugsSuppressWarnings("NP_BOOLEAN_RETURN_NULL") public Boolean isCompoundingToBePostedAsTransaction() { - if (isInterestRecalculationEnabled()) { - return this.interestRecalculationData.isCompoundingToBePostedAsTransaction(); - } else { - return !this.interestRecalculationData.isCompoundingToBePostedAsTransaction(); - } + return isInterestRecalculationEnabled() ? this.interestRecalculationData.isCompoundingToBePostedAsTransaction() : null; } + + @FindBugsSuppressWarnings("NP_BOOLEAN_RETURN_NULL") public Boolean allowCompoundingOnEod() { - if (isInterestRecalculationEnabled()) { - return this.interestRecalculationData.allowCompoundingOnEod(); - } return !this.interestRecalculationData.allowCompoundingOnEod(); + return isInterestRecalculationEnabled() ? this.interestRecalculationData.allowCompoundingOnEod() : null; } public boolean canDefineInstallmentAmount() { @@ -1200,9 +1199,9 @@ public class LoanProductData implements Serializable { return syncExpectedWithDisbursementDate; } - public boolean canUseForTopup() { - return this.canUseForTopup; - } + public boolean canUseForTopup() { + return this.canUseForTopup; + } public BigDecimal getInterestRateDifferential() { return this.interestRateDifferential;