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 <[email protected]> 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>
