From aa12de397dc0100da7e13346e625f7a453e2e644 Mon Sep 17 00:00:00 2001 From: Hemant Gupta Date: Tue, 30 Aug 2022 02:52:53 +0530 Subject: [PATCH] refactor: add lombok to provisioning module --- .../LoanProductProvisioningEntryData.java | 94 +++++-------------- .../data/ProvisioningEntryData.java | 34 ++----- .../domain/LoanProductProvisioningEntry.java | 52 ++-------- .../domain/ProvisioningEntry.java | 29 ++---- ...sioningEntriesReadPlatformServiceImpl.java | 33 ++++--- ...WritePlatformServiceJpaRepositoryImpl.java | 17 ++-- 6 files changed, 77 insertions(+), 182 deletions(-) diff --git a/fineract-provider/src/main/java/org/apache/fineract/accounting/provisioning/data/LoanProductProvisioningEntryData.java b/fineract-provider/src/main/java/org/apache/fineract/accounting/provisioning/data/LoanProductProvisioningEntryData.java index 89a940438..0e1f6da4e 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/accounting/provisioning/data/LoanProductProvisioningEntryData.java +++ b/fineract-provider/src/main/java/org/apache/fineract/accounting/provisioning/data/LoanProductProvisioningEntryData.java @@ -19,77 +19,33 @@ package org.apache.fineract.accounting.provisioning.data; import java.math.BigDecimal; -import lombok.Getter; +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.experimental.Accessors; -@Getter +@Data +@NoArgsConstructor +@Accessors(chain = true) public class LoanProductProvisioningEntryData { - private final Long historyId; - private final Long officeId; - private final String officeName; - private final String currencyCode; - private final Long productId; - private final String productName; - private final Long categoryId; - private final String categoryName; - private final Long overdueInDays; - private final BigDecimal percentage; - private final BigDecimal balance; - private final BigDecimal amountreserved; - private final Long liablityAccount; - private final String liabilityAccountCode; - private final String liabilityAccountName; - private final Long expenseAccount; - private final String expenseAccountCode; - private final String expenseAccountName; - private final Long criteriaId; + private Long historyId; + private Long officeId; + private String officeName; + private String currencyCode; + private Long productId; + private String productName; + private Long categoryId; + private String categoryName; + private Long overdueInDays; + private BigDecimal percentage; + private BigDecimal balance; + private BigDecimal amountreserved; + private Long liablityAccount; + private String liabilityAccountCode; + private String liabilityAccountName; + private Long expenseAccount; + private String expenseAccountCode; + private String expenseAccountName; + private Long criteriaId; - public LoanProductProvisioningEntryData(final Long historyId, final Long officeId, final String currencyCode, final Long productId, - final Long categoryId, final Long overdueInDays, final BigDecimal percentage, final BigDecimal balance, Long liablityAccount, - Long expenseAccount, final Long criteriaId) { - this.historyId = historyId; - this.officeId = officeId; - this.currencyCode = currencyCode; - this.productId = productId; - this.categoryId = categoryId; - this.overdueInDays = overdueInDays; - this.percentage = percentage; - this.balance = balance; - this.liablityAccount = liablityAccount; - this.expenseAccount = expenseAccount; - this.amountreserved = null; - this.officeName = null; - this.productName = null; - this.categoryName = null; - this.liabilityAccountCode = null; - this.liabilityAccountName = null; - this.expenseAccountCode = null; - this.expenseAccountName = null; - this.criteriaId = criteriaId; - } - - public LoanProductProvisioningEntryData(final Long historyId, final Long officeId, final String officeName, final String currencyCode, - final Long productId, final String productName, final Long categoryId, final String categoryName, final Long overdueInDays, - final BigDecimal amountreserved, Long liablityAccount, String liabilityAccountglCode, String liabilityAccountName, - Long expenseAccount, String expenseAccountglCode, String expenseAccountName, final Long criteriaId) { - this.historyId = historyId; - this.officeId = officeId; - this.currencyCode = currencyCode; - this.productId = productId; - this.categoryId = categoryId; - this.categoryName = categoryName; - this.overdueInDays = overdueInDays; - this.percentage = null; - this.balance = null; - this.liablityAccount = liablityAccount; - this.expenseAccount = expenseAccount; - this.officeName = officeName; - this.productName = productName; - this.amountreserved = amountreserved; - this.liabilityAccountCode = liabilityAccountglCode; - this.liabilityAccountName = liabilityAccountName; - this.expenseAccountCode = expenseAccountglCode; - this.expenseAccountName = expenseAccountName; - this.criteriaId = criteriaId; - } } diff --git a/fineract-provider/src/main/java/org/apache/fineract/accounting/provisioning/data/ProvisioningEntryData.java b/fineract-provider/src/main/java/org/apache/fineract/accounting/provisioning/data/ProvisioningEntryData.java index a07f7fbfd..2d90c8adc 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/accounting/provisioning/data/ProvisioningEntryData.java +++ b/fineract-provider/src/main/java/org/apache/fineract/accounting/provisioning/data/ProvisioningEntryData.java @@ -21,7 +21,13 @@ package org.apache.fineract.accounting.provisioning.data; import java.math.BigDecimal; import java.time.LocalDate; import java.util.Collection; +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.experimental.Accessors; +@Data +@NoArgsConstructor +@Accessors(chain = true) @SuppressWarnings("unused") public class ProvisioningEntryData { @@ -43,32 +49,4 @@ public class ProvisioningEntryData { private Collection provisioningEntries; - public ProvisioningEntryData(final Long id, final Collection provisioningEntries) { - this.provisioningEntries = provisioningEntries; - this.id = id; - } - - public ProvisioningEntryData(Long id, Boolean journalEntry, Long createdById, String createdUser, LocalDate createdDate, - Long modifiedById, String modifiedUser, BigDecimal totalReservedAmount) { - this.id = id; - this.journalEntry = journalEntry; - this.createdById = createdById; - this.createdUser = createdUser; - this.modifiedById = modifiedById; - this.modifiedUser = modifiedUser; - this.createdDate = createdDate; - this.reservedAmount = totalReservedAmount; - } - - public void setEntries(Collection provisioningEntries) { - this.provisioningEntries = provisioningEntries; - } - - public Long getId() { - return this.id; - } - - public LocalDate getCreatedDate() { - return this.createdDate; - } } diff --git a/fineract-provider/src/main/java/org/apache/fineract/accounting/provisioning/domain/LoanProductProvisioningEntry.java b/fineract-provider/src/main/java/org/apache/fineract/accounting/provisioning/domain/LoanProductProvisioningEntry.java index 46c0902db..5b9b1b56c 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/accounting/provisioning/domain/LoanProductProvisioningEntry.java +++ b/fineract-provider/src/main/java/org/apache/fineract/accounting/provisioning/domain/LoanProductProvisioningEntry.java @@ -25,12 +25,20 @@ import javax.persistence.Entity; import javax.persistence.JoinColumn; import javax.persistence.ManyToOne; import javax.persistence.Table; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; +import lombok.experimental.Accessors; import org.apache.fineract.accounting.glaccount.domain.GLAccount; import org.apache.fineract.infrastructure.core.domain.AbstractPersistableCustom; import org.apache.fineract.organisation.office.domain.Office; import org.apache.fineract.organisation.provisioning.domain.ProvisioningCategory; import org.apache.fineract.portfolio.loanproduct.domain.LoanProduct; +@Getter +@Setter +@NoArgsConstructor +@Accessors(chain = true) @Entity @Table(name = "m_loanproduct_provisioning_entry") public class LoanProductProvisioningEntry extends AbstractPersistableCustom { @@ -71,50 +79,6 @@ public class LoanProductProvisioningEntry extends AbstractPersistableCustom { @JoinColumn(name = "expense_account", nullable = false) private GLAccount expenseAccount; - protected LoanProductProvisioningEntry() {} - - public LoanProductProvisioningEntry(final LoanProduct loanProduct, final Office office, final String currencyCode, - final ProvisioningCategory provisioningCategory, final Long overdueInDays, final BigDecimal reservedAmount, - final GLAccount liabilityAccount, final GLAccount expenseAccount, Long criteriaId) { - this.loanProduct = loanProduct; - this.office = office; - this.currencyCode = currencyCode; - this.provisioningCategory = provisioningCategory; - this.overdueInDays = overdueInDays; - this.reservedAmount = reservedAmount; - this.liabilityAccount = liabilityAccount; - this.expenseAccount = expenseAccount; - this.criteriaId = criteriaId; - } - - public void setProvisioningEntry(ProvisioningEntry provisioningEntry) { - this.entry = provisioningEntry; - } - - public BigDecimal getReservedAmount() { - return this.reservedAmount; - } - - public void addReservedAmount(BigDecimal value) { - this.reservedAmount = this.reservedAmount.add(value); - } - - public Office getOffice() { - return this.office; - } - - public GLAccount getLiabilityAccount() { - return this.liabilityAccount; - } - - public String getCurrencyCode() { - return this.currencyCode; - } - - public GLAccount getExpenseAccount() { - return this.expenseAccount; - } - // TODO Note that this domain class does equals() & hashCode() on getId() // for @JoinColumn attributes, which not all other classes do... diff --git a/fineract-provider/src/main/java/org/apache/fineract/accounting/provisioning/domain/ProvisioningEntry.java b/fineract-provider/src/main/java/org/apache/fineract/accounting/provisioning/domain/ProvisioningEntry.java index 4c8cf0555..db298092c 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/accounting/provisioning/domain/ProvisioningEntry.java +++ b/fineract-provider/src/main/java/org/apache/fineract/accounting/provisioning/domain/ProvisioningEntry.java @@ -30,9 +30,17 @@ import javax.persistence.JoinColumn; import javax.persistence.OneToMany; import javax.persistence.OneToOne; import javax.persistence.Table; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; +import lombok.experimental.Accessors; import org.apache.fineract.infrastructure.core.domain.AbstractPersistableCustom; import org.apache.fineract.useradministration.domain.AppUser; +@Getter +@Setter +@NoArgsConstructor +@Accessors(chain = true) @Entity @Table(name = "m_provisioning_history") public class ProvisioningEntry extends AbstractPersistableCustom { @@ -57,19 +65,6 @@ public class ProvisioningEntry extends AbstractPersistableCustom { @Column(name = "lastmodified_date") private LocalDate lastModifiedDate; - protected ProvisioningEntry() { - - } - - public ProvisioningEntry(AppUser createdBy, LocalDate createdDate, AppUser lastModifiedBy, LocalDate lastModifiedDate, - Set provisioningEntries) { - this.provisioningEntries = provisioningEntries; - this.createdBy = createdBy; - this.createdDate = createdDate; - this.lastModifiedBy = lastModifiedBy; - this.lastModifiedDate = lastModifiedDate; - } - public void setProvisioningEntries(Collection provisioningEntries) { if (this.provisioningEntries == null) { this.provisioningEntries = new HashSet<>(); @@ -81,12 +76,4 @@ public class ProvisioningEntry extends AbstractPersistableCustom { return this.provisioningEntries; } - public void setJournalEntryCreated(Boolean bool) { - this.isJournalEntryCreated = bool; - } - - public LocalDate getCreatedDate() { - return this.createdDate; - } - } diff --git a/fineract-provider/src/main/java/org/apache/fineract/accounting/provisioning/service/ProvisioningEntriesReadPlatformServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/accounting/provisioning/service/ProvisioningEntriesReadPlatformServiceImpl.java index 0cb95b182..a0faf234e 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/accounting/provisioning/service/ProvisioningEntriesReadPlatformServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/accounting/provisioning/service/ProvisioningEntriesReadPlatformServiceImpl.java @@ -95,8 +95,10 @@ public class ProvisioningEntriesReadPlatformServiceImpl implements ProvisioningE Long criteriaId = rs.getLong("criteriaid"); Long historyId = null; - return new LoanProductProvisioningEntryData(historyId, officeId, currentcyCode, productId, categoryId, overdueDays, percentage, - outstandingBalance, liabilityAccountCode, expenseAccountCode, criteriaId); + return new LoanProductProvisioningEntryData().setHistoryId(historyId).setOfficeId(officeId).setCurrencyCode(currentcyCode) + .setProductId(productId).setCategoryId(categoryId).setOverdueInDays(overdueDays).setPercentage(percentage) + .setBalance(outstandingBalance).setLiablityAccount(liabilityAccountCode).setExpenseAccount(expenseAccountCode) + .setCriteriaId(criteriaId); } public String schema() { @@ -131,8 +133,9 @@ public class ProvisioningEntriesReadPlatformServiceImpl implements ProvisioningE String modifieUser = rs.getString("modifieduser"); BigDecimal totalReservedAmount = null; LocalDate createdLocalDate = createdDate != null ? createdDate.toLocalDate() : null; - return new ProvisioningEntryData(id, journalEntry, createdById, createdUser, createdLocalDate, modifiedById, modifieUser, - totalReservedAmount); + return new ProvisioningEntryData().setId(id).setJournalEntry(journalEntry).setCreatedById(createdById) + .setCreatedUser(createdUser).setCreatedDate(createdLocalDate).setModifiedById(modifiedById).setModifiedUser(modifieUser) + .setReservedAmount(totalReservedAmount); } public String getSchema() { @@ -173,9 +176,13 @@ public class ProvisioningEntriesReadPlatformServiceImpl implements ProvisioningE Long criteriaId = rs.getLong("criteriaid"); String liabilityAccountName = rs.getString("liabilityname"); String expenseAccountName = rs.getString("expensename"); - return new LoanProductProvisioningEntryData(historyId, officeId, officeName, currentcyCode, productId, productName, categoryId, - categoryName, overdueDays, amountreserved, liabilityAccountCode, liabilityAccountglCode, liabilityAccountName, - expenseAccountCode, expenseAccountglCode, expenseAccountName, criteriaId); + return new LoanProductProvisioningEntryData().setHistoryId(historyId).setOfficeId(officeId).setOfficeName(officeName) + .setCurrencyCode(currentcyCode).setProductId(productId).setProductName(productName).setCategoryId(categoryId) + .setCategoryName(categoryName).setOverdueInDays(overdueDays).setAmountreserved(amountreserved) + .setLiablityAccount(liabilityAccountCode).setLiabilityAccountCode(liabilityAccountglCode) + .setLiabilityAccountName(liabilityAccountName).setExpenseAccount(expenseAccountCode) + .setExpenseAccountCode(expenseAccountglCode).setExpenseAccountName(expenseAccountName).setCriteriaId(criteriaId); + } public String getSchema() { @@ -205,8 +212,9 @@ public class ProvisioningEntriesReadPlatformServiceImpl implements ProvisioningE String modifieUser = rs.getString("modifieduser"); BigDecimal totalReservedAmount = rs.getBigDecimal("totalreserved"); LocalDate createdLocalDate = createdDate != null ? createdDate.toLocalDate() : null; - return new ProvisioningEntryData(id, journalEntry, createdById, createdUser, createdLocalDate, modifiedById, modifieUser, - totalReservedAmount); + return new ProvisioningEntryData().setId(id).setJournalEntry(journalEntry).setCreatedById(createdById) + .setCreatedUser(createdUser).setCreatedDate(createdLocalDate).setModifiedById(modifiedById).setModifiedUser(modifieUser) + .setReservedAmount(totalReservedAmount); } public String getSchema() { @@ -260,7 +268,7 @@ public class ProvisioningEntriesReadPlatformServiceImpl implements ProvisioningE ProvisioningEntryDataMapper mapper1 = new ProvisioningEntryDataMapper(); final String sql1 = "select " + mapper1.getSchema() + " where entry.id = ?"; data = this.jdbcTemplate.queryForObject(sql1, mapper1, entryId); // NOSONAR - data.setEntries(entries); + data.setProvisioningEntries(entries); } return data; } @@ -293,8 +301,9 @@ public class ProvisioningEntriesReadPlatformServiceImpl implements ProvisioningE String modifiedName = null; BigDecimal totalReservedAmount = null; LocalDate createdLocalDate = createdDate != null ? createdDate.toLocalDate() : null; - return new ProvisioningEntryData(id, Boolean.TRUE, createdBy, createdName, createdLocalDate, modifiedBy, modifiedName, - totalReservedAmount); + return new ProvisioningEntryData().setId(id).setJournalEntry(Boolean.TRUE).setCreatedById(createdBy).setCreatedUser(createdName) + .setCreatedDate(createdLocalDate).setModifiedById(modifiedBy).setModifiedUser(modifiedName) + .setReservedAmount(totalReservedAmount); } public String schema() { diff --git a/fineract-provider/src/main/java/org/apache/fineract/accounting/provisioning/service/ProvisioningEntriesWritePlatformServiceJpaRepositoryImpl.java b/fineract-provider/src/main/java/org/apache/fineract/accounting/provisioning/service/ProvisioningEntriesWritePlatformServiceJpaRepositoryImpl.java index e7478cc71..a12c72c05 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/accounting/provisioning/service/ProvisioningEntriesWritePlatformServiceJpaRepositoryImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/accounting/provisioning/service/ProvisioningEntriesWritePlatformServiceJpaRepositoryImpl.java @@ -95,9 +95,9 @@ public class ProvisioningEntriesWritePlatformServiceJpaRepositoryImpl implements existingEntryData.getId(), PortfolioProductType.PROVISIONING.getValue()); } if (requestedEntry.getLoanProductProvisioningEntries() == null || requestedEntry.getLoanProductProvisioningEntries().size() == 0) { - requestedEntry.setJournalEntryCreated(Boolean.FALSE); + requestedEntry.setIsJournalEntryCreated(Boolean.FALSE); } else { - requestedEntry.setJournalEntryCreated(Boolean.TRUE); + requestedEntry.setIsJournalEntryCreated(Boolean.TRUE); } this.provisioningEntryRepository.saveAndFlush(requestedEntry); @@ -150,7 +150,7 @@ public class ProvisioningEntriesWritePlatformServiceJpaRepositoryImpl implements throw new ProvisioningEntryAlreadyCreatedException(existingEntry.getId(), existingEntry.getCreatedDate()); } AppUser currentUser = this.platformSecurityContext.authenticatedUser(); - ProvisioningEntry requestedEntry = new ProvisioningEntry(currentUser, date, null, null, null); + ProvisioningEntry requestedEntry = new ProvisioningEntry().setCreatedBy(currentUser).setCreatedDate(date); Collection entries = generateLoanProvisioningEntry(requestedEntry, date); requestedEntry.setProvisioningEntries(entries); if (addJournalEntries) { @@ -189,15 +189,16 @@ public class ProvisioningEntriesWritePlatformServiceJpaRepositoryImpl implements Money money = Money.of(currency, data.getBalance()); Money amountToReserve = money.percentageOf(data.getPercentage(), MoneyHelper.getRoundingMode()); Long criteraId = data.getCriteriaId(); - LoanProductProvisioningEntry entry = new LoanProductProvisioningEntry(loanProduct, office, data.getCurrencyCode(), - provisioningCategory, data.getOverdueInDays(), amountToReserve.getAmount(), liabilityAccount, expenseAccount, - criteraId); - entry.setProvisioningEntry(parent); + LoanProductProvisioningEntry entry = new LoanProductProvisioningEntry().setLoanProduct(loanProduct).setOffice(office) + .setCurrencyCode(data.getCurrencyCode()).setProvisioningCategory(provisioningCategory) + .setOverdueInDays(data.getOverdueInDays()).setReservedAmount(amountToReserve.getAmount()) + .setLiabilityAccount(liabilityAccount).setExpenseAccount(expenseAccount).setCriteriaId(criteraId); + entry.setEntry(parent); if (!provisioningEntries.containsKey(entry.partialHashCode())) { provisioningEntries.put(entry.partialHashCode(), entry); } else { LoanProductProvisioningEntry entry1 = provisioningEntries.get(entry.partialHashCode()); - entry1.addReservedAmount(entry.getReservedAmount()); + entry1.setReservedAmount(entry1.getReservedAmount().add(entry.getReservedAmount())); } } return provisioningEntries.values();