From 90e0d8965bc9b2d8886a6a9dbc87269dae4b02a0 Mon Sep 17 00:00:00 2001 From: hagaic Date: Wed, 22 Aug 2018 04:27:12 +0300 Subject: [PATCH] install hybrid db schema (simplified) --- .../install/ThingsboardInstallService.java | 16 +++++-- ...assandraAbstractDatabaseSchemaService.java | 4 +- .../CassandraDatabaseSchemaService.java | 43 ------------------ .../CassandraEntityDatabaseSchemaService.java | 5 ++- .../CassandraTsDatabaseSchemaService.java | 5 ++- .../install/EntityDatabaseSchemaService.java | 4 ++ .../install/HybridDatabaseSchemaService.java | 44 ------------------- .../SqlAbstractDatabaseSchemaService.java | 4 +- .../install/SqlDatabaseSchemaService.java | 44 ------------------- .../SqlEntityDatabaseSchemaService.java | 5 ++- .../install/SqlTsDatabaseSchemaService.java | 5 ++- .../install/TsDatabaseSchemaService.java | 4 ++ 12 files changed, 40 insertions(+), 143 deletions(-) delete mode 100644 application/src/main/java/org/thingsboard/server/service/install/CassandraDatabaseSchemaService.java create mode 100644 application/src/main/java/org/thingsboard/server/service/install/EntityDatabaseSchemaService.java delete mode 100644 application/src/main/java/org/thingsboard/server/service/install/HybridDatabaseSchemaService.java delete mode 100644 application/src/main/java/org/thingsboard/server/service/install/SqlDatabaseSchemaService.java create mode 100644 application/src/main/java/org/thingsboard/server/service/install/TsDatabaseSchemaService.java 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 f863d0bb2a..2a55abff65 100644 --- a/application/src/main/java/org/thingsboard/server/install/ThingsboardInstallService.java +++ b/application/src/main/java/org/thingsboard/server/install/ThingsboardInstallService.java @@ -24,9 +24,10 @@ import org.springframework.context.annotation.Profile; import org.springframework.stereotype.Service; import org.thingsboard.server.service.component.ComponentDiscoveryService; import org.thingsboard.server.service.install.DataUpdateService; -import org.thingsboard.server.service.install.DatabaseSchemaService; import org.thingsboard.server.service.install.DatabaseUpgradeService; +import org.thingsboard.server.service.install.EntityDatabaseSchemaService; import org.thingsboard.server.service.install.SystemDataLoaderService; +import org.thingsboard.server.service.install.TsDatabaseSchemaService; @Service @Profile("install") @@ -43,7 +44,10 @@ public class ThingsboardInstallService { private Boolean loadDemo; @Autowired - private DatabaseSchemaService databaseSchemaService; + private EntityDatabaseSchemaService entityDatabaseSchemaService; + + @Autowired + private TsDatabaseSchemaService tsDatabaseSchemaService; @Autowired private DatabaseUpgradeService databaseUpgradeService; @@ -114,9 +118,13 @@ public class ThingsboardInstallService { log.info("Starting ThingsBoard Installation..."); - log.info("Installing DataBase schema..."); + log.info("Installing DataBase schema for entities..."); + + entityDatabaseSchemaService.createDatabaseSchema(); + + log.info("Installing DataBase schema for timeseries..."); - databaseSchemaService.createDatabaseSchema(); + tsDatabaseSchemaService.createDatabaseSchema(); log.info("Loading system data..."); diff --git a/application/src/main/java/org/thingsboard/server/service/install/CassandraAbstractDatabaseSchemaService.java b/application/src/main/java/org/thingsboard/server/service/install/CassandraAbstractDatabaseSchemaService.java index d8d47444e5..10559ba2d2 100644 --- a/application/src/main/java/org/thingsboard/server/service/install/CassandraAbstractDatabaseSchemaService.java +++ b/application/src/main/java/org/thingsboard/server/service/install/CassandraAbstractDatabaseSchemaService.java @@ -25,7 +25,7 @@ import java.nio.file.Paths; import java.util.List; @Slf4j -public abstract class CassandraAbstractDatabaseSchemaService /*implements DatabaseSchemaService*/ { +public abstract class CassandraAbstractDatabaseSchemaService implements DatabaseSchemaService { private static final String CASSANDRA_DIR = "cassandra"; @@ -41,7 +41,7 @@ public abstract class CassandraAbstractDatabaseSchemaService /*implements Databa this.schemaCql = schemaCql; } - //@Override + @Override public void createDatabaseSchema() throws Exception { log.info("Installing Cassandra DataBase schema part: " + schemaCql); Path schemaFile = Paths.get(installScripts.getDataDir(), CASSANDRA_DIR, schemaCql); 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 deleted file mode 100644 index 0735a59fca..0000000000 --- a/application/src/main/java/org/thingsboard/server/service/install/CassandraDatabaseSchemaService.java +++ /dev/null @@ -1,43 +0,0 @@ -/** - * Copyright © 2016-2018 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.context.annotation.Profile; -import org.springframework.stereotype.Service; -import org.thingsboard.server.dao.util.NoSqlDao; - -@Service -@NoSqlDao -@Profile("install") -@Slf4j -public class CassandraDatabaseSchemaService implements DatabaseSchemaService { - - @Autowired - private CassandraEntityDatabaseSchemaService cassandraEntityDatabaseSchemaService; - - @Autowired - private CassandraTsDatabaseSchemaService cassandraTsDatabaseSchemaService; - - - @Override - public void createDatabaseSchema() throws Exception { - log.info("Installing Cassandra DataBase schema..."); - cassandraEntityDatabaseSchemaService.createDatabaseSchema(); - cassandraTsDatabaseSchemaService.createDatabaseSchema(); - } -} diff --git a/application/src/main/java/org/thingsboard/server/service/install/CassandraEntityDatabaseSchemaService.java b/application/src/main/java/org/thingsboard/server/service/install/CassandraEntityDatabaseSchemaService.java index 9e4afb1a2a..7937ef23be 100644 --- a/application/src/main/java/org/thingsboard/server/service/install/CassandraEntityDatabaseSchemaService.java +++ b/application/src/main/java/org/thingsboard/server/service/install/CassandraEntityDatabaseSchemaService.java @@ -16,9 +16,12 @@ package org.thingsboard.server.service.install; import org.springframework.stereotype.Service; +import org.thingsboard.server.dao.util.NoSqlDao; @Service -public class CassandraEntityDatabaseSchemaService extends CassandraAbstractDatabaseSchemaService { +@NoSqlDao +public class CassandraEntityDatabaseSchemaService extends CassandraAbstractDatabaseSchemaService + implements EntityDatabaseSchemaService { public CassandraEntityDatabaseSchemaService() { super("schema-entities.cql"); } diff --git a/application/src/main/java/org/thingsboard/server/service/install/CassandraTsDatabaseSchemaService.java b/application/src/main/java/org/thingsboard/server/service/install/CassandraTsDatabaseSchemaService.java index addc180a8a..ba18b57ff1 100644 --- a/application/src/main/java/org/thingsboard/server/service/install/CassandraTsDatabaseSchemaService.java +++ b/application/src/main/java/org/thingsboard/server/service/install/CassandraTsDatabaseSchemaService.java @@ -16,9 +16,12 @@ package org.thingsboard.server.service.install; import org.springframework.stereotype.Service; +import org.thingsboard.server.dao.util.NoSqlTsDao; @Service -public class CassandraTsDatabaseSchemaService extends CassandraAbstractDatabaseSchemaService { +@NoSqlTsDao +public class CassandraTsDatabaseSchemaService extends CassandraAbstractDatabaseSchemaService + implements TsDatabaseSchemaService { public CassandraTsDatabaseSchemaService() { super("schema-ts.cql"); } diff --git a/application/src/main/java/org/thingsboard/server/service/install/EntityDatabaseSchemaService.java b/application/src/main/java/org/thingsboard/server/service/install/EntityDatabaseSchemaService.java new file mode 100644 index 0000000000..1d0ddc34a4 --- /dev/null +++ b/application/src/main/java/org/thingsboard/server/service/install/EntityDatabaseSchemaService.java @@ -0,0 +1,4 @@ +package org.thingsboard.server.service.install; + +public interface EntityDatabaseSchemaService extends DatabaseSchemaService { +} diff --git a/application/src/main/java/org/thingsboard/server/service/install/HybridDatabaseSchemaService.java b/application/src/main/java/org/thingsboard/server/service/install/HybridDatabaseSchemaService.java deleted file mode 100644 index e689c70109..0000000000 --- a/application/src/main/java/org/thingsboard/server/service/install/HybridDatabaseSchemaService.java +++ /dev/null @@ -1,44 +0,0 @@ -/** - * Copyright © 2016-2018 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.context.annotation.Profile; -import org.springframework.stereotype.Service; -import org.thingsboard.server.dao.util.HybridDao; - -@Service -@Profile("install") -@Slf4j -@HybridDao -public class HybridDatabaseSchemaService implements DatabaseSchemaService { - - @Autowired - private SqlEntityDatabaseSchemaService sqlEntityDatabaseSchemaService; - - @Autowired - private CassandraTsDatabaseSchemaService cassandraTsDatabaseSchemaService; - - - @Override - public void createDatabaseSchema() throws Exception { - log.info("Installing Hybrid SQL/Cassandra DataBase schema..."); - sqlEntityDatabaseSchemaService.createDatabaseSchema(); - cassandraTsDatabaseSchemaService.createDatabaseSchema(); - } - -} diff --git a/application/src/main/java/org/thingsboard/server/service/install/SqlAbstractDatabaseSchemaService.java b/application/src/main/java/org/thingsboard/server/service/install/SqlAbstractDatabaseSchemaService.java index f468a6e475..4a39b8f60b 100644 --- a/application/src/main/java/org/thingsboard/server/service/install/SqlAbstractDatabaseSchemaService.java +++ b/application/src/main/java/org/thingsboard/server/service/install/SqlAbstractDatabaseSchemaService.java @@ -27,7 +27,7 @@ import java.sql.Connection; import java.sql.DriverManager; @Slf4j -public abstract class SqlAbstractDatabaseSchemaService /*implements DatabaseSchemaService*/ { +public abstract class SqlAbstractDatabaseSchemaService implements DatabaseSchemaService { private static final String SQL_DIR = "sql"; @@ -49,7 +49,7 @@ public abstract class SqlAbstractDatabaseSchemaService /*implements DatabaseSche this.schemaSql = schemaSql; } - //@Override + @Override public void createDatabaseSchema() throws Exception { log.info("Installing SQL DataBase schema part: " + schemaSql); 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 deleted file mode 100644 index 8544b8bbf2..0000000000 --- a/application/src/main/java/org/thingsboard/server/service/install/SqlDatabaseSchemaService.java +++ /dev/null @@ -1,44 +0,0 @@ -/** - * Copyright © 2016-2018 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.context.annotation.Profile; -import org.springframework.stereotype.Service; -import org.thingsboard.server.dao.util.SqlDao; - -@Service -@Profile("install") -@Slf4j -@SqlDao -public class SqlDatabaseSchemaService implements DatabaseSchemaService { - - @Autowired - private SqlEntityDatabaseSchemaService sqlEntityDatabaseSchemaService; - - @Autowired - private SqlTsDatabaseSchemaService sqlTsDatabaseSchemaService; - - - @Override - public void createDatabaseSchema() throws Exception { - log.info("Installing SQL DataBase schema..."); - sqlEntityDatabaseSchemaService.createDatabaseSchema(); - sqlTsDatabaseSchemaService.createDatabaseSchema(); - } - -} diff --git a/application/src/main/java/org/thingsboard/server/service/install/SqlEntityDatabaseSchemaService.java b/application/src/main/java/org/thingsboard/server/service/install/SqlEntityDatabaseSchemaService.java index 0826099133..16453c6ebb 100644 --- a/application/src/main/java/org/thingsboard/server/service/install/SqlEntityDatabaseSchemaService.java +++ b/application/src/main/java/org/thingsboard/server/service/install/SqlEntityDatabaseSchemaService.java @@ -16,9 +16,12 @@ package org.thingsboard.server.service.install; import org.springframework.stereotype.Service; +import org.thingsboard.server.dao.util.SqlDao; @Service -public class SqlEntityDatabaseSchemaService extends SqlAbstractDatabaseSchemaService { +@SqlDao +public class SqlEntityDatabaseSchemaService extends SqlAbstractDatabaseSchemaService + implements EntityDatabaseSchemaService { public SqlEntityDatabaseSchemaService() { super("schema-entities.sql"); } diff --git a/application/src/main/java/org/thingsboard/server/service/install/SqlTsDatabaseSchemaService.java b/application/src/main/java/org/thingsboard/server/service/install/SqlTsDatabaseSchemaService.java index 6c8f8b5054..82daf904df 100644 --- a/application/src/main/java/org/thingsboard/server/service/install/SqlTsDatabaseSchemaService.java +++ b/application/src/main/java/org/thingsboard/server/service/install/SqlTsDatabaseSchemaService.java @@ -16,9 +16,12 @@ package org.thingsboard.server.service.install; import org.springframework.stereotype.Service; +import org.thingsboard.server.dao.util.SqlTsDao; @Service -public class SqlTsDatabaseSchemaService extends SqlAbstractDatabaseSchemaService { +@SqlTsDao +public class SqlTsDatabaseSchemaService extends SqlAbstractDatabaseSchemaService + implements TsDatabaseSchemaService { public SqlTsDatabaseSchemaService() { super("schema-ts.sql"); } diff --git a/application/src/main/java/org/thingsboard/server/service/install/TsDatabaseSchemaService.java b/application/src/main/java/org/thingsboard/server/service/install/TsDatabaseSchemaService.java new file mode 100644 index 0000000000..d95166feb8 --- /dev/null +++ b/application/src/main/java/org/thingsboard/server/service/install/TsDatabaseSchemaService.java @@ -0,0 +1,4 @@ +package org.thingsboard.server.service.install; + +public interface TsDatabaseSchemaService extends DatabaseSchemaService { +}