FINERACT-1911: Support timestamp type

This commit is contained in:
jmarta
2023-08-18 16:50:31 +02:00
committed by Adam Saghy
parent a4f9b167f2
commit c7300fd526
3 changed files with 8 additions and 4 deletions
@@ -57,7 +57,7 @@ public enum JdbcJavaType {
DOUBLE(JavaType.DOUBLE, new DialectType(JDBCType.DOUBLE, null, true, true, "DOUBLE PRECISION", "REAL"), DOUBLE(JavaType.DOUBLE, new DialectType(JDBCType.DOUBLE, null, true, true, "DOUBLE PRECISION", "REAL"),
new DialectType(JDBCType.DOUBLE, "DOUBLE PRECISION", "FLOAT8")), // new DialectType(JDBCType.DOUBLE, "DOUBLE PRECISION", "FLOAT8")), //
NUMERIC(JavaType.BIGDECIMAL, new DialectType(JDBCType.NUMERIC, true, true), new DialectType(JDBCType.NUMERIC, true, true)), // NUMERIC(JavaType.BIGDECIMAL, new DialectType(JDBCType.NUMERIC, true, true), new DialectType(JDBCType.NUMERIC, true, true)), //
DECIMAL(JavaType.BIGDECIMAL, new DialectType(JDBCType.DECIMAL, "DECIMAL", true, true, "DEC", "FIXED"), DECIMAL(JavaType.BIGDECIMAL, new DialectType(JDBCType.DECIMAL, null, true, true, "DEC", "FIXED"),
new DialectType(JDBCType.DECIMAL, true, true)), // new DialectType(JDBCType.DECIMAL, true, true)), //
SERIAL(JavaType.INT, new DialectType(JDBCType.INTEGER, "{type} AUTO_INCREMENT", true, false), SERIAL(JavaType.INT, new DialectType(JDBCType.INTEGER, "{type} AUTO_INCREMENT", true, false),
new DialectType(JDBCType.INTEGER, "SERIAL", "SERIAL4")), // new DialectType(JDBCType.INTEGER, "SERIAL", "SERIAL4")), //
@@ -79,8 +79,9 @@ public enum JdbcJavaType {
TIME(JavaType.LOCAL_TIME, new DialectType(JDBCType.TIME), new DialectType(JDBCType.TIME, null, "TIME WITHOUT TIME ZONE")), // TIME(JavaType.LOCAL_TIME, new DialectType(JDBCType.TIME), new DialectType(JDBCType.TIME, null, "TIME WITHOUT TIME ZONE")), //
TIME_WITH_TIMEZONE(JavaType.OFFSET_TIME, new DialectType(JDBCType.TIME_WITH_TIMEZONE, "TIME"), TIME_WITH_TIMEZONE(JavaType.OFFSET_TIME, new DialectType(JDBCType.TIME_WITH_TIMEZONE, "TIME"),
new DialectType(JDBCType.TIME_WITH_TIMEZONE, null, "TIME WITH TIME ZONE")), // new DialectType(JDBCType.TIME_WITH_TIMEZONE, null, "TIME WITH TIME ZONE")), //
DATETIME(JavaType.LOCAL_DATETIME, new DialectType(JDBCType.TIMESTAMP, "DATETIME", "TIMESTAMP"), TIMESTAMP(JavaType.LOCAL_DATETIME, new DialectType(JDBCType.TIMESTAMP),
new DialectType(JDBCType.TIMESTAMP, null, "TIMESTAMP WITHOUT TIME ZONE")), // new DialectType(JDBCType.TIMESTAMP, null, "TIMESTAMP WITHOUT TIME ZONE")), //
DATETIME(JavaType.LOCAL_DATETIME, new DialectType(JDBCType.TIMESTAMP, "DATETIME"), new DialectType(JDBCType.TIMESTAMP)), //
TIMESTAMP_WITH_TIMEZONE(JavaType.OFFSET_DATETIME, new DialectType(JDBCType.TIMESTAMP_WITH_TIMEZONE, null, "DATETIME"), TIMESTAMP_WITH_TIMEZONE(JavaType.OFFSET_DATETIME, new DialectType(JDBCType.TIMESTAMP_WITH_TIMEZONE, null, "DATETIME"),
new DialectType(JDBCType.TIMESTAMP_WITH_TIMEZONE, null, "TIMESTAMP WITH TIME ZONE", "TIMESTAMPTZ")), // new DialectType(JDBCType.TIMESTAMP_WITH_TIMEZONE, null, "TIMESTAMP WITH TIME ZONE", "TIMESTAMPTZ")), //
INTERVAL(JavaType.TIME, new DialectType(JDBCType.TIME), new DialectType(JDBCType.TIME, "INTERVAL")), // INTERVAL(JavaType.TIME, new DialectType(JDBCType.TIME), new DialectType(JDBCType.TIME, "INTERVAL")), //
@@ -24,6 +24,7 @@ import static org.apache.fineract.infrastructure.core.service.database.JdbcJavaT
import static org.apache.fineract.infrastructure.core.service.database.JdbcJavaType.DECIMAL; import static org.apache.fineract.infrastructure.core.service.database.JdbcJavaType.DECIMAL;
import static org.apache.fineract.infrastructure.core.service.database.JdbcJavaType.INTEGER; import static org.apache.fineract.infrastructure.core.service.database.JdbcJavaType.INTEGER;
import static org.apache.fineract.infrastructure.core.service.database.JdbcJavaType.TEXT; import static org.apache.fineract.infrastructure.core.service.database.JdbcJavaType.TEXT;
import static org.apache.fineract.infrastructure.core.service.database.JdbcJavaType.TIMESTAMP;
import static org.apache.fineract.infrastructure.core.service.database.JdbcJavaType.VARCHAR; import static org.apache.fineract.infrastructure.core.service.database.JdbcJavaType.VARCHAR;
import static org.apache.fineract.infrastructure.dataqueries.api.DataTableApiConstant.API_FIELD_AFTER; import static org.apache.fineract.infrastructure.dataqueries.api.DataTableApiConstant.API_FIELD_AFTER;
import static org.apache.fineract.infrastructure.dataqueries.api.DataTableApiConstant.API_FIELD_CODE; import static org.apache.fineract.infrastructure.dataqueries.api.DataTableApiConstant.API_FIELD_CODE;
@@ -332,7 +333,8 @@ public class DatatableCommandFromApiJsonDeserializer {
case API_FIELD_TYPE_BOOLEAN -> BOOLEAN; case API_FIELD_TYPE_BOOLEAN -> BOOLEAN;
case API_FIELD_TYPE_DECIMAL -> DECIMAL; case API_FIELD_TYPE_DECIMAL -> DECIMAL;
case API_FIELD_TYPE_DATE -> DATE; case API_FIELD_TYPE_DATE -> DATE;
case API_FIELD_TYPE_DATETIME, API_FIELD_TYPE_TIMESTAMP -> DATETIME; case API_FIELD_TYPE_DATETIME -> DATETIME;
case API_FIELD_TYPE_TIMESTAMP -> TIMESTAMP;
case API_FIELD_TYPE_TEXT -> TEXT; case API_FIELD_TYPE_TEXT -> TEXT;
default -> throw new PlatformDataIntegrityException("error.msg.datatable.column.type.invalid", default -> throw new PlatformDataIntegrityException("error.msg.datatable.column.type.invalid",
"Column type " + apiType + " is not supported."); "Column type " + apiType + " is not supported.");
@@ -21,6 +21,7 @@ package org.apache.fineract.infrastructure.dataqueries.service;
import static java.lang.String.format; import static java.lang.String.format;
import static org.apache.fineract.infrastructure.core.service.database.JdbcJavaType.DATE; import static org.apache.fineract.infrastructure.core.service.database.JdbcJavaType.DATE;
import static org.apache.fineract.infrastructure.core.service.database.JdbcJavaType.DATETIME; import static org.apache.fineract.infrastructure.core.service.database.JdbcJavaType.DATETIME;
import static org.apache.fineract.infrastructure.core.service.database.JdbcJavaType.TIMESTAMP;
import static org.apache.fineract.infrastructure.dataqueries.data.ResultsetColumnHeaderData.DisplayType.CODELOOKUP; import static org.apache.fineract.infrastructure.dataqueries.data.ResultsetColumnHeaderData.DisplayType.CODELOOKUP;
import static org.apache.fineract.infrastructure.dataqueries.data.ResultsetColumnHeaderData.DisplayType.DECIMAL; import static org.apache.fineract.infrastructure.dataqueries.data.ResultsetColumnHeaderData.DisplayType.DECIMAL;
import static org.apache.fineract.infrastructure.dataqueries.data.ResultsetColumnHeaderData.DisplayType.INTEGER; import static org.apache.fineract.infrastructure.dataqueries.data.ResultsetColumnHeaderData.DisplayType.INTEGER;
@@ -152,7 +153,7 @@ public class GenericDataServiceImpl implements GenericDataService {
if (colType == DATE) { if (colType == DATE) {
Date tmpDate = (Date) rs.getObject(columnName); Date tmpDate = (Date) rs.getObject(columnName);
columnValues.add(tmpDate == null ? null : tmpDate.toLocalDate()); columnValues.add(tmpDate == null ? null : tmpDate.toLocalDate());
} else if (colType == DATETIME) { } else if (colType == DATETIME || colType == TIMESTAMP) {
Object tmpDate = rs.getObject(columnName); Object tmpDate = rs.getObject(columnName);
columnValues.add( columnValues.add(
tmpDate == null ? null : (tmpDate instanceof Timestamp ? ((Timestamp) tmpDate).toLocalDateTime() : tmpDate)); tmpDate == null ? null : (tmpDate instanceof Timestamp ? ((Timestamp) tmpDate).toLocalDateTime() : tmpDate));