浏览代码

Docker with build profiles, init of FieldClimate

Lukas Cerny 6 年之前
父节点
当前提交
bdee915c50
共有 31 个文件被更改,包括 306 次插入32 次删除
  1. 二进制
      .gitignore
  2. 15 0
      Dockerfile
  3. 4 0
      config/default.yaml
  4. 35 0
      config/lorawanSenslog1.yaml
  5. 15 0
      config/test.yaml
  6. 1 2
      connector-app/pom.xml
  7. 5 4
      connector-app/src/main/java/cz/senslog/connector/app/Application.java
  8. 19 5
      connector-app/src/main/java/cz/senslog/connector/app/config/Connector.java
  9. 1 1
      connector-app/src/main/java/cz/senslog/connector/app/config/ConnectorBuilder.java
  10. 2 2
      connector-app/src/main/resources/project.properties
  11. 11 10
      connector-app/src/test/java/ConnectorBuilderTest.java
  12. 1 0
      connector-common/pom.xml
  13. 4 1
      connector-common/src/main/java/cz/senslog/connector/config/FileConfigurationServiceImpl.java
  14. 10 1
      connector-common/src/main/java/cz/senslog/connector/config/model/ConnectorDescriptor.java
  15. 2 0
      connector-common/src/main/java/cz/senslog/connector/http/HttpCode.java
  16. 2 1
      connector-common/src/test/java/cz/senslog/connector/config/model/ConnectorDescriptorTest.java
  17. 1 0
      connector-fetch-api/pom.xml
  18. 1 0
      connector-fetch-azure/pom.xml
  19. 39 0
      connector-fetch-fieldclimate/pom.xml
  20. 19 0
      connector-fetch-fieldclimate/src/main/java/cz/senslog/connector/fetch/fieldclimate/ConnectorFetchFieldClimateProvider.java
  21. 17 0
      connector-fetch-fieldclimate/src/main/java/cz/senslog/connector/fetch/fieldclimate/FieldClimateFetcher.java
  22. 1 0
      connector-fetch-fieldclimate/src/main/resources/META-INF/services/cz.senslog.connector.fetch.api.ConnectorFetchProvider
  23. 1 0
      connector-model/pom.xml
  24. 15 0
      connector-model/src/main/java/cz/senslog/connector/model/converter/FieldClimateModelSenslogV2ModelConverter.java
  25. 1 0
      connector-model/src/main/java/cz/senslog/connector/model/converter/ModelConverterProvider.java
  26. 12 0
      connector-model/src/main/java/cz/senslog/connector/model/fieldclimate/FieldClimateModel.java
  27. 1 0
      connector-push-api/pom.xml
  28. 2 1
      connector-push-rest-senslog-v1/pom.xml
  29. 2 1
      connector-push-rest-senslog-v2/pom.xml
  30. 28 0
      docker-compose.yaml
  31. 39 3
      pom.xml

二进制
.gitignore


+ 15 - 0
Dockerfile

@@ -0,0 +1,15 @@
+FROM zenika/alpine-maven:3-jdk8
+
+ARG MAVEN_PROFILE
+
+COPY . /app
+WORKDIR /app
+
+RUN mvn clean
+RUN mvn package -P $MAVEN_PROFILE -DskipTests=true
+
+ENTRYPOINT if [ "$DEBUG" = "true" ] ; then \
+        java -cp "bin/*" -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=0.0.0.0:5005 cz.senslog.connector.app.Main $APP_PARAMS \
+    ; else \
+        java -cp "bin/*" cz.senslog.connector.app.Main $APP_PARAMS \
+    ; fi

+ 4 - 0
config/default.yaml

@@ -32,6 +32,10 @@ settings:
           name: "Senslog V2"
           provider: "cz.senslog.connector.push.rest.senslog.v2.SenslogV2ConnectorPushProvider"
 
+    - Fieldclimate:
+          name: "FieldClimate: Pessl Instruments "
+          provider: "cz.senslog.connector.fetch.fieldclimate.ConnectorFetchFieldClimateProvider"
+
 connectors:
     - AzureSenslogV1:
         fetcher: "AzureLoraWan"

