FINERACT-1670: Add auditable fields to Calendar
This commit is contained in:
committed by
Aleksandar Vidakovic
parent
e47e2cd1e3
commit
656ecdef9f
+9
-8
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
+2
-2
@@ -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;
|
||||
|
||||
+18
-7
@@ -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;
|
||||
|
||||
@@ -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>
|
||||
|
||||
+77
@@ -0,0 +1,77 @@
|
||||
<?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.3.xsd">
|
||||
<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="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="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="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="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_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="calendar-5" author="fineract" context="mysql">
|
||||
<preConditions onFail="MARK_RAN">
|
||||
<sqlCheck expectedResult="0">select count(*) from m_calendar</sqlCheck>
|
||||
</preConditions>
|
||||
<addNotNullConstraint tableName="m_calendar" columnName="created_on_utc" columnDataType="DATETIME"/>
|
||||
<addNotNullConstraint tableName="m_calendar" columnName="last_modified_on_utc" columnDataType="DATETIME"/>
|
||||
</changeSet>
|
||||
<changeSet id="calendar-5" author="fineract" context="postgresql">
|
||||
<preConditions onFail="MARK_RAN">
|
||||
<sqlCheck expectedResult="0">select count(*) from m_calendar</sqlCheck>
|
||||
</preConditions>
|
||||
<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="calendar-6" author="fineract">
|
||||
<preConditions onFail="MARK_RAN">
|
||||
<sqlCheck expectedResult="0">select count(*) from m_calendar where created_by is null or last_modified_by is null</sqlCheck>
|
||||
</preConditions>
|
||||
<addNotNullConstraint tableName="m_calendar" columnName="created_by" columnDataType="BIGINT"/>
|
||||
<addNotNullConstraint tableName="m_calendar" columnName="last_modified_by" columnDataType="BIGINT"/>
|
||||
</changeSet>
|
||||
</databaseChangeLog>
|
||||
Reference in New Issue
Block a user