Repository: incubator-fineract Updated Branches: refs/heads/develop 19c0defe4 -> 025ff9c70 Updated Tags: refs/tags/mifosplatform-0.12.0.beta [created] ee9d722dd refs/tags/mifosplatform-1.9.0-tag [created] e436a7990
http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/025ff9c7/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsAccountAssembler.java ---------------------------------------------------------------------- diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsAccountAssembler.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsAccountAssembler.java index c26bb52..97ea3c6 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsAccountAssembler.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsAccountAssembler.java @@ -309,7 +309,7 @@ public class SavingsAccountAssembler { * request inheriting details where relevant from chosen * {@link SavingsProduct}. */ - public SavingsAccount assembleFrom(final Client client, final Group group, final SavingsProduct product, final LocalDate appliedonDate, + public SavingsAccount assembleFrom(final Client client, final Group group, final Long productId, final LocalDate appliedonDate, final AppUser appliedBy) { AccountType accountType = AccountType.INVALID; @@ -330,7 +330,7 @@ public class SavingsAccountAssembler { if (!group.hasClientAsMember(client)) { throw new ClientNotInGroupException(client.getId(), group.getId()); } accountType = AccountType.JLG; } - + final SavingsProduct product = this.savingProductRepository.findOne(productId) ; final Set<SavingsAccountCharge> charges = this.savingsAccountChargeAssembler.fromSavingsProduct(product); final SavingsAccount account = SavingsAccount.createNewApplicationForSubmittal(client, group, product, null, null, null, accountType, appliedonDate, appliedBy, product.nominalAnnualInterestRate(), product.interestCompoundingPeriodType(), http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/025ff9c7/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsAccountRepository.java ---------------------------------------------------------------------- diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsAccountRepository.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsAccountRepository.java index b614b25..5a28d66 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsAccountRepository.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsAccountRepository.java @@ -25,6 +25,7 @@ import org.springframework.data.jpa.repository.JpaSpecificationExecutor; import org.springframework.data.jpa.repository.Query; import org.springframework.data.repository.query.Param; +//Use SavingsAccountRepositoryWrapper. public interface SavingsAccountRepository extends JpaRepository<SavingsAccount, Long>, JpaSpecificationExecutor<SavingsAccount> { @Query("from SavingsAccount s_acc where s_acc.client.id = :clientId") http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/025ff9c7/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsAccountRepositoryWrapper.java ---------------------------------------------------------------------- diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsAccountRepositoryWrapper.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsAccountRepositoryWrapper.java index e1a7a58..9742759 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsAccountRepositoryWrapper.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsAccountRepositoryWrapper.java @@ -18,10 +18,14 @@ */ package org.apache.fineract.portfolio.savings.domain; +import java.util.List; + import org.apache.fineract.portfolio.savings.DepositAccountType; import org.apache.fineract.portfolio.savings.exception.SavingsAccountNotFoundException; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.repository.query.Param; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; /** * <p> @@ -38,6 +42,7 @@ import org.springframework.stereotype.Service; @Service public class SavingsAccountRepositoryWrapper { + private final SavingsAccountRepository repository; @Autowired @@ -45,27 +50,72 @@ public class SavingsAccountRepositoryWrapper { this.repository = repository; } + @Transactional(readOnly=true) public SavingsAccount findOneWithNotFoundDetection(final Long savingsId) { final SavingsAccount account = this.repository.findOne(savingsId); if (account == null) { throw new SavingsAccountNotFoundException(savingsId); } + account.loadLazyCollections(); return account; } + @Transactional(readOnly=true) public SavingsAccount findOneWithNotFoundDetection(final Long savingsId, final DepositAccountType depositAccountType) { final SavingsAccount account = this.repository.findByIdAndDepositAccountType(savingsId, depositAccountType.getValue()); if (account == null) { throw new SavingsAccountNotFoundException(savingsId); } + account.loadLazyCollections(); return account; } - public void save(final SavingsAccount account) { - this.repository.save(account); + @Transactional(readOnly=true) + public List<SavingsAccount> findSavingAccountByClientId(@Param("clientId") Long clientId) { + List<SavingsAccount> accounts = this.repository.findSavingAccountByClientId(clientId) ; + loadLazyCollections(accounts); + return accounts ; + } + + @Transactional(readOnly=true) + public List<SavingsAccount> findSavingAccountByStatus(@Param("status") Integer status) { + List<SavingsAccount> accounts = this.repository.findSavingAccountByStatus(status) ; + loadLazyCollections(accounts); + return accounts ; + } + + //Root Entities are enough + public List<SavingsAccount> findByClientIdAndGroupId(@Param("clientId") Long clientId, @Param("groupId") Long groupId) { + return this.repository.findByClientIdAndGroupId(clientId, groupId) ; + } + + public boolean doNonClosedSavingAccountsExistForClient(@Param("clientId") Long clientId) { + return this.repository.doNonClosedSavingAccountsExistForClient(clientId) ; + } + + //Root Entities are enough + public List<SavingsAccount> findByGroupId(@Param("groupId") Long groupId) { + return this.repository.findByGroupId(groupId) ; + } + + //Root Entity is enough + public SavingsAccount findNonClosedAccountByAccountNumber(@Param("accountNumber") String accountNumber) { + return this.repository.findNonClosedAccountByAccountNumber(accountNumber) ; + } + + public SavingsAccount save(final SavingsAccount account) { + return this.repository.save(account); } public void delete(final SavingsAccount account) { this.repository.delete(account); } - public void saveAndFlush(final SavingsAccount account) { - this.repository.saveAndFlush(account); + public SavingsAccount saveAndFlush(final SavingsAccount account) { + return this.repository.saveAndFlush(account); + } + + private void loadLazyCollections(final List<SavingsAccount> accounts) { + if(accounts != null && accounts.size() >0) { + for(SavingsAccount account: accounts) { + account.loadLazyCollections(); + } + } } } \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/025ff9c7/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsAccountSummary.java ---------------------------------------------------------------------- diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsAccountSummary.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsAccountSummary.java index ea902d4..735016d 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsAccountSummary.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsAccountSummary.java @@ -21,7 +21,6 @@ package org.apache.fineract.portfolio.savings.domain; import java.math.BigDecimal; import java.util.Date; import java.util.List; -import java.util.Set; import javax.persistence.Column; import javax.persistence.Embeddable; @@ -91,7 +90,7 @@ public final class SavingsAccountSummary { } public void updateSummary(final MonetaryCurrency currency, final SavingsAccountTransactionSummaryWrapper wrapper, - final Set<SavingsAccountTransaction> transactions) { + final List<SavingsAccountTransaction> transactions) { this.totalDeposits = wrapper.calculateTotalDeposits(currency, transactions); this.totalWithdrawals = wrapper.calculateTotalWithdrawals(currency, transactions); http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/025ff9c7/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsAccountTransactionSummaryWrapper.java ---------------------------------------------------------------------- diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsAccountTransactionSummaryWrapper.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsAccountTransactionSummaryWrapper.java index 0aceb2b..6f7ffe6 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsAccountTransactionSummaryWrapper.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsAccountTransactionSummaryWrapper.java @@ -19,7 +19,7 @@ package org.apache.fineract.portfolio.savings.domain; import java.math.BigDecimal; -import java.util.Set; +import java.util.List; import org.apache.fineract.organisation.monetary.domain.MonetaryCurrency; import org.apache.fineract.organisation.monetary.domain.Money; @@ -32,7 +32,7 @@ import org.springframework.stereotype.Component; @Component public final class SavingsAccountTransactionSummaryWrapper { - public BigDecimal calculateTotalDeposits(final MonetaryCurrency currency, final Set<SavingsAccountTransaction> transactions) { + public BigDecimal calculateTotalDeposits(final MonetaryCurrency currency, final List<SavingsAccountTransaction> transactions) { Money total = Money.zero(currency); for (final SavingsAccountTransaction transaction : transactions) { if (transaction.isDepositAndNotReversed() || transaction.isDividendPayoutAndNotReversed()) { @@ -42,7 +42,7 @@ public final class SavingsAccountTransactionSummaryWrapper { return total.getAmountDefaultedToNullIfZero(); } - public BigDecimal calculateTotalWithdrawals(final MonetaryCurrency currency, final Set<SavingsAccountTransaction> transactions) { + public BigDecimal calculateTotalWithdrawals(final MonetaryCurrency currency, final List<SavingsAccountTransaction> transactions) { Money total = Money.zero(currency); for (final SavingsAccountTransaction transaction : transactions) { if (transaction.isWithdrawal() && transaction.isNotReversed()) { @@ -52,7 +52,7 @@ public final class SavingsAccountTransactionSummaryWrapper { return total.getAmountDefaultedToNullIfZero(); } - public BigDecimal calculateTotalInterestPosted(final MonetaryCurrency currency, final Set<SavingsAccountTransaction> transactions) { + public BigDecimal calculateTotalInterestPosted(final MonetaryCurrency currency, final List<SavingsAccountTransaction> transactions) { Money total = Money.zero(currency); for (final SavingsAccountTransaction transaction : transactions) { if (transaction.isInterestPostingAndNotReversed() && transaction.isNotReversed()) { @@ -62,7 +62,7 @@ public final class SavingsAccountTransactionSummaryWrapper { return total.getAmountDefaultedToNullIfZero(); } - public BigDecimal calculateTotalWithdrawalFees(final MonetaryCurrency currency, final Set<SavingsAccountTransaction> transactions) { + public BigDecimal calculateTotalWithdrawalFees(final MonetaryCurrency currency, final List<SavingsAccountTransaction> transactions) { Money total = Money.zero(currency); for (final SavingsAccountTransaction transaction : transactions) { if (transaction.isWithdrawalFeeAndNotReversed() && transaction.isNotReversed()) { @@ -72,7 +72,7 @@ public final class SavingsAccountTransactionSummaryWrapper { return total.getAmountDefaultedToNullIfZero(); } - public BigDecimal calculateTotalAnnualFees(final MonetaryCurrency currency, final Set<SavingsAccountTransaction> transactions) { + public BigDecimal calculateTotalAnnualFees(final MonetaryCurrency currency, final List<SavingsAccountTransaction> transactions) { Money total = Money.zero(currency); for (final SavingsAccountTransaction transaction : transactions) { if (transaction.isAnnualFeeAndNotReversed() && transaction.isNotReversed()) { @@ -82,7 +82,7 @@ public final class SavingsAccountTransactionSummaryWrapper { return total.getAmountDefaultedToNullIfZero(); } - public BigDecimal calculateTotalFeesCharge(final MonetaryCurrency currency, final Set<SavingsAccountTransaction> transactions) { + public BigDecimal calculateTotalFeesCharge(final MonetaryCurrency currency, final List<SavingsAccountTransaction> transactions) { Money total = Money.zero(currency); for (final SavingsAccountTransaction transaction : transactions) { if (transaction.isFeeChargeAndNotReversed()) { @@ -92,7 +92,7 @@ public final class SavingsAccountTransactionSummaryWrapper { return total.getAmountDefaultedToNullIfZero(); } - public BigDecimal calculateTotalFeesChargeWaived(final MonetaryCurrency currency, final Set<SavingsAccountTransaction> transactions) { + public BigDecimal calculateTotalFeesChargeWaived(final MonetaryCurrency currency, final List<SavingsAccountTransaction> transactions) { Money total = Money.zero(currency); for (final SavingsAccountTransaction transaction : transactions) { if (transaction.isWaiveFeeChargeAndNotReversed()) { @@ -102,7 +102,7 @@ public final class SavingsAccountTransactionSummaryWrapper { return total.getAmountDefaultedToNullIfZero(); } - public BigDecimal calculateTotalPenaltyCharge(final MonetaryCurrency currency, final Set<SavingsAccountTransaction> transactions) { + public BigDecimal calculateTotalPenaltyCharge(final MonetaryCurrency currency, final List<SavingsAccountTransaction> transactions) { Money total = Money.zero(currency); for (final SavingsAccountTransaction transaction : transactions) { if (transaction.isPenaltyChargeAndNotReversed()) { @@ -112,7 +112,7 @@ public final class SavingsAccountTransactionSummaryWrapper { return total.getAmountDefaultedToNullIfZero(); } - public BigDecimal calculateTotalPenaltyChargeWaived(final MonetaryCurrency currency, final Set<SavingsAccountTransaction> transactions) { + public BigDecimal calculateTotalPenaltyChargeWaived(final MonetaryCurrency currency, final List<SavingsAccountTransaction> transactions) { Money total = Money.zero(currency); for (final SavingsAccountTransaction transaction : transactions) { if (transaction.isWaivePenaltyChargeAndNotReversed()) { @@ -122,7 +122,7 @@ public final class SavingsAccountTransactionSummaryWrapper { return total.getAmountDefaultedToNullIfZero(); } - public BigDecimal calculateTotalOverdraftInterest(MonetaryCurrency currency, Set<SavingsAccountTransaction> transactions) { + public BigDecimal calculateTotalOverdraftInterest(MonetaryCurrency currency, List<SavingsAccountTransaction> transactions) { Money total = Money.zero(currency); for (final SavingsAccountTransaction transaction : transactions) { if (transaction.isOverdraftInterestAndNotReversed()) { @@ -131,7 +131,7 @@ public final class SavingsAccountTransactionSummaryWrapper { } return total.getAmountDefaultedToNullIfZero(); } - public BigDecimal calculateTotalWithholdTaxWithdrawal(MonetaryCurrency currency, Set<SavingsAccountTransaction> transactions) { + public BigDecimal calculateTotalWithholdTaxWithdrawal(MonetaryCurrency currency, List<SavingsAccountTransaction> transactions) { Money total = Money.zero(currency); for (final SavingsAccountTransaction transaction : transactions) { if (transaction.isWithHoldTaxAndNotReversed()) { http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/025ff9c7/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/DepositAccountWritePlatformServiceJpaRepositoryImpl.java ---------------------------------------------------------------------- diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/DepositAccountWritePlatformServiceJpaRepositoryImpl.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/DepositAccountWritePlatformServiceJpaRepositoryImpl.java index 75ed667..5f2834d 100755 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/DepositAccountWritePlatformServiceJpaRepositoryImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/DepositAccountWritePlatformServiceJpaRepositoryImpl.java @@ -18,6 +18,23 @@ */ package org.apache.fineract.portfolio.savings.service; +import static org.apache.fineract.portfolio.savings.DepositsApiConstants.RECURRING_DEPOSIT_ACCOUNT_RESOURCE_NAME; +import static org.apache.fineract.portfolio.savings.SavingsApiConstants.SAVINGS_ACCOUNT_RESOURCE_NAME; +import static org.apache.fineract.portfolio.savings.SavingsApiConstants.amountParamName; +import static org.apache.fineract.portfolio.savings.SavingsApiConstants.chargeIdParamName; +import static org.apache.fineract.portfolio.savings.SavingsApiConstants.dueAsOfDateParamName; + +import java.math.BigDecimal; +import java.math.MathContext; +import java.util.ArrayList; +import java.util.Collection; +import java.util.HashSet; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Locale; +import java.util.Map; +import java.util.Set; + import org.apache.commons.lang.StringUtils; import org.apache.fineract.accounting.journalentry.service.JournalEntryWritePlatformService; import org.apache.fineract.infrastructure.configuration.domain.ConfigurationDomainService; @@ -84,7 +101,7 @@ import org.apache.fineract.portfolio.savings.domain.RecurringDepositAccount; import org.apache.fineract.portfolio.savings.domain.SavingsAccount; import org.apache.fineract.portfolio.savings.domain.SavingsAccountCharge; import org.apache.fineract.portfolio.savings.domain.SavingsAccountChargeRepositoryWrapper; -import org.apache.fineract.portfolio.savings.domain.SavingsAccountRepository; +import org.apache.fineract.portfolio.savings.domain.SavingsAccountRepositoryWrapper; import org.apache.fineract.portfolio.savings.domain.SavingsAccountStatusType; import org.apache.fineract.portfolio.savings.domain.SavingsAccountTransaction; import org.apache.fineract.portfolio.savings.domain.SavingsAccountTransactionRepository; @@ -100,28 +117,11 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import java.math.BigDecimal; -import java.math.MathContext; -import java.util.ArrayList; -import java.util.Collection; -import java.util.HashSet; -import java.util.LinkedHashMap; -import java.util.List; -import java.util.Locale; -import java.util.Map; -import java.util.Set; - -import static org.apache.fineract.portfolio.savings.DepositsApiConstants.RECURRING_DEPOSIT_ACCOUNT_RESOURCE_NAME; -import static org.apache.fineract.portfolio.savings.SavingsApiConstants.SAVINGS_ACCOUNT_RESOURCE_NAME; -import static org.apache.fineract.portfolio.savings.SavingsApiConstants.amountParamName; -import static org.apache.fineract.portfolio.savings.SavingsApiConstants.chargeIdParamName; -import static org.apache.fineract.portfolio.savings.SavingsApiConstants.dueAsOfDateParamName; - @Service public class DepositAccountWritePlatformServiceJpaRepositoryImpl implements DepositAccountWritePlatformService { private final PlatformSecurityContext context; - private final SavingsAccountRepository savingAccountRepository; + private final SavingsAccountRepositoryWrapper savingAccountRepositoryWrapper; private final SavingsAccountTransactionRepository savingsAccountTransactionRepository; private final DepositAccountAssembler depositAccountAssembler; private final DepositAccountTransactionDataValidator depositAccountTransactionDataValidator; @@ -146,7 +146,7 @@ public class DepositAccountWritePlatformServiceJpaRepositoryImpl implements Depo @Autowired public DepositAccountWritePlatformServiceJpaRepositoryImpl(final PlatformSecurityContext context, - final SavingsAccountRepository savingAccountRepository, + final SavingsAccountRepositoryWrapper savingAccountRepositoryWrapper, final SavingsAccountTransactionRepository savingsAccountTransactionRepository, final DepositAccountAssembler depositAccountAssembler, final DepositAccountTransactionDataValidator depositAccountTransactionDataValidator, @@ -165,7 +165,7 @@ public class DepositAccountWritePlatformServiceJpaRepositoryImpl implements Depo final DepositAccountOnHoldTransactionRepository depositAccountOnHoldTransactionRepository) { this.context = context; - this.savingAccountRepository = savingAccountRepository; + this.savingAccountRepositoryWrapper = savingAccountRepositoryWrapper; this.savingsAccountTransactionRepository = savingsAccountTransactionRepository; this.depositAccountAssembler = depositAccountAssembler; this.depositAccountTransactionDataValidator = depositAccountTransactionDataValidator; @@ -256,7 +256,7 @@ public class DepositAccountWritePlatformServiceJpaRepositoryImpl implements Depo depositAccountOnHoldTransactions = this.depositAccountOnHoldTransactionRepository.findBySavingsAccountAndReversedFalseOrderByCreatedDateAsc(account); } account.validateAccountBalanceDoesNotBecomeNegative(SavingsAccountTransactionType.PAY_CHARGE.name(),depositAccountOnHoldTransactions); - this.savingAccountRepository.save(account); + this.savingAccountRepositoryWrapper.save(account); } postJournalEntries(account, existingTransactionIds, existingReversedTransactionIds); @@ -354,7 +354,7 @@ public class DepositAccountWritePlatformServiceJpaRepositoryImpl implements Depo account.validateAccountBalanceDoesNotBecomeNegative(SavingsAccountTransactionType.PAY_CHARGE.name(),depositAccountOnHoldTransactions); - this.savingAccountRepository.save(account); + this.savingAccountRepositoryWrapper.save(account); } postJournalEntries(account, existingTransactionIds, existingReversedTransactionIds); @@ -497,7 +497,7 @@ public class DepositAccountWritePlatformServiceJpaRepositoryImpl implements Depo account.calculateInterestUsing(mc, today, isInterestTransfer, isSavingsInterestPostingAtCurrentPeriodEnd, financialYearBeginningMonth); - this.savingAccountRepository.save(account); + this.savingAccountRepositoryWrapper.save(account); return new CommandProcessingResultBuilder() // .withEntityId(savingsId) // @@ -538,7 +538,7 @@ public class DepositAccountWritePlatformServiceJpaRepositoryImpl implements Depo final MathContext mc = new MathContext(10, MoneyHelper.getRoundingMode()); boolean isInterestTransfer = false; account.postInterest(mc, today, isInterestTransfer, isSavingsInterestPostingAtCurrentPeriodEnd, financialYearBeginningMonth); - this.savingAccountRepository.save(account); + this.savingAccountRepositoryWrapper.save(account); postJournalEntries(account, existingTransactionIds, existingReversedTransactionIds); } @@ -926,7 +926,7 @@ public class DepositAccountWritePlatformServiceJpaRepositoryImpl implements Depo financialYearBeginningMonth); this.savingsAccountTransactionRepository.save(newTransferTransaction); - this.savingAccountRepository.save(savingsAccount); + this.savingAccountRepositoryWrapper.save(savingsAccount); postJournalEntries(savingsAccount, existingTransactionIds, existingReversedTransactionIds); @@ -959,7 +959,7 @@ public class DepositAccountWritePlatformServiceJpaRepositoryImpl implements Depo financialYearBeginningMonth); this.savingsAccountTransactionRepository.save(withdrawtransferTransaction); - this.savingAccountRepository.save(savingsAccount); + this.savingAccountRepositoryWrapper.save(savingsAccount); postJournalEntries(savingsAccount, existingTransactionIds, existingReversedTransactionIds); @@ -970,7 +970,7 @@ public class DepositAccountWritePlatformServiceJpaRepositoryImpl implements Depo public void rejectSavingsTransfer(final Long accountId, final DepositAccountType depositAccountType) { final SavingsAccount savingsAccount = this.depositAccountAssembler.assembleFrom(accountId, depositAccountType); savingsAccount.setStatus(SavingsAccountStatusType.TRANSFER_ON_HOLD.getValue()); - this.savingAccountRepository.save(savingsAccount); + this.savingAccountRepositoryWrapper.save(savingsAccount); } @Override @@ -1002,7 +1002,7 @@ public class DepositAccountWritePlatformServiceJpaRepositoryImpl implements Depo financialYearBeginningMonth); this.savingsAccountTransactionRepository.save(acceptTransferTransaction); - this.savingAccountRepository.save(savingsAccount); + this.savingAccountRepositoryWrapper.save(savingsAccount); postJournalEntries(savingsAccount, existingTransactionIds, existingReversedTransactionIds); @@ -1053,7 +1053,7 @@ public class DepositAccountWritePlatformServiceJpaRepositoryImpl implements Depo savingsAccount.addCharge(fmt, savingsAccountCharge, chargeDefinition); - this.savingAccountRepository.saveAndFlush(savingsAccount); + this.savingAccountRepositoryWrapper.saveAndFlush(savingsAccount); return new CommandProcessingResultBuilder() // .withEntityId(savingsAccountCharge.getId()) // @@ -1158,7 +1158,7 @@ public class DepositAccountWritePlatformServiceJpaRepositoryImpl implements Depo account.validateAccountBalanceDoesNotBecomeNegative(SavingsApiConstants.waiveChargeTransactionAction,depositAccountOnHoldTransactions); - this.savingAccountRepository.saveAndFlush(account); + this.savingAccountRepositoryWrapper.saveAndFlush(account); postJournalEntries(account, existingTransactionIds, existingReversedTransactionIds); @@ -1183,7 +1183,7 @@ public class DepositAccountWritePlatformServiceJpaRepositoryImpl implements Depo .findOneWithNotFoundDetection(savingsAccountChargeId, savingsAccountId); savingsAccount.removeCharge(savingsAccountCharge); - this.savingAccountRepository.saveAndFlush(savingsAccount); + this.savingAccountRepositoryWrapper.saveAndFlush(savingsAccount); return new CommandProcessingResultBuilder() // .withEntityId(savingsAccountChargeId) // @@ -1289,7 +1289,7 @@ public class DepositAccountWritePlatformServiceJpaRepositoryImpl implements Depo account.validateAccountBalanceDoesNotBecomeNegative("." + SavingsAccountTransactionType.PAY_CHARGE.getCode(),depositAccountOnHoldTransactions); - this.savingAccountRepository.save(account); + this.savingAccountRepositoryWrapper.save(account); postJournalEntries(account, existingTransactionIds, existingReversedTransactionIds); } http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/025ff9c7/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/SavingsAccountWritePlatformService.java ---------------------------------------------------------------------- diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/SavingsAccountWritePlatformService.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/SavingsAccountWritePlatformService.java index d428d42..c8bf578 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/SavingsAccountWritePlatformService.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/SavingsAccountWritePlatformService.java @@ -49,13 +49,13 @@ public interface SavingsAccountWritePlatformService { CommandProcessingResult close(Long savingsId, JsonCommand command); - SavingsAccountTransaction initiateSavingsTransfer(Long accountId, LocalDate transferDate); + SavingsAccountTransaction initiateSavingsTransfer(SavingsAccount account, LocalDate transferDate); - SavingsAccountTransaction withdrawSavingsTransfer(Long accountId, LocalDate transferDate); + SavingsAccountTransaction withdrawSavingsTransfer(SavingsAccount account, LocalDate transferDate); - void rejectSavingsTransfer(Long accountId); + void rejectSavingsTransfer(SavingsAccount account); - SavingsAccountTransaction acceptSavingsTransfer(Long accountId, LocalDate transferDate, Office acceptedInOffice, Staff staff); + SavingsAccountTransaction acceptSavingsTransfer(SavingsAccount account, LocalDate transferDate, Office acceptedInOffice, Staff staff); CommandProcessingResult addSavingsAccountCharge(JsonCommand command); http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/025ff9c7/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/SavingsAccountWritePlatformServiceJpaRepositoryImpl.java ---------------------------------------------------------------------- diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/SavingsAccountWritePlatformServiceJpaRepositoryImpl.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/SavingsAccountWritePlatformServiceJpaRepositoryImpl.java index 9fe5f17..30ce57b 100755 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/SavingsAccountWritePlatformServiceJpaRepositoryImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/SavingsAccountWritePlatformServiceJpaRepositoryImpl.java @@ -91,7 +91,6 @@ import org.apache.fineract.portfolio.savings.domain.SavingsAccountAssembler; import org.apache.fineract.portfolio.savings.domain.SavingsAccountCharge; import org.apache.fineract.portfolio.savings.domain.SavingsAccountChargeRepositoryWrapper; import org.apache.fineract.portfolio.savings.domain.SavingsAccountDomainService; -import org.apache.fineract.portfolio.savings.domain.SavingsAccountRepository; import org.apache.fineract.portfolio.savings.domain.SavingsAccountRepositoryWrapper; import org.apache.fineract.portfolio.savings.domain.SavingsAccountStatusType; import org.apache.fineract.portfolio.savings.domain.SavingsAccountTransaction; @@ -115,9 +114,8 @@ import org.springframework.util.CollectionUtils; public class SavingsAccountWritePlatformServiceJpaRepositoryImpl implements SavingsAccountWritePlatformService { private final PlatformSecurityContext context; - private final SavingsAccountRepository savingAccountRepository; private final SavingsAccountDataValidator fromApiJsonDeserializer; - private final SavingsAccountRepositoryWrapper savingsRepository; + private final SavingsAccountRepositoryWrapper savingAccountRepositoryWrapper; private final StaffRepositoryWrapper staffRepository; private final SavingsAccountTransactionRepository savingsAccountTransactionRepository; private final SavingsAccountAssembler savingAccountAssembler; @@ -141,7 +139,7 @@ public class SavingsAccountWritePlatformServiceJpaRepositoryImpl implements Savi @Autowired public SavingsAccountWritePlatformServiceJpaRepositoryImpl(final PlatformSecurityContext context, - final SavingsAccountRepository savingAccountRepository, + final SavingsAccountRepositoryWrapper savingAccountRepositoryWrapper, final SavingsAccountTransactionRepository savingsAccountTransactionRepository, final SavingsAccountAssembler savingAccountAssembler, final SavingsAccountTransactionDataValidator savingsAccountTransactionDataValidator, @@ -154,13 +152,13 @@ public class SavingsAccountWritePlatformServiceJpaRepositoryImpl implements Savi final HolidayRepositoryWrapper holidayRepository, final WorkingDaysRepositoryWrapper workingDaysRepository, final AccountAssociationsReadPlatformService accountAssociationsReadPlatformService, final ChargeRepositoryWrapper chargeRepository, final SavingsAccountChargeRepositoryWrapper savingsAccountChargeRepository, - final SavingsAccountDataValidator fromApiJsonDeserializer, final SavingsAccountRepositoryWrapper savingsRepository, + final SavingsAccountDataValidator fromApiJsonDeserializer, final StaffRepositoryWrapper staffRepository, final ConfigurationDomainService configurationDomainService, final DepositAccountOnHoldTransactionRepository depositAccountOnHoldTransactionRepository, final AppUserRepositoryWrapper appuserRepository, final StandingInstructionRepository standingInstructionRepository) { this.context = context; - this.savingAccountRepository = savingAccountRepository; + this.savingAccountRepositoryWrapper = savingAccountRepositoryWrapper; this.savingsAccountTransactionRepository = savingsAccountTransactionRepository; this.savingAccountAssembler = savingAccountAssembler; this.savingsAccountTransactionDataValidator = savingsAccountTransactionDataValidator; @@ -177,7 +175,6 @@ public class SavingsAccountWritePlatformServiceJpaRepositoryImpl implements Savi this.holidayRepository = holidayRepository; this.workingDaysRepository = workingDaysRepository; this.fromApiJsonDeserializer = fromApiJsonDeserializer; - this.savingsRepository = savingsRepository; this.staffRepository = staffRepository; this.configurationDomainService = configurationDomainService; this.depositAccountOnHoldTransactionRepository = depositAccountOnHoldTransactionRepository; @@ -205,7 +202,7 @@ public class SavingsAccountWritePlatformServiceJpaRepositoryImpl implements Savi final DateTimeFormatter fmt = DateTimeFormat.forPattern(command.dateFormat()).withLocale(locale); processPostActiveActions(account, fmt, existingTransactionIds, existingReversedTransactionIds); - this.savingAccountRepository.save(account); + this.savingAccountRepositoryWrapper.save(account); } postJournalEntries(account, existingTransactionIds, existingReversedTransactionIds); @@ -364,7 +361,7 @@ public class SavingsAccountWritePlatformServiceJpaRepositoryImpl implements Savi account.calculateInterestUsing(mc, today, isInterestTransfer, isSavingsInterestPostingAtCurrentPeriodEnd, financialYearBeginningMonth); - this.savingAccountRepository.save(account); + this.savingAccountRepositoryWrapper.save(account); return new CommandProcessingResultBuilder() // .withEntityId(savingsId) // @@ -416,7 +413,7 @@ public class SavingsAccountWritePlatformServiceJpaRepositoryImpl implements Savi } } - this.savingAccountRepository.save(account); + this.savingAccountRepositoryWrapper.save(account); postJournalEntries(account, existingTransactionIds, existingReversedTransactionIds); } @@ -644,7 +641,7 @@ public class SavingsAccountWritePlatformServiceJpaRepositoryImpl implements Savi final Map<String, Object> accountChanges = account.close(user, command, DateUtils.getLocalDateOfTenant()); changes.putAll(accountChanges); if (!changes.isEmpty()) { - this.savingAccountRepository.save(account); + this.savingAccountRepositoryWrapper.save(account); final String noteText = command.stringValueOfParameterNamed("note"); if (StringUtils.isNotBlank(noteText)) { final Note note = Note.savingNote(account, noteText); @@ -668,16 +665,14 @@ public class SavingsAccountWritePlatformServiceJpaRepositoryImpl implements Savi } @Override - public SavingsAccountTransaction initiateSavingsTransfer(final Long accountId, final LocalDate transferDate) { + public SavingsAccountTransaction initiateSavingsTransfer(final SavingsAccount savingsAccount, final LocalDate transferDate) { AppUser user = getAppUserIfPresent(); final boolean isSavingsInterestPostingAtCurrentPeriodEnd = this.configurationDomainService .isSavingsInterestPostingAtCurrentPeriodEnd(); final Integer financialYearBeginningMonth = this.configurationDomainService.retrieveFinancialYearBeginningMonth(); - - final SavingsAccount savingsAccount = this.savingAccountAssembler.assembleFrom(accountId); - + this.savingAccountAssembler.setHelpers(savingsAccount); final Set<Long> existingTransactionIds = new HashSet<>(); final Set<Long> existingReversedTransactionIds = new HashSet<>(); updateExistingTransactionsDetails(savingsAccount, existingTransactionIds, existingReversedTransactionIds); @@ -692,7 +687,7 @@ public class SavingsAccountWritePlatformServiceJpaRepositoryImpl implements Savi financialYearBeginningMonth); this.savingsAccountTransactionRepository.save(newTransferTransaction); - this.savingAccountRepository.save(savingsAccount); + this.savingAccountRepositoryWrapper.save(savingsAccount); postJournalEntries(savingsAccount, existingTransactionIds, existingReversedTransactionIds); @@ -700,16 +695,14 @@ public class SavingsAccountWritePlatformServiceJpaRepositoryImpl implements Savi } @Override - public SavingsAccountTransaction withdrawSavingsTransfer(final Long accountId, final LocalDate transferDate) { + public SavingsAccountTransaction withdrawSavingsTransfer(final SavingsAccount savingsAccount, final LocalDate transferDate) { AppUser user = getAppUserIfPresent(); final boolean isSavingsInterestPostingAtCurrentPeriodEnd = this.configurationDomainService .isSavingsInterestPostingAtCurrentPeriodEnd(); final Integer financialYearBeginningMonth = this.configurationDomainService.retrieveFinancialYearBeginningMonth(); - - final SavingsAccount savingsAccount = this.savingAccountAssembler.assembleFrom(accountId); - + this.savingAccountAssembler.setHelpers(savingsAccount); final Set<Long> existingTransactionIds = new HashSet<>(); final Set<Long> existingReversedTransactionIds = new HashSet<>(); updateExistingTransactionsDetails(savingsAccount, existingTransactionIds, existingReversedTransactionIds); @@ -724,7 +717,7 @@ public class SavingsAccountWritePlatformServiceJpaRepositoryImpl implements Savi financialYearBeginningMonth); this.savingsAccountTransactionRepository.save(withdrawtransferTransaction); - this.savingAccountRepository.save(savingsAccount); + this.savingAccountRepositoryWrapper.save(savingsAccount); postJournalEntries(savingsAccount, existingTransactionIds, existingReversedTransactionIds); @@ -732,14 +725,14 @@ public class SavingsAccountWritePlatformServiceJpaRepositoryImpl implements Savi } @Override - public void rejectSavingsTransfer(final Long accountId) { - final SavingsAccount savingsAccount = this.savingAccountAssembler.assembleFrom(accountId); + public void rejectSavingsTransfer(final SavingsAccount savingsAccount) { + this.savingAccountAssembler.setHelpers(savingsAccount); savingsAccount.setStatus(SavingsAccountStatusType.TRANSFER_ON_HOLD.getValue()); - this.savingAccountRepository.save(savingsAccount); + this.savingAccountRepositoryWrapper.save(savingsAccount); } @Override - public SavingsAccountTransaction acceptSavingsTransfer(final Long accountId, final LocalDate transferDate, + public SavingsAccountTransaction acceptSavingsTransfer(final SavingsAccount savingsAccount, final LocalDate transferDate, final Office acceptedInOffice, final Staff fieldOfficer) { AppUser user = getAppUserIfPresent(); @@ -747,9 +740,7 @@ public class SavingsAccountWritePlatformServiceJpaRepositoryImpl implements Savi final boolean isSavingsInterestPostingAtCurrentPeriodEnd = this.configurationDomainService .isSavingsInterestPostingAtCurrentPeriodEnd(); final Integer financialYearBeginningMonth = this.configurationDomainService.retrieveFinancialYearBeginningMonth(); - - final SavingsAccount savingsAccount = this.savingAccountAssembler.assembleFrom(accountId); - + this.savingAccountAssembler.setHelpers(savingsAccount); final Set<Long> existingTransactionIds = new HashSet<>(); final Set<Long> existingReversedTransactionIds = new HashSet<>(); updateExistingTransactionsDetails(savingsAccount, existingTransactionIds, existingReversedTransactionIds); @@ -767,7 +758,7 @@ public class SavingsAccountWritePlatformServiceJpaRepositoryImpl implements Savi financialYearBeginningMonth); this.savingsAccountTransactionRepository.save(acceptTransferTransaction); - this.savingAccountRepository.save(savingsAccount); + this.savingAccountRepositoryWrapper.save(savingsAccount); postJournalEntries(savingsAccount, existingTransactionIds, existingReversedTransactionIds); @@ -825,7 +816,7 @@ public class SavingsAccountWritePlatformServiceJpaRepositoryImpl implements Savi savingsAccount.addCharge(fmt, savingsAccountCharge, chargeDefinition); - this.savingAccountRepository.saveAndFlush(savingsAccount); + this.savingAccountRepositoryWrapper.saveAndFlush(savingsAccount); return new CommandProcessingResultBuilder() // .withEntityId(savingsAccountCharge.getId()) // @@ -931,7 +922,7 @@ public class SavingsAccountWritePlatformServiceJpaRepositoryImpl implements Savi account.validateAccountBalanceDoesNotBecomeNegative(SavingsApiConstants.waiveChargeTransactionAction, depositAccountOnHoldTransactions); - this.savingAccountRepository.saveAndFlush(account); + this.savingAccountRepositoryWrapper.saveAndFlush(account); postJournalEntries(account, existingTransactionIds, existingReversedTransactionIds); @@ -956,7 +947,7 @@ public class SavingsAccountWritePlatformServiceJpaRepositoryImpl implements Savi savingsAccountChargeId, savingsAccountId); savingsAccount.removeCharge(savingsAccountCharge); - this.savingAccountRepository.saveAndFlush(savingsAccount); + this.savingAccountRepositoryWrapper.saveAndFlush(savingsAccount); return new CommandProcessingResultBuilder() // .withEntityId(savingsAccountChargeId) // @@ -1063,7 +1054,7 @@ public class SavingsAccountWritePlatformServiceJpaRepositoryImpl implements Savi account.validateAccountBalanceDoesNotBecomeNegative("." + SavingsAccountTransactionType.PAY_CHARGE.getCode(), depositAccountOnHoldTransactions); - this.savingAccountRepository.save(account); + this.savingAccountRepositoryWrapper.save(account); postJournalEntries(account, existingTransactionIds, existingReversedTransactionIds); } @@ -1163,7 +1154,7 @@ public class SavingsAccountWritePlatformServiceJpaRepositoryImpl implements Savi Staff toSavingsOfficer = null; this.fromApiJsonDeserializer.validateForAssignSavingsOfficer(command.json()); - final SavingsAccount savingsForUpdate = this.savingsRepository.findOneWithNotFoundDetection(savingsAccountId); + final SavingsAccount savingsForUpdate = this.savingAccountRepositoryWrapper.findOneWithNotFoundDetection(savingsAccountId); final Long fromSavingsOfficerId = command.longValueOfParameterNamed("fromSavingsOfficerId"); final Long toSavingsOfficerId = command.longValueOfParameterNamed("toSavingsOfficerId"); final LocalDate dateOfSavingsOfficerAssignment = command.localDateValueOfParameterNamed("assignmentDate"); @@ -1182,7 +1173,7 @@ public class SavingsAccountWritePlatformServiceJpaRepositoryImpl implements Savi savingsForUpdate.reassignSavingsOfficer(toSavingsOfficer, dateOfSavingsOfficerAssignment); - this.savingsRepository.saveAndFlush(savingsForUpdate); + this.savingAccountRepositoryWrapper.saveAndFlush(savingsForUpdate); return new CommandProcessingResultBuilder() // .withCommandId(command.commandId()) // @@ -1202,14 +1193,14 @@ public class SavingsAccountWritePlatformServiceJpaRepositoryImpl implements Savi final Map<String, Object> actualChanges = new LinkedHashMap<>(5); this.fromApiJsonDeserializer.validateForUnAssignSavingsOfficer(command.json()); - final SavingsAccount savingsForUpdate = this.savingsRepository.findOneWithNotFoundDetection(savingsAccountId); + final SavingsAccount savingsForUpdate = this.savingAccountRepositoryWrapper.findOneWithNotFoundDetection(savingsAccountId); if (savingsForUpdate.getSavingsOfficer() == null) { throw new SavingsOfficerUnassignmentException(savingsAccountId); } final LocalDate dateOfSavingsOfficerUnassigned = command.localDateValueOfParameterNamed("unassignedDate"); savingsForUpdate.removeSavingsOfficer(dateOfSavingsOfficerUnassigned); - this.savingsRepository.saveAndFlush(savingsForUpdate); + this.savingAccountRepositoryWrapper.saveAndFlush(savingsForUpdate); actualChanges.put("toSavingsOfficerId", null); @@ -1225,7 +1216,7 @@ public class SavingsAccountWritePlatformServiceJpaRepositoryImpl implements Savi @Override public CommandProcessingResult modifyWithHoldTax(Long savingsAccountId, JsonCommand command) { final Map<String, Object> actualChanges = new HashMap<>(1); - final SavingsAccount savingsForUpdate = this.savingsRepository.findOneWithNotFoundDetection(savingsAccountId); + final SavingsAccount savingsForUpdate = this.savingAccountRepositoryWrapper.findOneWithNotFoundDetection(savingsAccountId); if (command.isChangeInBooleanParameterNamed(withHoldTaxParamName, savingsForUpdate.withHoldTax())) { final boolean newValue = command.booleanPrimitiveValueOfParameterNamed(withHoldTaxParamName); actualChanges.put(withHoldTaxParamName, newValue); @@ -1254,7 +1245,7 @@ public class SavingsAccountWritePlatformServiceJpaRepositoryImpl implements Savi final Set<Long> existingReversedTransactionIds = new HashSet<>(); updateExistingTransactionsDetails(account, existingTransactionIds, existingReversedTransactionIds); account.setSubStatusInactive(appuserRepository.fetchSystemUser()); - this.savingAccountRepository.save(account); + this.savingAccountRepositoryWrapper.save(account); postJournalEntries(account, existingTransactionIds, existingReversedTransactionIds); } @@ -1263,7 +1254,7 @@ public class SavingsAccountWritePlatformServiceJpaRepositoryImpl implements Savi public void setSubStatusDormant(Long savingsId){ final SavingsAccount account = this.savingAccountAssembler.assembleFrom(savingsId); account.setSubStatusDormant(); - this.savingAccountRepository.save(account); + this.savingAccountRepositoryWrapper.save(account); } @Override @@ -1274,7 +1265,7 @@ public class SavingsAccountWritePlatformServiceJpaRepositoryImpl implements Savi final Set<Long> existingReversedTransactionIds = new HashSet<>(); updateExistingTransactionsDetails(account, existingTransactionIds, existingReversedTransactionIds); account.escheat(appuserRepository.fetchSystemUser()); - this.savingAccountRepository.save(account); + this.savingAccountRepositoryWrapper.save(account); postJournalEntries(account, existingTransactionIds, existingReversedTransactionIds); } http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/025ff9c7/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/SavingsSchedularServiceImpl.java ---------------------------------------------------------------------- diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/SavingsSchedularServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/SavingsSchedularServiceImpl.java index 24aefa6..7563f85 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/SavingsSchedularServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/SavingsSchedularServiceImpl.java @@ -26,7 +26,7 @@ import org.apache.fineract.infrastructure.jobs.exception.JobExecutionException; import org.apache.fineract.infrastructure.jobs.service.JobName; import org.apache.fineract.portfolio.savings.domain.SavingsAccount; import org.apache.fineract.portfolio.savings.domain.SavingsAccountAssembler; -import org.apache.fineract.portfolio.savings.domain.SavingsAccountRepository; +import org.apache.fineract.portfolio.savings.domain.SavingsAccountRepositoryWrapper; import org.apache.fineract.portfolio.savings.domain.SavingsAccountStatusType; import org.joda.time.LocalDate; import org.springframework.beans.factory.annotation.Autowired; @@ -37,24 +37,24 @@ public class SavingsSchedularServiceImpl implements SavingsSchedularService { private final SavingsAccountAssembler savingAccountAssembler; private final SavingsAccountWritePlatformService savingsAccountWritePlatformService; - private final SavingsAccountRepository savingAccountRepository; + private final SavingsAccountRepositoryWrapper savingAccountRepositoryWrapper; private final SavingsAccountReadPlatformService savingAccountReadPlatformService; @Autowired public SavingsSchedularServiceImpl(final SavingsAccountAssembler savingAccountAssembler, final SavingsAccountWritePlatformService savingsAccountWritePlatformService, - final SavingsAccountRepository savingAccountRepository, + final SavingsAccountRepositoryWrapper savingAccountRepositoryWrapper, final SavingsAccountReadPlatformService savingAccountReadPlatformService) { this.savingAccountAssembler = savingAccountAssembler; this.savingsAccountWritePlatformService = savingsAccountWritePlatformService; - this.savingAccountRepository = savingAccountRepository; + this.savingAccountRepositoryWrapper = savingAccountRepositoryWrapper; this.savingAccountReadPlatformService = savingAccountReadPlatformService; } @CronTarget(jobName = JobName.POST_INTEREST_FOR_SAVINGS) @Override public void postInterestForAccounts() throws JobExecutionException { - final List<SavingsAccount> savingsAccounts = this.savingAccountRepository.findSavingAccountByStatus(SavingsAccountStatusType.ACTIVE + final List<SavingsAccount> savingsAccounts = this.savingAccountRepositoryWrapper.findSavingAccountByStatus(SavingsAccountStatusType.ACTIVE .getValue()); StringBuffer sb = new StringBuffer(); for (final SavingsAccount savingsAccount : savingsAccounts) { http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/025ff9c7/fineract-provider/src/main/java/org/apache/fineract/portfolio/self/account/service/SelfBeneficiariesTPTWritePlatformServiceImpl.java ---------------------------------------------------------------------- diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/self/account/service/SelfBeneficiariesTPTWritePlatformServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/self/account/service/SelfBeneficiariesTPTWritePlatformServiceImpl.java index 9a4e8fd..e24c45d 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/self/account/service/SelfBeneficiariesTPTWritePlatformServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/self/account/service/SelfBeneficiariesTPTWritePlatformServiceImpl.java @@ -34,9 +34,9 @@ import org.apache.fineract.infrastructure.core.exception.PlatformDataIntegrityEx import org.apache.fineract.infrastructure.security.service.PlatformSecurityContext; import org.apache.fineract.portfolio.account.PortfolioAccountType; import org.apache.fineract.portfolio.loanaccount.domain.Loan; -import org.apache.fineract.portfolio.loanaccount.domain.LoanRepository; +import org.apache.fineract.portfolio.loanaccount.domain.LoanRepositoryWrapper; import org.apache.fineract.portfolio.savings.domain.SavingsAccount; -import org.apache.fineract.portfolio.savings.domain.SavingsAccountRepository; +import org.apache.fineract.portfolio.savings.domain.SavingsAccountRepositoryWrapper; import org.apache.fineract.portfolio.self.account.data.SelfBeneficiariesTPTDataValidator; import org.apache.fineract.portfolio.self.account.domain.SelfBeneficiariesTPT; import org.apache.fineract.portfolio.self.account.domain.SelfBeneficiariesTPTRepository; @@ -58,21 +58,21 @@ public class SelfBeneficiariesTPTWritePlatformServiceImpl implements private final PlatformSecurityContext context; private final SelfBeneficiariesTPTRepository repository; private final SelfBeneficiariesTPTDataValidator validator; - private final LoanRepository loanRepo; - private final SavingsAccountRepository savingRepo; + private final LoanRepositoryWrapper loanRepositoryWrapper; + private final SavingsAccountRepositoryWrapper savingRepositoryWrapper; @Autowired public SelfBeneficiariesTPTWritePlatformServiceImpl( final PlatformSecurityContext context, final SelfBeneficiariesTPTRepository repository, final SelfBeneficiariesTPTDataValidator validator, - final LoanRepository loanRepo, - final SavingsAccountRepository savingRepo) { + final LoanRepositoryWrapper loanRepositoryWrapper, + final SavingsAccountRepositoryWrapper savingRepositoryWrapper) { this.context = context; this.repository = repository; this.validator = validator; - this.loanRepo = loanRepo; - this.savingRepo = savingRepo; + this.loanRepositoryWrapper = loanRepositoryWrapper; + this.savingRepositoryWrapper = savingRepositoryWrapper; this.logger = LoggerFactory .getLogger(SelfBeneficiariesTPTWritePlatformServiceImpl.class); } @@ -95,8 +95,7 @@ public class SelfBeneficiariesTPTWritePlatformServiceImpl implements boolean validAccountDetails = true; if (accountType.equals(PortfolioAccountType.LOAN)) { - Loan loan = this.loanRepo - .findNonClosedLoanByAccountNumber(accountNumber); + Loan loan = this.loanRepositoryWrapper.findNonClosedLoanByAccountNumber(accountNumber); if (loan != null && loan.getClientId() != null && loan.getOffice().getName().equals(officeName)) { accountId = loan.getId(); @@ -106,7 +105,7 @@ public class SelfBeneficiariesTPTWritePlatformServiceImpl implements validAccountDetails = false; } } else { - SavingsAccount savings = this.savingRepo + SavingsAccount savings = this.savingRepositoryWrapper .findNonClosedAccountByAccountNumber(accountNumber); if (savings != null && savings.getClient() != null http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/025ff9c7/fineract-provider/src/main/java/org/apache/fineract/portfolio/transfer/service/TransferWritePlatformServiceJpaRepositoryImpl.java ---------------------------------------------------------------------- diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/transfer/service/TransferWritePlatformServiceJpaRepositoryImpl.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/transfer/service/TransferWritePlatformServiceJpaRepositoryImpl.java index 6a7442a..c63bac7 100755 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/transfer/service/TransferWritePlatformServiceJpaRepositoryImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/transfer/service/TransferWritePlatformServiceJpaRepositoryImpl.java @@ -45,11 +45,11 @@ import org.apache.fineract.portfolio.group.domain.GroupRepositoryWrapper; import org.apache.fineract.portfolio.group.exception.ClientNotInGroupException; import org.apache.fineract.portfolio.group.exception.GroupNotActiveException; import org.apache.fineract.portfolio.loanaccount.domain.Loan; -import org.apache.fineract.portfolio.loanaccount.domain.LoanRepository; +import org.apache.fineract.portfolio.loanaccount.domain.LoanRepositoryWrapper; import org.apache.fineract.portfolio.loanaccount.service.LoanWritePlatformService; import org.apache.fineract.portfolio.note.service.NoteWritePlatformService; import org.apache.fineract.portfolio.savings.domain.SavingsAccount; -import org.apache.fineract.portfolio.savings.domain.SavingsAccountRepository; +import org.apache.fineract.portfolio.savings.domain.SavingsAccountRepositoryWrapper; import org.apache.fineract.portfolio.savings.service.SavingsAccountWritePlatformService; import org.apache.fineract.portfolio.transfer.api.TransferApiConstants; import org.apache.fineract.portfolio.transfer.data.TransfersDataValidator; @@ -68,36 +68,36 @@ import com.google.gson.JsonObject; @Service public class TransferWritePlatformServiceJpaRepositoryImpl implements TransferWritePlatformService { - private final ClientRepositoryWrapper clientRepository; + private final ClientRepositoryWrapper clientRepositoryWrapper; private final OfficeRepositoryWrapper officeRepository; private final CalendarInstanceRepository calendarInstanceRepository; private final GroupRepositoryWrapper groupRepository; private final LoanWritePlatformService loanWritePlatformService; private final SavingsAccountWritePlatformService savingsAccountWritePlatformService; - private final LoanRepository loanRepository; - private final SavingsAccountRepository savingsAccountRepository; + private final LoanRepositoryWrapper loanRepositoryWrapper; + private final SavingsAccountRepositoryWrapper savingsAccountRepositoryWrapper; private final TransfersDataValidator transfersDataValidator; private final NoteWritePlatformService noteWritePlatformService; private final StaffRepositoryWrapper staffRepositoryWrapper; @Autowired - public TransferWritePlatformServiceJpaRepositoryImpl(final ClientRepositoryWrapper clientRepository, + public TransferWritePlatformServiceJpaRepositoryImpl(final ClientRepositoryWrapper clientRepositoryWrapper, final OfficeRepositoryWrapper officeRepository, final CalendarInstanceRepository calendarInstanceRepository, final LoanWritePlatformService loanWritePlatformService, final GroupRepositoryWrapper groupRepository, - final LoanRepository loanRepository, final TransfersDataValidator transfersDataValidator, + final LoanRepositoryWrapper loanRepositoryWrapper, final TransfersDataValidator transfersDataValidator, final NoteWritePlatformService noteWritePlatformService, final StaffRepositoryWrapper staffRepositoryWrapper, - final SavingsAccountRepository savingsAccountRepository, + final SavingsAccountRepositoryWrapper savingsAccountRepositoryWrapper, final SavingsAccountWritePlatformService savingsAccountWritePlatformService) { - this.clientRepository = clientRepository; + this.clientRepositoryWrapper = clientRepositoryWrapper; this.officeRepository = officeRepository; this.calendarInstanceRepository = calendarInstanceRepository; this.loanWritePlatformService = loanWritePlatformService; this.groupRepository = groupRepository; - this.loanRepository = loanRepository; + this.loanRepositoryWrapper = loanRepositoryWrapper; this.transfersDataValidator = transfersDataValidator; this.noteWritePlatformService = noteWritePlatformService; this.staffRepositoryWrapper = staffRepositoryWrapper; - this.savingsAccountRepository = savingsAccountRepository; + this.savingsAccountRepositoryWrapper = savingsAccountRepositoryWrapper; this.savingsAccountWritePlatformService = savingsAccountWritePlatformService; } @@ -214,12 +214,12 @@ public class TransferWritePlatformServiceJpaRepositoryImpl implements TransferWr } client.getGroups().add(destinationGroup); - this.clientRepository.saveAndFlush(client); + this.clientRepositoryWrapper.saveAndFlush(client); /** * Active JLG loans are now linked to the new Group and Loan officer **/ - final List<Loan> allClientJLGLoans = this.loanRepository.findByClientIdAndGroupId(client.getId(), sourceGroup.getId()); + final List<Loan> allClientJLGLoans = this.loanRepositoryWrapper.findByClientIdAndGroupId(client.getId(), sourceGroup.getId()); for (final Loan loan : allClientJLGLoans) { if (loan.status().isActiveOrAwaitingApprovalOrDisbursal()) { loan.updateGroup(destinationGroup); @@ -229,7 +229,7 @@ public class TransferWritePlatformServiceJpaRepositoryImpl implements TransferWr } else if (newLoanOfficer != null) { loan.reassignLoanOfficer(newLoanOfficer, DateUtils.getLocalDateOfTenant()); } - this.loanRepository.saveAndFlush(loan); + this.loanRepositoryWrapper.saveAndFlush(loan); } } @@ -260,11 +260,11 @@ public class TransferWritePlatformServiceJpaRepositoryImpl implements TransferWr final Long destinationOfficeId = jsonCommand.longValueOfParameterNamed(TransferApiConstants.destinationOfficeIdParamName); final Office office = this.officeRepository.findOneWithNotFoundDetection(destinationOfficeId); - final Client client = this.clientRepository.findOneWithNotFoundDetection(clientId); + final Client client = this.clientRepositoryWrapper.findOneWithNotFoundDetection(clientId, true); handleClientTransferLifecycleEvent(client, office, TransferEventType.PROPOSAL, jsonCommand); - this.clientRepository.saveAndFlush(client); + this.clientRepositoryWrapper.saveAndFlush(client); handleClientTransferLifecycleEvent(client, client.getTransferToOffice(), TransferEventType.ACCEPTANCE, jsonCommand); - this.clientRepository.save(client); + this.clientRepositoryWrapper.save(client); return new CommandProcessingResultBuilder() // .withClientId(clientId) // @@ -292,9 +292,9 @@ public class TransferWritePlatformServiceJpaRepositoryImpl implements TransferWr final Long destinationOfficeId = jsonCommand.longValueOfParameterNamed(TransferApiConstants.destinationOfficeIdParamName); final Office office = this.officeRepository.findOneWithNotFoundDetection(destinationOfficeId); - final Client client = this.clientRepository.findOneWithNotFoundDetection(clientId); + final Client client = this.clientRepositoryWrapper.findOneWithNotFoundDetection(clientId); handleClientTransferLifecycleEvent(client, office, TransferEventType.PROPOSAL, jsonCommand); - this.clientRepository.save(client); + this.clientRepositoryWrapper.save(client); return new CommandProcessingResultBuilder() // .withClientId(clientId) // @@ -319,11 +319,11 @@ public class TransferWritePlatformServiceJpaRepositoryImpl implements TransferWr public CommandProcessingResult acceptClientTransfer(final Long clientId, final JsonCommand jsonCommand) { // validation this.transfersDataValidator.validateForAcceptClientTransfer(jsonCommand.json()); - final Client client = this.clientRepository.findOneWithNotFoundDetection(clientId); + final Client client = this.clientRepositoryWrapper.findOneWithNotFoundDetection(clientId, true); validateClientAwaitingTransferAcceptance(client); handleClientTransferLifecycleEvent(client, client.getTransferToOffice(), TransferEventType.ACCEPTANCE, jsonCommand); - this.clientRepository.save(client); + this.clientRepositoryWrapper.save(client); return new CommandProcessingResultBuilder() // .withClientId(clientId) // @@ -336,11 +336,11 @@ public class TransferWritePlatformServiceJpaRepositoryImpl implements TransferWr public CommandProcessingResult withdrawClientTransfer(final Long clientId, final JsonCommand jsonCommand) { // validation this.transfersDataValidator.validateForWithdrawClientTransfer(jsonCommand.json()); - final Client client = this.clientRepository.findOneWithNotFoundDetection(clientId); + final Client client = this.clientRepositoryWrapper.findOneWithNotFoundDetection(clientId); validateClientAwaitingTransferAcceptanceOnHold(client); handleClientTransferLifecycleEvent(client, client.getOffice(), TransferEventType.WITHDRAWAL, jsonCommand); - this.clientRepository.save(client); + this.clientRepositoryWrapper.save(client); return new CommandProcessingResultBuilder() // .withClientId(clientId) // @@ -353,9 +353,9 @@ public class TransferWritePlatformServiceJpaRepositoryImpl implements TransferWr public CommandProcessingResult rejectClientTransfer(final Long clientId, final JsonCommand jsonCommand) { // validation this.transfersDataValidator.validateForRejectClientTransfer(jsonCommand.json()); - final Client client = this.clientRepository.findOneWithNotFoundDetection(clientId); + final Client client = this.clientRepositoryWrapper.findOneWithNotFoundDetection(clientId); handleClientTransferLifecycleEvent(client, client.getOffice(), TransferEventType.REJECTION, jsonCommand); - this.clientRepository.save(client); + this.clientRepositoryWrapper.save(client); return new CommandProcessingResultBuilder() // .withClientId(clientId) // @@ -379,9 +379,9 @@ public class TransferWritePlatformServiceJpaRepositoryImpl implements TransferWr } /*** Handle Active Loans ***/ - if (this.loanRepository.doNonClosedLoanAccountsExistForClient(client.getId())) { + if (this.loanRepositoryWrapper.doNonClosedLoanAccountsExistForClient(client.getId())) { // get each individual loan for the client - for (final Loan loan : this.loanRepository.findLoanByClientId(client.getId())) { + for (final Loan loan : this.loanRepositoryWrapper.findLoanByClientId(client.getId())) { /** * We need to create transactions etc only for loans which are * disbursed and not yet closed @@ -389,41 +389,41 @@ public class TransferWritePlatformServiceJpaRepositoryImpl implements TransferWr if (loan.isDisbursed() && !loan.isClosed()) { switch (transferEventType) { case ACCEPTANCE: - this.loanWritePlatformService.acceptLoanTransfer(loan.getId(), DateUtils.getLocalDateOfTenant(), + this.loanWritePlatformService.acceptLoanTransfer(loan, DateUtils.getLocalDateOfTenant(), destinationOffice, staff); break; case PROPOSAL: - this.loanWritePlatformService.initiateLoanTransfer(loan.getId(), DateUtils.getLocalDateOfTenant()); + this.loanWritePlatformService.initiateLoanTransfer(loan, DateUtils.getLocalDateOfTenant()); break; case REJECTION: - this.loanWritePlatformService.rejectLoanTransfer(loan.getId()); + this.loanWritePlatformService.rejectLoanTransfer(loan); break; case WITHDRAWAL: - this.loanWritePlatformService.withdrawLoanTransfer(loan.getId(), DateUtils.getLocalDateOfTenant()); + this.loanWritePlatformService.withdrawLoanTransfer(loan, DateUtils.getLocalDateOfTenant()); } } } } /*** Handle Active Savings (Currently throw and exception) ***/ - if (this.savingsAccountRepository.doNonClosedSavingAccountsExistForClient(client.getId())) { + if (this.savingsAccountRepositoryWrapper.doNonClosedSavingAccountsExistForClient(client.getId())) { // get each individual saving account for the client - for (final SavingsAccount savingsAccount : this.savingsAccountRepository.findSavingAccountByClientId(client.getId())) { + for (final SavingsAccount savingsAccount : this.savingsAccountRepositoryWrapper.findSavingAccountByClientId(client.getId())) { if (savingsAccount.isActivated() && !savingsAccount.isClosed()) { switch (transferEventType) { case ACCEPTANCE: - this.savingsAccountWritePlatformService.acceptSavingsTransfer(savingsAccount.getId(), + this.savingsAccountWritePlatformService.acceptSavingsTransfer(savingsAccount, DateUtils.getLocalDateOfTenant(), destinationOffice, staff); break; case PROPOSAL: - this.savingsAccountWritePlatformService.initiateSavingsTransfer(savingsAccount.getId(), + this.savingsAccountWritePlatformService.initiateSavingsTransfer(savingsAccount, DateUtils.getLocalDateOfTenant()); break; case REJECTION: - this.savingsAccountWritePlatformService.rejectSavingsTransfer(savingsAccount.getId()); + this.savingsAccountWritePlatformService.rejectSavingsTransfer(savingsAccount); break; case WITHDRAWAL: - this.savingsAccountWritePlatformService.withdrawSavingsTransfer(savingsAccount.getId(), + this.savingsAccountWritePlatformService.withdrawSavingsTransfer(savingsAccount, DateUtils.getLocalDateOfTenant()); } } @@ -480,7 +480,7 @@ public class TransferWritePlatformServiceJpaRepositoryImpl implements TransferWr final JsonObject jsonObject = clientsArray.get(i).getAsJsonObject(); if (jsonObject.has(TransferApiConstants.idParamName)) { final Long id = jsonObject.get(TransferApiConstants.idParamName).getAsLong(); - final Client client = this.clientRepository.findOneWithNotFoundDetection(id); + final Client client = this.clientRepositoryWrapper.findOneWithNotFoundDetection(id); clients.add(client); } } http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/025ff9c7/fineract-provider/src/main/java/org/apache/fineract/spm/api/ScorecardApiResource.java ---------------------------------------------------------------------- diff --git a/fineract-provider/src/main/java/org/apache/fineract/spm/api/ScorecardApiResource.java b/fineract-provider/src/main/java/org/apache/fineract/spm/api/ScorecardApiResource.java index b1e0fa5..9c4ed7d 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/spm/api/ScorecardApiResource.java +++ b/fineract-provider/src/main/java/org/apache/fineract/spm/api/ScorecardApiResource.java @@ -18,10 +18,20 @@ */ package org.apache.fineract.spm.api; +import java.util.Collections; +import java.util.List; + +import javax.ws.rs.Consumes; +import javax.ws.rs.GET; +import javax.ws.rs.POST; +import javax.ws.rs.Path; +import javax.ws.rs.PathParam; +import javax.ws.rs.Produces; +import javax.ws.rs.core.MediaType; + import org.apache.fineract.infrastructure.security.service.PlatformSecurityContext; import org.apache.fineract.portfolio.client.domain.Client; -import org.apache.fineract.portfolio.client.domain.ClientRepository; -import org.apache.fineract.portfolio.client.exception.ClientNotFoundException; +import org.apache.fineract.portfolio.client.domain.ClientRepositoryWrapper; import org.apache.fineract.spm.data.ScorecardData; import org.apache.fineract.spm.domain.Scorecard; import org.apache.fineract.spm.domain.Survey; @@ -35,11 +45,6 @@ import org.springframework.context.annotation.Scope; import org.springframework.stereotype.Component; import org.springframework.transaction.annotation.Transactional; -import javax.ws.rs.*; -import javax.ws.rs.core.MediaType; -import java.util.Collections; -import java.util.List; - @Path("/surveys/{surveyId}/scorecards") @Component @Scope("singleton") @@ -48,16 +53,16 @@ public class ScorecardApiResource { private final PlatformSecurityContext securityContext; private final SpmService spmService; private final ScorecardService scorecardService; - private final ClientRepository clientRepository; + private final ClientRepositoryWrapper clientRepositoryWrapper; @Autowired public ScorecardApiResource(final PlatformSecurityContext securityContext, final SpmService spmService, - final ScorecardService scorecardService, final ClientRepository clientRepository) { + final ScorecardService scorecardService, final ClientRepositoryWrapper clientRepositoryWrapper) { super(); this.securityContext = securityContext; this.spmService = spmService; this.scorecardService = scorecardService; - this.clientRepository = clientRepository; + this.clientRepositoryWrapper = clientRepositoryWrapper; } @GET @@ -84,15 +89,8 @@ public class ScorecardApiResource { @Transactional public void createScorecard(@PathParam("surveyId") final Long surveyId, final ScorecardData scorecardData) { final AppUser appUser = this.securityContext.authenticatedUser(); - final Survey survey = findSurvey(surveyId); - - final Client client = this.clientRepository.findOne(scorecardData.getClientId()); - - if (client == null) { - throw new ClientNotFoundException(scorecardData.getClientId()); - } - + final Client client = this.clientRepositoryWrapper.findOneWithNotFoundDetection(scorecardData.getClientId()); this.scorecardService.createScorecard(ScorecardMapper.map(scorecardData, survey, appUser, client)); } @@ -104,21 +102,12 @@ public class ScorecardApiResource { public List<ScorecardData> findBySurveyClient(@PathParam("surveyId") final Long surveyId, @PathParam("clientId") final Long clientId) { this.securityContext.authenticatedUser(); - final Survey survey = findSurvey(surveyId); - - final Client client = this.clientRepository.findOne(clientId); - - if (client == null) { - throw new ClientNotFoundException(clientId); - } - + final Client client = this.clientRepositoryWrapper.findOneWithNotFoundDetection(clientId); final List<Scorecard> scorecards = this.scorecardService.findBySurveyAndClient(survey, client); - if (scorecards == null) { return ScorecardMapper.map(scorecards); } - return Collections.EMPTY_LIST; } http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/025ff9c7/fineract-provider/src/main/java/org/apache/fineract/useradministration/service/AppUserWritePlatformServiceJpaRepositoryImpl.java ---------------------------------------------------------------------- diff --git a/fineract-provider/src/main/java/org/apache/fineract/useradministration/service/AppUserWritePlatformServiceJpaRepositoryImpl.java b/fineract-provider/src/main/java/org/apache/fineract/useradministration/service/AppUserWritePlatformServiceJpaRepositoryImpl.java index 0b4a0db..a0089fb 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/useradministration/service/AppUserWritePlatformServiceJpaRepositoryImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/useradministration/service/AppUserWritePlatformServiceJpaRepositoryImpl.java @@ -36,12 +36,11 @@ import org.apache.fineract.infrastructure.core.service.PlatformEmailSendExceptio import org.apache.fineract.infrastructure.security.service.PlatformPasswordEncoder; import org.apache.fineract.infrastructure.security.service.PlatformSecurityContext; import org.apache.fineract.organisation.office.domain.Office; -import org.apache.fineract.organisation.office.domain.OfficeRepository; -import org.apache.fineract.organisation.office.exception.OfficeNotFoundException; +import org.apache.fineract.organisation.office.domain.OfficeRepositoryWrapper; import org.apache.fineract.organisation.staff.domain.Staff; import org.apache.fineract.organisation.staff.domain.StaffRepositoryWrapper; import org.apache.fineract.portfolio.client.domain.Client; -import org.apache.fineract.portfolio.client.domain.ClientRepository; +import org.apache.fineract.portfolio.client.domain.ClientRepositoryWrapper; import org.apache.fineract.useradministration.api.AppUserApiConstant; import org.apache.fineract.useradministration.domain.AppUser; import org.apache.fineract.useradministration.domain.AppUserPreviousPassword; @@ -77,29 +76,29 @@ public class AppUserWritePlatformServiceJpaRepositoryImpl implements AppUserWrit private final UserDomainService userDomainService; private final PlatformPasswordEncoder platformPasswordEncoder; private final AppUserRepository appUserRepository; - private final OfficeRepository officeRepository; + private final OfficeRepositoryWrapper officeRepositoryWrapper; private final RoleRepository roleRepository; private final UserDataValidator fromApiJsonDeserializer; private final AppUserPreviousPasswordRepository appUserPreviewPasswordRepository; private final StaffRepositoryWrapper staffRepositoryWrapper; - private final ClientRepository clientRepository; + private final ClientRepositoryWrapper clientRepositoryWrapper; @Autowired public AppUserWritePlatformServiceJpaRepositoryImpl(final PlatformSecurityContext context, final AppUserRepository appUserRepository, - final UserDomainService userDomainService, final OfficeRepository officeRepository, final RoleRepository roleRepository, + final UserDomainService userDomainService, final OfficeRepositoryWrapper officeRepositoryWrapper, final RoleRepository roleRepository, final PlatformPasswordEncoder platformPasswordEncoder, final UserDataValidator fromApiJsonDeserializer, final AppUserPreviousPasswordRepository appUserPreviewPasswordRepository, final StaffRepositoryWrapper staffRepositoryWrapper, - final ClientRepository clientRepository) { + final ClientRepositoryWrapper clientRepositoryWrapper) { this.context = context; this.appUserRepository = appUserRepository; this.userDomainService = userDomainService; - this.officeRepository = officeRepository; + this.officeRepositoryWrapper = officeRepositoryWrapper; this.roleRepository = roleRepository; this.platformPasswordEncoder = platformPasswordEncoder; this.fromApiJsonDeserializer = fromApiJsonDeserializer; this.appUserPreviewPasswordRepository = appUserPreviewPasswordRepository; this.staffRepositoryWrapper = staffRepositoryWrapper; - this.clientRepository = clientRepository; + this.clientRepositoryWrapper = clientRepositoryWrapper; } @Transactional @@ -115,8 +114,7 @@ public class AppUserWritePlatformServiceJpaRepositoryImpl implements AppUserWrit final String officeIdParamName = "officeId"; final Long officeId = command.longValueOfParameterNamed(officeIdParamName); - final Office userOffice = this.officeRepository.findOne(officeId); - if (userOffice == null) { throw new OfficeNotFoundException(officeId); } + final Office userOffice = this.officeRepositoryWrapper.findOneWithNotFoundDetection(officeId); final String[] roles = command.arrayValueOfParameterNamed("roles"); final Set<Role> allRoles = assembleSetOfRoles(roles); @@ -140,7 +138,7 @@ public class AppUserWritePlatformServiceJpaRepositoryImpl implements AppUserWrit for(JsonElement clientElement : clientsArray){ clientIds.add(clientElement.getAsLong()); } - clients = this.clientRepository.findAll(clientIds); + clients = this.clientRepositoryWrapper.findAll(clientIds); } appUser = AppUser.fromJson(userOffice, linkedStaff, allRoles, clients, command); @@ -199,16 +197,14 @@ public class AppUserWritePlatformServiceJpaRepositoryImpl implements AppUserWrit for(JsonElement clientElement : clientsArray){ clientIds.add(clientElement.getAsLong()); } - clients = this.clientRepository.findAll(clientIds); + clients = this.clientRepositoryWrapper.findAll(clientIds); } final Map<String, Object> changes = userToUpdate.update(command, this.platformPasswordEncoder, clients); if (changes.containsKey("officeId")) { final Long officeId = (Long) changes.get("officeId"); - final Office office = this.officeRepository.findOne(officeId); - if (office == null) { throw new OfficeNotFoundException(officeId); } - + final Office office = this.officeRepositoryWrapper.findOneWithNotFoundDetection(officeId); userToUpdate.changeOffice(office); }