+ 35 - 0
config/lorawanSenslog1.yaml

@@ -0,0 +1,35 @@
+settings:
+    - AzureLoraWan:
+        name: "IoT LoraWan"
+        provider: "cz.senslog.connector.fetch.azure.ConnectorFetchAzureProvider"
+        startDate: 2019-07-13T11:37:14.900
+        limitPerSensor: 60
+        
+        sensorInfoHost:
+            domain: "https://iotlorawan.azurewebsites.net"
+            path: "api/sensors"
+        
+        sensorDataHost:
+            domain: "https://iotlorawan.azurewebsites.net"
+            path: "api/sensordata"
+        
+        authentication:
+            host:
+                domain: "https://iotlorawan.azurewebsites.net"
+                path: "api/accounts/login"
+            username: "netluky@ima.cz"
+            password: "SensLogIMA1"
+            refreshPeriodIfFail: 10000
+        
+    - SenslogV1:
+        name: "Senslog V1"
+        provider: "cz.senslog.connector.push.rest.senslog.v1.SenslogV1ConnectorPushProvider"
+        host:
+            domain: "http://localhost:8080"
+            path: "DBService-1.4-SNAPSHOT/FeederServlet"
+
+connectors:
+    - AzureSenslogV1:
+        fetcher: "AzureLoraWan"
+        pusher: "SenslogV1"
+        period: 60

+ 15 - 0
config/test.yaml

@@ -0,0 +1,15 @@
+settings:
+    - SenslogV2:
+          name: "Senslog V2"
+          provider: "cz.senslog.connector.push.rest.senslog.v2.SenslogV2ConnectorPushProvider"
+
+    - Fieldclimate:
+          name: "FieldClimate: Pessl Instruments"
+          provider: "cz.senslog.connector.fetch.fieldclimate.ConnectorFetchFieldClimateProvider"
+
+connectors:
+    - FieldclimateToV2:
+          fetcher: "Fieldclimate"
+          pusher: "SenslogV2"
+          period: 60
+          initDelay: 15

+ 1 - 2
connector-app/pom.xml

@@ -10,9 +10,8 @@
     <modelVersion>4.0.0</modelVersion>
 
     <artifactId>connector-app</artifactId>
-
     <version>${project.parent.version}</version>
-    <name>${project.parent.name}</name>
+    <name>app</name>
 
     <dependencies>
         <dependency>

+ 5 - 4
connector-app/src/main/java/cz/senslog/connector/app/Application.java

