Repository: incubator-fineract Updated Branches: refs/heads/develop 59825080b -> a462d1461
http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/9e5e7329/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 ff757d8..15a3e43 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 @@ -18,6 +18,25 @@ */ package org.apache.fineract.portfolio.savings.service; +import static org.apache.fineract.portfolio.savings.SavingsApiConstants.SAVINGS_ACCOUNT_CHARGE_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 static org.apache.fineract.portfolio.savings.SavingsApiConstants.withHoldTaxParamName; +import static org.apache.fineract.portfolio.savings.SavingsApiConstants.withdrawBalanceParamName; + +import java.math.BigDecimal; +import java.math.MathContext; +import java.util.ArrayList; +import java.util.HashMap; +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; @@ -88,25 +107,6 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.util.CollectionUtils; -import java.math.BigDecimal; -import java.math.MathContext; -import java.util.ArrayList; -import java.util.HashMap; -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.SavingsApiConstants.SAVINGS_ACCOUNT_CHARGE_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 static org.apache.fineract.portfolio.savings.SavingsApiConstants.withdrawBalanceParamName; -import static org.apache.fineract.portfolio.savings.SavingsApiConstants.withHoldTaxParamName; - @Service public class SavingsAccountWritePlatformServiceJpaRepositoryImpl implements SavingsAccountWritePlatformService { @@ -673,7 +673,7 @@ public class SavingsAccountWritePlatformServiceJpaRepositoryImpl implements Savi final SavingsAccountTransaction newTransferTransaction = SavingsAccountTransaction.initiateTransfer(savingsAccount, savingsAccount.office(), transferDate, user); - savingsAccount.getTransactions().add(newTransferTransaction); + savingsAccount.addTransaction(newTransferTransaction); savingsAccount.setStatus(SavingsAccountStatusType.TRANSFER_IN_PROGRESS.getValue()); final MathContext mc = MathContext.DECIMAL64; boolean isInterestTransfer = false; @@ -705,7 +705,7 @@ public class SavingsAccountWritePlatformServiceJpaRepositoryImpl implements Savi final SavingsAccountTransaction withdrawtransferTransaction = SavingsAccountTransaction.withdrawTransfer(savingsAccount, savingsAccount.office(), transferDate, user); - savingsAccount.getTransactions().add(withdrawtransferTransaction); + savingsAccount.addTransaction(withdrawtransferTransaction); savingsAccount.setStatus(SavingsAccountStatusType.ACTIVE.getValue()); final MathContext mc = MathContext.DECIMAL64; boolean isInterestTransfer = false; @@ -745,7 +745,7 @@ public class SavingsAccountWritePlatformServiceJpaRepositoryImpl implements Savi final SavingsAccountTransaction acceptTransferTransaction = SavingsAccountTransaction.approveTransfer(savingsAccount, acceptedInOffice, transferDate, user); - savingsAccount.getTransactions().add(acceptTransferTransaction); + savingsAccount.addTransaction(acceptTransferTransaction); savingsAccount.setStatus(SavingsAccountStatusType.ACTIVE.getValue()); if (fieldOfficer != null) { savingsAccount.reassignSavingsOfficer(fieldOfficer, transferDate); http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/9e5e7329/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/domain/ShareAccount.java ---------------------------------------------------------------------- diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/domain/ShareAccount.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/domain/ShareAccount.java index 59827cb..7467c43 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/domain/ShareAccount.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/domain/ShareAccount.java @@ -28,6 +28,7 @@ import javax.persistence.Embedded; import javax.persistence.Entity; import javax.persistence.EnumType; import javax.persistence.Enumerated; +import javax.persistence.FetchType; import javax.persistence.JoinColumn; import javax.persistence.ManyToOne; import javax.persistence.OneToMany; @@ -44,8 +45,6 @@ import org.apache.fineract.portfolio.common.domain.PeriodFrequencyType; import org.apache.fineract.portfolio.savings.domain.SavingsAccount; import org.apache.fineract.portfolio.shareproducts.domain.ShareProduct; import org.apache.fineract.useradministration.domain.AppUser; -import org.hibernate.annotations.LazyCollection; -import org.hibernate.annotations.LazyCollectionOption; import org.springframework.data.jpa.domain.AbstractPersistable; @Entity @@ -133,8 +132,7 @@ public class ShareAccount extends AbstractPersistable<Long> { @JoinColumn(name = "savings_account_id", nullable = true) private SavingsAccount savingsAccount; - @LazyCollection(LazyCollectionOption.FALSE) - @OneToMany(cascade = CascadeType.ALL, mappedBy = "shareAccount", orphanRemoval = true) + @OneToMany(cascade = CascadeType.ALL, mappedBy = "shareAccount", orphanRemoval = true, fetch=FetchType.EAGER) private Set<ShareAccountTransaction> shareAccountTransactions; @Column(name = "lockin_period_frequency") @@ -151,8 +149,7 @@ public class ShareAccount extends AbstractPersistable<Long> { @Column(name = "minimum_active_period_frequency_enum", nullable = true) private PeriodFrequencyType minimumActivePeriodFrequencyType; - @LazyCollection(LazyCollectionOption.FALSE) - @OneToMany(cascade = CascadeType.ALL, mappedBy = "shareAccount", orphanRemoval = true) + @OneToMany(cascade = CascadeType.ALL, mappedBy = "shareAccount", orphanRemoval = true, fetch=FetchType.EAGER) private Set<ShareAccountCharge> charges; @Transient http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/9e5e7329/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/domain/ShareAccountTransaction.java ---------------------------------------------------------------------- diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/domain/ShareAccountTransaction.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/domain/ShareAccountTransaction.java index fb79206..186b189 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/domain/ShareAccountTransaction.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/domain/ShareAccountTransaction.java @@ -26,6 +26,7 @@ import java.util.Set; import javax.persistence.CascadeType; import javax.persistence.Column; import javax.persistence.Entity; +import javax.persistence.FetchType; import javax.persistence.JoinColumn; import javax.persistence.ManyToOne; import javax.persistence.OneToMany; @@ -33,8 +34,6 @@ import javax.persistence.Table; import javax.persistence.Temporal; import javax.persistence.TemporalType; -import org.hibernate.annotations.LazyCollection; -import org.hibernate.annotations.LazyCollectionOption; import org.springframework.data.jpa.domain.AbstractPersistable; @Entity @@ -73,8 +72,7 @@ public class ShareAccountTransaction extends AbstractPersistable<Long> { @Column(name = "is_active", nullable = false) private boolean active = true ; - @LazyCollection(LazyCollectionOption.FALSE) - @OneToMany(cascade = CascadeType.ALL, mappedBy = "shareAccountTransaction", orphanRemoval = true) + @OneToMany(cascade = CascadeType.ALL, mappedBy = "shareAccountTransaction", orphanRemoval = true, fetch=FetchType.EAGER) private final Set<ShareAccountChargePaidBy> shareAccountChargesPaid = new HashSet<>(); protected ShareAccountTransaction() { http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/9e5e7329/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareproducts/domain/ShareProduct.java ---------------------------------------------------------------------- diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareproducts/domain/ShareProduct.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareproducts/domain/ShareProduct.java index f14efd5..14cc73a 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareproducts/domain/ShareProduct.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareproducts/domain/ShareProduct.java @@ -46,8 +46,6 @@ import org.apache.fineract.portfolio.charge.domain.Charge; import org.apache.fineract.portfolio.common.domain.PeriodFrequencyType; import org.apache.fineract.portfolio.shareproducts.data.ShareProductMarketPriceData; import org.apache.fineract.useradministration.domain.AppUser; -import org.hibernate.annotations.LazyCollection; -import org.hibernate.annotations.LazyCollectionOption; import org.joda.time.DateTime; @Entity @@ -102,8 +100,7 @@ public class ShareProduct extends AbstractAuditableCustom<AppUser, Long> { private Long maximumShares; @OrderBy(value = "fromDate,id") - @LazyCollection(LazyCollectionOption.FALSE) - @OneToMany(cascade = CascadeType.ALL, mappedBy = "product", orphanRemoval = true) + @OneToMany(cascade = CascadeType.ALL, mappedBy = "product", orphanRemoval = true, fetch=FetchType.EAGER) Set<ShareProductMarketPrice> marketPrice; @ManyToMany(fetch = FetchType.EAGER) http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/9e5e7329/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareproducts/domain/ShareProductDividendPayOutDetails.java ---------------------------------------------------------------------- diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareproducts/domain/ShareProductDividendPayOutDetails.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareproducts/domain/ShareProductDividendPayOutDetails.java index d282899..f429e3d 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareproducts/domain/ShareProductDividendPayOutDetails.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareproducts/domain/ShareProductDividendPayOutDetails.java @@ -26,6 +26,7 @@ import java.util.List; import javax.persistence.CascadeType; import javax.persistence.Column; import javax.persistence.Entity; +import javax.persistence.FetchType; import javax.persistence.JoinColumn; import javax.persistence.OneToMany; import javax.persistence.Table; @@ -35,8 +36,6 @@ import javax.persistence.TemporalType; import org.apache.fineract.infrastructure.core.domain.AbstractAuditableCustom; import org.apache.fineract.portfolio.shareaccounts.domain.ShareAccountDividendDetails; import org.apache.fineract.useradministration.domain.AppUser; -import org.hibernate.annotations.LazyCollection; -import org.hibernate.annotations.LazyCollectionOption; import org.joda.time.LocalDate; @Entity @@ -60,8 +59,7 @@ public class ShareProductDividendPayOutDetails extends AbstractAuditableCustom<A @Column(name = "status", nullable = false) private Integer status; - @LazyCollection(LazyCollectionOption.TRUE) - @OneToMany(cascade = CascadeType.ALL, orphanRemoval = true) + @OneToMany(cascade = CascadeType.ALL, orphanRemoval = true, fetch=FetchType.EAGER) @JoinColumn(name = "dividend_pay_out_id", referencedColumnName = "id", nullable = false) private List<ShareAccountDividendDetails> accountDividendDetails = new ArrayList<>(); http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/9e5e7329/fineract-provider/src/main/java/org/apache/fineract/portfolio/tax/domain/TaxComponent.java ---------------------------------------------------------------------- diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/tax/domain/TaxComponent.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/tax/domain/TaxComponent.java index 32ec96b..8b8ba23 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/tax/domain/TaxComponent.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/tax/domain/TaxComponent.java @@ -23,12 +23,15 @@ import java.util.ArrayList; import java.util.Collection; import java.util.Date; import java.util.HashMap; +import java.util.HashSet; import java.util.List; import java.util.Map; +import java.util.Set; import javax.persistence.CascadeType; import javax.persistence.Column; import javax.persistence.Entity; +import javax.persistence.FetchType; import javax.persistence.JoinColumn; import javax.persistence.ManyToOne; import javax.persistence.OneToMany; @@ -44,8 +47,6 @@ import org.apache.fineract.infrastructure.core.domain.AbstractAuditableCustom; import org.apache.fineract.infrastructure.core.service.DateUtils; import org.apache.fineract.portfolio.tax.api.TaxApiConstants; import org.apache.fineract.useradministration.domain.AppUser; -import org.hibernate.annotations.LazyCollection; -import org.hibernate.annotations.LazyCollectionOption; import org.joda.time.LocalDate; @Entity @@ -76,14 +77,12 @@ public class TaxComponent extends AbstractAuditableCustom<AppUser, Long> { @Temporal(TemporalType.DATE) private Date startDate; - @LazyCollection(LazyCollectionOption.FALSE) - @OneToMany(cascade = CascadeType.ALL, orphanRemoval = true) + @OneToMany(cascade = CascadeType.ALL, orphanRemoval = true, fetch=FetchType.EAGER) @JoinColumn(name = "tax_component_id", referencedColumnName = "id", nullable = false) - private List<TaxComponentHistory> taxComponentHistories = new ArrayList<>(); + private Set<TaxComponentHistory> taxComponentHistories = new HashSet<>(); - @LazyCollection(LazyCollectionOption.TRUE) - @OneToMany(cascade = CascadeType.DETACH, mappedBy = "taxComponent", orphanRemoval = false) - private List<TaxGroupMappings> taxGroupMappings = new ArrayList<>(); + @OneToMany(cascade = CascadeType.DETACH, mappedBy = "taxComponent", orphanRemoval = false, fetch=FetchType.EAGER) + private Set<TaxGroupMappings> taxGroupMappings = new HashSet<>(); protected TaxComponent() { @@ -182,11 +181,11 @@ public class TaxComponent extends AbstractAuditableCustom<AppUser, Long> { return target != null && target.isAfter(startDate()); } - public List<TaxComponentHistory> getTaxComponentHistories() { + public Set<TaxComponentHistory> getTaxComponentHistories() { return this.taxComponentHistories; } - public List<TaxGroupMappings> getTaxGroupMappings() { + public Set<TaxGroupMappings> getTaxGroupMappings() { return this.taxGroupMappings; } http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/9e5e7329/fineract-provider/src/main/java/org/apache/fineract/portfolio/tax/domain/TaxGroup.java ---------------------------------------------------------------------- diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/tax/domain/TaxGroup.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/tax/domain/TaxGroup.java index 0e780f3..59c2b34 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/tax/domain/TaxGroup.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/tax/domain/TaxGroup.java @@ -20,12 +20,15 @@ package org.apache.fineract.portfolio.tax.domain; import java.util.ArrayList; import java.util.HashMap; +import java.util.HashSet; import java.util.List; import java.util.Map; +import java.util.Set; import javax.persistence.CascadeType; import javax.persistence.Column; import javax.persistence.Entity; +import javax.persistence.FetchType; import javax.persistence.JoinColumn; import javax.persistence.OneToMany; import javax.persistence.Table; @@ -36,8 +39,6 @@ import org.apache.fineract.infrastructure.core.domain.AbstractAuditableCustom; import org.apache.fineract.portfolio.tax.api.TaxApiConstants; import org.apache.fineract.portfolio.tax.exception.TaxMappingNotFoundException; import org.apache.fineract.useradministration.domain.AppUser; -import org.hibernate.annotations.LazyCollection; -import org.hibernate.annotations.LazyCollectionOption; @Entity @Table(name = "m_tax_group") @@ -46,25 +47,24 @@ public class TaxGroup extends AbstractAuditableCustom<AppUser, Long> { @Column(name = "name", length = 100) private String name; - @LazyCollection(LazyCollectionOption.FALSE) - @OneToMany(cascade = CascadeType.ALL, orphanRemoval = true) + @OneToMany(cascade = CascadeType.ALL, orphanRemoval = true, fetch=FetchType.EAGER) @JoinColumn(name = "tax_group_id", referencedColumnName = "id", nullable = false) - private List<TaxGroupMappings> taxGroupMappings = new ArrayList<>(); + private Set<TaxGroupMappings> taxGroupMappings = new HashSet<>(); protected TaxGroup() { } - private TaxGroup(final String name, final List<TaxGroupMappings> taxGroupMappings) { + private TaxGroup(final String name, final Set<TaxGroupMappings> taxGroupMappings) { this.name = name; this.taxGroupMappings = taxGroupMappings; } - public static TaxGroup createTaxGroup(final String name, final List<TaxGroupMappings> taxGroupMappings) { + public static TaxGroup createTaxGroup(final String name, final Set<TaxGroupMappings> taxGroupMappings) { return new TaxGroup(name, taxGroupMappings); } - public Map<String, Object> update(final JsonCommand command, final List<TaxGroupMappings> taxGroupMappings) { + public Map<String, Object> update(final JsonCommand command, final Set<TaxGroupMappings> taxGroupMappings) { final Map<String, Object> changes = new HashMap<>(); if (command.isChangeInStringParameterNamed(TaxApiConstants.nameParamName, this.name)) { @@ -106,7 +106,7 @@ public class TaxGroup extends AbstractAuditableCustom<AppUser, Long> { return null; } - public List<TaxGroupMappings> getTaxGroupMappings() { + public Set<TaxGroupMappings> getTaxGroupMappings() { return this.taxGroupMappings; } http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/9e5e7329/fineract-provider/src/main/java/org/apache/fineract/portfolio/tax/serialization/TaxValidator.java ---------------------------------------------------------------------- diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/tax/serialization/TaxValidator.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/tax/serialization/TaxValidator.java index 6df786e..eecb180 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/tax/serialization/TaxValidator.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/tax/serialization/TaxValidator.java @@ -266,7 +266,7 @@ public class TaxValidator { throwExceptionIfValidationWarningsExist(dataValidationErrors); } - public void validateTaxGroupEndDateAndTaxComponent(final TaxGroup taxGroup, final List<TaxGroupMappings> groupMappings) { + public void validateTaxGroupEndDateAndTaxComponent(final TaxGroup taxGroup, final Set<TaxGroupMappings> groupMappings) { final List<ApiParameterError> dataValidationErrors = new ArrayList<>(); final DataValidatorBuilder baseDataValidator = new DataValidatorBuilder(dataValidationErrors).resource("tax.group"); @@ -293,7 +293,7 @@ public class TaxValidator { public void validateTaxGroup(final TaxGroup taxGroup) { final List<ApiParameterError> dataValidationErrors = new ArrayList<>(); final DataValidatorBuilder baseDataValidator = new DataValidatorBuilder(dataValidationErrors).resource("tax.group"); - List<TaxGroupMappings> groupMappings = taxGroup.getTaxGroupMappings(); + Set<TaxGroupMappings> groupMappings = taxGroup.getTaxGroupMappings(); validateGroupTotal(groupMappings, baseDataValidator, "total.percentage"); validateOverlappingComponents(groupMappings, baseDataValidator); throwExceptionIfValidationWarningsExist(dataValidationErrors); @@ -318,7 +318,7 @@ public class TaxValidator { baseDataValidator.reset().parameter(TaxApiConstants.startDateParamName).value(startDate).validateDateAfter(existingStartDate); } - private void validateOverlappingComponents(final List<TaxGroupMappings> taxMappings, final DataValidatorBuilder baseDataValidator) { + private void validateOverlappingComponents(final Set<TaxGroupMappings> taxMappings, final DataValidatorBuilder baseDataValidator) { for (TaxGroupMappings groupMappingsOne : taxMappings) { final List<TaxGroupMappings> mappings = new ArrayList<>(taxMappings); mappings.remove(groupMappingsOne); @@ -338,7 +338,7 @@ public class TaxValidator { } } - private void validateGroupTotal(final List<TaxGroupMappings> taxMappings, final DataValidatorBuilder baseDataValidator, + private void validateGroupTotal(final Set<TaxGroupMappings> taxMappings, final DataValidatorBuilder baseDataValidator, final String paramenter) { for (TaxGroupMappings groupMappingsOne : taxMappings) { Collection<LocalDate> dates = groupMappingsOne.getTaxComponent().allStartDates(); http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/9e5e7329/fineract-provider/src/main/java/org/apache/fineract/portfolio/tax/service/TaxAssembler.java ---------------------------------------------------------------------- diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/tax/service/TaxAssembler.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/tax/service/TaxAssembler.java index 1e5ad92..be41011 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/tax/service/TaxAssembler.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/tax/service/TaxAssembler.java @@ -20,8 +20,10 @@ package org.apache.fineract.portfolio.tax.service; import java.math.BigDecimal; import java.util.ArrayList; +import java.util.HashSet; import java.util.List; import java.util.Locale; +import java.util.Set; import org.apache.fineract.accounting.glaccount.domain.GLAccount; import org.apache.fineract.accounting.glaccount.domain.GLAccountRepositoryWrapper; @@ -114,12 +116,12 @@ public class TaxAssembler { final String name = this.fromApiJsonHelper.extractStringNamed(TaxApiConstants.nameParamName, element); boolean isUpdate = false; - final List<TaxGroupMappings> groupMappings = assembleTaxGroupMappingsFrom(command, isUpdate); + final Set<TaxGroupMappings> groupMappings = assembleTaxGroupMappingsFrom(command, isUpdate); return TaxGroup.createTaxGroup(name, groupMappings); } - public List<TaxGroupMappings> assembleTaxGroupMappingsFrom(final JsonCommand command, boolean isUpdate) { - List<TaxGroupMappings> groupMappings = new ArrayList<>(); + public Set<TaxGroupMappings> assembleTaxGroupMappingsFrom(final JsonCommand command, boolean isUpdate) { + Set<TaxGroupMappings> groupMappings = new HashSet<>(); final JsonElement element = command.parsedJson(); final JsonObject topLevelJsonElement = element.getAsJsonObject(); http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/9e5e7329/fineract-provider/src/main/java/org/apache/fineract/portfolio/tax/service/TaxUtils.java ---------------------------------------------------------------------- diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/tax/service/TaxUtils.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/tax/service/TaxUtils.java index 02368df..1acc202 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/tax/service/TaxUtils.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/tax/service/TaxUtils.java @@ -22,6 +22,7 @@ import java.math.BigDecimal; import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.Set; import org.apache.fineract.organisation.monetary.domain.MoneyHelper; import org.apache.fineract.portfolio.tax.domain.TaxComponent; @@ -31,7 +32,7 @@ import org.joda.time.LocalDate; public class TaxUtils { public static Map<TaxComponent, BigDecimal> splitTax(final BigDecimal amount, final LocalDate date, - final List<TaxGroupMappings> taxGroupMappings, final int scale) { + final Set<TaxGroupMappings> taxGroupMappings, final int scale) { Map<TaxComponent, BigDecimal> map = new HashMap<>(3); if (amount != null) { final double amountVal = amount.doubleValue(); @@ -51,7 +52,7 @@ public class TaxUtils { return map; } - public static BigDecimal incomeAmount(final BigDecimal amount, final LocalDate date, final List<TaxGroupMappings> taxGroupMappings, + public static BigDecimal incomeAmount(final BigDecimal amount, final LocalDate date, final Set<TaxGroupMappings> taxGroupMappings, final int scale) { Map<TaxComponent, BigDecimal> map = splitTax(amount, date, taxGroupMappings, scale); return incomeAmount(amount, map); http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/9e5e7329/fineract-provider/src/main/java/org/apache/fineract/portfolio/tax/service/TaxWritePlatformServiceImpl.java ---------------------------------------------------------------------- diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/tax/service/TaxWritePlatformServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/tax/service/TaxWritePlatformServiceImpl.java index a96b57d..30ecf26 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/tax/service/TaxWritePlatformServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/tax/service/TaxWritePlatformServiceImpl.java @@ -18,8 +18,8 @@ */ package org.apache.fineract.portfolio.tax.service; -import java.util.List; import java.util.Map; +import java.util.Set; import org.apache.fineract.infrastructure.core.api.JsonCommand; import org.apache.fineract.infrastructure.core.data.CommandProcessingResult; @@ -98,7 +98,7 @@ public class TaxWritePlatformServiceImpl implements TaxWritePlatformService { this.validator.validateForTaxGroupUpdate(command.json()); final TaxGroup taxGroup = this.taxGroupRepositoryWrapper.findOneWithNotFoundDetection(id); final boolean isUpdate = true; - List<TaxGroupMappings> groupMappings = this.taxAssembler.assembleTaxGroupMappingsFrom(command, isUpdate); + Set<TaxGroupMappings> groupMappings = this.taxAssembler.assembleTaxGroupMappingsFrom(command, isUpdate); this.validator.validateTaxGroupEndDateAndTaxComponent(taxGroup, groupMappings); Map<String, Object> changes = taxGroup.update(command, groupMappings); this.validator.validateTaxGroup(taxGroup); http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/9e5e7329/fineract-provider/src/main/java/org/apache/fineract/useradministration/domain/AppUser.java ---------------------------------------------------------------------- diff --git a/fineract-provider/src/main/java/org/apache/fineract/useradministration/domain/AppUser.java b/fineract-provider/src/main/java/org/apache/fineract/useradministration/domain/AppUser.java index 7bf9558..d52ede0 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/useradministration/domain/AppUser.java +++ b/fineract-provider/src/main/java/org/apache/fineract/useradministration/domain/AppUser.java @@ -52,8 +52,6 @@ import org.apache.fineract.organisation.office.domain.Office; import org.apache.fineract.organisation.staff.domain.Staff; import org.apache.fineract.portfolio.client.domain.Client; import org.apache.fineract.useradministration.service.AppUserConstants; -import org.hibernate.annotations.LazyCollection; -import org.hibernate.annotations.LazyCollectionOption; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.data.jpa.domain.AbstractPersistable; @@ -122,8 +120,7 @@ public class AppUser extends AbstractPersistable<Long> implements PlatformUser { @Column(name = "is_self_service_user", nullable = false) private boolean isSelfServiceUser; - @LazyCollection(LazyCollectionOption.FALSE) - @OneToMany(cascade = CascadeType.ALL, orphanRemoval = true) + @OneToMany(cascade = CascadeType.ALL, orphanRemoval = true, fetch=FetchType.EAGER) @JoinColumn(name = "appuser_id", referencedColumnName= "id", nullable = false) private Set<AppUserClientMapping> appUserClientMappings = new HashSet<>(); http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/9e5e7329/fineract-provider/src/test/java/org/apache/fineract/portfolio/loanaccount/LoanRepaymentScheduleInstallmentBuilder.java ---------------------------------------------------------------------- diff --git a/fineract-provider/src/test/java/org/apache/fineract/portfolio/loanaccount/LoanRepaymentScheduleInstallmentBuilder.java b/fineract-provider/src/test/java/org/apache/fineract/portfolio/loanaccount/LoanRepaymentScheduleInstallmentBuilder.java index 5e6ee29..5a10f12 100644 --- a/fineract-provider/src/test/java/org/apache/fineract/portfolio/loanaccount/LoanRepaymentScheduleInstallmentBuilder.java +++ b/fineract-provider/src/test/java/org/apache/fineract/portfolio/loanaccount/LoanRepaymentScheduleInstallmentBuilder.java @@ -18,7 +18,7 @@ */ package org.apache.fineract.portfolio.loanaccount; -import java.util.List; +import java.util.Set; import org.apache.fineract.organisation.monetary.domain.MonetaryCurrency; import org.apache.fineract.organisation.monetary.domain.Money; @@ -49,7 +49,7 @@ public class LoanRepaymentScheduleInstallmentBuilder { } public LoanRepaymentScheduleInstallment build() { - final List<LoanInterestRecalcualtionAdditionalDetails> compoundingDetails = null; + final Set<LoanInterestRecalcualtionAdditionalDetails> compoundingDetails = null; final LoanRepaymentScheduleInstallment installment = new LoanRepaymentScheduleInstallment(this.loan, this.installmentNumber, this.fromDate, this.dueDate, this.principal.getAmount(), this.interest.getAmount(), this.feeCharges.getAmount(), this.penaltyCharges.getAmount(), this.recalculatedInterestComponent, compoundingDetails);
