fix: prevent timezoneoffset too large

pull/5/head
Frédérik Benoist 2023-12-29 07:54:19 +01:00
parent 869328a33f
commit 18e73d4700
1 changed files with 18 additions and 8 deletions

View File

@ -52,7 +52,7 @@ public class StoreService {
return Response.status(Response.Status.BAD_REQUEST).entity("{\"error\":\"storeId parameter is required\"}").build(); return Response.status(Response.Status.BAD_REQUEST).entity("{\"error\":\"storeId parameter is required\"}").build();
} }
DriverManager.setLoginTimeout(5); // Définir le timeout à 5 secondes DriverManager.setLoginTimeout(5); // Set timeout to 5 seconds
try (DatabaseConnectDOTSOFT databaseConnection = new DatabaseConnectDOTSOFT("com02")) { try (DatabaseConnectDOTSOFT databaseConnection = new DatabaseConnectDOTSOFT("com02")) {
String query = "SELECT st.id_structure," + String query = "SELECT st.id_structure," +
@ -79,7 +79,6 @@ public class StoreService {
" WHERE st.id_structure = ?"; " WHERE st.id_structure = ?";
logger.info(query); logger.info(query);
try (PreparedStatement statement = databaseConnection.getConnection().prepareStatement(query)) { try (PreparedStatement statement = databaseConnection.getConnection().prepareStatement(query)) {
statement.setString(1, storeId); statement.setString(1, storeId);
@ -163,7 +162,7 @@ public class StoreService {
* @return a list of stores retrieved from the database * @return a list of stores retrieved from the database
*/ */
private List<Store> retrieveStoresFromDatabase() { private List<Store> retrieveStoresFromDatabase() {
DriverManager.setLoginTimeout(5); // Définir le timeout à 5 secondes DriverManager.setLoginTimeout(5); // Set timeout to 5 seconds
try (DatabaseConnectDOTSOFT databaseConnection = new DatabaseConnectDOTSOFT("com02")) { try (DatabaseConnectDOTSOFT databaseConnection = new DatabaseConnectDOTSOFT("com02")) {
String query = "SELECT st.id_structure," + String query = "SELECT st.id_structure," +
@ -191,7 +190,6 @@ public class StoreService {
" ORDER BY st.id_structure"; " ORDER BY st.id_structure";
logger.info(query); logger.info(query);
try (PreparedStatement statement = databaseConnection.getConnection().prepareStatement(query); try (PreparedStatement statement = databaseConnection.getConnection().prepareStatement(query);
ResultSet resultSet = statement.executeQuery()) { ResultSet resultSet = statement.executeQuery()) {
@ -225,7 +223,7 @@ public class StoreService {
return Response.status(Response.Status.BAD_REQUEST).entity("{\"error\":\"dbHost parameter is required\"}").build(); return Response.status(Response.Status.BAD_REQUEST).entity("{\"error\":\"dbHost parameter is required\"}").build();
} }
DriverManager.setLoginTimeout(5); // Définir le timeout à 5 secondes DriverManager.setLoginTimeout(5); // Set timeout to 5 seconds
try (DatabaseConnectXSTORE databaseConnection = new DatabaseConnectXSTORE(dbHost,"dtv")) { try (DatabaseConnectXSTORE databaseConnection = new DatabaseConnectXSTORE(dbHost,"dtv")) {
@ -234,6 +232,7 @@ public class StoreService {
"WHERE organization_id = 1 " + "WHERE organization_id = 1 " +
"ORDER BY WKSTN_ID, SEQUENCE_ID"; "ORDER BY WKSTN_ID, SEQUENCE_ID";
logger.info(query);
try (PreparedStatement statement = databaseConnection.getConnection().prepareStatement(query)) { try (PreparedStatement statement = databaseConnection.getConnection().prepareStatement(query)) {
ResultSet resultSet = statement.executeQuery(); ResultSet resultSet = statement.executeQuery();
@ -277,7 +276,7 @@ public class StoreService {
return Response.status(Response.Status.BAD_REQUEST).entity("{\"error\":\"dbHost parameter is required\"}").build(); return Response.status(Response.Status.BAD_REQUEST).entity("{\"error\":\"dbHost parameter is required\"}").build();
} }
DriverManager.setLoginTimeout(5); // Définir le timeout à 5 secondes DriverManager.setLoginTimeout(5); // Set timeout to 5 seconds
try (DatabaseConnectXSTORE databaseConnection = new DatabaseConnectXSTORE(dbHost,"dtv")) { try (DatabaseConnectXSTORE databaseConnection = new DatabaseConnectXSTORE(dbHost,"dtv")) {
String query = "SELECT ORGANIZATION_ID, RTL_LOC_ID, WKSTN_ID, SIGNATURE_ID, SIGNATURE_MODE, SIGNATURE_STRING, SIGNATURE_SOURCE, CREATE_DATE, CREATE_USER_ID, UPDATE_DATE, UPDATE_USER_ID, RECORD_STATE " + String query = "SELECT ORGANIZATION_ID, RTL_LOC_ID, WKSTN_ID, SIGNATURE_ID, SIGNATURE_MODE, SIGNATURE_STRING, SIGNATURE_SOURCE, CREATE_DATE, CREATE_USER_ID, UPDATE_DATE, UPDATE_USER_ID, RECORD_STATE " +
@ -285,6 +284,7 @@ public class StoreService {
"WHERE organization_id = 1 " + "WHERE organization_id = 1 " +
"ORDER BY WKSTN_ID"; "ORDER BY WKSTN_ID";
logger.info(query);
try (PreparedStatement statement = databaseConnection.getConnection().prepareStatement(query)) { try (PreparedStatement statement = databaseConnection.getConnection().prepareStatement(query)) {
ResultSet resultSet = statement.executeQuery(); ResultSet resultSet = statement.executeQuery();
@ -328,7 +328,7 @@ public class StoreService {
return Response.status(Response.Status.BAD_REQUEST).entity("{\"error\":\"dbHost parameter is required\"}").build(); return Response.status(Response.Status.BAD_REQUEST).entity("{\"error\":\"dbHost parameter is required\"}").build();
} }
DriverManager.setLoginTimeout(5); // Définir le timeout à 5 secondes DriverManager.setLoginTimeout(5); // Set timeout to 5 seconds
try (DatabaseConnectXSTORE databaseConnection = new DatabaseConnectXSTORE(dbHost,"dtv")) { try (DatabaseConnectXSTORE databaseConnection = new DatabaseConnectXSTORE(dbHost,"dtv")) {
@ -338,6 +338,7 @@ public class StoreService {
"WHERE organization_id = 1 AND customer IS NOT NULL " + "WHERE organization_id = 1 AND customer IS NOT NULL " +
"ORDER BY seq DESC"; "ORDER BY seq DESC";
logger.info(query);
try (PreparedStatement statement = databaseConnection.getConnection().prepareStatement(query)) { try (PreparedStatement statement = databaseConnection.getConnection().prepareStatement(query)) {
ResultSet resultSet = statement.executeQuery(); ResultSet resultSet = statement.executeQuery();
@ -385,7 +386,7 @@ public class StoreService {
return Response.status(Response.Status.BAD_REQUEST).entity("{\"error\":\"dbHost parameter is required\"}").build(); return Response.status(Response.Status.BAD_REQUEST).entity("{\"error\":\"dbHost parameter is required\"}").build();
} }
DriverManager.setLoginTimeout(5); // Définir le timeout à 5 secondes DriverManager.setLoginTimeout(5); // Set timeout to 5 seconds
try (DatabaseConnectXSTORE databaseConnection = new DatabaseConnectXSTORE(dbHost,"dtv")) { try (DatabaseConnectXSTORE databaseConnection = new DatabaseConnectXSTORE(dbHost,"dtv")) {
SimpleDateFormat formatter = new SimpleDateFormat("yyyyMMdd"); SimpleDateFormat formatter = new SimpleDateFormat("yyyyMMdd");
@ -412,6 +413,7 @@ public class StoreService {
") " + ") " +
"WHERE ROWNUM = 1"; "WHERE ROWNUM = 1";
logger.info(queryTZ);
while (startDate.compareTo(endDate) >= 0) { while (startDate.compareTo(endDate) >= 0) {
try (PreparedStatement pst = databaseConnection.getConnection().prepareStatement(queryTZ)) { try (PreparedStatement pst = databaseConnection.getConnection().prepareStatement(queryTZ)) {
pst.setInt(1, storeId); pst.setInt(1, storeId);
@ -436,6 +438,12 @@ public class StoreService {
e.printStackTrace(); e.printStackTrace();
} }
// to prevent timezone offset from being too large
if (Math.abs(timezoneOffset) > 3) {
timezoneOffset = 0;
}
// WHERE cel.CREATE_DATE does not take time zone into account (...+ INTERVAL '1' HOUR * ?)
String query = "SELECT cel.CREATE_DATE + INTERVAL '1' HOUR * ? as CREATE_DATE, " + String query = "SELECT cel.CREATE_DATE + INTERVAL '1' HOUR * ? as CREATE_DATE, " +
"cel.CREATE_USER_ID, " + "cel.CREATE_USER_ID, " +
"cel.BUSINESS_DATE, " + "cel.BUSINESS_DATE, " +
@ -460,6 +468,7 @@ public class StoreService {
"AND cel.THREAD_NAME IS NOT NULL " + "AND cel.THREAD_NAME IS NOT NULL " +
"ORDER BY cel.CREATE_DATE DESC"; "ORDER BY cel.CREATE_DATE DESC";
logger.info(query);
try (PreparedStatement statement = databaseConnection.getConnection().prepareStatement(query)) { try (PreparedStatement statement = databaseConnection.getConnection().prepareStatement(query)) {
statement.setInt(1, timezoneOffset); statement.setInt(1, timezoneOffset);
statement.setString(2, logDate); statement.setString(2, logDate);
@ -592,6 +601,7 @@ public class StoreService {
"ORDER BY cdr.PRIMARY_REGISTER_FLAG desc, cdr.WKSTN_ID"; "ORDER BY cdr.PRIMARY_REGISTER_FLAG desc, cdr.WKSTN_ID";
logger.info(PosQuery); logger.info(PosQuery);
try (PreparedStatement posStatement = databaseConnection.getConnection().prepareStatement(PosQuery)) { try (PreparedStatement posStatement = databaseConnection.getConnection().prepareStatement(PosQuery)) {
try (ResultSet posResultSet = posStatement.executeQuery()) { try (ResultSet posResultSet = posStatement.executeQuery()) {
Integer posRtlLocId = 0; Integer posRtlLocId = 0;