FINERACT-1724: Sonar fixes
Fineract Docker build - MariaDB / build (push) Canceled after 0s
Fineract Docker build - PostgreSQL / build (push) Canceled after 0s
Fineract Kafka Smoke / build (push) Canceled after 0s
Fineract Documentation build / build (push) Canceled after 0s
Fineract Build & Test - MariaDB / build (push) Canceled after 0s
Fineract Build & Test - MySQL / build (push) Canceled after 0s
Fineract Build & Test - PostgreSQL / build (push) Canceled after 0s
Fineract ActiveMQ Smoke / build (push) Canceled after 0s
Fineract Docker build - MariaDB / build (push) Canceled after 0s
Fineract Docker build - PostgreSQL / build (push) Canceled after 0s
Fineract Kafka Smoke / build (push) Canceled after 0s
Fineract Documentation build / build (push) Canceled after 0s
Fineract Build & Test - MariaDB / build (push) Canceled after 0s
Fineract Build & Test - MySQL / build (push) Canceled after 0s
Fineract Build & Test - PostgreSQL / build (push) Canceled after 0s
Fineract ActiveMQ Smoke / build (push) Canceled after 0s
This commit is contained in:
committed by
Adam Saghy
parent
33c1aa7874
commit
d6c10e8303
-15
@@ -20,11 +20,8 @@ package org.apache.fineract.infrastructure.core.api;
|
||||
|
||||
import jakarta.ws.rs.core.MultivaluedMap;
|
||||
import java.util.Arrays;
|
||||
import java.util.HashMap;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Locale;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.apache.fineract.infrastructure.core.serialization.JsonParserHelper;
|
||||
@@ -148,16 +145,4 @@ public final class ApiParameterHelper {
|
||||
public static boolean genericResultSetPassed(final MultivaluedMap<String, String> queryParams) {
|
||||
return queryParams.getFirst("genericResultSet") != null;
|
||||
}
|
||||
|
||||
public static Map<String, String> asMap(final MultivaluedMap<String, String> queryParameters) {
|
||||
|
||||
final Map<String, String> map = new HashMap<>(queryParameters.size());
|
||||
|
||||
for (final String parameterName : queryParameters.keySet()) {
|
||||
final List<String> values = queryParameters.get(parameterName);
|
||||
map.put(parameterName, values.get(0));
|
||||
}
|
||||
|
||||
return map;
|
||||
}
|
||||
}
|
||||
|
||||
+8
@@ -61,6 +61,7 @@ public class FineractProperties {
|
||||
private FineractTemplateProperties template;
|
||||
private FineractJpaProperties jpa;
|
||||
|
||||
private FineractDatabaseProperties database;
|
||||
private FineractQueryProperties query;
|
||||
private FineractApiProperties api;
|
||||
private FineractSecurityProperties security;
|
||||
@@ -398,6 +399,13 @@ public class FineractProperties {
|
||||
private boolean statementLoggingEnabled;
|
||||
}
|
||||
|
||||
@Getter
|
||||
@Setter
|
||||
public static class FineractDatabaseProperties {
|
||||
|
||||
private String defaultMasterPassword;
|
||||
}
|
||||
|
||||
@Getter
|
||||
@Setter
|
||||
public static class FineractQueryProperties {
|
||||
|
||||
+16
-39
@@ -18,8 +18,6 @@
|
||||
*/
|
||||
package org.apache.fineract.infrastructure.core.data;
|
||||
|
||||
import static java.util.stream.Collectors.toList;
|
||||
|
||||
import com.google.common.base.Splitter;
|
||||
import com.google.gson.JsonArray;
|
||||
import java.math.BigDecimal;
|
||||
@@ -176,13 +174,10 @@ public class DataValidatorBuilder {
|
||||
return this;
|
||||
}
|
||||
|
||||
/*** FIXME: Vishwas, why does this method have a parameter? Seems wrong ***/
|
||||
/*
|
||||
* This method is not meant for validation, if you have mandatory boolean param and if it has invalid value or value
|
||||
* not passed then call this method, this method is always used with input as false
|
||||
*/
|
||||
public DataValidatorBuilder trueOrFalseRequired1(final boolean trueOfFalseFieldProvided) {
|
||||
if (!trueOfFalseFieldProvided && !this.ignoreNullValue) {
|
||||
public DataValidatorBuilder trueOrFalseRequired(final Object trueOfFalseField) {
|
||||
|
||||
if (trueOfFalseField != null && !trueOfFalseField.toString().equalsIgnoreCase("true")
|
||||
&& !trueOfFalseField.toString().equalsIgnoreCase("false")) {
|
||||
final StringBuilder validationErrorCode = new StringBuilder("validation.msg.").append(this.resource).append(".")
|
||||
.append(this.parameter).append(".must.be.true.or.false");
|
||||
final StringBuilder defaultEnglishMessage = new StringBuilder("The parameter `").append(this.parameter)
|
||||
@@ -191,22 +186,6 @@ public class DataValidatorBuilder {
|
||||
defaultEnglishMessage.toString(), this.parameter);
|
||||
this.dataValidationErrors.add(error);
|
||||
}
|
||||
return this;
|
||||
}
|
||||
|
||||
public DataValidatorBuilder trueOrFalseRequired(final Object trueOfFalseField) {
|
||||
|
||||
if (trueOfFalseField != null) {
|
||||
if (!trueOfFalseField.toString().equalsIgnoreCase("true") && !trueOfFalseField.toString().equalsIgnoreCase("false")) {
|
||||
final StringBuilder validationErrorCode = new StringBuilder("validation.msg.").append(this.resource).append(".")
|
||||
.append(this.parameter).append(".must.be.true.or.false");
|
||||
final StringBuilder defaultEnglishMessage = new StringBuilder("The parameter `").append(this.parameter)
|
||||
.append("` must be set as true or false.");
|
||||
final ApiParameterError error = ApiParameterError.parameterError(validationErrorCode.toString(),
|
||||
defaultEnglishMessage.toString(), this.parameter);
|
||||
this.dataValidationErrors.add(error);
|
||||
}
|
||||
}
|
||||
|
||||
return this;
|
||||
}
|
||||
@@ -320,7 +299,7 @@ public class DataValidatorBuilder {
|
||||
final List<Object> rawValuesList = Arrays.asList(values);
|
||||
|
||||
if (this.value == null || !rawValuesList.contains(this.value)) {
|
||||
final List<String> valuesList = Arrays.stream(values).map(Object::toString).collect(toList());
|
||||
final List<String> valuesList = Arrays.stream(values).map(Object::toString).toList();
|
||||
final String valuesListStr = String.join(", ", valuesList);
|
||||
final StringBuilder validationErrorCode = new StringBuilder("validation.msg.").append(this.resource).append(".")
|
||||
.append(this.parameter).append(".is.not.one.of.expected.enumerations");
|
||||
@@ -349,7 +328,7 @@ public class DataValidatorBuilder {
|
||||
final List<Object> rawValuesList = Arrays.asList(values);
|
||||
|
||||
if (this.value == null || !rawValuesList.contains(this.value.toString().toLowerCase())) {
|
||||
final List<String> valuesList = Arrays.stream(values).map(Object::toString).collect(toList());
|
||||
final List<String> valuesList = Arrays.stream(values).map(Object::toString).toList();
|
||||
final String valuesListStr = String.join(", ", valuesList);
|
||||
final StringBuilder validationErrorCode = new StringBuilder("validation.msg.").append(this.resource).append(".")
|
||||
.append(this.parameter).append(".is.not.one.of.expected.enumerations");
|
||||
@@ -397,7 +376,7 @@ public class DataValidatorBuilder {
|
||||
final List<Object> rawValuesList = Arrays.asList(values);
|
||||
|
||||
if (rawValuesList.contains(this.value)) {
|
||||
final List<String> valuesList = Arrays.stream(values).map(Object::toString).collect(toList());
|
||||
final List<String> valuesList = Arrays.stream(values).map(Object::toString).toList();
|
||||
final String valuesListStr = String.join(", ", valuesList);
|
||||
final StringBuilder validationErrorCode = new StringBuilder("validation.msg.").append(this.resource).append(".")
|
||||
.append(this.parameter).append(".is.one.of.unwanted.enumerations");
|
||||
@@ -879,17 +858,15 @@ public class DataValidatorBuilder {
|
||||
}
|
||||
|
||||
public DataValidatorBuilder compareMinAndMaxOfTwoBigDecmimalNos(final BigDecimal min, final BigDecimal max) {
|
||||
if (min != null && max != null) {
|
||||
if (max.compareTo(min) < 0) {
|
||||
final StringBuilder validationErrorCode = new StringBuilder("validation.msg.").append(this.resource).append(".")
|
||||
.append(this.parameter).append(".is.not.within.expected.range");
|
||||
final StringBuilder defaultEnglishMessage = new StringBuilder("The ").append(" min number ").append(min)
|
||||
.append(" should less than max number ").append(max).append(".");
|
||||
final ApiParameterError error = ApiParameterError.parameterError(validationErrorCode.toString(),
|
||||
defaultEnglishMessage.toString(), this.parameter, min, max);
|
||||
this.dataValidationErrors.add(error);
|
||||
return this;
|
||||
}
|
||||
if (min != null && max != null && max.compareTo(min) < 0) {
|
||||
final StringBuilder validationErrorCode = new StringBuilder("validation.msg.").append(this.resource).append(".")
|
||||
.append(this.parameter).append(".is.not.within.expected.range");
|
||||
final StringBuilder defaultEnglishMessage = new StringBuilder("The ").append(" min number ").append(min)
|
||||
.append(" should less than max number ").append(max).append(".");
|
||||
final ApiParameterError error = ApiParameterError.parameterError(validationErrorCode.toString(),
|
||||
defaultEnglishMessage.toString(), this.parameter, min, max);
|
||||
this.dataValidationErrors.add(error);
|
||||
return this;
|
||||
}
|
||||
return this;
|
||||
}
|
||||
|
||||
+6
-6
@@ -34,8 +34,6 @@ public class DatabasePasswordEncryptor implements PasswordEncryptor {
|
||||
|
||||
public static final String DEFAULT_ENCRYPTION = "AES/CBC/PKCS5Padding";
|
||||
|
||||
public static final String DEFAULT_MASTER_PASSWORD = "fineract";
|
||||
|
||||
private final FineractProperties fineractProperties;
|
||||
|
||||
@SuppressWarnings("checkstyle:regexpsinglelinejava")
|
||||
@@ -54,7 +52,8 @@ public class DatabasePasswordEncryptor implements PasswordEncryptor {
|
||||
@Override
|
||||
public String encrypt(String plainPassword) {
|
||||
String masterPassword = Optional.ofNullable(fineractProperties.getTenant())
|
||||
.map(FineractProperties.FineractTenantProperties::getMasterPassword).orElse(DEFAULT_MASTER_PASSWORD);
|
||||
.map(FineractProperties.FineractTenantProperties::getMasterPassword)
|
||||
.orElse(fineractProperties.getDatabase().getDefaultMasterPassword());
|
||||
String encryption = Optional.ofNullable(fineractProperties.getTenant())
|
||||
.map(FineractProperties.FineractTenantProperties::getEncryption).orElse(DEFAULT_ENCRYPTION);
|
||||
return EncryptionUtil.encryptToBase64(encryption, masterPassword, plainPassword);
|
||||
@@ -63,7 +62,8 @@ public class DatabasePasswordEncryptor implements PasswordEncryptor {
|
||||
@Override
|
||||
public String decrypt(String encryptedPassword) {
|
||||
String masterPassword = Optional.ofNullable(fineractProperties.getTenant())
|
||||
.map(FineractProperties.FineractTenantProperties::getMasterPassword).orElse(DEFAULT_MASTER_PASSWORD);
|
||||
.map(FineractProperties.FineractTenantProperties::getMasterPassword)
|
||||
.orElse(fineractProperties.getDatabase().getDefaultMasterPassword());
|
||||
String encryption = Optional.ofNullable(fineractProperties.getTenant())
|
||||
.map(FineractProperties.FineractTenantProperties::getEncryption).orElse(DEFAULT_ENCRYPTION);
|
||||
return EncryptionUtil.decryptFromBase64(encryption, masterPassword, encryptedPassword);
|
||||
@@ -73,7 +73,7 @@ public class DatabasePasswordEncryptor implements PasswordEncryptor {
|
||||
String masterPassword = Optional.ofNullable(fineractProperties) //
|
||||
.map(FineractProperties::getTenant) //
|
||||
.map(FineractProperties.FineractTenantProperties::getMasterPassword) //
|
||||
.orElse(DEFAULT_MASTER_PASSWORD);
|
||||
.orElse(fineractProperties.getDatabase().getDefaultMasterPassword());
|
||||
return BCrypt.hashpw(masterPassword.getBytes(StandardCharsets.UTF_8), BCrypt.gensalt());
|
||||
}
|
||||
|
||||
@@ -81,7 +81,7 @@ public class DatabasePasswordEncryptor implements PasswordEncryptor {
|
||||
String masterPassword = Optional.ofNullable(fineractProperties) //
|
||||
.map(FineractProperties::getTenant) //
|
||||
.map(FineractProperties.FineractTenantProperties::getMasterPassword) //
|
||||
.orElse(DEFAULT_MASTER_PASSWORD);
|
||||
.orElse(fineractProperties.getDatabase().getDefaultMasterPassword());
|
||||
return BCrypt.checkpw(masterPassword, hashed);
|
||||
}
|
||||
}
|
||||
|
||||
+2
-3
@@ -71,8 +71,7 @@ public final class WorkingDaysUtil {
|
||||
adjustedDateDetailsDTO.setChangedScheduleDate(changedScheduleDate);
|
||||
}
|
||||
|
||||
public static RepaymentRescheduleType getRepaymentRescheduleType(final WorkingDays workingDays, final LocalDate date) {
|
||||
RepaymentRescheduleType rescheduleType = RepaymentRescheduleType.fromInt(workingDays.getRepaymentReschedulingType());
|
||||
return rescheduleType;
|
||||
public static RepaymentRescheduleType getRepaymentRescheduleType(final WorkingDays workingDays) {
|
||||
return RepaymentRescheduleType.fromInt(workingDays.getRepaymentReschedulingType());
|
||||
}
|
||||
}
|
||||
|
||||
+4
-18
@@ -377,30 +377,16 @@ public final class CalendarData implements Serializable {
|
||||
}
|
||||
|
||||
public boolean isStartDateBeforeOrEqual(final LocalDate compareDate) {
|
||||
if (this.startDate != null && compareDate != null) {
|
||||
if (this.startDate.isBefore(compareDate) || this.startDate.equals(compareDate)) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
return this.startDate != null && compareDate != null
|
||||
&& (this.startDate.isBefore(compareDate) || this.startDate.equals(compareDate));
|
||||
}
|
||||
|
||||
public boolean isEndDateAfterOrEqual(final LocalDate compareDate) {
|
||||
if (this.endDate != null && compareDate != null) {
|
||||
if (this.endDate.isAfter(compareDate) || this.endDate.isEqual(compareDate)) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
return this.endDate != null && compareDate != null && (this.endDate.isAfter(compareDate) || this.endDate.isEqual(compareDate));
|
||||
}
|
||||
|
||||
public boolean isBetweenStartAndEndDate(final LocalDate compareDate) {
|
||||
if (isStartDateBeforeOrEqual(compareDate)) {
|
||||
if (this.endDate == null || isEndDateAfterOrEqual(compareDate)) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
return isStartDateBeforeOrEqual(compareDate) && (this.endDate == null || isEndDateAfterOrEqual(compareDate));
|
||||
}
|
||||
|
||||
public boolean isValidRecurringDate(final LocalDate compareDate, final Boolean isSkipMeetingOnFirstDay, final Integer numberOfDays) {
|
||||
|
||||
+10
-44
@@ -153,10 +153,7 @@ public class Calendar extends AbstractAuditableWithUTCDateTimeCustom {
|
||||
|
||||
public static Calendar fromJson(final JsonCommand command) {
|
||||
|
||||
// final Long entityId = command.getSupportedEntityId();
|
||||
// final Integer entityTypeId =
|
||||
// CalendarEntityType.valueOf(command.getSupportedEntityType().toUpperCase()).getValue();
|
||||
LocalTime meetingtime = null;
|
||||
LocalTime meetingtime;
|
||||
final String title = command.stringValueOfParameterNamed(CalendarSupportedParameters.TITLE.getValue());
|
||||
final String description = command.stringValueOfParameterNamed(CalendarSupportedParameters.DESCRIPTION.getValue());
|
||||
final String location = command.stringValueOfParameterNamed(CalendarSupportedParameters.LOCATION.getValue());
|
||||
@@ -304,10 +301,6 @@ public class Calendar extends AbstractAuditableWithUTCDateTimeCustom {
|
||||
final String newMeetingType = CalendarType.fromInt(newValue).name();
|
||||
|
||||
throw new CalendarParameterUpdateNotSupportedException("meeting.type", defaultUserMessage, newMeetingType, oldMeeingType);
|
||||
/*
|
||||
* final Integer newValue = command.integerValueSansLocaleOfParameterNamed(typeParamName);
|
||||
* actualChanges.put(typeParamName, newValue); this.typeId = newValue;
|
||||
*/
|
||||
}
|
||||
|
||||
final String repeatingParamName = CalendarSupportedParameters.REPEATING.getValue();
|
||||
@@ -401,11 +394,9 @@ public class Calendar extends AbstractAuditableWithUTCDateTimeCustom {
|
||||
final Integer interval, final Integer repeatsOnDay, final Integer repeatsOnNthDay) {
|
||||
final Map<String, Object> actualChanges = new LinkedHashMap<>(9);
|
||||
|
||||
if (calendarStartDate != null && this.startDate != null) {
|
||||
if (!calendarStartDate.equals(this.getStartDateLocalDate())) {
|
||||
actualChanges.put("startDate", calendarStartDate);
|
||||
this.startDate = calendarStartDate;
|
||||
}
|
||||
if (calendarStartDate != null && this.startDate != null && !calendarStartDate.equals(this.getStartDateLocalDate())) {
|
||||
actualChanges.put("startDate", calendarStartDate);
|
||||
this.startDate = calendarStartDate;
|
||||
}
|
||||
|
||||
final String newRecurrence = Calendar.constructRecurrence(frequencyType, interval, repeatsOnDay, repeatsOnNthDay);
|
||||
@@ -488,46 +479,21 @@ public class Calendar extends AbstractAuditableWithUTCDateTimeCustom {
|
||||
}
|
||||
|
||||
public boolean isStartDateBeforeOrEqual(final LocalDate compareDate) {
|
||||
if (this.startDate != null && compareDate != null) {
|
||||
if (getStartDateLocalDate().isBefore(compareDate) || getStartDateLocalDate().equals(compareDate)) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
return this.startDate != null && compareDate != null
|
||||
&& (getStartDateLocalDate().isBefore(compareDate) || getStartDateLocalDate().equals(compareDate));
|
||||
}
|
||||
|
||||
public boolean isStartDateAfter(final LocalDate compareDate) {
|
||||
if (this.startDate != null && compareDate != null && getStartDateLocalDate().isAfter(compareDate)) {
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
public boolean isStartDateAfterOrEqual(final LocalDate compareDate) {
|
||||
if (this.startDate != null && compareDate != null) {
|
||||
if (getStartDateLocalDate().isAfter(compareDate) || getStartDateLocalDate().isEqual(compareDate)) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
return this.startDate != null && compareDate != null && getStartDateLocalDate().isAfter(compareDate);
|
||||
}
|
||||
|
||||
public boolean isEndDateAfterOrEqual(final LocalDate compareDate) {
|
||||
if (this.endDate != null && compareDate != null) {
|
||||
if (getEndDateLocalDate().isAfter(compareDate) || getEndDateLocalDate().isEqual(compareDate)) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
return this.endDate != null && compareDate != null
|
||||
&& (getEndDateLocalDate().isAfter(compareDate) || getEndDateLocalDate().isEqual(compareDate));
|
||||
}
|
||||
|
||||
public boolean isBetweenStartAndEndDate(final LocalDate compareDate) {
|
||||
if (isStartDateBeforeOrEqual(compareDate)) {
|
||||
if (getEndDateLocalDate() == null || isEndDateAfterOrEqual(compareDate)) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
return isStartDateBeforeOrEqual(compareDate) && (getEndDateLocalDate() == null || isEndDateAfterOrEqual(compareDate));
|
||||
}
|
||||
|
||||
private static String constructRecurrence(final JsonCommand command, final Calendar calendar) {
|
||||
|
||||
+5
-18
@@ -104,30 +104,17 @@ public class CalendarHistory extends AbstractPersistableCustom {
|
||||
}
|
||||
|
||||
public boolean isEndDateAfterOrEqual(final LocalDate compareDate) {
|
||||
if (this.endDate != null && compareDate != null) {
|
||||
if (getEndDateLocalDate().isAfter(compareDate) || getEndDateLocalDate().isEqual(compareDate)) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
return this.endDate != null && compareDate != null
|
||||
&& (getEndDateLocalDate().isAfter(compareDate) || getEndDateLocalDate().isEqual(compareDate));
|
||||
}
|
||||
|
||||
public boolean isStartDateBeforeOrEqual(final LocalDate compareDate) {
|
||||
if (this.startDate != null && compareDate != null) {
|
||||
if (getStartDateLocalDate().isBefore(compareDate) || getStartDateLocalDate().equals(compareDate)) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
return this.startDate != null && compareDate != null
|
||||
&& (getStartDateLocalDate().isBefore(compareDate) || getStartDateLocalDate().equals(compareDate));
|
||||
}
|
||||
|
||||
public boolean isBetweenStartAndEndDate(final LocalDate compareDate) {
|
||||
if (isStartDateBeforeOrEqual(compareDate)) {
|
||||
if (getEndDateLocalDate() == null || isEndDateAfterOrEqual(compareDate)) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
return isStartDateBeforeOrEqual(compareDate) && (getEndDateLocalDate() == null || isEndDateAfterOrEqual(compareDate));
|
||||
}
|
||||
|
||||
public void updateEndDate(LocalDate historyCalEndDate) {
|
||||
|
||||
+2
-2
@@ -833,7 +833,7 @@ public final class CalendarUtils {
|
||||
LocalDate nextRepaymentDate = null;
|
||||
if (applyWorkingDays) {
|
||||
if (WorkingDaysUtil.isNonWorkingDay(workingDays, newRepaymentDate)
|
||||
&& WorkingDaysUtil.getRepaymentRescheduleType(workingDays, newRepaymentDate).isMoveToNextRepaymentDay()) {
|
||||
&& WorkingDaysUtil.getRepaymentRescheduleType(workingDays).isMoveToNextRepaymentDay()) {
|
||||
newRepaymentDate = getNextRepaymentMeetingDate(recurringRule, seedDate, newRepaymentDate.plusDays(1), loanRepaymentInterval,
|
||||
frequency, workingDays, isSkipRepaymentOnFirstDayOfMonth, numberOfDays, isCalledFirstTime, applyWorkingDays);
|
||||
} else {
|
||||
@@ -851,7 +851,7 @@ public final class CalendarUtils {
|
||||
final LocalDate newRepaymentDateTemp = adjustRecurringDate(newRepaymentDate, numberOfDays);
|
||||
if (applyWorkingDays) {
|
||||
if (WorkingDaysUtil.isNonWorkingDay(workingDays, newRepaymentDateTemp)
|
||||
&& WorkingDaysUtil.getRepaymentRescheduleType(workingDays, newRepaymentDateTemp).isMoveToNextRepaymentDay()) {
|
||||
&& WorkingDaysUtil.getRepaymentRescheduleType(workingDays).isMoveToNextRepaymentDay()) {
|
||||
newRepaymentDate = getNextRepaymentMeetingDate(recurringRule, seedDate, newRepaymentDate.plusDays(1),
|
||||
loanRepaymentInterval, frequency, workingDays, isSkipRepaymentOnFirstDayOfMonth, numberOfDays,
|
||||
isCalledFirstTime, applyWorkingDays);
|
||||
|
||||
+1
-1
@@ -95,7 +95,7 @@ public enum DepositAccountType {
|
||||
|
||||
public String resourceName() {
|
||||
|
||||
String resourceName = "INVALID";
|
||||
String resourceName;
|
||||
|
||||
switch (this) {
|
||||
case FIXED_DEPOSIT:
|
||||
|
||||
+5
-10
@@ -28,7 +28,6 @@ import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Locale;
|
||||
import java.util.Set;
|
||||
import java.util.stream.Collectors;
|
||||
import lombok.Getter;
|
||||
import org.apache.commons.lang3.builder.EqualsBuilder;
|
||||
import org.apache.commons.lang3.builder.HashCodeBuilder;
|
||||
@@ -229,14 +228,10 @@ public final class SavingsAccountData implements Serializable {
|
||||
this.savingsAmountOnHold = null;
|
||||
}
|
||||
|
||||
public static final Comparator<SavingsAccountData> ClientNameComparator = new Comparator<SavingsAccountData>() {
|
||||
|
||||
@Override
|
||||
public int compare(SavingsAccountData savings1, SavingsAccountData savings2) {
|
||||
String clientOfSavings1 = savings1.getClientName().toUpperCase(Locale.ENGLISH);
|
||||
String clientOfSavings2 = savings2.getClientName().toUpperCase(Locale.ENGLISH);
|
||||
return clientOfSavings1.compareTo(clientOfSavings2);
|
||||
}
|
||||
public static final Comparator<SavingsAccountData> ClientNameComparator = (savings1, savings2) -> {
|
||||
String clientOfSavings1 = savings1.getClientName().toUpperCase(Locale.ENGLISH);
|
||||
String clientOfSavings2 = savings2.getClientName().toUpperCase(Locale.ENGLISH);
|
||||
return clientOfSavings1.compareTo(clientOfSavings2);
|
||||
};
|
||||
|
||||
public void setNewSavingsAccountTransactionData(final SavingsAccountTransactionData savingsAccountTransactionData) {
|
||||
@@ -395,7 +390,7 @@ public final class SavingsAccountData implements Serializable {
|
||||
}
|
||||
|
||||
public List<SavingsAccountTransactionData> getSavingsAccountTransactionsWithPivotConfig() {
|
||||
return this.transactions.stream().collect(Collectors.toList());
|
||||
return this.transactions.stream().toList();
|
||||
}
|
||||
|
||||
public Boolean isAccrualBasedAccountingEnabledOnSavingsProduct() {
|
||||
|
||||
+3
-3
@@ -167,7 +167,7 @@ public class SavingsAccountSummaryData implements Serializable {
|
||||
this.totalDeposits = wrapper.calculateTotalDeposits(currency, savingsAccountTransactions);
|
||||
this.totalWithdrawals = wrapper.calculateTotalWithdrawals(currency, savingsAccountTransactions);
|
||||
final HashMap<String, Money> map = updateRunningBalanceAndPivotDate(true, savingsAccountTransactions, interestTotal,
|
||||
overdraftInterestTotal, withHoldTaxTotal, currency);
|
||||
overdraftInterestTotal, withHoldTaxTotal);
|
||||
interestTotal = map.get("interestTotal");
|
||||
withHoldTaxTotal = map.get("withHoldTax");
|
||||
overdraftInterestTotal = map.get("overdraftInterestTotal");
|
||||
@@ -200,7 +200,7 @@ public class SavingsAccountSummaryData implements Serializable {
|
||||
@SuppressWarnings("unchecked")
|
||||
private HashMap<String, Money> updateRunningBalanceAndPivotDate(final boolean backdatedTxnsAllowedTill,
|
||||
final List<SavingsAccountTransactionData> savingsAccountTransactions, Money interestTotal, Money overdraftInterestTotal,
|
||||
Money withHoldTaxTotal, CurrencyData currency) {
|
||||
Money withHoldTaxTotal) {
|
||||
boolean isUpdated = false;
|
||||
HashMap<String, Money> map = new HashMap<>();
|
||||
for (int i = savingsAccountTransactions.size() - 1; i >= 0; i--) {
|
||||
@@ -257,7 +257,7 @@ public class SavingsAccountSummaryData implements Serializable {
|
||||
this.totalWithholdTax = wrapper.calculateTotalWithholdTaxWithdrawal(currency, transactions);
|
||||
|
||||
// boolean isUpdated = false;
|
||||
updateRunningBalanceAndPivotDate(false, transactions, null, null, null, currency);
|
||||
updateRunningBalanceAndPivotDate(false, transactions, null, null, null);
|
||||
|
||||
this.accountBalance = Money.of(currency, this.totalDeposits).plus(this.totalInterestPosted).minus(this.totalWithdrawals)
|
||||
.minus(this.totalWithdrawalFees).minus(this.totalAnnualFees).minus(this.totalFeeCharge).minus(this.totalPenaltyCharge)
|
||||
|
||||
-20
@@ -661,16 +661,6 @@ public final class SavingsEnumerations {
|
||||
return optionData;
|
||||
}
|
||||
|
||||
public static List<EnumOptionData> depositTermFrequencyType(final SavingsPeriodFrequencyType[] types) {
|
||||
final List<EnumOptionData> optionDatas = new ArrayList<>();
|
||||
for (final SavingsPeriodFrequencyType type : types) {
|
||||
if (!type.isInvalid()) {
|
||||
optionDatas.add(recurringDepositFrequencyType(type));
|
||||
}
|
||||
}
|
||||
return optionDatas;
|
||||
}
|
||||
|
||||
public static EnumOptionData inMultiplesOfDepositTermFrequencyType(final int id) {
|
||||
return depositTermFrequencyType(SavingsPeriodFrequencyType.fromInt(id));
|
||||
}
|
||||
@@ -702,16 +692,6 @@ public final class SavingsEnumerations {
|
||||
return optionData;
|
||||
}
|
||||
|
||||
public static List<EnumOptionData> inMultiplesOfDepositTermFrequencyType(final SavingsPeriodFrequencyType[] types) {
|
||||
final List<EnumOptionData> optionDatas = new ArrayList<>();
|
||||
for (final SavingsPeriodFrequencyType type : types) {
|
||||
if (!type.isInvalid()) {
|
||||
optionDatas.add(recurringDepositFrequencyType(type));
|
||||
}
|
||||
}
|
||||
return optionDatas;
|
||||
}
|
||||
|
||||
public static EnumOptionData depositType(final Integer id) {
|
||||
return depositType(DepositAccountType.fromInt(id));
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user