@@ -28,8 +28,8 @@ class Application implements Runnable {
     private static Logger logger = LogManager.getLogger(Application.class);
 
 
-    /** Initialization delay value when the scheduler starts to schedule tasks (in seconds). */
-    private static int INITIAL_TASK_DELAY = 2;
+    /** Default initialization delay value when the scheduler starts to schedule tasks (in seconds). */
+    private static int DEFAULT_TASK_DELAY = 2;
 
     /** Default value for scheduling tasks when the value missing in the configuration file (in seconds). */
     private static int DEFAULT_SCHEDULE_PERIOD = 3600;  // every hour
@@ -81,8 +81,9 @@ class Application implements Runnable {
                 ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(connectors.size());
                 connectors.forEach(conn -> {
                     int schedulePeriod = conn.getPeriod().orElse(DEFAULT_SCHEDULE_PERIOD);
-                    logger.info("Scheduling the {} with the period {} seconds.", conn.getName(), schedulePeriod);
-                    scheduler.scheduleAtFixedRate(conn.getTask(), INITIAL_TASK_DELAY, schedulePeriod, SECONDS);
+                    int delay = conn.getInitDelay().orElse(DEFAULT_TASK_DELAY);
+                    logger.info("Scheduling the {} starts in {} with the period {} seconds.", conn.getName(), delay, schedulePeriod);
+                    scheduler.scheduleAtFixedRate(conn.getTask(), delay, schedulePeriod, SECONDS);
                 });
             } else {
                 logger.warn("No connectors were loaded.");

+ 19 - 5
connector-app/src/main/java/cz/senslog/connector/app/config/Connector.java

@@ -8,6 +8,7 @@ import cz.senslog.connector.push.api.ConnectorPusher;
 import java.util.Optional;
 
 import static cz.senslog.connector.util.Pipeline.of;
+import static java.util.Optional.ofNullable;
 
 /**
  * The class {@code Connector} represents a created connector
@@ -34,9 +35,12 @@ public final class Connector {
     /** Converter between fetch and push. */
     private final Converter<? super AbstractModel, ? super AbstractModel> converter;
 
-    /** Period for scheduling. */
+    /** Period for scheduler. */
     private final Optional<Integer> period;
 
+    /** Initialization delay for scheduler. */
+    private final Optional<Integer> initDelay;
+
     /**
      * Constructor allows to set all attributes.
      * @param name - name of the connector.
@@ -50,13 +54,15 @@ public final class Connector {
             ConnectorFetcher<? super AbstractModel> fetcher,
             ConnectorPusher<? super AbstractModel> pusher,
             Converter<? super AbstractModel, ? super AbstractModel> converter,
-            Integer period
+            Integer period,
+            Integer initDelay
     ) {
         this.name = name;
         this.fetcher = fetcher;
         this.pusher = pusher;
         this.converter = converter;
-        this.period = Optional.ofNullable(period);
+        this.period = ofNullable(period);
+        this.initDelay = ofNullable(initDelay);
     }
 
     /**
@@ -68,14 +74,22 @@ public final class Connector {
     }
 
     /**
-     * Returns period for scheduling.
-     * @return period for scheduling.
+     * Returns period for scheduler.
+     * @return period for scheduler.
      */
     public Optional<Integer> getPeriod() {
         return period;
     }
 
     /**
+     * Returns initialization delay for scheduler.
+     * @return delay for scheduler.
+     */
+    public Optional<Integer> getInitDelay() {
+        return initDelay;
+    }
+
+    /**
      * Returns scheduling runnable task of the connector flow.
      * @return runnable task
      */

+ 1 - 1
connector-app/src/main/java/cz/senslog/connector/app/config/ConnectorBuilder.java

@@ -157,7 +157,7 @@ public final class ConnectorBuilder {
                 pusher.init();
 
                 logger.debug("Creating a new {} connector.", connDesc.getName());
-                Connector connector = new Connector(connDesc.getName(), fetcher, pusher, converter, connDesc.getPeriod());
+                Connector connector = new Connector(connDesc.getName(), fetcher, pusher, converter, connDesc.getPeriod(), connDesc.getDelay());
 
                 logger.debug("Saving the {} connector.", connDesc.getName());
                 connectors.add(connector);

+ 2 - 2
connector-app/src/main/resources/project.properties

@@ -1,2 +1,2 @@
-app.name=${project.name}
-app.version=${project.version}
+app.name=${project.parent.name}
+app.version=${project.parent.version}

+ 11 - 10
connector-app/src/test/java/ConnectorBuilderTest.java

@@ -47,7 +47,7 @@ class ConnectorBuilderTest {
         ServiceProvider serviceProvider = new ServiceProvider(aClass -> defaultFetchProvider, aClass -> defaultPushProvider);
 
         Set<ConnectorDescriptor> connectorDescriptors = new HashSet<>();
-        connectorDescriptors.add(new ConnectorDescriptor("Test", defaultFetchProvider.getClass(), defaultPushProvider.getClass(), 1));
+        connectorDescriptors.add(new ConnectorDescriptor("Test", defaultFetchProvider.getClass(), defaultPushProvider.getClass(), 1, 2));
 
         ConfigurationService configService = mock(ConfigurationService.class);
         when(configService.getConnectorDescriptors()).thenReturn(connectorDescriptors);
@@ -61,6 +61,7 @@ class ConnectorBuilderTest {
         Connector connector = connectors.iterator().next();
         assertEquals("Test", connector.getName());
         assertEquals(1, connector.getPeriod().orElse(0));
+        assertEquals(2, connector.getInitDelay().orElse(0));
     }
 
     @Test
@@ -73,8 +74,8 @@ class ConnectorBuilderTest {
         ServiceProvider serviceProvider = new ServiceProvider(aClass -> defaultFetchProvider, aClass -> defaultPushProvider);
 
         Set<ConnectorDescriptor> connectorDescriptors = new HashSet<>();
-        connectorDescriptors.add(new ConnectorDescriptor("Test1", defaultFetchProvider.getClass(), defaultPushProvider.getClass(), 1));
-        connectorDescriptors.add(new ConnectorDescriptor("Test2", defaultFetchProvider.getClass(), defaultPushProvider.getClass(), 2));
+        connectorDescriptors.add(new ConnectorDescriptor("Test1", defaultFetchProvider.getClass(), defaultPushProvider.getClass(), 1, 3));
+        connectorDescriptors.add(new ConnectorDescriptor("Test2", defaultFetchProvider.getClass(), defaultPushProvider.getClass(), 2, 3));
 
         ConfigurationService configService = mock(ConfigurationService.class);
         when(configService.getConnectorDescriptors()).thenReturn(connectorDescriptors);
@@ -97,7 +98,7 @@ class ConnectorBuilderTest {
         ServiceProvider serviceProvider = new ServiceProvider(aClass -> null, aClass -> defaultPushProvider);
 
         Set<ConnectorDescriptor> connectorDescriptors = new HashSet<>();
-        connectorDescriptors.add(new ConnectorDescriptor("Test", defaultFetchProvider.getClass(), defaultPushProvider.getClass(), 1));
+        connectorDescriptors.add(new ConnectorDescriptor("Test", defaultFetchProvider.getClass(), defaultPushProvider.getClass(), 1, 2));
 
         ConfigurationService configService = mock(ConfigurationService.class);
         when(configService.getConnectorDescriptors()).thenReturn(connectorDescriptors);
@@ -118,7 +119,7 @@ class ConnectorBuilderTest {
         ServiceProvider serviceProvider = new ServiceProvider(aClass -> defaultFetchProvider, aClass -> defaultPushProvider);
 
         Set<ConnectorDescriptor> connectorDescriptors = new HashSet<>();
-        connectorDescriptors.add(new ConnectorDescriptor("Test", defaultFetchProvider.getClass(), defaultPushProvider.getClass(), 1));
+        connectorDescriptors.add(new ConnectorDescriptor("Test", defaultFetchProvider.getClass(), defaultPushProvider.getClass(), 1, 2));
 
         ConfigurationService configService = mock(ConfigurationService.class);
         when(configService.getConnectorDescriptors()).thenReturn(connectorDescriptors);
@@ -142,7 +143,7 @@ class ConnectorBuilderTest {
         ServiceProvider serviceProvider = new ServiceProvider(aClass -> defaultFetchProvider, aClass -> null);
 
         Set<ConnectorDescriptor> connectorDescriptors = new HashSet<>();
-        connectorDescriptors.add(new ConnectorDescriptor("Test", defaultFetchProvider.getClass(), defaultPushProvider.getClass(), 1));
+        connectorDescriptors.add(new ConnectorDescriptor("Test", defaultFetchProvider.getClass(), defaultPushProvider.getClass(), 1, 2));
 
         ConfigurationService configService = mock(ConfigurationService.class);
         when(configService.getConnectorDescriptors()).thenReturn(connectorDescriptors);
@@ -163,7 +164,7 @@ class ConnectorBuilderTest {
         ServiceProvider serviceProvider = new ServiceProvider(aClass -> defaultFetchProvider, aClass -> defaultPushProvider);
 
         Set<ConnectorDescriptor> connectorDescriptors = new HashSet<>();
-        connectorDescriptors.add(new ConnectorDescriptor("Test", defaultFetchProvider.getClass(), defaultPushProvider.getClass(), 1));
+        connectorDescriptors.add(new ConnectorDescriptor("Test", defaultFetchProvider.getClass(), defaultPushProvider.getClass(), 1, 2));
 
         ConfigurationService configService = mock(ConfigurationService.class);
         when(configService.getConnectorDescriptors()).thenReturn(connectorDescriptors);
@@ -187,7 +188,7 @@ class ConnectorBuilderTest {
         ServiceProvider serviceProvider = new ServiceProvider(aClass -> defaultFetchProvider, aClass -> defaultPushProvider);
 
         Set<ConnectorDescriptor> connectorDescriptors = new HashSet<>();
-        connectorDescriptors.add(new ConnectorDescriptor("Test", defaultFetchProvider.getClass(), defaultPushProvider.getClass(), 1));
+        connectorDescriptors.add(new ConnectorDescriptor("Test", defaultFetchProvider.getClass(), defaultPushProvider.getClass(), 1, 2));
 
         ConfigurationService configService = mock(ConfigurationService.class);
         when(configService.getConnectorDescriptors()).thenReturn(connectorDescriptors);
@@ -215,7 +216,7 @@ class ConnectorBuilderTest {
         ServiceProvider serviceProvider = new ServiceProvider(aClass -> fetchProvider, aClass -> defaultPushProvider);
 
         Set<ConnectorDescriptor> connectorDescriptors = new HashSet<>();
-        connectorDescriptors.add(new ConnectorDescriptor("Test", fetchProvider.getClass(), defaultPushProvider.getClass(), 1));
+        connectorDescriptors.add(new ConnectorDescriptor("Test", fetchProvider.getClass(), defaultPushProvider.getClass(), 1, 2));
 
         ConfigurationService configService = mock(ConfigurationService.class);
         when(configService.getConnectorDescriptors()).thenReturn(connectorDescriptors);
@@ -243,7 +244,7 @@ class ConnectorBuilderTest {
         ServiceProvider serviceProvider = new ServiceProvider(aClass -> defaultFetchProvider, aClass -> pushProvider);
 
         Set<ConnectorDescriptor> connectorDescriptors = new HashSet<>();
-        connectorDescriptors.add(new ConnectorDescriptor("Test", defaultFetchProvider.getClass(), pushProvider.getClass(), 1));
+        connectorDescriptors.add(new ConnectorDescriptor("Test", defaultFetchProvider.getClass(), pushProvider.getClass(), 1, 2));
 
         ConfigurationService configService = mock(ConfigurationService.class);
         when(configService.getConnectorDescriptors()).thenReturn(connectorDescriptors);

+ 1 - 0
connector-common/pom.xml

@@ -10,6 +10,7 @@
     <modelVersion>4.0.0</modelVersion>
 
     <artifactId>connector-common</artifactId>
+    <name>common</name>
     <packaging>jar</packaging>
     <version>${project.parent.version}</version>
 

+ 4 - 1
connector-common/src/main/java/cz/senslog/connector/config/FileConfigurationServiceImpl.java

@@ -252,8 +252,11 @@ class FileConfigurationServiceImpl extends ConfigurationServiceImpl implements F
                 logger.debug("Getting property 'period' from the connector descriptor '{}'.", descriptorId);
                 Integer period = (Integer) connectorValuesMap.get("period");
 
+                logger.debug("Getting property 'initDelay' from the connector descriptor '{}'.", descriptorId);
+                Integer delay = (Integer) connectorValuesMap.get("initDelay");
+
                 logger.debug("Creating a new ConnectorDescriptor class for the connector descriptor '{}'.", descriptorId);
-                ConnectorDescriptor connDesc = new ConnectorDescriptor(descriptorId, fetchProviderClass, pushProviderClass, period);
+                ConnectorDescriptor connDesc = new ConnectorDescriptor(descriptorId, fetchProviderClass, pushProviderClass, period, delay);
 
                 logger.debug("Saving the connector descriptor '{}'.", descriptorId);
                 addConnectorDescriptor(connDesc);

+ 10 - 1
connector-common/src/main/java/cz/senslog/connector/config/model/ConnectorDescriptor.java

@@ -24,18 +24,23 @@ public class ConnectorDescriptor {
     /** Period for scheduling. */
     private final Integer period;
 
+    /** Initialization delay for scheduling. */
+    private final Integer delay;
+
     /**
      * Constructor sets all attributes.
      * @param name - name of a connector.
      * @param fetcher - class of a fetcher.
      * @param pusher - class of a pusher.
      * @param period - period for scheduling.
+     * @param delay - initialization delay for scheduling.
      */
-    public ConnectorDescriptor(String name, Class<?> fetcher, Class<?> pusher, Integer period) {
+    public ConnectorDescriptor(String name, Class<?> fetcher, Class<?> pusher, Integer period, Integer delay) {
         this.name = name;
         this.fetcher = fetcher;
         this.pusher = pusher;
         this.period = period;
+        this.delay = delay;
     }
 
     public String getName() {
@@ -54,6 +59,10 @@ public class ConnectorDescriptor {
         return period;
     }
 
+    public Integer getDelay() {
+        return delay;
+    }
+
     @Override
     public String toString() {
         return objectToJson(this);

+ 2 - 0
connector-common/src/main/java/cz/senslog/connector/http/HttpCode.java

@@ -4,6 +4,8 @@ public class HttpCode {
 
     public static final int OK = 200;
 
+    public static final int NO_RESULT = 204;
+
     public static final int NO_CONTENT = 204;
 
     public static final int BAD_REQUEST = 400;

+ 2 - 1
connector-common/src/test/java/cz/senslog/connector/config/model/ConnectorDescriptorTest.java

@@ -10,12 +10,13 @@ class ConnectorDescriptorTest {
     @Test
     void toString_ConvertJson_True() {
 
-        String jsonDescriptor = new ConnectorDescriptor("test", ConnectorDescriptorTest.class, ConnectorDescriptorTest.class, 42).toString();
+        String jsonDescriptor = new ConnectorDescriptor("test", ConnectorDescriptorTest.class, ConnectorDescriptorTest.class, 42, 2).toString();
         ConnectorDescriptor descriptor = jsonToObject(jsonDescriptor, ConnectorDescriptor.class);
 
         assertEquals("test", descriptor.getName());
         assertEquals(ConnectorDescriptorTest.class, descriptor.getFetcher());
         assertEquals(ConnectorDescriptorTest.class, descriptor.getPusher());
         assertEquals(42, descriptor.getPeriod());
+        assertEquals(2, descriptor.getDelay());
     }
 }

+ 1 - 0
connector-fetch-api/pom.xml

@@ -10,6 +10,7 @@
     <modelVersion>4.0.0</modelVersion>
 
     <artifactId>connector-fetch-api</artifactId>
+    <name>fetch-api</name>
     <version>${project.parent.version}</version>
     <packaging>jar</packaging>
 

+ 1 - 0
connector-fetch-azure/pom.xml

@@ -10,6 +10,7 @@
     <modelVersion>4.0.0</modelVersion>
 
     <artifactId>connector-fetch-azure</artifactId>
+    <name>fetch-azure</name>
     <version>${project.parent.version}</version>
     <packaging>jar</packaging>
 

+ 39 - 0
connector-fetch-fieldclimate/pom.xml

@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<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">
+    <parent>
+        <artifactId>connectors</artifactId>
+        <groupId>cz.senslog</groupId>
+        <version>1.0-SNAPSHOT</version>
+    </parent>
+    <modelVersion>4.0.0</modelVersion>
+
+    <artifactId>connector-fetch-fieldclimate</artifactId>
+    <name>fetch-fieldclimate</name>
+    <version>${project.parent.version}</version>
+    <packaging>jar</packaging>
+
+    <dependencies>
+        <dependency>
+            <groupId>cz.senslog</groupId>
+            <artifactId>connector-fetch-api</artifactId>
+            <version>${project.parent.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>cz.senslog</groupId>
+            <artifactId>connector-common</artifactId>
+            <version>${project.parent.version}</version>
+        </dependency>
+    </dependencies>
+
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-assembly-plugin</artifactId>
+            </plugin>
+        </plugins>
+    </build>
+
+</project>

+ 19 - 0
connector-fetch-fieldclimate/src/main/java/cz/senslog/connector/fetch/fieldclimate/ConnectorFetchFieldClimateProvider.java

@@ -0,0 +1,19 @@
+package cz.senslog.connector.fetch.fieldclimate;
+
+import cz.senslog.connector.config.model.DefaultConfig;
+import cz.senslog.connector.fetch.api.ConnectorFetchProvider;
+import cz.senslog.connector.fetch.api.ConnectorFetcher;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+
+
+public final class ConnectorFetchFieldClimateProvider implements ConnectorFetchProvider {
+
+    private static Logger logger = LogManager.getLogger(ConnectorFetchFieldClimateProvider.class);
+
+    @Override
+    public ConnectorFetcher createFetcher(DefaultConfig config) {
+        logger.info("Initialization a new fetch provider {}.", ConnectorFetchFieldClimateProvider.class);
+        return new FieldClimateFetcher();
+    }
+}

+ 17 - 0
connector-fetch-fieldclimate/src/main/java/cz/senslog/connector/fetch/fieldclimate/FieldClimateFetcher.java

@@ -0,0 +1,17 @@
+package cz.senslog.connector.fetch.fieldclimate;
+
+import cz.senslog.connector.fetch.api.ConnectorFetcher;
+import cz.senslog.connector.model.fieldclimate.FieldClimateModel;
+
+import static java.time.LocalDateTime.MIN;
+
+public class FieldClimateFetcher implements ConnectorFetcher<FieldClimateModel> {
+
+    @Override
+    public void init() {}
+
+    @Override
+    public FieldClimateModel fetch() {
+        return new FieldClimateModel(MIN, MIN);
+    }
+}

+ 1 - 0
connector-fetch-fieldclimate/src/main/resources/META-INF/services/cz.senslog.connector.fetch.api.ConnectorFetchProvider

@@ -0,0 +1 @@
+cz.senslog.connector.fetch.fieldclimate.ConnectorFetchFieldClimateProvider

+ 1 - 0
connector-model/pom.xml

@@ -10,6 +10,7 @@
     <modelVersion>4.0.0</modelVersion>
 
     <artifactId>connector-model</artifactId>
+    <name>model</name>
     <version>${project.parent.version}</version>
 
     <dependencies>

+ 15 - 0
connector-model/src/main/java/cz/senslog/connector/model/converter/FieldClimateModelSenslogV2ModelConverter.java

@@ -0,0 +1,15 @@
+package cz.senslog.connector.model.converter;
+
+import cz.senslog.connector.model.api.Converter;
+import cz.senslog.connector.model.fieldclimate.FieldClimateModel;
+import cz.senslog.connector.model.v2.SenslogV2Model;
+
+import java.util.Collections;
+
+public class FieldClimateModelSenslogV2ModelConverter implements Converter<FieldClimateModel, SenslogV2Model> {
+
+    @Override
+    public SenslogV2Model convert(FieldClimateModel model) {
+        return new SenslogV2Model(Collections.emptyList(), model.getFrom(), model.getTo());
+    }
+}

+ 1 - 0
connector-model/src/main/java/cz/senslog/connector/model/converter/ModelConverterProvider.java

@@ -19,5 +19,6 @@ public class ModelConverterProvider extends ConverterProvider {
     protected void config() {
         register(AzureModelSenslogV1ModelConverter.class);
         register(AzureModelSenslogV2ModelConverter.class);
+        register(FieldClimateModelSenslogV2ModelConverter.class);
     }
 }

+ 12 - 0
connector-model/src/main/java/cz/senslog/connector/model/fieldclimate/FieldClimateModel.java

@@ -0,0 +1,12 @@
+package cz.senslog.connector.model.fieldclimate;
+
+import cz.senslog.connector.model.api.AbstractModel;
+
+import java.time.LocalDateTime;
+
+public class FieldClimateModel extends AbstractModel {
+
+    public FieldClimateModel(LocalDateTime from, LocalDateTime to) {
+        super(from, to);
+    }
+}

+ 1 - 0
connector-push-api/pom.xml

@@ -10,6 +10,7 @@
     <modelVersion>4.0.0</modelVersion>
 
     <artifactId>connector-push-api</artifactId>
+    <name>push-api</name>
     <version>${project.parent.version}</version>
     <packaging>jar</packaging>
 

+ 2 - 1
connector-push-rest-senslog-v1/pom.xml

@@ -9,7 +9,8 @@
     </parent>
     <modelVersion>4.0.0</modelVersion>
 
-    <artifactId>connector-push-v1</artifactId>
+    <artifactId>connector-push-senslog-v1</artifactId>
+    <name>push-senslog-v1</name>
     <version>${project.parent.version}</version>
     <packaging>jar</packaging>
 

+ 2 - 1
connector-push-rest-senslog-v2/pom.xml

@@ -9,7 +9,8 @@
     </parent>
     <modelVersion>4.0.0</modelVersion>
 
-    <artifactId>connector-push-v2</artifactId>
+    <artifactId>connector-push-senslog-v2</artifactId>
+    <name>push-senslog-v2</name>
     <version>${project.parent.version}</version>
     <packaging>jar</packaging>
 

+ 28 - 0
docker-compose.yaml

@@ -0,0 +1,28 @@
+version: '3.7'
+
+services:
+
+  lws1:
+    container_name: loraWanSenslog1
+    build:
+      dockerfile: Dockerfile
+      context: .
+      args:
+        MAVEN_PROFILE: LoraWanSenslog1
+    restart: always
+    environment:
+      APP_PARAMS: -cf config/lorawanSenslog1.yaml
+
+  fcs2:
+    container_name: fieldclimateSenslog2
+    build:
+      dockerfile: Dockerfile
+      context: .
+      args:
+         MAVEN_PROFILE: FieldClimateSenslog2
+    ports:
+      - "5005:5005"
+    restart: always
+    environment:
+        APP_PARAMS: -cf config/test.yaml
+        DEBUG: "true"

+ 39 - 3
pom.xml

@@ -11,10 +11,46 @@
     <version>1.0-SNAPSHOT</version>
     <name>General Senslog Connector</name>
 
+    <profiles>
+        <profile>
+            <id>LoraWanSenslog1</id>
+            <modules>
+                <module>connector-fetch-azure</module>
+                <module>connector-push-rest-senslog-v1</module>
+            </modules>
+        </profile>
+
+        <profile>
+            <id>LoraWanSenslog2</id>
+            <modules>
+                <module>connector-fetch-azure</module>
+                <module>connector-push-rest-senslog-v2</module>
+            </modules>
+        </profile>
+
+        <profile>
+            <id>FieldClimateSenslog2</id>
+            <modules>
+                <module>connector-fetch-fieldclimate</module>
+                <module>connector-push-rest-senslog-v2</module>
+            </modules>
+        </profile>
+
+        <profile>
+            <id>all</id>
+            <activation>
+                <activeByDefault>true</activeByDefault>
+            </activation>
+            <modules>
+                <module>connector-fetch-azure</module>
+                <module>connector-push-rest-senslog-v1</module>
+                <module>connector-push-rest-senslog-v2</module>
+                <module>connector-fetch-fieldclimate</module>
+            </modules>
+        </profile>
+    </profiles>
+
     <modules>
-        <module>connector-fetch-azure</module>
-        <module>connector-push-rest-senslog-v1</module>
-        <module>connector-push-rest-senslog-v2</module>
         <module>connector-fetch-api</module>
         <module>connector-app</module>
         <module>connector-common</module>