1
0

Added date parser and Vertx explicit instance

This commit is contained in:
Jose
2025-03-15 18:33:35 +01:00
parent c2037ecbd1
commit 31930aeb2c
16 changed files with 42 additions and 48 deletions

View File

@@ -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<LocalDateTime>, JsonDeserializer<LocalDateTime> {
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);
}
}

View File

@@ -4,6 +4,7 @@ import java.util.Objects;
import io.vertx.sqlclient.Row; import io.vertx.sqlclient.Row;
import net.miarma.contaminus.common.Table; import net.miarma.contaminus.common.Table;
import net.miarma.contaminus.util.DateParser;
@Table("actuators") @Table("actuators")
public class Actuator { public class Actuator {
@@ -19,7 +20,7 @@ public class Actuator {
this.actuatorId = row.getInteger("actuatorId"); this.actuatorId = row.getInteger("actuatorId");
this.deviceId = row.getInteger("deviceId"); this.deviceId = row.getInteger("deviceId");
this.status = row.getInteger("status"); 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) { public Actuator(int actuatorId, int deviceId, int status, long timestamp) {

View File

@@ -4,6 +4,7 @@ import java.util.Objects;
import io.vertx.sqlclient.Row; import io.vertx.sqlclient.Row;
import net.miarma.contaminus.common.Table; import net.miarma.contaminus.common.Table;
import net.miarma.contaminus.util.DateParser;
@Table("co_values") @Table("co_values")
public class COValue { public class COValue {
@@ -19,7 +20,7 @@ public class COValue {
this.valueId = row.getInteger("valueId"); this.valueId = row.getInteger("valueId");
this.sensorId = row.getInteger("sensorId"); this.sensorId = row.getInteger("sensorId");
this.value = row.getFloat("value"); 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) { public COValue(int valueId, int sensorId, float value, long timestamp) {

View File

@@ -4,6 +4,7 @@ import java.util.Objects;
import io.vertx.sqlclient.Row; import io.vertx.sqlclient.Row;
import net.miarma.contaminus.common.Table; import net.miarma.contaminus.common.Table;
import net.miarma.contaminus.util.DateParser;
@Table("v_co_by_device") @Table("v_co_by_device")
public class DeviceCO { public class DeviceCO {
@@ -16,7 +17,7 @@ public class DeviceCO {
public DeviceCO(Row row) { public DeviceCO(Row row) {
this.deviceId = row.getInteger("deviceId"); this.deviceId = row.getInteger("deviceId");
this.carbonMonoxide = row.getFloat("carbonMonoxide"); 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) { public DeviceCO(int deviceId, float carbonMonoxide, long timestamp) {

View File

@@ -4,6 +4,7 @@ import java.util.Objects;
import io.vertx.sqlclient.Row; import io.vertx.sqlclient.Row;
import net.miarma.contaminus.common.Table; import net.miarma.contaminus.common.Table;
import net.miarma.contaminus.util.DateParser;
@Table("v_gps_by_device") @Table("v_gps_by_device")
public class DeviceGPS { public class DeviceGPS {
@@ -18,7 +19,7 @@ public class DeviceGPS {
this.deviceId = row.getInteger("deviceId"); this.deviceId = row.getInteger("deviceId");
this.lat = row.getFloat("lat"); this.lat = row.getFloat("lat");
this.lon = row.getFloat("lon"); 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) { public DeviceGPS(int deviceId, long lat, long lon) {

View File

@@ -3,6 +3,7 @@ import java.util.Objects;
import io.vertx.sqlclient.Row; import io.vertx.sqlclient.Row;
import net.miarma.contaminus.common.Table; import net.miarma.contaminus.common.Table;
import net.miarma.contaminus.util.DateParser;
@Table("v_latest_values") @Table("v_latest_values")
public class DeviceLatestValuesView { public class DeviceLatestValuesView {
@@ -27,13 +28,13 @@ public class DeviceLatestValuesView {
this.sensorType = row.getString("sensorType"); this.sensorType = row.getString("sensorType");
this.unit = row.getString("unit"); this.unit = row.getString("unit");
this.sensorStatus = row.getInteger("sensorStatus"); this.sensorStatus = row.getInteger("sensorStatus");
this.sensorTimestamp = row.getLong("sensorTimestamp"); this.sensorTimestamp = DateParser.parseDate(row.getLocalDateTime("sensorTimestamp"));
this.temperature = row.getFloat("temperature"); this.temperature = row.getFloat("temperature");
this.humidity = row.getFloat("humidity"); this.humidity = row.getFloat("humidity");
this.carbonMonoxide = row.getFloat("carbonMonoxide"); this.carbonMonoxide = row.getFloat("carbonMonoxide");
this.lat = row.getFloat("lat"); this.lat = row.getFloat("lat");
this.lon = row.getFloat("lon"); 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, public DeviceLatestValuesView(int deviceId, int sensorId, String sensorType, String unit, int sensorStatus,

View File

@@ -4,6 +4,7 @@ import java.util.Objects;
import io.vertx.sqlclient.Row; import io.vertx.sqlclient.Row;
import net.miarma.contaminus.common.Table; import net.miarma.contaminus.common.Table;
import net.miarma.contaminus.util.DateParser;
@Table("v_pollution_map") @Table("v_pollution_map")
public class DevicePollutionMap { public class DevicePollutionMap {
@@ -22,7 +23,7 @@ public class DevicePollutionMap {
this.lat = row.getFloat("lat"); this.lat = row.getFloat("lat");
this.lon = row.getFloat("lon"); this.lon = row.getFloat("lon");
this.carbonMonoxide = row.getFloat("carbonMonoxide"); 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, public DevicePollutionMap(int deviceId, String deviceName, float lat, float lon, float carbonMonoxide,

View File

@@ -4,6 +4,7 @@ import java.util.Objects;
import io.vertx.sqlclient.Row; import io.vertx.sqlclient.Row;
import net.miarma.contaminus.common.Table; import net.miarma.contaminus.common.Table;
import net.miarma.contaminus.util.DateParser;
@Table("v_sensor_history_by_device") @Table("v_sensor_history_by_device")
public class DeviceSensorHistory { public class DeviceSensorHistory {
@@ -20,7 +21,7 @@ public class DeviceSensorHistory {
this.deviceName = row.getString("deviceName"); this.deviceName = row.getString("deviceName");
this.value = row.getFloat("value"); this.value = row.getFloat("value");
this.valueType = row.getString("valueType"); 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) { public DeviceSensorHistory(int deviceId, String deviceName, float value, String valueType, long timestamp) {

View File

@@ -4,6 +4,7 @@ import java.util.Objects;
import io.vertx.sqlclient.Row; import io.vertx.sqlclient.Row;
import net.miarma.contaminus.common.Table; import net.miarma.contaminus.common.Table;
import net.miarma.contaminus.util.DateParser;
@Table("v_sensor_values") @Table("v_sensor_values")
public class DeviceSensorValue { public class DeviceSensorValue {
@@ -32,7 +33,7 @@ public class DeviceSensorValue {
this.carbonMonoxide = row.getFloat("carbonMonoxide"); this.carbonMonoxide = row.getFloat("carbonMonoxide");
this.lat = row.getFloat("lat"); this.lat = row.getFloat("lat");
this.lon = row.getFloat("lon"); 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, public DeviceSensorValue(int sensorId, int deviceId, String sensorType, String unit, int sensorStatus,

View File

@@ -4,6 +4,7 @@ import java.util.Objects;
import io.vertx.sqlclient.Row; import io.vertx.sqlclient.Row;
import net.miarma.contaminus.common.Table; import net.miarma.contaminus.common.Table;
import net.miarma.contaminus.util.DateParser;
@Table("v_weather_by_device") @Table("v_weather_by_device")
public class DeviceWeather { public class DeviceWeather {
@@ -18,7 +19,7 @@ public class DeviceWeather {
this.deviceId = row.getInteger("deviceId"); this.deviceId = row.getInteger("deviceId");
this.temperature = row.getFloat("temperature"); this.temperature = row.getFloat("temperature");
this.humidity = row.getFloat("humidity"); 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) { public DeviceWeather(int deviceId, float temperature, float humidity, long timestamp) {

View File

@@ -4,6 +4,7 @@ import java.util.Objects;
import io.vertx.sqlclient.Row; import io.vertx.sqlclient.Row;
import net.miarma.contaminus.common.Table; import net.miarma.contaminus.common.Table;
import net.miarma.contaminus.util.DateParser;
@Table("gps_values") @Table("gps_values")
public class GpsValue { public class GpsValue {
@@ -21,7 +22,7 @@ public class GpsValue {
this.sensorId = row.getInteger("sensorId"); this.sensorId = row.getInteger("sensorId");
this.lat = row.getFloat("lat"); this.lat = row.getFloat("lat");
this.lon = row.getFloat("lon"); 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) { public GpsValue(int valueId, int sensorId, float lat, float lon, long timestamp) {

View File

@@ -4,6 +4,7 @@ import java.util.Objects;
import io.vertx.sqlclient.Row; import io.vertx.sqlclient.Row;
import net.miarma.contaminus.common.Table; import net.miarma.contaminus.common.Table;
import net.miarma.contaminus.util.DateParser;
@Table("sensors") @Table("sensors")
public class Sensor { public class Sensor {
@@ -23,7 +24,7 @@ public class Sensor {
this.sensorType = row.getString("sensorType"); this.sensorType = row.getString("sensorType");
this.unit = row.getString("unit"); this.unit = row.getString("unit");
this.status = row.getInteger("status"); 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) { public Sensor(int sensorId, int deviceId, String sensorType, String unit, int status, long timestamp) {

View File

@@ -4,6 +4,7 @@ import java.util.Objects;
import io.vertx.sqlclient.Row; import io.vertx.sqlclient.Row;
import net.miarma.contaminus.common.Table; import net.miarma.contaminus.common.Table;
import net.miarma.contaminus.util.DateParser;
@Table("weather_values") @Table("weather_values")
public class WeatherValue { public class WeatherValue {
@@ -21,7 +22,7 @@ public class WeatherValue {
this.sensorId = row.getInteger("sensorId"); this.sensorId = row.getInteger("sensorId");
this.temperature = row.getFloat("temperature"); this.temperature = row.getFloat("temperature");
this.humidity = row.getFloat("humidity"); 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) { public WeatherValue(int valueId, int sensorId, float temperature, float humidity, long timestamp) {

View File

@@ -4,27 +4,29 @@ import java.util.Arrays;
import java.util.HashSet; import java.util.HashSet;
import java.util.Set; import java.util.Set;
import com.google.gson.Gson;
import io.vertx.core.AbstractVerticle; import io.vertx.core.AbstractVerticle;
import io.vertx.core.Promise; import io.vertx.core.Promise;
import io.vertx.core.Vertx;
import io.vertx.core.http.HttpMethod; import io.vertx.core.http.HttpMethod;
import io.vertx.core.json.JsonObject;
import io.vertx.ext.web.Router; import io.vertx.ext.web.Router;
import io.vertx.ext.web.RoutingContext; import io.vertx.ext.web.RoutingContext;
import io.vertx.ext.web.handler.BodyHandler; import io.vertx.ext.web.handler.BodyHandler;
import io.vertx.ext.web.handler.CorsHandler; import io.vertx.ext.web.handler.CorsHandler;
import io.vertx.jdbcclient.JDBCConnectOptions;
import io.vertx.jdbcclient.JDBCPool; import io.vertx.jdbcclient.JDBCPool;
import io.vertx.sqlclient.PoolOptions;
import net.miarma.contaminus.common.ConfigManager; import net.miarma.contaminus.common.ConfigManager;
import net.miarma.contaminus.common.Constants; import net.miarma.contaminus.common.Constants;
import net.miarma.contaminus.database.DatabaseManager; 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") @SuppressWarnings("unused")
public class DataLayerAPIVerticle extends AbstractVerticle { public class DataLayerAPIVerticle extends AbstractVerticle {
private JDBCPool pool; private JDBCPool pool;
private DatabaseManager dbManager; private DatabaseManager dbManager;
private ConfigManager configManager; private ConfigManager configManager;
private Gson gson = new Gson();
public DataLayerAPIVerticle(JDBCPool pool) { public DataLayerAPIVerticle(JDBCPool pool) {
this.pool = pool; this.pool = pool;

View File

@@ -25,7 +25,6 @@ import net.miarma.contaminus.database.entities.DevicePollutionMap;
import net.miarma.contaminus.database.entities.DeviceSensorHistory; import net.miarma.contaminus.database.entities.DeviceSensorHistory;
import net.miarma.contaminus.database.entities.DeviceSensorValue; import net.miarma.contaminus.database.entities.DeviceSensorValue;
import net.miarma.contaminus.database.entities.Actuator; 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.database.entities.Sensor;
import net.miarma.contaminus.util.RestClientUtil; import net.miarma.contaminus.util.RestClientUtil;
@@ -38,7 +37,7 @@ public class LogicLayerAPIVerticle extends AbstractVerticle {
this.configManager = ConfigManager.getInstance(); this.configManager = ConfigManager.getInstance();
WebClientOptions options = new WebClientOptions() WebClientOptions options = new WebClientOptions()
.setUserAgent("ContaminUS"); .setUserAgent("ContaminUS");
this.restClient = new RestClientUtil(WebClient.create(vertx, options)); this.restClient = new RestClientUtil(WebClient.create(Vertx.vertx(), options));
} }
@Override @Override

View File

@@ -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);
}
}