From 31930aeb2c7e37c443ef0fd2eda3792566de5599 Mon Sep 17 00:00:00 2001 From: Jose Date: Sat, 15 Mar 2025 18:33:35 +0100 Subject: [PATCH] Added date parser and Vertx explicit instance --- .../common/LocalDateTimeSerializer.java | 29 ------------------- .../database/entities/Actuator.java | 3 +- .../contaminus/database/entities/COValue.java | 3 +- .../database/entities/DeviceCO.java | 3 +- .../database/entities/DeviceGPS.java | 3 +- .../entities/DeviceLatestValuesView.java | 5 ++-- .../database/entities/DevicePollutionMap.java | 3 +- .../entities/DeviceSensorHistory.java | 3 +- .../database/entities/DeviceSensorValue.java | 3 +- .../database/entities/DeviceWeather.java | 3 +- .../database/entities/GpsValue.java | 3 +- .../contaminus/database/entities/Sensor.java | 3 +- .../database/entities/WeatherValue.java | 3 +- .../server/DataLayerAPIVerticle.java | 10 ++++--- .../server/LogicLayerAPIVerticle.java | 3 +- .../miarma/contaminus/util/DateParser.java | 10 +++++++ 16 files changed, 42 insertions(+), 48 deletions(-) delete mode 100644 backend/src/main/java/net/miarma/contaminus/common/LocalDateTimeSerializer.java create mode 100644 backend/src/main/java/net/miarma/contaminus/util/DateParser.java diff --git a/backend/src/main/java/net/miarma/contaminus/common/LocalDateTimeSerializer.java b/backend/src/main/java/net/miarma/contaminus/common/LocalDateTimeSerializer.java deleted file mode 100644 index a042151..0000000 --- a/backend/src/main/java/net/miarma/contaminus/common/LocalDateTimeSerializer.java +++ /dev/null @@ -1,29 +0,0 @@ -package net.miarma.contaminus.common; - -import java.lang.reflect.Type; -import java.time.LocalDateTime; -import java.time.format.DateTimeFormatter; - -import com.google.gson.JsonDeserializationContext; -import com.google.gson.JsonDeserializer; -import com.google.gson.JsonElement; -import com.google.gson.JsonParseException; -import com.google.gson.JsonPrimitive; -import com.google.gson.JsonSerializationContext; -import com.google.gson.JsonSerializer; - -public class LocalDateTimeSerializer implements JsonSerializer, JsonDeserializer { - - private static final DateTimeFormatter FORMATTER = DateTimeFormatter.ISO_LOCAL_DATE_TIME; - - @Override - public JsonElement serialize(LocalDateTime src, Type typeOfSrc, JsonSerializationContext context) { - return new JsonPrimitive(src.format(FORMATTER)); - } - - @Override - public LocalDateTime deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException { - return LocalDateTime.parse(json.getAsString(), FORMATTER); - } - -} diff --git a/backend/src/main/java/net/miarma/contaminus/database/entities/Actuator.java b/backend/src/main/java/net/miarma/contaminus/database/entities/Actuator.java index 9736302..f7c8c9b 100644 --- a/backend/src/main/java/net/miarma/contaminus/database/entities/Actuator.java +++ b/backend/src/main/java/net/miarma/contaminus/database/entities/Actuator.java @@ -4,6 +4,7 @@ import java.util.Objects; import io.vertx.sqlclient.Row; import net.miarma.contaminus.common.Table; +import net.miarma.contaminus.util.DateParser; @Table("actuators") public class Actuator { @@ -19,7 +20,7 @@ public class Actuator { this.actuatorId = row.getInteger("actuatorId"); this.deviceId = row.getInteger("deviceId"); this.status = row.getInteger("status"); - this.timestamp = row.getLong("timestamp"); + this.timestamp = DateParser.parseDate(row.getLocalDateTime("timestamp")); } public Actuator(int actuatorId, int deviceId, int status, long timestamp) { diff --git a/backend/src/main/java/net/miarma/contaminus/database/entities/COValue.java b/backend/src/main/java/net/miarma/contaminus/database/entities/COValue.java index 26fcc02..39e880e 100644 --- a/backend/src/main/java/net/miarma/contaminus/database/entities/COValue.java +++ b/backend/src/main/java/net/miarma/contaminus/database/entities/COValue.java @@ -4,6 +4,7 @@ import java.util.Objects; import io.vertx.sqlclient.Row; import net.miarma.contaminus.common.Table; +import net.miarma.contaminus.util.DateParser; @Table("co_values") public class COValue { @@ -19,7 +20,7 @@ public class COValue { this.valueId = row.getInteger("valueId"); this.sensorId = row.getInteger("sensorId"); this.value = row.getFloat("value"); - this.timestamp = row.getLong("timestamp"); + this.timestamp = DateParser.parseDate(row.getLocalDateTime("timestamp")); } public COValue(int valueId, int sensorId, float value, long timestamp) { diff --git a/backend/src/main/java/net/miarma/contaminus/database/entities/DeviceCO.java b/backend/src/main/java/net/miarma/contaminus/database/entities/DeviceCO.java index 2b86eea..7443728 100644 --- a/backend/src/main/java/net/miarma/contaminus/database/entities/DeviceCO.java +++ b/backend/src/main/java/net/miarma/contaminus/database/entities/DeviceCO.java @@ -4,6 +4,7 @@ import java.util.Objects; import io.vertx.sqlclient.Row; import net.miarma.contaminus.common.Table; +import net.miarma.contaminus.util.DateParser; @Table("v_co_by_device") public class DeviceCO { @@ -16,7 +17,7 @@ public class DeviceCO { public DeviceCO(Row row) { this.deviceId = row.getInteger("deviceId"); this.carbonMonoxide = row.getFloat("carbonMonoxide"); - this.timestamp = row.getLong("timestamp"); + this.timestamp = DateParser.parseDate(row.getLocalDateTime("timestamp")); } public DeviceCO(int deviceId, float carbonMonoxide, long timestamp) { diff --git a/backend/src/main/java/net/miarma/contaminus/database/entities/DeviceGPS.java b/backend/src/main/java/net/miarma/contaminus/database/entities/DeviceGPS.java index 4d81157..f23c44b 100644 --- a/backend/src/main/java/net/miarma/contaminus/database/entities/DeviceGPS.java +++ b/backend/src/main/java/net/miarma/contaminus/database/entities/DeviceGPS.java @@ -4,6 +4,7 @@ import java.util.Objects; import io.vertx.sqlclient.Row; import net.miarma.contaminus.common.Table; +import net.miarma.contaminus.util.DateParser; @Table("v_gps_by_device") public class DeviceGPS { @@ -18,7 +19,7 @@ public class DeviceGPS { this.deviceId = row.getInteger("deviceId"); this.lat = row.getFloat("lat"); this.lon = row.getFloat("lon"); - this.timestamp = row.getLong("timestamp"); + this.timestamp = DateParser.parseDate(row.getLocalDateTime("timestamp")); } public DeviceGPS(int deviceId, long lat, long lon) { diff --git a/backend/src/main/java/net/miarma/contaminus/database/entities/DeviceLatestValuesView.java b/backend/src/main/java/net/miarma/contaminus/database/entities/DeviceLatestValuesView.java index b7cb453..865200f 100644 --- a/backend/src/main/java/net/miarma/contaminus/database/entities/DeviceLatestValuesView.java +++ b/backend/src/main/java/net/miarma/contaminus/database/entities/DeviceLatestValuesView.java @@ -3,6 +3,7 @@ import java.util.Objects; import io.vertx.sqlclient.Row; import net.miarma.contaminus.common.Table; +import net.miarma.contaminus.util.DateParser; @Table("v_latest_values") public class DeviceLatestValuesView { @@ -27,13 +28,13 @@ public class DeviceLatestValuesView { this.sensorType = row.getString("sensorType"); this.unit = row.getString("unit"); this.sensorStatus = row.getInteger("sensorStatus"); - this.sensorTimestamp = row.getLong("sensorTimestamp"); + this.sensorTimestamp = DateParser.parseDate(row.getLocalDateTime("sensorTimestamp")); this.temperature = row.getFloat("temperature"); this.humidity = row.getFloat("humidity"); this.carbonMonoxide = row.getFloat("carbonMonoxide"); this.lat = row.getFloat("lat"); this.lon = row.getFloat("lon"); - this.airValuesTimestamp = row.getLong("airValuesTimestamp"); + this.airValuesTimestamp = DateParser.parseDate(row.getLocalDateTime("airValuesTimestamp")); } public DeviceLatestValuesView(int deviceId, int sensorId, String sensorType, String unit, int sensorStatus, diff --git a/backend/src/main/java/net/miarma/contaminus/database/entities/DevicePollutionMap.java b/backend/src/main/java/net/miarma/contaminus/database/entities/DevicePollutionMap.java index b5aff20..37ab8ca 100644 --- a/backend/src/main/java/net/miarma/contaminus/database/entities/DevicePollutionMap.java +++ b/backend/src/main/java/net/miarma/contaminus/database/entities/DevicePollutionMap.java @@ -4,6 +4,7 @@ import java.util.Objects; import io.vertx.sqlclient.Row; import net.miarma.contaminus.common.Table; +import net.miarma.contaminus.util.DateParser; @Table("v_pollution_map") public class DevicePollutionMap { @@ -22,7 +23,7 @@ public class DevicePollutionMap { this.lat = row.getFloat("lat"); this.lon = row.getFloat("lon"); this.carbonMonoxide = row.getFloat("carbonMonoxide"); - this.timestamp = row.getLong("timestamp"); + this.timestamp = DateParser.parseDate(row.getLocalDateTime("timestamp")); } public DevicePollutionMap(int deviceId, String deviceName, float lat, float lon, float carbonMonoxide, diff --git a/backend/src/main/java/net/miarma/contaminus/database/entities/DeviceSensorHistory.java b/backend/src/main/java/net/miarma/contaminus/database/entities/DeviceSensorHistory.java index 34f1d1e..8575487 100644 --- a/backend/src/main/java/net/miarma/contaminus/database/entities/DeviceSensorHistory.java +++ b/backend/src/main/java/net/miarma/contaminus/database/entities/DeviceSensorHistory.java @@ -4,6 +4,7 @@ import java.util.Objects; import io.vertx.sqlclient.Row; import net.miarma.contaminus.common.Table; +import net.miarma.contaminus.util.DateParser; @Table("v_sensor_history_by_device") public class DeviceSensorHistory { @@ -20,7 +21,7 @@ public class DeviceSensorHistory { this.deviceName = row.getString("deviceName"); this.value = row.getFloat("value"); this.valueType = row.getString("valueType"); - this.timestamp = row.getLong("timestamp"); + this.timestamp = DateParser.parseDate(row.getLocalDateTime("timestamp")); } public DeviceSensorHistory(int deviceId, String deviceName, float value, String valueType, long timestamp) { diff --git a/backend/src/main/java/net/miarma/contaminus/database/entities/DeviceSensorValue.java b/backend/src/main/java/net/miarma/contaminus/database/entities/DeviceSensorValue.java index 39e2676..2fc5b6d 100644 --- a/backend/src/main/java/net/miarma/contaminus/database/entities/DeviceSensorValue.java +++ b/backend/src/main/java/net/miarma/contaminus/database/entities/DeviceSensorValue.java @@ -4,6 +4,7 @@ import java.util.Objects; import io.vertx.sqlclient.Row; import net.miarma.contaminus.common.Table; +import net.miarma.contaminus.util.DateParser; @Table("v_sensor_values") public class DeviceSensorValue { @@ -32,7 +33,7 @@ public class DeviceSensorValue { this.carbonMonoxide = row.getFloat("carbonMonoxide"); this.lat = row.getFloat("lat"); this.lon = row.getFloat("lon"); - this.timestamp = row.getLong("timestamp"); + this.timestamp = DateParser.parseDate(row.getLocalDateTime("timestamp")); } public DeviceSensorValue(int sensorId, int deviceId, String sensorType, String unit, int sensorStatus, diff --git a/backend/src/main/java/net/miarma/contaminus/database/entities/DeviceWeather.java b/backend/src/main/java/net/miarma/contaminus/database/entities/DeviceWeather.java index 540ad8a..c6f3c10 100644 --- a/backend/src/main/java/net/miarma/contaminus/database/entities/DeviceWeather.java +++ b/backend/src/main/java/net/miarma/contaminus/database/entities/DeviceWeather.java @@ -4,6 +4,7 @@ import java.util.Objects; import io.vertx.sqlclient.Row; import net.miarma.contaminus.common.Table; +import net.miarma.contaminus.util.DateParser; @Table("v_weather_by_device") public class DeviceWeather { @@ -18,7 +19,7 @@ public class DeviceWeather { this.deviceId = row.getInteger("deviceId"); this.temperature = row.getFloat("temperature"); this.humidity = row.getFloat("humidity"); - this.timestamp = row.getLong("timestamp"); + this.timestamp = DateParser.parseDate(row.getLocalDateTime("timestamp")); } public DeviceWeather(int deviceId, float temperature, float humidity, long timestamp) { diff --git a/backend/src/main/java/net/miarma/contaminus/database/entities/GpsValue.java b/backend/src/main/java/net/miarma/contaminus/database/entities/GpsValue.java index b0db81b..f4f0869 100644 --- a/backend/src/main/java/net/miarma/contaminus/database/entities/GpsValue.java +++ b/backend/src/main/java/net/miarma/contaminus/database/entities/GpsValue.java @@ -4,6 +4,7 @@ import java.util.Objects; import io.vertx.sqlclient.Row; import net.miarma.contaminus.common.Table; +import net.miarma.contaminus.util.DateParser; @Table("gps_values") public class GpsValue { @@ -21,7 +22,7 @@ public class GpsValue { this.sensorId = row.getInteger("sensorId"); this.lat = row.getFloat("lat"); this.lon = row.getFloat("lon"); - this.timestamp = row.getLong("timestamp"); + this.timestamp = DateParser.parseDate(row.getLocalDateTime("timestamp")); } public GpsValue(int valueId, int sensorId, float lat, float lon, long timestamp) { diff --git a/backend/src/main/java/net/miarma/contaminus/database/entities/Sensor.java b/backend/src/main/java/net/miarma/contaminus/database/entities/Sensor.java index 9000a20..05e1914 100644 --- a/backend/src/main/java/net/miarma/contaminus/database/entities/Sensor.java +++ b/backend/src/main/java/net/miarma/contaminus/database/entities/Sensor.java @@ -4,6 +4,7 @@ import java.util.Objects; import io.vertx.sqlclient.Row; import net.miarma.contaminus.common.Table; +import net.miarma.contaminus.util.DateParser; @Table("sensors") public class Sensor { @@ -23,7 +24,7 @@ public class Sensor { this.sensorType = row.getString("sensorType"); this.unit = row.getString("unit"); this.status = row.getInteger("status"); - this.timestamp = row.getLong("timestamp"); + this.timestamp = DateParser.parseDate(row.getLocalDateTime("timestamp")); } public Sensor(int sensorId, int deviceId, String sensorType, String unit, int status, long timestamp) { diff --git a/backend/src/main/java/net/miarma/contaminus/database/entities/WeatherValue.java b/backend/src/main/java/net/miarma/contaminus/database/entities/WeatherValue.java index e69f485..90423f5 100644 --- a/backend/src/main/java/net/miarma/contaminus/database/entities/WeatherValue.java +++ b/backend/src/main/java/net/miarma/contaminus/database/entities/WeatherValue.java @@ -4,6 +4,7 @@ import java.util.Objects; import io.vertx.sqlclient.Row; import net.miarma.contaminus.common.Table; +import net.miarma.contaminus.util.DateParser; @Table("weather_values") public class WeatherValue { @@ -21,7 +22,7 @@ public class WeatherValue { this.sensorId = row.getInteger("sensorId"); this.temperature = row.getFloat("temperature"); this.humidity = row.getFloat("humidity"); - this.timestamp = row.getLong("timestamp"); + this.timestamp = DateParser.parseDate(row.getLocalDateTime("timestamp")); } public WeatherValue(int valueId, int sensorId, float temperature, float humidity, long timestamp) { diff --git a/backend/src/main/java/net/miarma/contaminus/server/DataLayerAPIVerticle.java b/backend/src/main/java/net/miarma/contaminus/server/DataLayerAPIVerticle.java index 35e641b..bf0bfe7 100644 --- a/backend/src/main/java/net/miarma/contaminus/server/DataLayerAPIVerticle.java +++ b/backend/src/main/java/net/miarma/contaminus/server/DataLayerAPIVerticle.java @@ -4,27 +4,29 @@ import java.util.Arrays; import java.util.HashSet; import java.util.Set; +import com.google.gson.Gson; + import io.vertx.core.AbstractVerticle; import io.vertx.core.Promise; -import io.vertx.core.Vertx; import io.vertx.core.http.HttpMethod; -import io.vertx.core.json.JsonObject; import io.vertx.ext.web.Router; import io.vertx.ext.web.RoutingContext; import io.vertx.ext.web.handler.BodyHandler; import io.vertx.ext.web.handler.CorsHandler; -import io.vertx.jdbcclient.JDBCConnectOptions; import io.vertx.jdbcclient.JDBCPool; -import io.vertx.sqlclient.PoolOptions; import net.miarma.contaminus.common.ConfigManager; import net.miarma.contaminus.common.Constants; import net.miarma.contaminus.database.DatabaseManager; +import net.miarma.contaminus.database.QueryBuilder; +import net.miarma.contaminus.database.entities.Device; +import net.miarma.contaminus.database.entities.Sensor; @SuppressWarnings("unused") public class DataLayerAPIVerticle extends AbstractVerticle { private JDBCPool pool; private DatabaseManager dbManager; private ConfigManager configManager; + private Gson gson = new Gson(); public DataLayerAPIVerticle(JDBCPool pool) { this.pool = pool; diff --git a/backend/src/main/java/net/miarma/contaminus/server/LogicLayerAPIVerticle.java b/backend/src/main/java/net/miarma/contaminus/server/LogicLayerAPIVerticle.java index f86236a..a861a10 100644 --- a/backend/src/main/java/net/miarma/contaminus/server/LogicLayerAPIVerticle.java +++ b/backend/src/main/java/net/miarma/contaminus/server/LogicLayerAPIVerticle.java @@ -25,7 +25,6 @@ import net.miarma.contaminus.database.entities.DevicePollutionMap; import net.miarma.contaminus.database.entities.DeviceSensorHistory; import net.miarma.contaminus.database.entities.DeviceSensorValue; import net.miarma.contaminus.database.entities.Actuator; -import net.miarma.contaminus.database.entities.Device; import net.miarma.contaminus.database.entities.Sensor; import net.miarma.contaminus.util.RestClientUtil; @@ -38,7 +37,7 @@ public class LogicLayerAPIVerticle extends AbstractVerticle { this.configManager = ConfigManager.getInstance(); WebClientOptions options = new WebClientOptions() .setUserAgent("ContaminUS"); - this.restClient = new RestClientUtil(WebClient.create(vertx, options)); + this.restClient = new RestClientUtil(WebClient.create(Vertx.vertx(), options)); } @Override diff --git a/backend/src/main/java/net/miarma/contaminus/util/DateParser.java b/backend/src/main/java/net/miarma/contaminus/util/DateParser.java new file mode 100644 index 0000000..dcf0780 --- /dev/null +++ b/backend/src/main/java/net/miarma/contaminus/util/DateParser.java @@ -0,0 +1,10 @@ +package net.miarma.contaminus.util; + +import java.time.LocalDateTime; +import java.time.ZoneOffset; + +public class DateParser { + public static long parseDate(LocalDateTime date) { + return date.toEpochSecond(ZoneOffset.UTC); + } +}