thingsboard-developers
Changes
application/src/main/java/org/thingsboard/server/service/install/CassandraDatabaseSchemaService.java 59(+59 -0)
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:
+
+ }
+
+}