FINERACT-1670: Add auditable fields to Note
This commit is contained in:
committed by
Aleksandar Vidakovic
parent
4029464e32
commit
e47e2cd1e3
+4
-4
@@ -18,7 +18,7 @@
|
||||
*/
|
||||
package org.apache.fineract.portfolio.note.data;
|
||||
|
||||
import java.time.ZonedDateTime;
|
||||
import java.time.OffsetDateTime;
|
||||
import org.apache.fineract.infrastructure.core.data.EnumOptionData;
|
||||
|
||||
/**
|
||||
@@ -49,17 +49,17 @@ public class NoteData {
|
||||
@SuppressWarnings("unused")
|
||||
private final String createdByUsername;
|
||||
@SuppressWarnings("unused")
|
||||
private final ZonedDateTime createdOn;
|
||||
private final OffsetDateTime createdOn;
|
||||
@SuppressWarnings("unused")
|
||||
private final Long updatedById;
|
||||
@SuppressWarnings("unused")
|
||||
private final String updatedByUsername;
|
||||
@SuppressWarnings("unused")
|
||||
private final ZonedDateTime updatedOn;
|
||||
private final OffsetDateTime updatedOn;
|
||||
|
||||
public NoteData(final Long id, final Long clientId, final Long groupId, final Long loanId, final Long transactionId,
|
||||
final Long depositAccountId, final Long savingAccountId, final EnumOptionData noteType, final String note,
|
||||
final ZonedDateTime createdDate, final Long createdById, final String createdByUsername, final ZonedDateTime lastModifiedDate,
|
||||
final OffsetDateTime createdDate, final Long createdById, final String createdByUsername, final OffsetDateTime lastModifiedDate,
|
||||
final Long lastModifiedById, final String updatedByUsername) {
|
||||
this.id = id;
|
||||
this.clientId = clientId;
|
||||
|
||||
@@ -27,7 +27,7 @@ import javax.persistence.ManyToOne;
|
||||
import javax.persistence.Table;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.apache.fineract.infrastructure.core.api.JsonCommand;
|
||||
import org.apache.fineract.infrastructure.core.domain.AbstractAuditableCustom;
|
||||
import org.apache.fineract.infrastructure.core.domain.AbstractAuditableWithUTCDateTimeCustom;
|
||||
import org.apache.fineract.portfolio.client.domain.Client;
|
||||
import org.apache.fineract.portfolio.group.domain.Group;
|
||||
import org.apache.fineract.portfolio.loanaccount.domain.Loan;
|
||||
@@ -38,7 +38,7 @@ import org.apache.fineract.portfolio.shareaccounts.domain.ShareAccount;
|
||||
|
||||
@Entity
|
||||
@Table(name = "m_note")
|
||||
public class Note extends AbstractAuditableCustom {
|
||||
public class Note extends AbstractAuditableWithUTCDateTimeCustom {
|
||||
|
||||
@ManyToOne
|
||||
@JoinColumn(name = "client_id", nullable = true)
|
||||
|
||||
+18
-6
@@ -20,7 +20,8 @@ package org.apache.fineract.portfolio.note.service;
|
||||
|
||||
import java.sql.ResultSet;
|
||||
import java.sql.SQLException;
|
||||
import java.time.ZonedDateTime;
|
||||
import java.time.LocalDateTime;
|
||||
import java.time.OffsetDateTime;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.Collection;
|
||||
@@ -28,6 +29,7 @@ import java.util.List;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.apache.fineract.infrastructure.core.data.EnumOptionData;
|
||||
import org.apache.fineract.infrastructure.core.domain.JdbcSupport;
|
||||
import org.apache.fineract.infrastructure.core.service.DateUtils;
|
||||
import org.apache.fineract.portfolio.note.data.NoteData;
|
||||
import org.apache.fineract.portfolio.note.domain.NoteType;
|
||||
import org.apache.fineract.portfolio.note.exception.NoteNotFoundException;
|
||||
@@ -47,9 +49,10 @@ public class NoteReadPlatformServiceImpl implements NoteReadPlatformService {
|
||||
|
||||
public String schema() {
|
||||
return " select n.id as id, n.client_id as clientId, n.group_id as groupId, n.loan_id as loanId, n.loan_transaction_id as transactionId, "
|
||||
+ " n.note_type_enum as noteTypeEnum, n.note as note, n.created_date as createdDate, n.createdby_id as createdById, "
|
||||
+ " cb.username as createdBy, n.lastmodified_date as lastModifiedDate, n.lastmodifiedby_id as lastModifiedById, mb.username as modifiedBy "
|
||||
+ " from m_note n left join m_appuser cb on cb.id=n.createdby_id left join m_appuser mb on mb.id=n.lastmodifiedby_id ";
|
||||
+ " n.note_type_enum as noteTypeEnum, n.note as note, n.created_date as createdDate, n.created_by as createdById, "
|
||||
+ " n.created_on_utc as createdDateUtc, n.last_modified_on_utc as lastModifiedDateUtc, "
|
||||
+ " cb.username as createdBy, n.lastmodified_date as lastModifiedDate, n.last_modified_by as lastModifiedById, mb.username as modifiedBy "
|
||||
+ " from m_note n left join m_appuser cb on cb.id=n.created_by left join m_appuser mb on mb.id=n.last_modified_by ";
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -67,12 +70,21 @@ public class NoteReadPlatformServiceImpl implements NoteReadPlatformService {
|
||||
final Integer noteTypeId = JdbcSupport.getInteger(rs, "noteTypeEnum");
|
||||
final EnumOptionData noteType = NoteEnumerations.noteType(noteTypeId);
|
||||
final String note = rs.getString("note");
|
||||
final ZonedDateTime createdDate = JdbcSupport.getDateTime(rs, "createdDate");
|
||||
final LocalDateTime createdDateLocal = JdbcSupport.getLocalDateTime(rs, "createdDate");
|
||||
final OffsetDateTime createdDateUtc = JdbcSupport.getOffsetDateTime(rs, "createdDateUtc");
|
||||
final Long createdById = JdbcSupport.getLong(rs, "createdById");
|
||||
final ZonedDateTime lastModifiedDate = JdbcSupport.getDateTime(rs, "lastModifiedDate");
|
||||
final LocalDateTime lastModifiedDateLocal = JdbcSupport.getLocalDateTime(rs, "lastModifiedDate");
|
||||
final OffsetDateTime lastModifiedDateUtc = JdbcSupport.getOffsetDateTime(rs, "lastModifiedDateUtc");
|
||||
final Long lastModifiedById = JdbcSupport.getLong(rs, "lastModifiedById");
|
||||
final String createdByUsername = rs.getString("createdBy");
|
||||
final String updatedByUsername = rs.getString("modifiedBy");
|
||||
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 new NoteData(id, clientId, groupId, loanId, transactionId, null, null, noteType, note, createdDate, createdById,
|
||||
createdByUsername, lastModifiedDate, lastModifiedById, updatedByUsername);
|
||||
}
|
||||
|
||||
+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="note-1" context="mysql">
|
||||
<addColumn tableName="m_note">
|
||||
<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">
|
||||
<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>
|
||||
<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>
|
||||
<changeSet author="fineract" id="note-4">
|
||||
<addForeignKeyConstraint baseColumnNames="created_by" baseTableName="m_note"
|
||||
constraintName="FK_note_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"
|
||||
onDelete="RESTRICT" onUpdate="RESTRICT" referencedColumnNames="id"
|
||||
referencedTableName="m_appuser" validate="true"/>
|
||||
</changeSet>
|
||||
<changeSet id="note-5" author="fineract" context="mysql">
|
||||
<preConditions onFail="MARK_RAN">
|
||||
<sqlCheck expectedResult="0">select count(*) from m_note</sqlCheck>
|
||||
</preConditions>
|
||||
<addNotNullConstraint tableName="m_note" columnName="created_on_utc" columnDataType="DATETIME"/>
|
||||
<addNotNullConstraint tableName="m_note" columnName="last_modified_on_utc" columnDataType="DATETIME"/>
|
||||
</changeSet>
|
||||
<changeSet id="note-5" author="fineract" context="postgresql">
|
||||
<preConditions onFail="MARK_RAN">
|
||||
<sqlCheck expectedResult="0">select count(*) from m_note</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"/>
|
||||
</changeSet>
|
||||
<changeSet id="note-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>
|
||||
</preConditions>
|
||||
<addNotNullConstraint tableName="m_note" columnName="created_by" columnDataType="BIGINT"/>
|
||||
<addNotNullConstraint tableName="m_note" columnName="last_modified_by" columnDataType="BIGINT"/>
|
||||
</changeSet>
|
||||
</databaseChangeLog>
|
||||
Reference in New Issue
Block a user