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

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

commit 656ecdef9f9b081ca53499bf97341c6c98e9b93d
Author: Adam Saghy <[email protected]>
AuthorDate: Mon Aug 8 23:46:21 2022 +0200

    FINERACT-1670: Add auditable fields to Calendar
---
 .../portfolio/calendar/data/CalendarData.java      | 17 +++----
 .../portfolio/calendar/domain/Calendar.java        |  4 +-
 .../service/CalendarReadPlatformServiceImpl.java   | 25 +++++++---
 .../db/changelog/tenant/changelog-tenant.xml       |  4 +-
 ...ies_to_loan_repayment_schedule_installment.xml} |  0
 ...note.xml => 0034_add_audit_entries_to_note.xml} |  0
 ....xml => 0035_add_audit_entries_to_calendar.xml} | 54 +++++++++++-----------
 7 files changed, 59 insertions(+), 45 deletions(-)

diff --git 
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/calendar/data/CalendarData.java
 
b/fineract-provider/src/main/java/org/apache/fineract/portfolio/calendar/data/CalendarData.java
index 6b6a2f39b..f19c1a829 100644
--- 
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/calendar/data/CalendarData.java
+++ 
b/fineract-provider/src/main/java/org/apache/fineract/portfolio/calendar/data/CalendarData.java
@@ -21,6 +21,7 @@ package org.apache.fineract.portfolio.calendar.data;
 import java.io.Serializable;
 import java.time.LocalDate;
 import java.time.LocalTime;
+import java.time.OffsetDateTime;
 import java.util.Collection;
 import java.util.List;
 import java.util.Objects;
