Lukas Cerny 1 anno fa
parent
commit
fcc93f3786

+ 1 - 1
config/senslog1Analytics.yaml

@@ -6,7 +6,7 @@ settings:
 
         timeZone: "Europe/Prague"
         startDate: now # 2024-04-17T11:00:00+02:00
-        delayStartDate: 60 # minutes
+        delayStartDate: 20 # minutes
         interval: 10 # minutes
         user: "osek"
 

+ 1 - 0
connector-fetch-alapans/src/main/java/cz/senslog/connector/fetch/alapans/AlapansConfig.java

@@ -15,6 +15,7 @@ public class AlapansConfig {
 
     private final LocalTime newDataExecutionTime;
     private final AlapansSessionProxyConfig sessionProxyConfig;
+
     public AlapansConfig(DefaultConfig defaultConfig) {
         this.baseUrl = defaultConfig.getStringProperty("baseUrl");
         this.sessionProxyConfig = defaultConfig.containsProperty("sessionProxy") ?

+ 1 - 1
connector-fetch-fieldclimate/src/test/java/cz/senslog/connector/fetch/fieldclimate/FieldClimateProxySessionTest.java

@@ -1,7 +1,7 @@
 package cz.senslog.connector.fetch.fieldclimate;
 
+import cz.senslog.connector.fetch.api.ExecutableFetcher;
 import cz.senslog.connector.model.config.DefaultConfig;
-import cz.senslog.connector.fetch.gfs.ExecutableFetcher;
 import cz.senslog.connector.tools.http.HttpClient;
 import cz.senslog.connector.tools.http.HttpRequest;
 import cz.senslog.connector.tools.http.HttpResponse;

+ 1 - 0
connector-fetch-senslog-v1/src/main/java/cz/senslog/connector/fetch/senslog/v1/SenslogFetcher.java

@@ -22,6 +22,7 @@ import java.util.stream.Stream;
 
 import static cz.senslog.connector.tools.json.BasicJson.jsonToObject;
 import static java.time.OffsetDateTime.parse;
+import static java.time.format.DateTimeFormatter.ISO_OFFSET_DATE_TIME;
 import static java.time.format.DateTimeFormatter.ofPattern;
 
 public class SenslogFetcher implements ConnectorFetcher<SensLogSession, SenslogV1Model> {

+ 4 - 3
connector-fetch-senslog-v1/src/test/java/cz/senslog/connector/fetch/senslog/v1/SenslogFetcherTest.java

@@ -26,7 +26,8 @@ class SenslogFetcherTest {
         defaultConfig.setProperty("timeZone", "Europe/Prague");
         defaultConfig.setProperty("baseUrl", "http://sensor.lesprojekt.cz/senslog15");
         defaultConfig.setProperty("user", "osek");
-        defaultConfig.setProperty("interval", 20);
+        defaultConfig.setProperty("delayStartDate", 30);
+        defaultConfig.setProperty("interval", 10);
 
         Map<String, String> auth = new HashMap<>();
         auth.put("username", "osek");
@@ -48,8 +49,8 @@ class SenslogFetcherTest {
         AnalyticsModel a1 = converter.convert(fetcher.fetch(Optional.of(session)));
         System.out.println(BasicJson.objectToJson(a1.getObservations()));
 
-        AnalyticsModel a2 = converter.convert(fetcher.fetch(Optional.of(session)));
-        System.out.println(BasicJson.objectToJson(a2.getObservations()));
+//        AnalyticsModel a2 = converter.convert(fetcher.fetch(Optional.of(session)));
+//        System.out.println(BasicJson.objectToJson(a2.getObservations()));
     }
 
 }

+ 26 - 7
connector-push-telemetry/pom.xml

@@ -2,19 +2,38 @@
 <project xmlns="http://maven.apache.org/POM/4.0.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <modelVersion>4.0.0</modelVersion>
     <parent>
-        <groupId>cz.senslog</groupId>
         <artifactId>connector-period</artifactId>
+        <groupId>cz.senslog</groupId>
         <version>1.0-SNAPSHOT</version>
     </parent>
+    <modelVersion>4.0.0</modelVersion>
 
     <artifactId>connector-push-telemetry</artifactId>
+    <name>push-telemetry</name>
+    <packaging>jar</packaging>
+
+    <dependencies>
+        <dependency>
+            <groupId>cz.senslog</groupId>
+            <artifactId>connector-push-api</artifactId>
+            <version>${project.parent.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>cz.senslog</groupId>
+            <artifactId>connector-model</artifactId>
+            <version>${project.parent.version}</version>
+        </dependency>
+
+    </dependencies>
 
-    <properties>
-        <maven.compiler.source>17</maven.compiler.source>
-        <maven.compiler.target>17</maven.compiler.target>
-        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
-    </properties>
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-assembly-plugin</artifactId>
+            </plugin>
+        </plugins>
+    </build>
 
 </project>

+ 28 - 0
connector-push-telemetry/src/main/java/cz/senslog/connector/push/telemetry/TelemetryConfig.java

@@ -0,0 +1,28 @@
+package cz.senslog.connector.push.telemetry;
+
+import cz.senslog.connector.model.config.DefaultConfig;
+
+public class TelemetryConfig {
+
+    private final String infoUrl;
+    private final String stopDeliveryUrl;
+    private final String updateLocationsUrl;
+
+    TelemetryConfig(DefaultConfig defaultConfig) {
+        this.infoUrl = defaultConfig.getStringProperty("infoUrl");
+        this.stopDeliveryUrl = defaultConfig.getStringProperty("stopDeliveryUrl");
+        this.updateLocationsUrl = defaultConfig.getStringProperty("updateLocationsUrl");
+    }
+
+    public String getInfoUrl() {
+        return infoUrl;
+    }
+
+    public String getStopDeliveryUrl() {
+        return stopDeliveryUrl;
+    }
+
+    public String getUpdateLocationsUrl() {
+        return updateLocationsUrl;
+    }
+}

+ 31 - 0
connector-push-telemetry/src/main/java/cz/senslog/connector/push/telemetry/TelemetryPushProvider.java

@@ -0,0 +1,31 @@
+package cz.senslog.connector.push.telemetry;
+
+import cz.senslog.connector.model.config.DefaultConfig;
+import cz.senslog.connector.model.telemetry.TelemetryModel;
+import cz.senslog.connector.push.api.ConnectorPushProvider;
+import cz.senslog.connector.push.api.ConnectorPusher;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+
+import static cz.senslog.connector.tools.http.HttpClient.newHttpSSLClient;
+
+public class TelemetryPushProvider implements ConnectorPushProvider {
+
+    private static final Logger logger = LogManager.getLogger(TelemetryPushProvider.class);
+
+    @Override
+    public ConnectorPusher<TelemetryModel> createPusher(DefaultConfig defaultConfig) {
+
+        logger.info("Initialization a new push provider {}.", TelemetryPusher.class);
+
+        logger.debug("Creating a new configuration.");
+        TelemetryConfig config = new TelemetryConfig(defaultConfig);
+        logger.info("Configuration for {} was created successfully.", TelemetryPusher.class);
+
+        logger.debug("Creating a new instance of {}.", TelemetryPusher.class);
+        TelemetryPusher pusher = new TelemetryPusher(config, newHttpSSLClient());
+        logger.info("Pusher for {} was created successfully.", TelemetryPusher.class);
+
+        return pusher;
+    }
+}

+ 54 - 0
connector-push-telemetry/src/main/java/cz/senslog/connector/push/telemetry/TelemetryPusher.java

@@ -0,0 +1,54 @@
+package cz.senslog.connector.push.telemetry;
+
+import cz.senslog.connector.model.telemetry.TelemetryModel;
+import cz.senslog.connector.push.api.ConnectorPusher;
+import cz.senslog.connector.tools.http.HttpClient;
+import cz.senslog.connector.tools.http.HttpRequest;
+import cz.senslog.connector.tools.http.HttpResponse;
+import cz.senslog.connector.tools.http.URLBuilder;
+import cz.senslog.connector.tools.json.BasicJson;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+
+import java.util.Map;
+
+import static java.lang.String.format;
+
+public class TelemetryPusher implements ConnectorPusher<TelemetryModel> {
+
+    private static final Logger logger = LogManager.getLogger(TelemetryPusher.class);
+
+
+    private final TelemetryConfig config;
+
+    private final HttpClient httpClient;
+
+    public TelemetryPusher(final TelemetryConfig config, final HttpClient httpClient) {
+        this.config = config;
+        this.httpClient = httpClient;
+    }
+
+    @Override
+    public void init() throws Exception {
+        HttpRequest request = HttpRequest.newBuilder().GET()
+                .url(URLBuilder.newBuilder(config.getInfoUrl()).build())
+                .build();
+
+        HttpResponse response = httpClient.send(request);
+
+        if (response.isError()) {
+            throw logger.throwing(new Exception(format(
+                    "Can not get information about the telemetry instance. %s", response.getBody()
+            )));
+        }
+
+        String responseBody = response.getBody();
+        Map<?, ?> infoJson = BasicJson.jsonToObject(responseBody, Map.class);
+        logger.info(format("Successfully connected to: %s", infoJson.get("name")));
+    }
+
+    @Override
+    public void push(TelemetryModel model) {
+        logger.info(format("Pushing: %s", model.getBody()));
+    }
+}

+ 1 - 0
connector-push-telemetry/src/main/resources/META-INF/services/cz.senslog.connector.push.api.ConnectorPushProvider

@@ -0,0 +1 @@
+cz.senslog.connector.push.telemetry.TelemetryPushProvider