From 5a9ddab6716faa3b7f759eb096852f71531dca54 Mon Sep 17 00:00:00 2001 From: Arnold Galovics Date: Thu, 1 Sep 2022 13:36:24 +0200 Subject: [PATCH] FINERACT-1694: Storing external events fixes --- .../repository/domain/ExternalEvent.java | 4 +- .../service/DelayedExternalEventService.java | 18 ++++++ .../service/support/ByteBufferConverter.java | 18 ++++++ .../savings/data/SavingsAccountData.java | 37 ++++++++++-- ...ingsAccountInterestPostingServiceImpl.java | 8 +-- .../db/changelog/tenant/changelog-tenant.xml | 1 + .../0045_external_event_table_data_binary.xml | 60 +++++++++++++++++++ 7 files changed, 133 insertions(+), 13 deletions(-) create mode 100644 fineract-provider/src/main/resources/db/changelog/tenant/parts/0045_external_event_table_data_binary.xml diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/event/external/repository/domain/ExternalEvent.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/event/external/repository/domain/ExternalEvent.java index cfe1a4edf..73933d6cb 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/event/external/repository/domain/ExternalEvent.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/event/external/repository/domain/ExternalEvent.java @@ -26,7 +26,6 @@ import javax.persistence.Entity; import javax.persistence.EnumType; import javax.persistence.Enumerated; import javax.persistence.FetchType; -import javax.persistence.Lob; import javax.persistence.Table; import lombok.Getter; import lombok.NoArgsConstructor; @@ -44,8 +43,7 @@ public class ExternalEvent extends AbstractPersistableCustom { private String type; @Basic(fetch = FetchType.LAZY) - @Lob - @Column(name = "data", nullable = false, columnDefinition = "BLOB NOT NULL") + @Column(name = "data", nullable = false) private byte[] data; @Column(name = "created_at", nullable = false) diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/event/external/service/DelayedExternalEventService.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/event/external/service/DelayedExternalEventService.java index b01f7ca29..b415a0010 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/event/external/service/DelayedExternalEventService.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/event/external/service/DelayedExternalEventService.java @@ -1,3 +1,21 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ package org.apache.fineract.infrastructure.event.external.service; import java.util.ArrayList; diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/event/external/service/support/ByteBufferConverter.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/event/external/service/support/ByteBufferConverter.java index 5ef4daf51..c5f4ddcbf 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/event/external/service/support/ByteBufferConverter.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/event/external/service/support/ByteBufferConverter.java @@ -1,3 +1,21 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ package org.apache.fineract.infrastructure.event.external.service.support; import java.nio.ByteBuffer; diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/data/SavingsAccountData.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/data/SavingsAccountData.java index befcbe8de..5eed082b8 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/data/SavingsAccountData.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/data/SavingsAccountData.java @@ -386,23 +386,44 @@ public final class SavingsAccountData implements Serializable { return this.minOverdraftForInterestCalculation; } - public Integer getInterestPostingPeriodType() { + public EnumOptionData getInterestPostingPeriodType() { + return this.interestPostingPeriodType; + } + + public Integer getInterestPostingPeriodTypeId() { return this.interestPostingPeriodType.getId().intValue(); } - public Integer getDepositType() { + public EnumOptionData getDepositType() { + return this.depositType; + } + + public Integer getDepositTypeId() { return this.depositType.getId().intValue(); } - public Integer getInterestCompoundingPeriodType() { + public EnumOptionData getInterestCompoundingPeriodType() { + return this.interestCompoundingPeriodType; + } + + + public Integer getInterestCompoundingPeriodTypeId() { return this.interestCompoundingPeriodType.getId().intValue(); } - public Integer getInterestCalculationType() { + public EnumOptionData getInterestCalculationType() { + return this.interestCalculationType; + } + + public Integer getInterestCalculationTypeId() { return this.interestCalculationType.getId().intValue(); } - public Integer getInterestCalculationDaysInYearType() { + public EnumOptionData getInterestCalculationDaysInYearType() { + return this.interestCalculationDaysInYearType; + } + + public Integer getInterestCalculationDaysInYearTypeId() { return this.interestCalculationDaysInYearType.getId().intValue(); } @@ -446,7 +467,11 @@ public final class SavingsAccountData implements Serializable { return activationLocalDate; } - public Integer getLockinPeriodFrequencyType() { + public EnumOptionData getLockinPeriodFrequencyType() { + return this.lockinPeriodFrequencyType; + } + + public Integer getLockinPeriodFrequencyTypeId() { return this.lockinPeriodFrequencyType.getId().intValue(); } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/SavingsAccountInterestPostingServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/SavingsAccountInterestPostingServiceImpl.java index 0ee01f2ba..5d83717a8 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/SavingsAccountInterestPostingServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/SavingsAccountInterestPostingServiceImpl.java @@ -225,13 +225,13 @@ public class SavingsAccountInterestPostingServiceImpl implements SavingsAccountI // A generate list of EndOfDayBalances (not including interest postings) final SavingsPostingInterestPeriodType postingPeriodType = SavingsPostingInterestPeriodType - .fromInt(savingsAccountData.getInterestPostingPeriodType()); + .fromInt(savingsAccountData.getInterestPostingPeriodTypeId()); final SavingsCompoundingInterestPeriodType compoundingPeriodType = SavingsCompoundingInterestPeriodType - .fromInt(savingsAccountData.getInterestCompoundingPeriodType()); + .fromInt(savingsAccountData.getInterestCompoundingPeriodTypeId()); final SavingsInterestCalculationDaysInYearType daysInYearType = SavingsInterestCalculationDaysInYearType - .fromInt(savingsAccountData.getInterestCalculationDaysInYearType()); + .fromInt(savingsAccountData.getInterestCalculationDaysInYearTypeId()); List postedAsOnDates = getManualPostingDates(savingsAccountData); if (postInterestOnDate != null) { @@ -260,7 +260,7 @@ public class SavingsAccountInterestPostingServiceImpl implements SavingsAccountI } final SavingsInterestCalculationType interestCalculationType = SavingsInterestCalculationType - .fromInt(savingsAccountData.getInterestCalculationType()); + .fromInt(savingsAccountData.getInterestCalculationTypeId()); final BigDecimal interestRateAsFraction = getEffectiveInterestRateAsFraction(mc, upToInterestCalculationDate, savingsAccountData); final BigDecimal overdraftInterestRateAsFraction = getEffectiveOverdraftInterestRateAsFraction(mc, savingsAccountData); final Collection interestPostTransactions = this.savingsHelper.fetchPostInterestTransactionIds(savingsAccountData.getId()); diff --git a/fineract-provider/src/main/resources/db/changelog/tenant/changelog-tenant.xml b/fineract-provider/src/main/resources/db/changelog/tenant/changelog-tenant.xml index 309bc7136..a1dc85eb5 100644 --- a/fineract-provider/src/main/resources/db/changelog/tenant/changelog-tenant.xml +++ b/fineract-provider/src/main/resources/db/changelog/tenant/changelog-tenant.xml @@ -64,4 +64,5 @@ + diff --git a/fineract-provider/src/main/resources/db/changelog/tenant/parts/0045_external_event_table_data_binary.xml b/fineract-provider/src/main/resources/db/changelog/tenant/parts/0045_external_event_table_data_binary.xml new file mode 100644 index 000000000..65a5d3629 --- /dev/null +++ b/fineract-provider/src/main/resources/db/changelog/tenant/parts/0045_external_event_table_data_binary.xml @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +