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>