From 613ebc9065834eec62938d2555089584eceef2d6 Mon Sep 17 00:00:00 2001 From: volodymyr-babak Date: Thu, 1 Jun 2017 16:50:37 +0300 Subject: [PATCH] Fixed header and tests --- application/src/main/resources/thingsboard.yml | 9 ++++++--- .../test/resources/thingsboard-test.properties | 4 +++- .../server/dao/sql/JpaAbstractDao.java | 3 ++- .../server/dao/sql/alarm/JpaAlarmDao.java | 1 - .../server/dao/sql/asset/JpaAssetDao.java | 3 --- .../dao/sql/attributes/JpaAttributesDao.java | 15 +++++++++++++++ .../server/dao/sql/device/DeviceRepository.java | 6 +++++- .../server/dao/sql/device/JpaDeviceDao.java | 13 +++---------- .../dao/sql/timeseries/JpaTimeseriesDao.java | 15 +++++++++++++++ dao/src/main/resources/postgres/schema.sql | 1 + pom.xml | 1 + 11 files changed, 51 insertions(+), 20 deletions(-) diff --git a/application/src/main/resources/thingsboard.yml b/application/src/main/resources/thingsboard.yml index 208d9ab053..855e9c86b0 100644 --- a/application/src/main/resources/thingsboard.yml +++ b/application/src/main/resources/thingsboard.yml @@ -107,7 +107,7 @@ coap: # Cassandra driver configuration parameters cassandra: - enabled: "${CASSANDRA_ENABLED:false}" + enabled: "${CASSANDRA_ENABLED:true}" # Thingsboard cluster name cluster_name: "${CASSANDRA_CLUSTER_NAME:Thingsboard Cluster}" # Thingsboard keyspace name @@ -226,7 +226,7 @@ spring.mvc.cors: # SQL DAO Configuration sql: - enabled: "${SQL_ENABLED:true}" + enabled: "${SQL_ENABLED:false}" spring: data: @@ -243,4 +243,7 @@ spring: driverClassName: "${SPRING_DRIVER_CLASS_NAME:org.postgresql.Driver}" url: "${SPRING_DATASOURCE_URL:jdbc:postgresql://localhost:5432/thingsboard}" username: "${SPRING_DATASOURCE_USERNAME:postgres}" - password: "${SPRING_DATASOURCE_PASSWORD:postgres}" \ No newline at end of file + password: "${SPRING_DATASOURCE_PASSWORD:postgres}" + autoconfigure: + exclude: + - org.springframework.boot.autoconfigure.orm.jpa.HibernateJpaAutoConfiguration \ No newline at end of file diff --git a/application/src/test/resources/thingsboard-test.properties b/application/src/test/resources/thingsboard-test.properties index 203f23972a..983da30de4 100644 --- a/application/src/test/resources/thingsboard-test.properties +++ b/application/src/test/resources/thingsboard-test.properties @@ -1 +1,3 @@ -updates.enabled=false \ No newline at end of file +updates.enabled=false +cassandra.enabled=true +sql.enabled=false \ No newline at end of file diff --git a/dao/src/main/java/org/thingsboard/server/dao/sql/JpaAbstractDao.java b/dao/src/main/java/org/thingsboard/server/dao/sql/JpaAbstractDao.java index 756e096e8c..3e893a282e 100644 --- a/dao/src/main/java/org/thingsboard/server/dao/sql/JpaAbstractDao.java +++ b/dao/src/main/java/org/thingsboard/server/dao/sql/JpaAbstractDao.java @@ -48,6 +48,8 @@ public abstract class JpaAbstractDao, D> implements Dao< return false; } + protected ListeningExecutorService service = MoreExecutors.listeningDecorator(Executors.newFixedThreadPool(10)); + @Override @Transactional(propagation = REQUIRES_NEW) public D save(D domain) { @@ -80,7 +82,6 @@ public abstract class JpaAbstractDao, D> implements Dao< @Override public ListenableFuture findByIdAsync(UUID key) { log.debug("Get entity by key async {}", key); - ListeningExecutorService service = MoreExecutors.listeningDecorator(Executors.newFixedThreadPool(10)); ListenableFuture listenableFuture = service.submit(() -> DaoUtil.getData(getCrudRepository().findOne(key))); return listenableFuture; } diff --git a/dao/src/main/java/org/thingsboard/server/dao/sql/alarm/JpaAlarmDao.java b/dao/src/main/java/org/thingsboard/server/dao/sql/alarm/JpaAlarmDao.java index a452fede57..a88341b009 100644 --- a/dao/src/main/java/org/thingsboard/server/dao/sql/alarm/JpaAlarmDao.java +++ b/dao/src/main/java/org/thingsboard/server/dao/sql/alarm/JpaAlarmDao.java @@ -70,7 +70,6 @@ public class JpaAlarmDao extends JpaAbstractDao implements A @Override @Transactional(propagation = REQUIRES_NEW) public ListenableFuture findLatestByOriginatorAndType(TenantId tenantId, EntityId originator, String type) { - ListeningExecutorService service = MoreExecutors.listeningDecorator(Executors.newFixedThreadPool(10)); return service.submit(() -> DaoUtil.getData( alarmRepository.findLatestByOriginatorAndType(tenantId.getId(), originator.getId(), originator.getEntityType().ordinal(), type))); diff --git a/dao/src/main/java/org/thingsboard/server/dao/sql/asset/JpaAssetDao.java b/dao/src/main/java/org/thingsboard/server/dao/sql/asset/JpaAssetDao.java index 47b2ab1c5e..f7af996f18 100644 --- a/dao/src/main/java/org/thingsboard/server/dao/sql/asset/JpaAssetDao.java +++ b/dao/src/main/java/org/thingsboard/server/dao/sql/asset/JpaAssetDao.java @@ -68,7 +68,6 @@ public class JpaAssetDao extends JpaAbstractSearchTextDao im @Override public ListenableFuture> findAssetsByTenantIdAndIdsAsync(UUID tenantId, List assetIds) { - ListeningExecutorService service = MoreExecutors.listeningDecorator(Executors.newFixedThreadPool(10)); return service.submit(() -> DaoUtil.convertDataList(assetRepository.findByTenantIdAndIdIn(tenantId, assetIds))); } @@ -86,7 +85,6 @@ public class JpaAssetDao extends JpaAbstractSearchTextDao im @Override public ListenableFuture> findAssetsByTenantIdAndCustomerIdAndIdsAsync(UUID tenantId, UUID customerId, List assetIds) { - ListeningExecutorService service = MoreExecutors.listeningDecorator(Executors.newFixedThreadPool(10)); return service.submit(() -> DaoUtil.convertDataList( assetRepository.findByTenantIdAndCustomerIdAndIdIn(tenantId, customerId, assetIds))); } @@ -115,7 +113,6 @@ public class JpaAssetDao extends JpaAbstractSearchTextDao im @Override public ListenableFuture> findTenantAssetTypesAsync() { - ListeningExecutorService service = MoreExecutors.listeningDecorator(Executors.newFixedThreadPool(10)); return service.submit(() -> assetRepository.findTenantAssetTypes()); } } diff --git a/dao/src/main/java/org/thingsboard/server/dao/sql/attributes/JpaAttributesDao.java b/dao/src/main/java/org/thingsboard/server/dao/sql/attributes/JpaAttributesDao.java index d4f1caa369..eb4a639a99 100644 --- a/dao/src/main/java/org/thingsboard/server/dao/sql/attributes/JpaAttributesDao.java +++ b/dao/src/main/java/org/thingsboard/server/dao/sql/attributes/JpaAttributesDao.java @@ -1,3 +1,18 @@ +/** + * 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.dao.sql.attributes; import com.datastax.driver.core.ResultSet; diff --git a/dao/src/main/java/org/thingsboard/server/dao/sql/device/DeviceRepository.java b/dao/src/main/java/org/thingsboard/server/dao/sql/device/DeviceRepository.java index 5a43f8e9c9..dde7fafca1 100644 --- a/dao/src/main/java/org/thingsboard/server/dao/sql/device/DeviceRepository.java +++ b/dao/src/main/java/org/thingsboard/server/dao/sql/device/DeviceRepository.java @@ -5,7 +5,7 @@ * 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 + * 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, @@ -19,6 +19,7 @@ import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.data.jpa.repository.Query; import org.springframework.data.repository.CrudRepository; import org.springframework.data.repository.query.Param; +import org.thingsboard.server.common.data.TenantDeviceType; import org.thingsboard.server.dao.model.sql.DeviceEntity; import java.util.List; @@ -71,6 +72,9 @@ public interface DeviceRepository extends CrudRepository { @Param("textSearch") String textSearch, @Param("idOffset") UUID idOffset); + @Query(nativeQuery = true, value = "SELECT DISTINCT TYPE, TENANT_ID FROM DEVICE") + List findTenantDeviceTypes(); + DeviceEntity findByTenantIdAndName(UUID tenantId, String name); List findDevicesByTenantIdAndCustomerIdAndIdIn(UUID tenantId, UUID customerId, List deviceIds); diff --git a/dao/src/main/java/org/thingsboard/server/dao/sql/device/JpaDeviceDao.java b/dao/src/main/java/org/thingsboard/server/dao/sql/device/JpaDeviceDao.java index 665be77eb8..cc16dbcda1 100644 --- a/dao/src/main/java/org/thingsboard/server/dao/sql/device/JpaDeviceDao.java +++ b/dao/src/main/java/org/thingsboard/server/dao/sql/device/JpaDeviceDao.java @@ -5,7 +5,7 @@ * 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 + * 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, @@ -16,8 +16,6 @@ package org.thingsboard.server.dao.sql.device; import com.google.common.util.concurrent.ListenableFuture; -import com.google.common.util.concurrent.ListeningExecutorService; -import com.google.common.util.concurrent.MoreExecutors; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.data.repository.CrudRepository; @@ -33,7 +31,6 @@ import org.thingsboard.server.dao.sql.JpaAbstractSearchTextDao; import java.util.List; import java.util.Optional; import java.util.UUID; -import java.util.concurrent.Executors; import static org.thingsboard.server.dao.model.ModelConstants.NULL_UUID; @@ -45,7 +42,7 @@ import static org.thingsboard.server.dao.model.ModelConstants.NULL_UUID; public class JpaDeviceDao extends JpaAbstractSearchTextDao implements DeviceDao { @Autowired - DeviceRepository deviceRepository; + private DeviceRepository deviceRepository; @Override protected Class getEntityClass() { @@ -70,8 +67,6 @@ public class JpaDeviceDao extends JpaAbstractSearchTextDao @Override public ListenableFuture> findDevicesByTenantIdAndIdsAsync(UUID tenantId, List deviceIds) { - System.out.println(deviceRepository.findDevicesByTenantIdAndIdIn(tenantId, deviceIds).size()); - ListeningExecutorService service = MoreExecutors.listeningDecorator(Executors.newFixedThreadPool(10)); return service.submit(() -> DaoUtil.convertDataList(deviceRepository.findDevicesByTenantIdAndIdIn(tenantId, deviceIds))); } @@ -89,7 +84,6 @@ public class JpaDeviceDao extends JpaAbstractSearchTextDao @Override public ListenableFuture> findDevicesByTenantIdCustomerIdAndIdsAsync(UUID tenantId, UUID customerId, List deviceIds) { - ListeningExecutorService service = MoreExecutors.listeningDecorator(Executors.newFixedThreadPool(10)); return service.submit(() -> DaoUtil.convertDataList( deviceRepository.findDevicesByTenantIdAndCustomerIdAndIdIn(tenantId, customerId, deviceIds))); } @@ -127,7 +121,6 @@ public class JpaDeviceDao extends JpaAbstractSearchTextDao @Override public ListenableFuture> findTenantDeviceTypesAsync() { - //TODO - return null; + return service.submit(() -> deviceRepository.findTenantDeviceTypes()); } } diff --git a/dao/src/main/java/org/thingsboard/server/dao/sql/timeseries/JpaTimeseriesDao.java b/dao/src/main/java/org/thingsboard/server/dao/sql/timeseries/JpaTimeseriesDao.java index e114d3dccd..8590876029 100644 --- a/dao/src/main/java/org/thingsboard/server/dao/sql/timeseries/JpaTimeseriesDao.java +++ b/dao/src/main/java/org/thingsboard/server/dao/sql/timeseries/JpaTimeseriesDao.java @@ -1,3 +1,18 @@ +/** + * 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.dao.sql.timeseries; import com.datastax.driver.core.ResultSetFuture; diff --git a/dao/src/main/resources/postgres/schema.sql b/dao/src/main/resources/postgres/schema.sql index 96d0b8f863..3a2891a49e 100644 --- a/dao/src/main/resources/postgres/schema.sql +++ b/dao/src/main/resources/postgres/schema.sql @@ -13,6 +13,7 @@ -- See the License for the specific language governing permissions and -- limitations under the License. -- + SET statement_timeout = 0; SET lock_timeout = 0; SET idle_in_transaction_session_timeout = 0; diff --git a/pom.xml b/pom.xml index 5f87e1a1a1..d09e4ca517 100755 --- a/pom.xml +++ b/pom.xml @@ -455,6 +455,7 @@ com.github.springtestdbunit spring-test-dbunit ${spring-test-dbunit.version} + test io.jsonwebtoken