FINERACt-1670: Fix fetching datetime in native queries

This commit is contained in:
Adam Saghy
2022-08-11 19:22:52 +02:00
committed by Arnold Gálovics
parent bd404e8c7b
commit d5ca6baab3
11 changed files with 44 additions and 69 deletions
@@ -81,7 +81,7 @@ public class SmsCampaignReadPlatformServiceImpl implements SmsCampaignReadPlatfo
final boolean isVisible = true; final boolean isVisible = true;
try { try {
final String sql = "select " + this.smsCampaignMapper.schema + " where sc.id = ? and sc.is_visible = ?"; final String sql = "select " + this.smsCampaignMapper.schema + " where sc.id = ? and sc.is_visible = ?";
return this.jdbcTemplate.queryForObject(sql, this.smsCampaignMapper, new Object[] { campaignId, isVisible }); // NOSONAR return this.jdbcTemplate.queryForObject(sql, this.smsCampaignMapper, campaignId, isVisible); // NOSONAR
} catch (final EmptyResultDataAccessException e) { } catch (final EmptyResultDataAccessException e) {
throw new SmsCampaignNotFound(campaignId, e); throw new SmsCampaignNotFound(campaignId, e);
} }
@@ -89,7 +89,7 @@ public class SmsCampaignReadPlatformServiceImpl implements SmsCampaignReadPlatfo
@Override @Override
public Page<SmsCampaignData> retrieveAll(final SearchParameters searchParameters) { public Page<SmsCampaignData> retrieveAll(final SearchParameters searchParameters) {
final Integer visible = 1; final boolean visible = true;
final StringBuilder sqlBuilder = new StringBuilder(200); final StringBuilder sqlBuilder = new StringBuilder(200);
sqlBuilder.append("select " + sqlGenerator.calcFoundRows() + " "); sqlBuilder.append("select " + sqlGenerator.calcFoundRows() + " ");
sqlBuilder.append(this.smsCampaignMapper.schema() + " where sc.is_visible = ? "); sqlBuilder.append(this.smsCampaignMapper.schema() + " where sc.is_visible = ? ");
@@ -112,7 +112,7 @@ public class SmsCampaignReadPlatformServiceImpl implements SmsCampaignReadPlatfo
sql = sql + " where sr.report_type = ?"; sql = sql + " where sr.report_type = ?";
} }
final Collection<SmsBusinessRulesData> businessRulesOptions = this.jdbcTemplate.query(sql, this.businessRuleMapper, // NOSONAR final Collection<SmsBusinessRulesData> businessRulesOptions = this.jdbcTemplate.query(sql, this.businessRuleMapper, // NOSONAR
new Object[] { reportType }); reportType);
final Collection<SmsProviderData> smsProviderOptions = this.smsCampaignDropdownReadPlatformService.retrieveSmsProviders(); final Collection<SmsProviderData> smsProviderOptions = this.smsCampaignDropdownReadPlatformService.retrieveSmsProviders();
final Collection<EnumOptionData> campaignTypeOptions = this.smsCampaignDropdownReadPlatformService.retrieveCampaignTypes(); final Collection<EnumOptionData> campaignTypeOptions = this.smsCampaignDropdownReadPlatformService.retrieveCampaignTypes();
final Collection<EnumOptionData> campaignTriggerTypeOptions = this.smsCampaignDropdownReadPlatformService final Collection<EnumOptionData> campaignTriggerTypeOptions = this.smsCampaignDropdownReadPlatformService
@@ -24,7 +24,6 @@ import java.sql.ResultSet;
import java.sql.SQLException; import java.sql.SQLException;
import java.sql.Timestamp; import java.sql.Timestamp;
import java.time.LocalDate; import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime; import java.time.LocalTime;
import java.time.OffsetDateTime; import java.time.OffsetDateTime;
import java.time.ZonedDateTime; import java.time.ZonedDateTime;
@@ -48,15 +47,6 @@ public final class JdbcSupport {
return dateTime; return dateTime;
} }
public static LocalDateTime getLocalDateTime(final ResultSet rs, final String columnName) throws SQLException {
LocalDateTime dateTime = null;
final Timestamp dateValue = rs.getTimestamp(columnName);
if (dateValue != null) {
dateTime = dateValue.toLocalDateTime();
}
return dateTime;
}
public static LocalDate getLocalDate(final ResultSet rs, final String columnName) throws SQLException { public static LocalDate getLocalDate(final ResultSet rs, final String columnName) throws SQLException {
LocalDate localDate = null; LocalDate localDate = null;
final Date dateValue = rs.getDate(columnName); final Date dateValue = rs.getDate(columnName);
@@ -18,7 +18,7 @@
*/ */
package org.apache.fineract.infrastructure.gcm.domain; package org.apache.fineract.infrastructure.gcm.domain;
import java.time.LocalDateTime; import java.time.OffsetDateTime;
import org.apache.fineract.portfolio.client.data.ClientData; import org.apache.fineract.portfolio.client.data.ClientData;
public final class DeviceRegistrationData { public final class DeviceRegistrationData {
@@ -26,10 +26,10 @@ public final class DeviceRegistrationData {
public Long id; public Long id;
public ClientData clientData; public ClientData clientData;
public String registrationId; public String registrationId;
public LocalDateTime updatedOnDate; public OffsetDateTime updatedOnDate;
private DeviceRegistrationData(final Long id, final ClientData clientData, final String registrationId, private DeviceRegistrationData(final Long id, final ClientData clientData, final String registrationId,
final LocalDateTime updatedOnDate) { final OffsetDateTime updatedOnDate) {
this.id = id; this.id = id;
this.clientData = clientData; this.clientData = clientData;
this.registrationId = registrationId; this.registrationId = registrationId;
@@ -37,7 +37,7 @@ public final class DeviceRegistrationData {
} }
public static DeviceRegistrationData instance(final Long id, final ClientData clientData, final String registrationId, public static DeviceRegistrationData instance(final Long id, final ClientData clientData, final String registrationId,
final LocalDateTime updatedOnDate) { final OffsetDateTime updatedOnDate) {
return new DeviceRegistrationData(id, clientData, registrationId, updatedOnDate); return new DeviceRegistrationData(id, clientData, registrationId, updatedOnDate);
} }
@@ -20,7 +20,7 @@ package org.apache.fineract.infrastructure.gcm.service;
import java.sql.ResultSet; import java.sql.ResultSet;
import java.sql.SQLException; import java.sql.SQLException;
import java.time.LocalDateTime; import java.time.OffsetDateTime;
import java.util.Collection; import java.util.Collection;
import org.apache.fineract.infrastructure.core.domain.JdbcSupport; import org.apache.fineract.infrastructure.core.domain.JdbcSupport;
import org.apache.fineract.infrastructure.gcm.domain.DeviceRegistrationData; import org.apache.fineract.infrastructure.gcm.domain.DeviceRegistrationData;
@@ -66,7 +66,7 @@ public class DeviceRegistrationReadPlatformServiceImpl implements DeviceRegistra
public DeviceRegistrationData mapRow(final ResultSet rs, @SuppressWarnings("unused") final int rowNum) throws SQLException { public DeviceRegistrationData mapRow(final ResultSet rs, @SuppressWarnings("unused") final int rowNum) throws SQLException {
final Long id = JdbcSupport.getLong(rs, "id"); final Long id = JdbcSupport.getLong(rs, "id");
final LocalDateTime updatedOnDate = JdbcSupport.getLocalDateTime(rs, "updatedOnDate"); final OffsetDateTime updatedOnDate = JdbcSupport.getOffsetDateTime(rs, "updatedOnDate");
final String registrationId = rs.getString("registrationId"); final String registrationId = rs.getString("registrationId");
final Long clientId = rs.getLong("clientId"); final Long clientId = rs.getLong("clientId");
final String clientName = rs.getString("clientName"); final String clientName = rs.getString("clientName");
@@ -89,7 +89,7 @@ public class DeviceRegistrationReadPlatformServiceImpl implements DeviceRegistra
this.context.authenticatedUser(); this.context.authenticatedUser();
DeviceRegistrationDataMapper drm = new DeviceRegistrationDataMapper(); DeviceRegistrationDataMapper drm = new DeviceRegistrationDataMapper();
String sql = "select " + drm.schema() + " where cdr.id = ? "; String sql = "select " + drm.schema() + " where cdr.id = ? ";
return this.jdbcTemplate.queryForObject(sql, drm, new Object[] { id }); // NOSONAR return this.jdbcTemplate.queryForObject(sql, drm, id); // NOSONAR
} catch (final EmptyResultDataAccessException e) { } catch (final EmptyResultDataAccessException e) {
throw new DeviceRegistrationNotFoundException(id, e); throw new DeviceRegistrationNotFoundException(id, e);
} }
@@ -101,7 +101,7 @@ public class DeviceRegistrationReadPlatformServiceImpl implements DeviceRegistra
this.context.authenticatedUser(); this.context.authenticatedUser();
DeviceRegistrationDataMapper drm = new DeviceRegistrationDataMapper(); DeviceRegistrationDataMapper drm = new DeviceRegistrationDataMapper();
String sql = "select " + drm.schema() + " where c.id = ? "; String sql = "select " + drm.schema() + " where c.id = ? ";
return this.jdbcTemplate.queryForObject(sql, drm, new Object[] { clientId }); // NOSONAR return this.jdbcTemplate.queryForObject(sql, drm, clientId); // NOSONAR
} catch (final EmptyResultDataAccessException e) { } catch (final EmptyResultDataAccessException e) {
throw new DeviceRegistrationNotFoundException(clientId, "client", e); throw new DeviceRegistrationNotFoundException(clientId, "client", e);
} }
@@ -21,7 +21,7 @@ package org.apache.fineract.organisation.teller.data;
import java.io.Serializable; import java.io.Serializable;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.time.LocalDate; import java.time.LocalDate;
import java.time.LocalDateTime; import java.time.OffsetDateTime;
import java.util.Collection; import java.util.Collection;
import org.apache.fineract.organisation.monetary.data.CurrencyData; import org.apache.fineract.organisation.monetary.data.CurrencyData;
import org.apache.fineract.organisation.teller.domain.CashierTxnType; import org.apache.fineract.organisation.teller.domain.CashierTxnType;
@@ -36,7 +36,7 @@ public final class CashierTransactionData implements Serializable {
private final Long entityId; private final Long entityId;
private final String entityType; private final String entityType;
private final String txnNote; private final String txnNote;
private final LocalDateTime createdDate; private final OffsetDateTime createdDate;
// Template fields // Template fields
private final Long officeId; private final Long officeId;
@@ -55,7 +55,7 @@ public final class CashierTransactionData implements Serializable {
* Creates a new cashier. * Creates a new cashier.
*/ */
private CashierTransactionData(final Long id, final Long cashierId, CashierTxnType txnType, final BigDecimal txnAmount, private CashierTransactionData(final Long id, final Long cashierId, CashierTxnType txnType, final BigDecimal txnAmount,
final LocalDate txnDate, String txnNote, String entityType, Long entityId, LocalDateTime createdDate, Long officeId, final LocalDate txnDate, String txnNote, String entityType, Long entityId, OffsetDateTime createdDate, Long officeId,
String officeName, Long tellerId, String tellerName, String cashierName, CashierData cashierData, LocalDate startDate, String officeName, Long tellerId, String tellerName, String cashierName, CashierData cashierData, LocalDate startDate,
LocalDate endDate, final Collection<CurrencyData> currencyOptions) { LocalDate endDate, final Collection<CurrencyData> currencyOptions) {
this.id = id; this.id = id;
@@ -82,7 +82,7 @@ public final class CashierTransactionData implements Serializable {
} }
public static CashierTransactionData instance(final Long id, final Long cashierId, CashierTxnType txnType, final BigDecimal txnAmount, public static CashierTransactionData instance(final Long id, final Long cashierId, CashierTxnType txnType, final BigDecimal txnAmount,
final LocalDate txnDate, final String txnNote, final String entityType, final Long entityId, final LocalDateTime createdDate, final LocalDate txnDate, final String txnNote, final String entityType, final Long entityId, final OffsetDateTime createdDate,
final Long officeId, final String officeName, final Long tellerId, final String tellerName, final String cashierName, final Long officeId, final String officeName, final Long tellerId, final String tellerName, final String cashierName,
final CashierData cashierData, LocalDate startDate, LocalDate endDate) { final CashierData cashierData, LocalDate startDate, LocalDate endDate) {
return new CashierTransactionData(id, cashierId, txnType, txnAmount, txnDate, txnNote, entityType, entityId, createdDate, officeId, return new CashierTransactionData(id, cashierId, txnType, txnAmount, txnDate, txnNote, entityType, entityId, createdDate, officeId,
@@ -128,7 +128,7 @@ public final class CashierTransactionData implements Serializable {
return entityId; return entityId;
} }
public LocalDateTime getCreatedDate() { public OffsetDateTime getCreatedDate() {
return createdDate; return createdDate;
} }
@@ -22,7 +22,7 @@ import java.math.BigDecimal;
import java.sql.ResultSet; import java.sql.ResultSet;
import java.sql.SQLException; import java.sql.SQLException;
import java.time.LocalDate; import java.time.LocalDate;
import java.time.LocalDateTime; import java.time.OffsetDateTime;
import java.util.Collection; import java.util.Collection;
import java.util.Iterator; import java.util.Iterator;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
@@ -719,13 +719,13 @@ public class TellerManagementReadPlatformServiceImpl implements TellerManagement
final String txnNote = rs.getString("txn_note"); final String txnNote = rs.getString("txn_note");
final String entityType = rs.getString("entity_type"); final String entityType = rs.getString("entity_type");
final Long entityId = rs.getLong("entity_id"); final Long entityId = rs.getLong("entity_id");
final LocalDateTime createdLocalDate = JdbcSupport.getLocalDateTime(rs, "created_date"); final OffsetDateTime createdLocalDate = JdbcSupport.getOffsetDateTime(rs, "created_date");
LocalDate txnDate = null; LocalDate txnDate = null;
if (txnLocalDate != null) { if (txnLocalDate != null) {
txnDate = txnLocalDate; txnDate = txnLocalDate;
} }
LocalDateTime createdDate = null; OffsetDateTime createdDate = null;
if (createdLocalDate != null) { if (createdLocalDate != null) {
createdDate = createdLocalDate; createdDate = createdLocalDate;
} }
@@ -21,7 +21,6 @@ package org.apache.fineract.portfolio.calendar.service;
import java.sql.ResultSet; import java.sql.ResultSet;
import java.sql.SQLException; import java.sql.SQLException;
import java.time.LocalDate; import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime; import java.time.LocalTime;
import java.time.OffsetDateTime; import java.time.OffsetDateTime;
import java.util.ArrayList; import java.util.ArrayList;
@@ -99,20 +98,17 @@ public class CalendarReadPlatformServiceImpl implements CalendarReadPlatformServ
humanReadable = CalendarUtils.getRRuleReadable(startDate, recurrence); humanReadable = CalendarUtils.getRRuleReadable(startDate, recurrence);
} }
Integer monthOnDay = CalendarUtils.getMonthOnDay(recurrence); Integer monthOnDay = CalendarUtils.getMonthOnDay(recurrence);
final LocalDateTime createdDateLocal = JdbcSupport.getLocalDateTime(rs, "createdDate"); final OffsetDateTime createdDateLocal = JdbcSupport.getOffsetDateTime(rs, "createdDate");
final OffsetDateTime createdDateUtc = JdbcSupport.getOffsetDateTime(rs, "createdDateUtc"); final OffsetDateTime createdDateUtc = JdbcSupport.getOffsetDateTime(rs, "createdDateUtc");
final LocalDateTime lastModifiedDateLocal = JdbcSupport.getLocalDateTime(rs, "updatedDate"); final OffsetDateTime lastModifiedDateLocal = JdbcSupport.getOffsetDateTime(rs, "updatedDate");
final OffsetDateTime lastModifiedDateUtc = JdbcSupport.getOffsetDateTime(rs, "updatedDateUtc"); final OffsetDateTime lastModifiedDateUtc = JdbcSupport.getOffsetDateTime(rs, "updatedDateUtc");
final Long createdByUserId = rs.getLong("creatingUserId"); final Long createdByUserId = rs.getLong("creatingUserId");
final String createdByUserName = rs.getString("creatingUserName"); final String createdByUserName = rs.getString("creatingUserName");
final Long lastUpdatedByUserId = rs.getLong("updatingUserId"); final Long lastUpdatedByUserId = rs.getLong("updatingUserId");
final String lastUpdatedByUserName = rs.getString("updatingUserName"); final String lastUpdatedByUserName = rs.getString("updatingUserName");
final LocalTime meetingTime = JdbcSupport.getLocalTime(rs, "meetingTime"); final LocalTime meetingTime = JdbcSupport.getLocalTime(rs, "meetingTime");
final OffsetDateTime createdDate = createdDateUtc != null ? createdDateUtc final OffsetDateTime createdDate = createdDateUtc != null ? createdDateUtc : createdDateLocal;
: OffsetDateTime.of(createdDateLocal, DateUtils.getDateTimeZoneOfTenant().getRules().getOffset(createdDateLocal)); final OffsetDateTime lastModifiedDate = lastModifiedDateUtc != null ? lastModifiedDateUtc : lastModifiedDateLocal;
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, return CalendarData.instance(id, calendarInstanceId, entityId, entityType, title, description, location, startDate, endDate,
duration, type, repeating, recurrence, frequency, interval, repeatsOnDay, repeatsOnNthDayOfMonth, remindBy, duration, type, repeating, recurrence, frequency, interval, repeatsOnDay, repeatsOnNthDayOfMonth, remindBy,
firstReminder, secondReminder, humanReadable, createdDate, lastModifiedDate, createdByUserId, createdByUserName, firstReminder, secondReminder, humanReadable, createdDate, lastModifiedDate, createdByUserId, createdByUserName,
@@ -23,11 +23,9 @@ import java.sql.Date;
import java.sql.ResultSet; import java.sql.ResultSet;
import java.sql.SQLException; import java.sql.SQLException;
import java.time.LocalDate; import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.OffsetDateTime; import java.time.OffsetDateTime;
import java.util.List; import java.util.List;
import org.apache.fineract.infrastructure.core.domain.JdbcSupport; import org.apache.fineract.infrastructure.core.domain.JdbcSupport;
import org.apache.fineract.infrastructure.core.service.DateUtils;
import org.apache.fineract.portfolio.floatingrates.data.FloatingRateData; import org.apache.fineract.portfolio.floatingrates.data.FloatingRateData;
import org.apache.fineract.portfolio.floatingrates.data.FloatingRatePeriodData; import org.apache.fineract.portfolio.floatingrates.data.FloatingRatePeriodData;
import org.apache.fineract.portfolio.floatingrates.data.InterestRatePeriodData; import org.apache.fineract.portfolio.floatingrates.data.InterestRatePeriodData;
@@ -124,21 +122,19 @@ public class FloatingRatesReadPlatformServiceImpl implements FloatingRatesReadPl
final boolean isBaseLendingRate = rs.getBoolean("isBaseLendingRate"); final boolean isBaseLendingRate = rs.getBoolean("isBaseLendingRate");
final boolean isActive = rs.getBoolean("isActive"); final boolean isActive = rs.getBoolean("isActive");
final String createdBy = rs.getString("createdBy"); final String createdBy = rs.getString("createdBy");
final LocalDateTime createdOnLocal = JdbcSupport.getLocalDateTime(rs, "createdOn"); final OffsetDateTime createdOnLocal = JdbcSupport.getOffsetDateTime(rs, "createdOn");
final OffsetDateTime createdOnUtc = JdbcSupport.getOffsetDateTime(rs, "createdOnUTC"); final OffsetDateTime createdOnUtc = JdbcSupport.getOffsetDateTime(rs, "createdOnUTC");
final String modifiedBy = rs.getString("modifiedBy"); final String modifiedBy = rs.getString("modifiedBy");
final LocalDateTime modifiedOnLocal = JdbcSupport.getLocalDateTime(rs, "modifiedOn"); final OffsetDateTime modifiedOnLocal = JdbcSupport.getOffsetDateTime(rs, "modifiedOn");
final OffsetDateTime modifiedOnUtc = JdbcSupport.getOffsetDateTime(rs, "modifiedOnUTC"); final OffsetDateTime modifiedOnUtc = JdbcSupport.getOffsetDateTime(rs, "modifiedOnUTC");
List<FloatingRatePeriodData> ratePeriods = null; List<FloatingRatePeriodData> ratePeriods = null;
final OffsetDateTime createdOn = createdOnUtc != null ? createdOnUtc final OffsetDateTime createdOn = createdOnUtc != null ? createdOnUtc : createdOnLocal;
: OffsetDateTime.of(createdOnLocal, DateUtils.getDateTimeZoneOfTenant().getRules().getOffset(createdOnLocal)); final OffsetDateTime modifiedOn = modifiedOnUtc != null ? modifiedOnUtc : modifiedOnLocal;
final OffsetDateTime modifiedOn = modifiedOnUtc != null ? modifiedOnUtc
: OffsetDateTime.of(modifiedOnLocal, DateUtils.getDateTimeZoneOfTenant().getRules().getOffset(modifiedOnLocal));
if (addRatePeriods) { if (addRatePeriods) {
FloatingRatePeriodRowMapper ratePeriodMapper = new FloatingRatePeriodRowMapper(); FloatingRatePeriodRowMapper ratePeriodMapper = new FloatingRatePeriodRowMapper();
final String sql = "select " + ratePeriodMapper.schema() final String sql = "select " + ratePeriodMapper.schema()
+ " where period.is_active = true and period.floating_rates_id = ? " + " order by period.from_date desc "; + " where period.is_active = true and period.floating_rates_id = ? " + " order by period.from_date desc ";
ratePeriods = jdbcTemplate.query(sql, ratePeriodMapper, new Object[] { id }); // NOSONAR ratePeriods = jdbcTemplate.query(sql, ratePeriodMapper, id); // NOSONAR
} }
return new FloatingRateData(id, name, isBaseLendingRate, isActive, createdBy, createdOn, modifiedBy, modifiedOn, ratePeriods, return new FloatingRateData(id, name, isBaseLendingRate, isActive, createdBy, createdOn, modifiedBy, modifiedOn, ratePeriods,
null); null);
@@ -169,15 +165,13 @@ public class FloatingRatesReadPlatformServiceImpl implements FloatingRatesReadPl
final boolean isDifferentialToBaseLendingRate = rs.getBoolean("isDifferentialToBaseLendingRate"); final boolean isDifferentialToBaseLendingRate = rs.getBoolean("isDifferentialToBaseLendingRate");
final boolean isActive = rs.getBoolean("isActive"); final boolean isActive = rs.getBoolean("isActive");
final String createdBy = rs.getString("createdBy"); final String createdBy = rs.getString("createdBy");
final LocalDateTime createdOnLocal = JdbcSupport.getLocalDateTime(rs, "createdOn"); final OffsetDateTime createdOnLocal = JdbcSupport.getOffsetDateTime(rs, "createdOn");
final OffsetDateTime createdOnUtc = JdbcSupport.getOffsetDateTime(rs, "createdOnUTC"); final OffsetDateTime createdOnUtc = JdbcSupport.getOffsetDateTime(rs, "createdOnUTC");
final String modifiedBy = rs.getString("modifiedBy"); final String modifiedBy = rs.getString("modifiedBy");
final LocalDateTime modifiedOnLocal = JdbcSupport.getLocalDateTime(rs, "modifiedOn"); final OffsetDateTime modifiedOnLocal = JdbcSupport.getOffsetDateTime(rs, "modifiedOn");
final OffsetDateTime modifiedOnUtc = JdbcSupport.getOffsetDateTime(rs, "modifiedOnUTC"); final OffsetDateTime modifiedOnUtc = JdbcSupport.getOffsetDateTime(rs, "modifiedOnUTC");
final OffsetDateTime createdOn = createdOnUtc != null ? createdOnUtc final OffsetDateTime createdOn = createdOnUtc != null ? createdOnUtc : createdOnLocal;
: OffsetDateTime.of(createdOnLocal, DateUtils.getDateTimeZoneOfTenant().getRules().getOffset(createdOnLocal)); final OffsetDateTime modifiedOn = modifiedOnUtc != null ? modifiedOnUtc : modifiedOnLocal;
final OffsetDateTime modifiedOn = modifiedOnUtc != null ? modifiedOnUtc
: OffsetDateTime.of(modifiedOnLocal, DateUtils.getDateTimeZoneOfTenant().getRules().getOffset(modifiedOnLocal));
return new FloatingRatePeriodData(id, fromDate, interestRate, isDifferentialToBaseLendingRate, isActive, createdBy, createdOn, return new FloatingRatePeriodData(id, fromDate, interestRate, isDifferentialToBaseLendingRate, isActive, createdBy, createdOn,
modifiedBy, modifiedOn); modifiedBy, modifiedOn);
} }
@@ -20,7 +20,6 @@ package org.apache.fineract.portfolio.note.service;
import java.sql.ResultSet; import java.sql.ResultSet;
import java.sql.SQLException; import java.sql.SQLException;
import java.time.LocalDateTime;
import java.time.OffsetDateTime; import java.time.OffsetDateTime;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays; import java.util.Arrays;
@@ -29,7 +28,6 @@ import java.util.List;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.apache.fineract.infrastructure.core.data.EnumOptionData; import org.apache.fineract.infrastructure.core.data.EnumOptionData;
import org.apache.fineract.infrastructure.core.domain.JdbcSupport; 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.data.NoteData;
import org.apache.fineract.portfolio.note.domain.NoteType; import org.apache.fineract.portfolio.note.domain.NoteType;
import org.apache.fineract.portfolio.note.exception.NoteNotFoundException; import org.apache.fineract.portfolio.note.exception.NoteNotFoundException;
@@ -70,19 +68,16 @@ public class NoteReadPlatformServiceImpl implements NoteReadPlatformService {
final Integer noteTypeId = JdbcSupport.getInteger(rs, "noteTypeEnum"); final Integer noteTypeId = JdbcSupport.getInteger(rs, "noteTypeEnum");
final EnumOptionData noteType = NoteEnumerations.noteType(noteTypeId); final EnumOptionData noteType = NoteEnumerations.noteType(noteTypeId);
final String note = rs.getString("note"); final String note = rs.getString("note");
final LocalDateTime createdDateLocal = JdbcSupport.getLocalDateTime(rs, "createdDate"); final OffsetDateTime createdDateLocal = JdbcSupport.getOffsetDateTime(rs, "createdDate");
final OffsetDateTime createdDateUtc = JdbcSupport.getOffsetDateTime(rs, "createdDateUtc"); final OffsetDateTime createdDateUtc = JdbcSupport.getOffsetDateTime(rs, "createdDateUtc");
final Long createdById = JdbcSupport.getLong(rs, "createdById"); final Long createdById = JdbcSupport.getLong(rs, "createdById");
final LocalDateTime lastModifiedDateLocal = JdbcSupport.getLocalDateTime(rs, "lastModifiedDate"); final OffsetDateTime lastModifiedDateLocal = JdbcSupport.getOffsetDateTime(rs, "lastModifiedDate");
final OffsetDateTime lastModifiedDateUtc = JdbcSupport.getOffsetDateTime(rs, "lastModifiedDateUtc"); final OffsetDateTime lastModifiedDateUtc = JdbcSupport.getOffsetDateTime(rs, "lastModifiedDateUtc");
final Long lastModifiedById = JdbcSupport.getLong(rs, "lastModifiedById"); final Long lastModifiedById = JdbcSupport.getLong(rs, "lastModifiedById");
final String createdByUsername = rs.getString("createdBy"); final String createdByUsername = rs.getString("createdBy");
final String updatedByUsername = rs.getString("modifiedBy"); final String updatedByUsername = rs.getString("modifiedBy");
final OffsetDateTime createdDate = createdDateUtc != null ? createdDateUtc final OffsetDateTime createdDate = createdDateUtc != null ? createdDateUtc : createdDateLocal;
: OffsetDateTime.of(createdDateLocal, DateUtils.getDateTimeZoneOfTenant().getRules().getOffset(createdDateLocal)); final OffsetDateTime lastModifiedDate = lastModifiedDateUtc != null ? lastModifiedDateUtc : lastModifiedDateLocal;
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, return new NoteData(id, clientId, groupId, loanId, transactionId, null, null, noteType, note, createdDate, createdById,
createdByUsername, lastModifiedDate, lastModifiedById, updatedByUsername); createdByUsername, lastModifiedDate, lastModifiedById, updatedByUsername);
} }
@@ -18,20 +18,20 @@
*/ */
package org.apache.fineract.spm.data; package org.apache.fineract.spm.data;
import java.time.LocalDateTime; import java.time.OffsetDateTime;
public class ScorecardValue { public class ScorecardValue {
private Long questionId; private Long questionId;
private Long responseId; private Long responseId;
private Integer value; private Integer value;
private LocalDateTime createdOn; private OffsetDateTime createdOn;
public ScorecardValue() { public ScorecardValue() {
} }
private ScorecardValue(final Long questionId, final Long responseId, final Integer value, final LocalDateTime createdOn) { private ScorecardValue(final Long questionId, final Long responseId, final Integer value, final OffsetDateTime createdOn) {
this.questionId = questionId; this.questionId = questionId;
this.responseId = responseId; this.responseId = responseId;
this.value = value; this.value = value;
@@ -39,7 +39,7 @@ public class ScorecardValue {
} }
public static ScorecardValue instance(final Long questionId, final Long responseId, final Integer value, public static ScorecardValue instance(final Long questionId, final Long responseId, final Integer value,
final LocalDateTime createdOn) { final OffsetDateTime createdOn) {
return new ScorecardValue(questionId, responseId, value, createdOn); return new ScorecardValue(questionId, responseId, value, createdOn);
} }
@@ -67,11 +67,11 @@ public class ScorecardValue {
this.value = value; this.value = value;
} }
public LocalDateTime getCreatedOn() { public OffsetDateTime getCreatedOn() {
return this.createdOn; return this.createdOn;
} }
public void setCreatedOn(LocalDateTime createdOn) { public void setCreatedOn(OffsetDateTime createdOn) {
this.createdOn = createdOn; this.createdOn = createdOn;
} }
@@ -20,7 +20,7 @@ package org.apache.fineract.spm.service;
import java.sql.ResultSet; import java.sql.ResultSet;
import java.sql.SQLException; import java.sql.SQLException;
import java.time.LocalDateTime; import java.time.OffsetDateTime;
import java.util.Collection; import java.util.Collection;
import java.util.List; import java.util.List;
import org.apache.fineract.infrastructure.core.domain.JdbcSupport; import org.apache.fineract.infrastructure.core.domain.JdbcSupport;
@@ -89,7 +89,7 @@ public class ScorecardReadPlatformServiceImpl implements ScorecardReadPlatformSe
final Long questionId = rs.getLong("questionId"); final Long questionId = rs.getLong("questionId");
final Long responseId = rs.getLong("responseId"); final Long responseId = rs.getLong("responseId");
final LocalDateTime createdOn = JdbcSupport.getLocalDateTime(rs, "createdOn"); final OffsetDateTime createdOn = JdbcSupport.getOffsetDateTime(rs, "createdOn");
final Integer value = rs.getInt("value"); final Integer value = rs.getInt("value");
return ScorecardValue.instance(questionId, responseId, value, createdOn); return ScorecardValue.instance(questionId, responseId, value, createdOn);