You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@fineract.apache.org by ar...@apache.org on 2022/09/02 08:03:18 UTC

[fineract] 02/03: FINERACT-1694: Storing external events fixes

This is an automated email from the ASF dual-hosted git repository.

arnold pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/fineract.git

commit 5a9ddab6716faa3b7f759eb096852f71531dca54
Author: Arnold Galovics <ga...@gmail.com>
AuthorDate: Thu Sep 1 13:36:24 2022 +0200

    FINERACT-1694: Storing external events fixes
---
 .../external/repository/domain/ExternalEvent.java  |  4 +-
 .../service/DelayedExternalEventService.java       | 18 +++++++
 .../service/support/ByteBufferConverter.java       | 18 +++++++
 .../portfolio/savings/data/SavingsAccountData.java | 37 ++++++++++---
 .../SavingsAccountInterestPostingServiceImpl.java  |  8 +--
 .../db/changelog/tenant/changelog-tenant.xml       |  1 +
 .../0045_external_event_table_data_binary.xml      | 60 ++++++++++++++++++++++
 7 files changed, 133 insertions(+), 13 deletions(-)

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<LocalDate> 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<Long> 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 @@
     <include file="parts/0042_table_report_query_fix.xml" relativeToChangelogFile="true"/>
     <include file="parts/0043_add_external_event_table.xml" relativeToChangelogFile="true"/>
     <include file="parts/0044_table_report_query_fix.xml" relativeToChangelogFile="true"/>
+    <include file="parts/0045_external_event_table_data_binary.xml" relativeToChangelogFile="true"/>
 </databaseChangeLog>
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 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    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.
+
+-->
+<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
+                   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+                   xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-4.1.xsd">
+    <changeSet author="fineract" id="1">
+        <delete tableName="m_external_event"/>
+    </changeSet>
+    <changeSet author="fineract" id="2-mysql" context="mysql">
+        <dropColumn tableName="m_external_event" columnName="data"/>
+        <addColumn tableName="m_external_event">
+            <column name="data" type="VARBINARY">
+                <constraints nullable="false"/>
+            </column>
+        </addColumn>
+    </changeSet>
+    <changeSet author="fineract" id="2-postgresql" context="postgresql">
+        <dropColumn tableName="m_external_event" columnName="data"/>
+        <addColumn tableName="m_external_event">
+            <column name="data" type="BYTEA">
+                <constraints nullable="false"/>
+            </column>
+        </addColumn>
+    </changeSet>
+    <changeSet author="fineract" id="3">
+        <dropColumn tableName="m_external_event" columnName="idempotency_key"/>
+        <addColumn tableName="m_external_event">
+            <column name="idempotency_key" type="VARCHAR(100)">
+                <constraints nullable="false"/>
+            </column>
+        </addColumn>
+    </changeSet>
+    <changeSet author="fineract" id="4">
+        <dropColumn tableName="m_external_event" columnName="sent_at"/>
+        <addColumn tableName="m_external_event">
+            <column name="sent_at" type="timestamp">
+                <constraints nullable="true"/>
+            </column>
+        </addColumn>
+    </changeSet>
+</databaseChangeLog>