refactor: add lombok to holiday module

This commit is contained in:
Hemant Gupta
2022-10-15 08:10:05 +02:00
committed by Arnold Gálovics
parent ba765f9b7a
commit b45baa12b0
6 changed files with 49 additions and 105 deletions
@@ -19,38 +19,31 @@
package org.apache.fineract.organisation.holiday.data; package org.apache.fineract.organisation.holiday.data;
import java.time.LocalDate; import java.time.LocalDate;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
import org.apache.fineract.infrastructure.core.data.EnumOptionData; import org.apache.fineract.infrastructure.core.data.EnumOptionData;
@Data
@NoArgsConstructor
@Accessors(chain = true)
public class HolidayData { public class HolidayData {
@SuppressWarnings("unused") @SuppressWarnings("unused")
private final Long id; private Long id;
@SuppressWarnings("unused") @SuppressWarnings("unused")
private final String name; private String name;
@SuppressWarnings("unused") @SuppressWarnings("unused")
private final String description; private String description;
@SuppressWarnings("unused") @SuppressWarnings("unused")
private final LocalDate fromDate; private LocalDate fromDate;
@SuppressWarnings("unused") @SuppressWarnings("unused")
private final LocalDate toDate; private LocalDate toDate;
@SuppressWarnings("unused") @SuppressWarnings("unused")
private final LocalDate repaymentsRescheduledTo; private LocalDate repaymentsRescheduledTo;
@SuppressWarnings("unused") @SuppressWarnings("unused")
private final Long officeId; private Long officeId;
@SuppressWarnings("unused") @SuppressWarnings("unused")
private final EnumOptionData status; private EnumOptionData status;
private final Integer reschedulingType; private Integer reschedulingType;
public HolidayData(final Long id, final String name, final String description, final LocalDate fromDate, final LocalDate toDate,
final LocalDate repaymentsRescheduledTo, final EnumOptionData status, final Integer reschedulingType) {
this.id = id;
this.name = name;
this.description = description;
this.fromDate = fromDate;
this.toDate = toDate;
this.repaymentsRescheduledTo = repaymentsRescheduledTo;
this.officeId = null;
this.status = status;
this.reschedulingType = reschedulingType;
}
} }
@@ -43,6 +43,10 @@ import javax.persistence.JoinTable;
import javax.persistence.ManyToMany; import javax.persistence.ManyToMany;
import javax.persistence.Table; import javax.persistence.Table;
import javax.persistence.UniqueConstraint; import javax.persistence.UniqueConstraint;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import lombok.experimental.Accessors;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.apache.fineract.infrastructure.core.api.JsonCommand; import org.apache.fineract.infrastructure.core.api.JsonCommand;
import org.apache.fineract.infrastructure.core.data.ApiParameterError; import org.apache.fineract.infrastructure.core.data.ApiParameterError;
@@ -54,6 +58,10 @@ import org.apache.fineract.organisation.office.domain.Office;
@Entity @Entity
@Table(name = "m_holiday", uniqueConstraints = { @UniqueConstraint(columnNames = { "name" }, name = "holiday_name") }) @Table(name = "m_holiday", uniqueConstraints = { @UniqueConstraint(columnNames = { "name" }, name = "holiday_name") })
@Getter
@Setter
@NoArgsConstructor
@Accessors(chain = true)
public class Holiday extends AbstractPersistableCustom { public class Holiday extends AbstractPersistableCustom {
@Column(name = "name", unique = true, nullable = false, length = 100) @Column(name = "name", unique = true, nullable = false, length = 100)
@@ -101,7 +109,9 @@ public class Holiday extends AbstractPersistableCustom {
// should update this field. // should update this field.
final String description = command.stringValueOfParameterNamed(HolidayApiConstants.descriptionParamName); final String description = command.stringValueOfParameterNamed(HolidayApiConstants.descriptionParamName);
return new Holiday(name, fromDate, toDate, repaymentsRescheduledTo, status, processed, description, offices, reschedulingType); return new Holiday().setName(StringUtils.trim(name)).setFromDate(fromDate).setToDate(toDate)
.setRepaymentsRescheduledTo(repaymentsRescheduledTo).setStatus(status).setProcessed(processed)
.setDescription(StringUtils.trim(description)).setOffices(offices).setReschedulingType(reschedulingType);
} }
public Map<String, Object> update(final JsonCommand command) { public Map<String, Object> update(final JsonCommand command) {
@@ -137,7 +147,7 @@ public class Holiday extends AbstractPersistableCustom {
} }
if (currentStatus.isPendingActivation()) { if (currentStatus.isPendingActivation()) {
if (command.isChangeInLocalDateParameterNamed(fromDateParamName, getFromDateLocalDate())) { if (command.isChangeInLocalDateParameterNamed(fromDateParamName, getFromDate())) {
final String valueAsInput = command.stringValueOfParameterNamed(fromDateParamName); final String valueAsInput = command.stringValueOfParameterNamed(fromDateParamName);
actualChanges.put(fromDateParamName, valueAsInput); actualChanges.put(fromDateParamName, valueAsInput);
actualChanges.put(dateFormatParamName, dateFormatAsInput); actualChanges.put(dateFormatParamName, dateFormatAsInput);
@@ -145,7 +155,7 @@ public class Holiday extends AbstractPersistableCustom {
this.fromDate = command.localDateValueOfParameterNamed(fromDateParamName); this.fromDate = command.localDateValueOfParameterNamed(fromDateParamName);
} }
if (command.isChangeInLocalDateParameterNamed(toDateParamName, getToDateLocalDate())) { if (command.isChangeInLocalDateParameterNamed(toDateParamName, getToDate())) {
final String valueAsInput = command.stringValueOfParameterNamed(toDateParamName); final String valueAsInput = command.stringValueOfParameterNamed(toDateParamName);
actualChanges.put(toDateParamName, valueAsInput); actualChanges.put(toDateParamName, valueAsInput);
actualChanges.put(dateFormatParamName, dateFormatAsInput); actualChanges.put(dateFormatParamName, dateFormatAsInput);
@@ -154,7 +164,7 @@ public class Holiday extends AbstractPersistableCustom {
this.toDate = command.localDateValueOfParameterNamed(toDateParamName); this.toDate = command.localDateValueOfParameterNamed(toDateParamName);
} }
if (command.isChangeInLocalDateParameterNamed(repaymentsRescheduledToParamName, getRepaymentsRescheduledToLocalDate())) { if (command.isChangeInLocalDateParameterNamed(repaymentsRescheduledToParamName, getRepaymentsRescheduledTo())) {
final String valueAsInput = command.stringValueOfParameterNamed(repaymentsRescheduledToParamName); final String valueAsInput = command.stringValueOfParameterNamed(repaymentsRescheduledToParamName);
actualChanges.put(repaymentsRescheduledToParamName, valueAsInput); actualChanges.put(repaymentsRescheduledToParamName, valueAsInput);
actualChanges.put(dateFormatParamName, dateFormatAsInput); actualChanges.put(dateFormatParamName, dateFormatAsInput);
@@ -170,15 +180,15 @@ public class Holiday extends AbstractPersistableCustom {
} }
} }
} else { } else {
if (command.isChangeInLocalDateParameterNamed(fromDateParamName, getFromDateLocalDate())) { if (command.isChangeInLocalDateParameterNamed(fromDateParamName, getFromDate())) {
baseDataValidator.reset().parameter(fromDateParamName).failWithCode("cannot.edit.holiday.in.active.state"); baseDataValidator.reset().parameter(fromDateParamName).failWithCode("cannot.edit.holiday.in.active.state");
} }
if (command.isChangeInLocalDateParameterNamed(toDateParamName, getToDateLocalDate())) { if (command.isChangeInLocalDateParameterNamed(toDateParamName, getToDate())) {
baseDataValidator.reset().parameter(toDateParamName).failWithCode("cannot.edit.holiday.in.active.state"); baseDataValidator.reset().parameter(toDateParamName).failWithCode("cannot.edit.holiday.in.active.state");
} }
if (command.isChangeInLocalDateParameterNamed(repaymentsRescheduledToParamName, getRepaymentsRescheduledToLocalDate())) { if (command.isChangeInLocalDateParameterNamed(repaymentsRescheduledToParamName, getRepaymentsRescheduledTo())) {
baseDataValidator.reset().parameter(repaymentsRescheduledToParamName).failWithCode("cannot.edit.holiday.in.active.state"); baseDataValidator.reset().parameter(repaymentsRescheduledToParamName).failWithCode("cannot.edit.holiday.in.active.state");
} }
@@ -215,66 +225,6 @@ public class Holiday extends AbstractPersistableCustom {
return updated; return updated;
} }
private Holiday(final String name, final LocalDate fromDate, final LocalDate toDate, final LocalDate repaymentsRescheduledTo,
final Integer status, final boolean processed, final String description, final Set<Office> offices,
final int reschedulingType) {
if (StringUtils.isNotBlank(name)) {
this.name = name.trim();
}
if (fromDate != null) {
this.fromDate = fromDate;
}
if (toDate != null) {
this.toDate = toDate;
}
if (repaymentsRescheduledTo != null) {
this.repaymentsRescheduledTo = repaymentsRescheduledTo;
}
this.status = status;
this.processed = processed;
if (StringUtils.isNotBlank(name)) {
this.description = description.trim();
} else {
this.description = null;
}
if (offices != null) {
this.offices = offices;
}
this.reschedulingType = reschedulingType;
}
protected Holiday() {}
public LocalDate getRepaymentsRescheduledToLocalDate() {
return this.repaymentsRescheduledTo;
}
public boolean isProcessed() {
return this.processed;
}
public Set<Office> getOffices() {
return this.offices;
}
public LocalDate getFromDateLocalDate() {
return this.fromDate;
}
public LocalDate getToDateLocalDate() {
return this.toDate;
}
public void processed() {
this.processed = true;
}
public void activate() { public void activate() {
final List<ApiParameterError> dataValidationErrors = new ArrayList<>(); final List<ApiParameterError> dataValidationErrors = new ArrayList<>();
final DataValidatorBuilder baseDataValidator = new DataValidatorBuilder(dataValidationErrors).resource("holiday" + ".activate"); final DataValidatorBuilder baseDataValidator = new DataValidatorBuilder(dataValidationErrors).resource("holiday" + ".activate");
@@ -79,7 +79,8 @@ public class HolidayReadPlatformServiceImpl implements HolidayReadPlatformServic
final Integer reschedulingType = JdbcSupport.getInteger(rs, "reschedulingType"); final Integer reschedulingType = JdbcSupport.getInteger(rs, "reschedulingType");
final EnumOptionData status = HolidayEnumerations.holidayStatusType(statusEnum); final EnumOptionData status = HolidayEnumerations.holidayStatusType(statusEnum);
return new HolidayData(id, name, description, fromDate, toDate, repaymentsScheduleTO, status, reschedulingType); return new HolidayData().setId(id).setName(name).setDescription(description).setFromDate(fromDate).setToDate(toDate)
.setRepaymentsRescheduledTo(repaymentsScheduleTO).setStatus(status).setReschedulingType(reschedulingType);
} }
} }
@@ -32,8 +32,8 @@ public final class HolidayUtil {
public static LocalDate getRepaymentRescheduleDateToIfHoliday(LocalDate repaymentDate, final List<Holiday> holidays) { public static LocalDate getRepaymentRescheduleDateToIfHoliday(LocalDate repaymentDate, final List<Holiday> holidays) {
for (final Holiday holiday : holidays) { for (final Holiday holiday : holidays) {
if (repaymentDate.equals(holiday.getFromDateLocalDate()) || repaymentDate.equals(holiday.getToDateLocalDate()) if (repaymentDate.equals(holiday.getFromDate()) || repaymentDate.equals(holiday.getToDate())
|| (repaymentDate.isAfter(holiday.getFromDateLocalDate()) && repaymentDate.isBefore(holiday.getToDateLocalDate()))) { || (repaymentDate.isAfter(holiday.getFromDate()) && repaymentDate.isBefore(holiday.getToDate()))) {
repaymentDate = getRepaymentRescheduleDateIfHoliday(repaymentDate, holidays); repaymentDate = getRepaymentRescheduleDateIfHoliday(repaymentDate, holidays);
} }
} }
@@ -43,10 +43,10 @@ public final class HolidayUtil {
private static LocalDate getRepaymentRescheduleDateIfHoliday(final LocalDate repaymentDate, final List<Holiday> holidays) { private static LocalDate getRepaymentRescheduleDateIfHoliday(final LocalDate repaymentDate, final List<Holiday> holidays) {
for (final Holiday holiday : holidays) { for (final Holiday holiday : holidays) {
if (repaymentDate.equals(holiday.getFromDateLocalDate()) || repaymentDate.equals(holiday.getToDateLocalDate()) if (repaymentDate.equals(holiday.getFromDate()) || repaymentDate.equals(holiday.getToDate())
|| (repaymentDate.isAfter(holiday.getFromDateLocalDate()) && repaymentDate.isBefore(holiday.getToDateLocalDate()))) { || (repaymentDate.isAfter(holiday.getFromDate()) && repaymentDate.isBefore(holiday.getToDate()))) {
// should be take from holiday // should be take from holiday
return holiday.getRepaymentsRescheduledToLocalDate(); return holiday.getRepaymentsRescheduledTo();
} }
} }
return repaymentDate; return repaymentDate;
@@ -54,8 +54,8 @@ public final class HolidayUtil {
public static boolean isHoliday(final LocalDate date, final List<Holiday> holidays) { public static boolean isHoliday(final LocalDate date, final List<Holiday> holidays) {
for (final Holiday holiday : holidays) { for (final Holiday holiday : holidays) {
if (date.isEqual(holiday.getFromDateLocalDate()) || date.isEqual(holiday.getToDateLocalDate()) if (date.isEqual(holiday.getFromDate()) || date.isEqual(holiday.getToDate())
|| (date.isAfter(holiday.getFromDateLocalDate()) && date.isBefore(holiday.getToDateLocalDate()))) { || (date.isAfter(holiday.getFromDate()) && date.isBefore(holiday.getToDate()))) {
return true; return true;
} }
} }
@@ -66,7 +66,7 @@ public final class HolidayUtil {
public static Holiday getApplicableHoliday(final LocalDate repaymentDate, final List<Holiday> holidays) { public static Holiday getApplicableHoliday(final LocalDate repaymentDate, final List<Holiday> holidays) {
Holiday referedHoliday = null; Holiday referedHoliday = null;
for (final Holiday holiday : holidays) { for (final Holiday holiday : holidays) {
if (!repaymentDate.isBefore(holiday.getFromDateLocalDate()) && !repaymentDate.isAfter(holiday.getToDateLocalDate())) { if (!repaymentDate.isBefore(holiday.getFromDate()) && !repaymentDate.isAfter(holiday.getToDate())) {
referedHoliday = holiday; referedHoliday = holiday;
} }
} }
@@ -76,7 +76,7 @@ public final class HolidayUtil {
public static void updateRepaymentRescheduleDateToWorkingDayIfItIsHoliday(final AdjustedDateDetailsDTO adjustedDateDetailsDTO, public static void updateRepaymentRescheduleDateToWorkingDayIfItIsHoliday(final AdjustedDateDetailsDTO adjustedDateDetailsDTO,
final Holiday holiday) { final Holiday holiday) {
if (holiday.getReScheduleType().isRescheduleToSpecificDate()) { if (holiday.getReScheduleType().isRescheduleToSpecificDate()) {
adjustedDateDetailsDTO.setChangedScheduleDate(holiday.getRepaymentsRescheduledToLocalDate()); adjustedDateDetailsDTO.setChangedScheduleDate(holiday.getRepaymentsRescheduledTo());
} }
} }
} }
@@ -115,7 +115,7 @@ public class HolidayWritePlatformServiceJpaRepositoryImpl implements HolidayWrit
final Holiday holiday = this.holidayRepository.findOneWithNotFoundDetection(command.entityId()); final Holiday holiday = this.holidayRepository.findOneWithNotFoundDetection(command.entityId());
Map<String, Object> changes = holiday.update(command); Map<String, Object> changes = holiday.update(command);
validateInputDates(holiday.getFromDateLocalDate(), holiday.getToDateLocalDate(), holiday.getRepaymentsRescheduledToLocalDate()); validateInputDates(holiday.getFromDate(), holiday.getToDate(), holiday.getRepaymentsRescheduledTo());
if (changes.containsKey(officesParamName)) { if (changes.containsKey(officesParamName)) {
final Set<Office> offices = getSelectedOffices(command); final Set<Office> offices = getSelectedOffices(command);
@@ -85,7 +85,7 @@ public class ApplyHolidaysToLoansTasklet implements Tasklet {
applyHolidayToRepaymentScheduleDates(loan, holiday); applyHolidayToRepaymentScheduleDates(loan, holiday);
} }
loanRepositoryWrapper.save(loans); loanRepositoryWrapper.save(loans);
holiday.processed(); holiday.isProcessed();
} }
holidayRepository.save(holidays); holidayRepository.save(holidays);
return RepeatStatus.FINISHED; return RepeatStatus.FINISHED;
@@ -96,7 +96,7 @@ public class ApplyHolidaysToLoansTasklet implements Tasklet {
if (holiday.getReScheduleType().isResheduleToNextRepaymentDate()) { if (holiday.getReScheduleType().isResheduleToNextRepaymentDate()) {
adjustedRescheduleToDate = getNextRepaymentDate(loan, holiday); adjustedRescheduleToDate = getNextRepaymentDate(loan, holiday);
} else { } else {
adjustedRescheduleToDate = holiday.getRepaymentsRescheduledToLocalDate(); adjustedRescheduleToDate = holiday.getRepaymentsRescheduledTo();
} }
if (isRepaymentScheduleAdjustmentNeeded(adjustedRescheduleToDate)) { if (isRepaymentScheduleAdjustmentNeeded(adjustedRescheduleToDate)) {
@@ -111,7 +111,7 @@ public class ApplyHolidaysToLoansTasklet implements Tasklet {
private void adjustRepaymentSchedules(Loan loan, Holiday holiday, LocalDate adjustedRescheduleToDate) { private void adjustRepaymentSchedules(Loan loan, Holiday holiday, LocalDate adjustedRescheduleToDate) {
final DefaultScheduledDateGenerator scheduledDateGenerator = new DefaultScheduledDateGenerator(); final DefaultScheduledDateGenerator scheduledDateGenerator = new DefaultScheduledDateGenerator();
ScheduleGeneratorDTO scheduleGeneratorDTO = loanUtilService.buildScheduleGeneratorDTO(loan, holiday.getFromDateLocalDate()); ScheduleGeneratorDTO scheduleGeneratorDTO = loanUtilService.buildScheduleGeneratorDTO(loan, holiday.getFromDate());
final LoanApplicationTerms loanApplicationTerms = loan.constructLoanApplicationTerms(scheduleGeneratorDTO); final LoanApplicationTerms loanApplicationTerms = loan.constructLoanApplicationTerms(scheduleGeneratorDTO);
// first repayment's from date is same as disbursement date. // first repayment's from date is same as disbursement date.
@@ -129,7 +129,7 @@ public class ApplyHolidaysToLoansTasklet implements Tasklet {
loanRepaymentScheduleInstallment.updateFromDate(tmpFromDate); loanRepaymentScheduleInstallment.updateFromDate(tmpFromDate);
} }
if (oldDueDate.equals(holiday.getFromDateLocalDate()) || oldDueDate.isAfter(holiday.getFromDateLocalDate())) { if (oldDueDate.equals(holiday.getFromDate()) || oldDueDate.isAfter(holiday.getFromDate())) {
// FIXME: AA do we need to apply non-working days. // FIXME: AA do we need to apply non-working days.
// Assuming holiday's repayment reschedule to date cannot be // Assuming holiday's repayment reschedule to date cannot be
// created on a non-working day. // created on a non-working day.
@@ -144,7 +144,7 @@ public class ApplyHolidaysToLoansTasklet implements Tasklet {
private LocalDate getNextRepaymentDate(Loan loan, Holiday holiday) { private LocalDate getNextRepaymentDate(Loan loan, Holiday holiday) {
LocalDate adjustedRescheduleToDate = null; LocalDate adjustedRescheduleToDate = null;
final LocalDate rescheduleToDate = holiday.getToDateLocalDate(); final LocalDate rescheduleToDate = holiday.getToDate();
for (final LoanRepaymentScheduleInstallment loanRepaymentScheduleInstallment : loan.getRepaymentScheduleInstallments()) { for (final LoanRepaymentScheduleInstallment loanRepaymentScheduleInstallment : loan.getRepaymentScheduleInstallments()) {
if (rescheduleToDate.isEqual(loanRepaymentScheduleInstallment.getDueDate())) { if (rescheduleToDate.isEqual(loanRepaymentScheduleInstallment.getDueDate())) {
adjustedRescheduleToDate = rescheduleToDate; adjustedRescheduleToDate = rescheduleToDate;