@@ -65,8 +66,8 @@ public final class CalendarData implements Serializable {
     private final String humanReadable;
     private final LocalDate recentEligibleMeetingDate;
 
-    private final LocalDate createdDate;
-    private final LocalDate lastUpdatedDate;
+    private final OffsetDateTime createdDate;
+    private final OffsetDateTime lastUpdatedDate;
     private final Long createdByUserId;
     private final String createdByUsername;
     private final Long lastUpdatedByUserId;
@@ -204,7 +205,7 @@ public final class CalendarData implements Serializable {
             final Integer duration, final EnumOptionData type, final boolean 
repeating, final String recurrence,
             final EnumOptionData frequency, final Integer interval, final 
EnumOptionData repeatsOnDay,
             final EnumOptionData repeatsOnNthDayOfMonth, final EnumOptionData 
remindBy, final Integer firstReminder,
-            final Integer secondReminder, final String humanReadable, final 
LocalDate createdDate, final LocalDate lastUpdatedDate,
+            final Integer secondReminder, final String humanReadable, final 
OffsetDateTime createdDate, final OffsetDateTime lastUpdatedDate,
             final Long createdByUserId, final String createdByUsername, final 
Long lastUpdatedByUserId, final String lastUpdatedByUsername,
             final LocalTime meetingTime, final Integer repeatsOnDayOfMonth) {
 
@@ -287,8 +288,8 @@ public final class CalendarData implements Serializable {
         final List<EnumOptionData> repeatsOnDayOptions = null;
         final List<EnumOptionData> frequencyNthDayTypeOptions = null;
 
-        final LocalDate createdDate = null;
-        final LocalDate lastUpdatedDate = null;
+        final OffsetDateTime createdDate = null;
+        final OffsetDateTime lastUpdatedDate = null;
         final Long createdByUserId = null;
         final String createdByUsername = null;
         final Long lastUpdatedByUserId = null;
@@ -326,8 +327,8 @@ public final class CalendarData implements Serializable {
             final EnumOptionData frequency, final Integer interval, final 
EnumOptionData repeatsOnDay,
             final EnumOptionData repeatsOnNthDayOfMonth, final EnumOptionData 
remindBy, final Integer firstReminder,
             final Integer secondReminder, final Collection<LocalDate> 
recurringDates, final Collection<LocalDate> nextTenRecurringDates,
-            final String humanReadable, final LocalDate 
recentEligibleMeetingDate, final LocalDate createdDate,
-            final LocalDate lastUpdatedDate, final Long createdByUserId, final 
String createdByUsername, final Long lastUpdatedByUserId,
+            final String humanReadable, final LocalDate 
recentEligibleMeetingDate, final OffsetDateTime createdDate,
+            final OffsetDateTime lastUpdatedDate, final Long createdByUserId, 
final String createdByUsername, final Long lastUpdatedByUserId,
             final String lastUpdatedByUsername, final Integer 
repeatsOnDayOfMonth, final List<EnumOptionData> entityTypeOptions,
             final List<EnumOptionData> calendarTypeOptions, final 
List<EnumOptionData> remindByOptions,
             final List<EnumOptionData> repeatsOptions, final 
List<EnumOptionData> repeatsOnDayOptions, final LocalTime meetingTime,
@@ -404,7 +405,7 @@ public final class CalendarData implements Serializable {
         return this.endDate;
     }
 
-    public LocalDate getCreatedDate() {
+    public OffsetDateTime getCreatedDate() {
         return this.createdDate;
     }
 
diff --git 
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/calendar/domain/Calendar.java
 
b/fineract-provider/src/main/java/org/apache/fineract/portfolio/calendar/domain/Calendar.java
index 75fa4406c..a7eb4894f 100644
--- 
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/calendar/domain/Calendar.java
+++ 
b/fineract-provider/src/main/java/org/apache/fineract/portfolio/calendar/domain/Calendar.java
@@ -18,6 +18,7 @@
  */
 package org.apache.fineract.portfolio.calendar.domain;
 
+import 
org.apache.fineract.infrastructure.core.domain.AbstractAuditableWithUTCDateTimeCustom;
 import static 
org.apache.fineract.portfolio.calendar.CalendarConstants.CALENDAR_RESOURCE_NAME;
 
 import java.time.LocalDate;
@@ -39,7 +40,6 @@ import org.apache.commons.lang3.StringUtils;
 import org.apache.fineract.infrastructure.core.api.JsonCommand;
 import org.apache.fineract.infrastructure.core.data.ApiParameterError;
 import org.apache.fineract.infrastructure.core.data.DataValidatorBuilder;
-import org.apache.fineract.infrastructure.core.domain.AbstractAuditableCustom;
 import 
org.apache.fineract.infrastructure.core.exception.PlatformApiDataValidationException;
 import org.apache.fineract.infrastructure.core.service.DateUtils;
 import 
org.apache.fineract.portfolio.calendar.CalendarConstants.CalendarSupportedParameters;
@@ -50,7 +50,7 @@ import org.apache.fineract.portfolio.common.domain.NthDayType;
 
 @Entity
 @Table(name = "m_calendar")
-public class Calendar extends AbstractAuditableCustom {
+public class Calendar extends AbstractAuditableWithUTCDateTimeCustom {
 
     @Column(name = "title", length = 50, nullable = false)
     private String title;
diff --git 
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/calendar/service/CalendarReadPlatformServiceImpl.java
 
b/fineract-provider/src/main/java/org/apache/fineract/portfolio/calendar/service/CalendarReadPlatformServiceImpl.java
index 85f964463..12a07ab69 100644
--- 
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/calendar/service/CalendarReadPlatformServiceImpl.java
+++ 
b/fineract-provider/src/main/java/org/apache/fineract/portfolio/calendar/service/CalendarReadPlatformServiceImpl.java
@@ -21,7 +21,9 @@ package org.apache.fineract.portfolio.calendar.service;
 import java.sql.ResultSet;
 import java.sql.SQLException;
 import java.time.LocalDate;
+import java.time.LocalDateTime;
 import java.time.LocalTime;
+import java.time.OffsetDateTime;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.List;
@@ -56,9 +58,10 @@ public class CalendarReadPlatformServiceImpl implements 
CalendarReadPlatformServ
                     + " c.duration as duration, c.calendar_type_enum as 
typeId, c.repeating as repeating, "
                     + " c.recurrence as recurrence, c.remind_by_enum as 
remindById, c.first_reminder as firstReminder, c.second_reminder as 
secondReminder, "
                     + " c.created_date as createdDate, c.lastmodified_date as 
updatedDate, creatingUser.id as creatingUserId, creatingUser.username as 
creatingUserName, "
+                    + " c.created_on_utc as createdDateUtc, 
c.last_modified_on_utc as updatedDateUtc, "
                     + " updatingUser.id as updatingUserId, 
updatingUser.username as updatingUserName,c.meeting_time as meetingTime "
                     + " from m_calendar c join m_calendar_instance ci on 
ci.calendar_id=c.id, m_appuser as creatingUser, m_appuser as updatingUser"
-                    + " where c.createdby_id=creatingUser.id and 
c.lastmodifiedby_id=updatingUser.id ";
+                    + " where c.created_by=creatingUser.id and 
c.last_modified_by=updatingUser.id ";
         }
 
         @Override
@@ -96,17 +99,25 @@ public class CalendarReadPlatformServiceImpl implements 
CalendarReadPlatformServ
                 humanReadable = CalendarUtils.getRRuleReadable(startDate, 
recurrence);
             }
             Integer monthOnDay = CalendarUtils.getMonthOnDay(recurrence);
-            final LocalDate createdDate = JdbcSupport.getLocalDate(rs, 
"createdDate");
-            final LocalDate lastUpdatedDate = JdbcSupport.getLocalDate(rs, 
"updatedDate");
+            final LocalDateTime createdDateLocal = 
JdbcSupport.getLocalDateTime(rs, "createdDate");
+            final OffsetDateTime createdDateUtc = 
JdbcSupport.getOffsetDateTime(rs, "createdDateUtc");
+            final LocalDateTime lastModifiedDateLocal = 
JdbcSupport.getLocalDateTime(rs, "updatedDate");
+            final OffsetDateTime lastModifiedDateUtc = 
JdbcSupport.getOffsetDateTime(rs, "updatedDateUtc");
             final Long createdByUserId = rs.getLong("creatingUserId");
             final String createdByUserName = rs.getString("creatingUserName");
             final Long lastUpdatedByUserId = rs.getLong("updatingUserId");
             final String lastUpdatedByUserName = 
rs.getString("updatingUserName");
             final LocalTime meetingTime = JdbcSupport.getLocalTime(rs, 
"meetingTime");
-
+            final OffsetDateTime createdDate = createdDateUtc != null ?
+                    createdDateUtc :
+                    OffsetDateTime.of(createdDateLocal, 
DateUtils.getDateTimeZoneOfTenant().getRules().getOffset(createdDateLocal));
+            final OffsetDateTime lastModifiedDate = lastModifiedDateUtc != 
null ?
+                    lastModifiedDateUtc :
+                    OffsetDateTime.of(lastModifiedDateLocal,
+                            
DateUtils.getDateTimeZoneOfTenant().getRules().getOffset(lastModifiedDateLocal));
             return CalendarData.instance(id, calendarInstanceId, entityId, 
entityType, title, description, location, startDate, endDate,
                     duration, type, repeating, recurrence, frequency, 
interval, repeatsOnDay, repeatsOnNthDayOfMonth, remindBy,
-                    firstReminder, secondReminder, humanReadable, createdDate, 
lastUpdatedDate, createdByUserId, createdByUserName,
+                    firstReminder, secondReminder, humanReadable, createdDate, 
lastModifiedDate, createdByUserId, createdByUserName,
                     lastUpdatedByUserId, lastUpdatedByUserName, meetingTime, 
monthOnDay);
         }
     }
@@ -487,8 +498,8 @@ public class CalendarReadPlatformServiceImpl implements 
CalendarReadPlatformServ
                 humanReadable = CalendarUtils.getRRuleReadable(startDate, 
recurrence);
             }
 
-            final LocalDate createdDate = null;
-            final LocalDate lastUpdatedDate = null;
+            final OffsetDateTime createdDate = null;
+            final OffsetDateTime lastUpdatedDate = null;
             final Long createdByUserId = null;
             final String createdByUserName = null;
             final Long lastUpdatedByUserId = null;
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 946fae600..4d60f259d 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
@@ -52,5 +52,7 @@
     <include file="parts/0030_add_audit_entries_to_business_date.xml" 
relativeToChangelogFile="true"/>
     <include file="parts/0031_add_audit_entries_to_client_identifier.xml" 
relativeToChangelogFile="true"/>
     <include file="parts/0032_add_some_missing_indexes.xml" 
relativeToChangelogFile="true"/>
->>>>>>> 92a62bc2d (FINERACT-1670: Add some missing indexes)
+    <include 
file="parts/0033_add_audit_entries_to_loan_repayment_schedule_installment.xml" 
relativeToChangelogFile="true"/>
+    <include file="parts/0034_add_audit_entries_to_note.xml" 
relativeToChangelogFile="true"/>
+    <include file="parts/0035_add_audit_entries_to_calendar.xml" 
relativeToChangelogFile="true"/>
 </databaseChangeLog>
diff --git 
a/fineract-provider/src/main/resources/db/changelog/tenant/parts/0032_add_audit_entries_to_loan_repayment_schedule_installment.xml
 
b/fineract-provider/src/main/resources/db/changelog/tenant/parts/0033_add_audit_entries_to_loan_repayment_schedule_installment.xml
similarity index 100%
rename from 
fineract-provider/src/main/resources/db/changelog/tenant/parts/0032_add_audit_entries_to_loan_repayment_schedule_installment.xml
rename to 
fineract-provider/src/main/resources/db/changelog/tenant/parts/0033_add_audit_entries_to_loan_repayment_schedule_installment.xml
diff --git 
a/fineract-provider/src/main/resources/db/changelog/tenant/parts/0033_add_audit_entries_to_note.xml
 
b/fineract-provider/src/main/resources/db/changelog/tenant/parts/0034_add_audit_entries_to_note.xml
similarity index 100%
copy from 
fineract-provider/src/main/resources/db/changelog/tenant/parts/0033_add_audit_entries_to_note.xml
copy to 
fineract-provider/src/main/resources/db/changelog/tenant/parts/0034_add_audit_entries_to_note.xml
diff --git 
a/fineract-provider/src/main/resources/db/changelog/tenant/parts/0033_add_audit_entries_to_note.xml
 
b/fineract-provider/src/main/resources/db/changelog/tenant/parts/0035_add_audit_entries_to_calendar.xml
similarity index 53%
rename from 
fineract-provider/src/main/resources/db/changelog/tenant/parts/0033_add_audit_entries_to_note.xml
rename to 
fineract-provider/src/main/resources/db/changelog/tenant/parts/0035_add_audit_entries_to_calendar.xml
index 19f519cdd..43204ed69 100644
--- 
a/fineract-provider/src/main/resources/db/changelog/tenant/parts/0033_add_audit_entries_to_note.xml
+++ 
b/fineract-provider/src/main/resources/db/changelog/tenant/parts/0035_add_audit_entries_to_calendar.xml
@@ -22,56 +22,56 @@
 <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.3.xsd";>
-    <changeSet author="fineract" id="note-1" context="mysql">
-        <addColumn tableName="m_note">
+    <changeSet author="fineract" id="calendar-1" context="mysql">
+        <addColumn tableName="m_calendar">
             <column name="created_on_utc" type="DATETIME"/>
             <column name="last_modified_on_utc" type="DATETIME"/>
         </addColumn>
     </changeSet>
-    <changeSet author="fineract" id="note-1" context="postgresql">
-        <addColumn tableName="m_note">
+    <changeSet author="fineract" id="calendar-1" context="postgresql">
+        <addColumn tableName="m_calendar">
             <column name="created_on_utc" type="TIMESTAMP WITH TIME ZONE"/>
             <column name="last_modified_on_utc" type="TIMESTAMP WITH TIME 
ZONE"/>
         </addColumn>
     </changeSet>
 
-    <changeSet id="note-2" author="fineract">
-        <dropNotNullConstraint tableName="m_note" columnName="created_date" 
columnDataType="datetime"/>
-        <dropNotNullConstraint tableName="m_note" 
columnName="lastmodified_date" columnDataType="datetime"/>
+    <changeSet id="calendar-2" author="fineract">
+        <dropNotNullConstraint tableName="m_calendar" 
columnName="created_date" columnDataType="datetime"/>
+        <dropNotNullConstraint tableName="m_calendar" 
columnName="lastmodified_date" columnDataType="datetime"/>
     </changeSet>
-    <changeSet id="note-3" author="fineract">
-        <renameColumn tableName="m_note" oldColumnName="createdby_id" 
newColumnName="created_by" columnDataType="BIGINT"/>
-        <renameColumn tableName="m_note" oldColumnName="lastmodifiedby_id" 
newColumnName="last_modified_by" columnDataType="BIGINT"/>
+    <changeSet id="calendar-3" author="fineract">
+        <renameColumn tableName="m_calendar" oldColumnName="createdby_id" 
newColumnName="created_by" columnDataType="BIGINT"/>
+        <renameColumn tableName="m_calendar" oldColumnName="lastmodifiedby_id" 
newColumnName="last_modified_by" columnDataType="BIGINT"/>
     </changeSet>
-    <changeSet author="fineract" id="note-4">
-        <addForeignKeyConstraint baseColumnNames="created_by" 
baseTableName="m_note"
-                                 constraintName="FK_note_created_by" 
deferrable="false" initiallyDeferred="false"
+    <changeSet author="fineract" id="calendar-4">
+        <addForeignKeyConstraint baseColumnNames="created_by" 
baseTableName="m_calendar"
+                                 constraintName="FK_calendar_created_by" 
deferrable="false" initiallyDeferred="false"
                                  onDelete="RESTRICT" onUpdate="RESTRICT" 
referencedColumnNames="id"
                                  referencedTableName="m_appuser" 
validate="true"/>
-        <addForeignKeyConstraint baseColumnNames="last_modified_by" 
baseTableName="m_note"
-                                 constraintName="FK_note_last_modified_by" 
deferrable="false" initiallyDeferred="false"
+        <addForeignKeyConstraint baseColumnNames="last_modified_by" 
baseTableName="m_calendar"
+                                 constraintName="FK_calendar_last_modified_by" 
deferrable="false" initiallyDeferred="false"
                                  onDelete="RESTRICT" onUpdate="RESTRICT" 
referencedColumnNames="id"
                                  referencedTableName="m_appuser" 
validate="true"/>
     </changeSet>
-    <changeSet id="note-5" author="fineract" context="mysql">
+    <changeSet id="calendar-5" author="fineract" context="mysql">
         <preConditions onFail="MARK_RAN">
-            <sqlCheck expectedResult="0">select count(*) from m_note</sqlCheck>
+            <sqlCheck expectedResult="0">select count(*) from 
m_calendar</sqlCheck>
         </preConditions>
-        <addNotNullConstraint tableName="m_note" columnName="created_on_utc" 
columnDataType="DATETIME"/>
-        <addNotNullConstraint tableName="m_note" 
columnName="last_modified_on_utc" columnDataType="DATETIME"/>
+        <addNotNullConstraint tableName="m_calendar" 
columnName="created_on_utc" columnDataType="DATETIME"/>
+        <addNotNullConstraint tableName="m_calendar" 
columnName="last_modified_on_utc" columnDataType="DATETIME"/>
     </changeSet>
-    <changeSet id="note-5" author="fineract" context="postgresql">
+    <changeSet id="calendar-5" author="fineract" context="postgresql">
         <preConditions onFail="MARK_RAN">
-            <sqlCheck expectedResult="0">select count(*) from m_note</sqlCheck>
+            <sqlCheck expectedResult="0">select count(*) from 
m_calendar</sqlCheck>
         </preConditions>
-        <addNotNullConstraint tableName="m_note" columnName="created_on_utc" 
columnDataType="TIMESTAMP WITH TIME ZONE"/>
-        <addNotNullConstraint tableName="m_note" 
columnName="last_modified_on_utc" columnDataType="TIMESTAMP WITH TIME ZONE"/>
+        <addNotNullConstraint tableName="m_calendar" 
columnName="created_on_utc" columnDataType="TIMESTAMP WITH TIME ZONE"/>
+        <addNotNullConstraint tableName="m_calendar" 
columnName="last_modified_on_utc" columnDataType="TIMESTAMP WITH TIME ZONE"/>
     </changeSet>
-    <changeSet id="note-6" author="fineract">
+    <changeSet id="calendar-6" author="fineract">
         <preConditions onFail="MARK_RAN">
-            <sqlCheck expectedResult="0">select count(*) from m_note where 
created_by is null or last_modified_by is null</sqlCheck>
+            <sqlCheck expectedResult="0">select count(*) from m_calendar where 
created_by is null or last_modified_by is null</sqlCheck>
         </preConditions>
-        <addNotNullConstraint tableName="m_note" columnName="created_by" 
columnDataType="BIGINT"/>
-        <addNotNullConstraint tableName="m_note" columnName="last_modified_by" 
columnDataType="BIGINT"/>
+        <addNotNullConstraint tableName="m_calendar" columnName="created_by" 
columnDataType="BIGINT"/>
+        <addNotNullConstraint tableName="m_calendar" 
columnName="last_modified_by" columnDataType="BIGINT"/>
     </changeSet>
 </databaseChangeLog>

Reply via email to