thingsboard-developers

Details

diff --git a/application/src/main/java/org/thingsboard/server/install/ThingsboardInstallService.java b/application/src/main/java/org/thingsboard/server/install/ThingsboardInstallService.java
index 2be8342..d14c3b5 100644
--- a/application/src/main/java/org/thingsboard/server/install/ThingsboardInstallService.java
+++ b/application/src/main/java/org/thingsboard/server/install/ThingsboardInstallService.java
@@ -19,30 +19,22 @@ package org.thingsboard.server.install;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
-import org.springframework.boot.ExitCodeGenerator;
 import org.springframework.boot.SpringApplication;
 import org.springframework.context.ApplicationContext;
-import org.springframework.context.annotation.Lazy;
 import org.springframework.context.annotation.Profile;
 import org.springframework.stereotype.Service;
-import org.thingsboard.server.dao.cassandra.CassandraCluster;
-import org.thingsboard.server.dao.cassandra.CassandraInstallCluster;
-import org.thingsboard.server.install.cql.CQLStatementsParser;
 import org.thingsboard.server.service.component.ComponentDiscoveryService;
+import org.thingsboard.server.service.install.DatabaseSchemaService;
 import org.thingsboard.server.service.install.SystemDataLoaderService;
 
 import java.nio.file.Files;
-import java.nio.file.Path;
 import java.nio.file.Paths;
-import java.util.List;
 
 @Service
 @Profile("install")
 @Slf4j
 public class ThingsboardInstallService {
 
-    private static final String SCHEMA_CQL = "schema.cql";
-
     @Value("${install.data_dir}")
     private String dataDir;
 
@@ -50,7 +42,7 @@ public class ThingsboardInstallService {
     private Boolean loadDemo;
 
     @Autowired
-    private CassandraInstallCluster cluster;
+    private DatabaseSchemaService databaseSchemaService;
 
     @Autowired
     private ComponentDiscoveryService componentDiscoveryService;
@@ -74,8 +66,7 @@ public class ThingsboardInstallService {
 
             log.info("Installing DataBase schema...");
 
-            Path schemaFile = Paths.get(this.dataDir, SCHEMA_CQL);
-            loadCql(schemaFile);
+            databaseSchemaService.createDatabaseSchema();
 
             log.info("Loading system data...");
 
@@ -101,9 +92,4 @@ public class ThingsboardInstallService {
         }
     }
 
-    private void loadCql(Path cql) throws Exception {
-        List<String> statements = new CQLStatementsParser(cql).getStatements();
-        statements.forEach(statement -> cluster.getSession().execute(statement));
-    }
-
-}
\ No newline at end of file
+}
diff --git a/application/src/main/java/org/thingsboard/server/service/install/CassandraDatabaseSchemaService.java b/application/src/main/java/org/thingsboard/server/service/install/CassandraDatabaseSchemaService.java
new file mode 100644
index 0000000..f146a27
--- /dev/null
+++ b/application/src/main/java/org/thingsboard/server/service/install/CassandraDatabaseSchemaService.java
@@ -0,0 +1,59 @@
+/**
+ * Copyright © 2016-2017 The Thingsboard Authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.thingsboard.server.service.install;
+
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.context.annotation.Profile;
+import org.springframework.stereotype.Service;
+import org.thingsboard.server.dao.cassandra.CassandraInstallCluster;
+import org.thingsboard.server.dao.util.NoSqlDao;
+import org.thingsboard.server.install.cql.CQLStatementsParser;
+
+import java.nio.file.Path;
+import java.nio.file.Paths;
+import java.util.List;
+
+@Service
+@NoSqlDao
+@Profile("install")
+@Slf4j
+public class CassandraDatabaseSchemaService implements DatabaseSchemaService {
+
+    private static final String SCHEMA_CQL = "schema.cql";
+
+    @Value("${install.data_dir}")
+    private String dataDir;
+
+    @Autowired
+    private CassandraInstallCluster cluster;
+
+    @Override
+    public void createDatabaseSchema() throws Exception {
+        log.info("Installing Cassandra DataBase schema...");
+
+        Path schemaFile = Paths.get(this.dataDir, SCHEMA_CQL);
+        loadCql(schemaFile);
+
+    }
+
+    private void loadCql(Path cql) throws Exception {
+        List<String> statements = new CQLStatementsParser(cql).getStatements();
+        statements.forEach(statement -> cluster.getSession().execute(statement));
+    }
+}
diff --git a/application/src/main/java/org/thingsboard/server/service/install/DatabaseSchemaService.java b/application/src/main/java/org/thingsboard/server/service/install/DatabaseSchemaService.java
new file mode 100644
index 0000000..c852ffd
--- /dev/null
+++ b/application/src/main/java/org/thingsboard/server/service/install/DatabaseSchemaService.java
@@ -0,0 +1,22 @@
+/**
+ * Copyright © 2016-2017 The Thingsboard Authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.thingsboard.server.service.install;
+
+public interface DatabaseSchemaService {
+
+    void createDatabaseSchema() throws Exception;
+
+}
diff --git a/application/src/main/java/org/thingsboard/server/service/install/SqlDatabaseSchemaService.java b/application/src/main/java/org/thingsboard/server/service/install/SqlDatabaseSchemaService.java
new file mode 100644
index 0000000..f5fad09
--- /dev/null
+++ b/application/src/main/java/org/thingsboard/server/service/install/SqlDatabaseSchemaService.java
@@ -0,0 +1,40 @@
+/**
+ * Copyright © 2016-2017 The Thingsboard Authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.thingsboard.server.service.install;
+
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.context.annotation.Profile;
+import org.springframework.stereotype.Service;
+
+@Service
+@Profile("install")
+@Slf4j
+public class SqlDatabaseSchemaService implements DatabaseSchemaService {
+
+    @Value("${install.data_dir}")
+    private String dataDir;
+
+    @Override
+    public void createDatabaseSchema() throws Exception {
+
+        log.info("Installing SQL DataBase schema...");
+        //TODO:
+
+    }
+
+}