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;
try {
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) {
throw new SmsCampaignNotFound(campaignId, e);
}
@@ -89,7 +89,7 @@ public class SmsCampaignReadPlatformServiceImpl implements SmsCampaignReadPlatfo
@Override
public Page<SmsCampaignData> retrieveAll(final SearchParameters searchParameters) {
final Integer visible = 1;
final boolean visible = true;
final StringBuilder sqlBuilder = new StringBuilder(200);
sqlBuilder.append("select " + sqlGenerator.calcFoundRows() + " ");
sqlBuilder.append(this.smsCampaignMapper.schema() + " where sc.is_visible = ? ");
@@ -112,7 +112,7 @@ public class SmsCampaignReadPlatformServiceImpl implements SmsCampaignReadPlatfo
sql = sql + " where sr.report_type = ?";
}
final Collection<SmsBusinessRulesData> businessRulesOptions = this.jdbcTemplate.query(sql, this.businessRuleMapper, // NOSONAR
new Object[] { reportType });
reportType);
final Collection<SmsProviderData> smsProviderOptions = this.smsCampaignDropdownReadPlatformService.retrieveSmsProviders();
final Collection<EnumOptionData> campaignTypeOptions = this.smsCampaignDropdownReadPlatformService.retrieveCampaignTypes();
final Collection<EnumOptionData> campaignTriggerTypeOptions = this.smsCampaignDropdownReadPlatformService
@@ -24,7 +24,6 @@ import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Timestamp;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.time.OffsetDateTime;
import java.time.ZonedDateTime;
@@ -48,15 +47,6 @@ public final class JdbcSupport {
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 {
LocalDate localDate = null;
final Date dateValue = rs.getDate(columnName);
@@ -18,7 +18,7 @@
*/
package org.apache.fineract.infrastructure.gcm.domain;
import java.time.LocalDateTime;
import java.time.OffsetDateTime;
import org.apache.fineract.portfolio.client.data.ClientData;
public final class DeviceRegistrationData {
@@ -26,10 +26,10 @@ public final class DeviceRegistrationData {
public Long id;
public ClientData clientData;
public String registrationId;
public LocalDateTime updatedOnDate;
public OffsetDateTime updatedOnDate;
private DeviceRegistrationData(final Long id, final ClientData clientData, final String registrationId,
final LocalDateTime updatedOnDate) {
final OffsetDateTime updatedOnDate) {
this.id = id;
this.clientData = clientData;
this.registrationId = registrationId;
@@ -37,7 +37,7 @@ public final class DeviceRegistrationData {
}
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);
}
@@ -20,7 +20,7 @@ package org.apache.fineract.infrastructure.gcm.service;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.time.LocalDateTime;
import java.time.OffsetDateTime;
import java.util.Collection;
import org.apache.fineract.infrastructure.core.domain.JdbcSupport;
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 {
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 Long clientId = rs.getLong("clientId");
final String clientName = rs.getString("clientName");
@@ -89,7 +89,7 @@ public class DeviceRegistrationReadPlatformServiceImpl implements DeviceRegistra
this.context.authenticatedUser();
DeviceRegistrationDataMapper drm = new DeviceRegistrationDataMapper();
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) {
throw new DeviceRegistrationNotFoundException(id, e);
}
@@ -101,7 +101,7 @@ public class DeviceRegistrationReadPlatformServiceImpl implements DeviceRegistra
this.context.authenticatedUser();
DeviceRegistrationDataMapper drm = new DeviceRegistrationDataMapper();
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) {
throw new DeviceRegistrationNotFoundException(clientId, "client", e);
}
@@ -21,7 +21,7 @@ package org.apache.fineract.organisation.teller.data;
import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.OffsetDateTime;
import java.util.Collection;
import org.apache.fineract.organisation.monetary.data.CurrencyData;
import org.apache.fineract.organisation.teller.domain.CashierTxnType;
@@ -36,7 +36,7 @@ public final class CashierTransactionData implements Serializable {
private final Long entityId;
private final String entityType;
private final String txnNote;
private final LocalDateTime createdDate;
private final OffsetDateTime createdDate;
// Template fields
private final Long officeId;
@@ -55,7 +55,7 @@ public final class CashierTransactionData implements Serializable {
* Creates a new cashier.
*/
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,
LocalDate endDate, final Collection<CurrencyData> currencyOptions) {
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,
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 CashierData cashierData, LocalDate startDate, LocalDate endDate) {
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;
}
public LocalDateTime getCreatedDate() {
public OffsetDateTime getCreatedDate() {
return createdDate;
}
@@ -22,7 +22,7 @@ import java.math.BigDecimal;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.OffsetDateTime;
import java.util.Collection;
import java.util.Iterator;
import lombok.RequiredArgsConstructor;
@@ -719,13 +719,13 @@ public class TellerManagementReadPlatformServiceImpl implements TellerManagement
final String txnNote = rs.getString("txn_note");
final String entityType = rs.getString("entity_type");
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;
if (txnLocalDate != null) {
txnDate = txnLocalDate;
}
LocalDateTime createdDate = null;
OffsetDateTime createdDate = null;
if (createdLocalDate != null) {
createdDate = createdLocalDate;
}
@@ -21,7 +21,6 @@ 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;
@@ -99,20 +98,17 @@ public class CalendarReadPlatformServiceImpl implements CalendarReadPlatformServ
humanReadable = CalendarUtils.getRRuleReadable(startDate, 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 LocalDateTime lastModifiedDateLocal = JdbcSupport.getLocalDateTime(rs, "updatedDate");
final OffsetDateTime lastModifiedDateLocal = JdbcSupport.getOffsetDateTime(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));
final OffsetDateTime createdDate = createdDateUtc != null ? createdDateUtc : createdDateLocal;
final OffsetDateTime lastModifiedDate = lastModifiedDateUtc != null ? lastModifiedDateUtc : 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, lastModifiedDate, createdByUserId, createdByUserName,
@@ -23,11 +23,9 @@ import java.sql.Date;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.OffsetDateTime;
import java.util.List;
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.FloatingRatePeriodData;
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 isActive = rs.getBoolean("isActive");
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 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");
List<FloatingRatePeriodData> ratePeriods = null;
final OffsetDateTime createdOn = createdOnUtc != null ? createdOnUtc
: OffsetDateTime.of(createdOnLocal, DateUtils.getDateTimeZoneOfTenant().getRules().getOffset(createdOnLocal));
final OffsetDateTime modifiedOn = modifiedOnUtc != null ? modifiedOnUtc
: OffsetDateTime.of(modifiedOnLocal, DateUtils.getDateTimeZoneOfTenant().getRules().getOffset(modifiedOnLocal));
final OffsetDateTime createdOn = createdOnUtc != null ? createdOnUtc : createdOnLocal;
final OffsetDateTime modifiedOn = modifiedOnUtc != null ? modifiedOnUtc : modifiedOnLocal;
if (addRatePeriods) {
FloatingRatePeriodRowMapper ratePeriodMapper = new FloatingRatePeriodRowMapper();
final String sql = "select " + ratePeriodMapper.schema()
+ " 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,
null);
@@ -169,15 +165,13 @@ public class FloatingRatesReadPlatformServiceImpl implements FloatingRatesReadPl
final boolean isDifferentialToBaseLendingRate = rs.getBoolean("isDifferentialToBaseLendingRate");
final boolean isActive = rs.getBoolean("isActive");
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 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 createdOn = createdOnUtc != null ? createdOnUtc
: OffsetDateTime.of(createdOnLocal, DateUtils.getDateTimeZoneOfTenant().getRules().getOffset(createdOnLocal));
final OffsetDateTime modifiedOn = modifiedOnUtc != null ? modifiedOnUtc
: OffsetDateTime.of(modifiedOnLocal, DateUtils.getDateTimeZoneOfTenant().getRules().getOffset(modifiedOnLocal));
final OffsetDateTime createdOn = createdOnUtc != null ? createdOnUtc : createdOnLocal;
final OffsetDateTime modifiedOn = modifiedOnUtc != null ? modifiedOnUtc : modifiedOnLocal;
return new FloatingRatePeriodData(id, fromDate, interestRate, isDifferentialToBaseLendingRate, isActive, createdBy, createdOn,
modifiedBy, modifiedOn);
}
@@ -20,7 +20,6 @@ package org.apache.fineract.portfolio.note.service;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.time.LocalDateTime;
import java.time.OffsetDateTime;
import java.util.ArrayList;
import java.util.Arrays;
@@ -29,7 +28,6 @@ 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;
@@ -70,19 +68,16 @@ 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 LocalDateTime createdDateLocal = JdbcSupport.getLocalDateTime(rs, "createdDate");
final OffsetDateTime createdDateLocal = JdbcSupport.getOffsetDateTime(rs, "createdDate");
final OffsetDateTime createdDateUtc = JdbcSupport.getOffsetDateTime(rs, "createdDateUtc");
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 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));
final OffsetDateTime createdDate = createdDateUtc != null ? createdDateUtc : createdDateLocal;
final OffsetDateTime lastModifiedDate = lastModifiedDateUtc != null ? lastModifiedDateUtc : lastModifiedDateLocal;
return new NoteData(id, clientId, groupId, loanId, transactionId, null, null, noteType, note, createdDate, createdById,
createdByUsername, lastModifiedDate, lastModifiedById, updatedByUsername);
}
@@ -18,20 +18,20 @@
*/
package org.apache.fineract.spm.data;
import java.time.LocalDateTime;
import java.time.OffsetDateTime;
public class ScorecardValue {
private Long questionId;
private Long responseId;
private Integer value;
private LocalDateTime createdOn;
private OffsetDateTime createdOn;
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.responseId = responseId;
this.value = value;
@@ -39,7 +39,7 @@ public class ScorecardValue {
}
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);
}
@@ -67,11 +67,11 @@ public class ScorecardValue {
this.value = value;
}
public LocalDateTime getCreatedOn() {
public OffsetDateTime getCreatedOn() {
return this.createdOn;
}
public void setCreatedOn(LocalDateTime createdOn) {
public void setCreatedOn(OffsetDateTime createdOn) {
this.createdOn = createdOn;
}
@@ -20,7 +20,7 @@ package org.apache.fineract.spm.service;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.time.LocalDateTime;
import java.time.OffsetDateTime;
import java.util.Collection;
import java.util.List;
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 responseId = rs.getLong("responseId");
final LocalDateTime createdOn = JdbcSupport.getLocalDateTime(rs, "createdOn");
final OffsetDateTime createdOn = JdbcSupport.getOffsetDateTime(rs, "createdOn");
final Integer value = rs.getInt("value");
return ScorecardValue.instance(questionId, responseId, value, createdOn);