diff --git a/application/src/main/java/org/thingsboard/server/actors/plugin/PluginProcessingContext.java b/application/src/main/java/org/thingsboard/server/actors/plugin/PluginProcessingContext.java
index 876b52535b..ed75b10bc7 100644
--- a/application/src/main/java/org/thingsboard/server/actors/plugin/PluginProcessingContext.java
+++ b/application/src/main/java/org/thingsboard/server/actors/plugin/PluginProcessingContext.java
@@ -15,16 +15,7 @@
*/
package org.thingsboard.server.actors.plugin;
-import java.io.IOException;
-import java.util.*;
-import java.util.concurrent.ExecutionException;
-import java.util.concurrent.Executor;
-import java.util.concurrent.Executors;
-import java.util.stream.Collectors;
-
-import com.datastax.driver.core.ResultSet;
-import com.datastax.driver.core.ResultSetFuture;
-import com.datastax.driver.core.Row;
+import akka.actor.ActorRef;
import com.google.common.base.Function;
import com.google.common.util.concurrent.FutureCallback;
import com.google.common.util.concurrent.Futures;
@@ -32,18 +23,20 @@ import com.google.common.util.concurrent.ListenableFuture;
import lombok.extern.slf4j.Slf4j;
import org.thingsboard.server.common.data.DataConstants;
import org.thingsboard.server.common.data.Device;
-import org.thingsboard.server.common.data.id.*;
+import org.thingsboard.server.common.data.id.CustomerId;
+import org.thingsboard.server.common.data.id.DeviceId;
+import org.thingsboard.server.common.data.id.PluginId;
+import org.thingsboard.server.common.data.id.TenantId;
import org.thingsboard.server.common.data.kv.AttributeKey;
import org.thingsboard.server.common.data.kv.AttributeKvEntry;
import org.thingsboard.server.common.data.kv.TsKvEntry;
import org.thingsboard.server.common.data.kv.TsKvQuery;
-import org.thingsboard.server.common.data.page.TextPageData;
import org.thingsboard.server.common.data.page.TextPageLink;
import org.thingsboard.server.common.msg.cluster.ServerAddress;
import org.thingsboard.server.extensions.api.device.DeviceAttributesEventNotificationMsg;
import org.thingsboard.server.extensions.api.plugins.PluginApiCallSecurityContext;
-import org.thingsboard.server.extensions.api.plugins.PluginContext;
import org.thingsboard.server.extensions.api.plugins.PluginCallback;
+import org.thingsboard.server.extensions.api.plugins.PluginContext;
import org.thingsboard.server.extensions.api.plugins.msg.PluginToRuleMsg;
import org.thingsboard.server.extensions.api.plugins.msg.TimeoutMsg;
import org.thingsboard.server.extensions.api.plugins.msg.ToDeviceRpcRequest;
@@ -52,10 +45,12 @@ import org.thingsboard.server.extensions.api.plugins.rpc.RpcMsg;
import org.thingsboard.server.extensions.api.plugins.ws.PluginWebsocketSessionRef;
import org.thingsboard.server.extensions.api.plugins.ws.msg.PluginWebsocketMsg;
-import akka.actor.ActorRef;
-import org.w3c.dom.Attr;
-
import javax.annotation.Nullable;
+import java.io.IOException;
+import java.util.*;
+import java.util.concurrent.Executor;
+import java.util.concurrent.Executors;
+import java.util.stream.Collectors;
@Slf4j
public final class PluginProcessingContext implements PluginContext {
diff --git a/application/src/main/java/org/thingsboard/server/controller/BaseController.java b/application/src/main/java/org/thingsboard/server/controller/BaseController.java
index 1b6696fd68..034206f73e 100644
--- a/application/src/main/java/org/thingsboard/server/controller/BaseController.java
+++ b/application/src/main/java/org/thingsboard/server/controller/BaseController.java
@@ -15,8 +15,6 @@
*/
package org.thingsboard.server.controller;
-import com.fasterxml.jackson.databind.JsonNode;
-import com.fasterxml.jackson.databind.ObjectMapper;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
diff --git a/application/src/main/java/org/thingsboard/server/controller/DeviceController.java b/application/src/main/java/org/thingsboard/server/controller/DeviceController.java
index b08a9640a7..3df1baef36 100644
--- a/application/src/main/java/org/thingsboard/server/controller/DeviceController.java
+++ b/application/src/main/java/org/thingsboard/server/controller/DeviceController.java
@@ -23,19 +23,16 @@ import org.thingsboard.server.common.data.Device;
import org.thingsboard.server.common.data.id.CustomerId;
import org.thingsboard.server.common.data.id.DeviceId;
import org.thingsboard.server.common.data.id.TenantId;
-import org.thingsboard.server.common.data.id.UUIDBased;
import org.thingsboard.server.common.data.page.TextPageData;
import org.thingsboard.server.common.data.page.TextPageLink;
import org.thingsboard.server.common.data.security.DeviceCredentials;
import org.thingsboard.server.dao.exception.IncorrectParameterException;
import org.thingsboard.server.dao.model.ModelConstants;
import org.thingsboard.server.exception.ThingsboardException;
-import org.thingsboard.server.extensions.api.device.DeviceCredentialsUpdateNotificationMsg;
import org.thingsboard.server.service.security.model.SecurityUser;
import java.util.ArrayList;
import java.util.List;
-import java.util.UUID;
@RestController
@RequestMapping("/api")
diff --git a/application/src/main/java/org/thingsboard/server/controller/PluginController.java b/application/src/main/java/org/thingsboard/server/controller/PluginController.java
index 513266400e..5dd14ccf15 100644
--- a/application/src/main/java/org/thingsboard/server/controller/PluginController.java
+++ b/application/src/main/java/org/thingsboard/server/controller/PluginController.java
@@ -25,7 +25,6 @@ import org.thingsboard.server.common.data.page.TextPageLink;
import org.thingsboard.server.common.data.plugin.ComponentLifecycleEvent;
import org.thingsboard.server.common.data.plugin.PluginMetaData;
import org.thingsboard.server.common.data.security.Authority;
-import org.thingsboard.server.common.data.widget.WidgetsBundle;
import org.thingsboard.server.dao.model.ModelConstants;
import org.thingsboard.server.exception.ThingsboardException;
diff --git a/application/src/main/resources/thingsboard.yml b/application/src/main/resources/thingsboard.yml
index 778406aadf..8766e5711e 100644
--- a/application/src/main/resources/thingsboard.yml
+++ b/application/src/main/resources/thingsboard.yml
@@ -188,3 +188,15 @@ cache:
updates:
# Enable/disable updates checking.
enabled: "${UPDATES_ENABLED:true}"
+
+cassandra:
+ enabled: "${CASSANDRA_ENABLED:true}"
+
+# SQL DAO Configuration
+
+sql:
+ enabled: "${SQL_ENABLED:false}"
+ datasource:
+ url: "${SQL_DATASOURCE_URL:jdbc:postgresql://localhost:5432/thingsboard}"
+ username: "${SQL_DATASOURCE_USERNAME:postgres}"
+ password: "${SQL_DATASOURCE_PASSWORD:postgres}"
diff --git a/application/src/test/java/org/thingsboard/server/controller/DashboardControllerTest.java b/application/src/test/java/org/thingsboard/server/controller/DashboardControllerTest.java
index e6eb243db2..329b42d152 100644
--- a/application/src/test/java/org/thingsboard/server/controller/DashboardControllerTest.java
+++ b/application/src/test/java/org/thingsboard/server/controller/DashboardControllerTest.java
@@ -35,7 +35,6 @@ import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
-import com.datastax.driver.core.utils.UUIDs;
import com.fasterxml.jackson.core.type.TypeReference;
public class DashboardControllerTest extends AbstractControllerTest {
diff --git a/application/src/test/java/org/thingsboard/server/controller/DeviceControllerTest.java b/application/src/test/java/org/thingsboard/server/controller/DeviceControllerTest.java
index 69bb761c97..0f2fa12135 100644
--- a/application/src/test/java/org/thingsboard/server/controller/DeviceControllerTest.java
+++ b/application/src/test/java/org/thingsboard/server/controller/DeviceControllerTest.java
@@ -42,7 +42,6 @@ import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
-import com.datastax.driver.core.utils.UUIDs;
import com.fasterxml.jackson.core.type.TypeReference;
public class DeviceControllerTest extends AbstractControllerTest {
diff --git a/common/data/src/main/java/org/thingsboard/server/common/data/rule/RuleMetaData.java b/common/data/src/main/java/org/thingsboard/server/common/data/rule/RuleMetaData.java
index ecbc86cd6e..ececfdd72c 100644
--- a/common/data/src/main/java/org/thingsboard/server/common/data/rule/RuleMetaData.java
+++ b/common/data/src/main/java/org/thingsboard/server/common/data/rule/RuleMetaData.java
@@ -15,14 +15,11 @@
*/
package org.thingsboard.server.common.data.rule;
+import com.fasterxml.jackson.databind.JsonNode;
import lombok.Data;
-import lombok.ToString;
import org.thingsboard.server.common.data.SearchTextBased;
-import org.thingsboard.server.common.data.id.CustomerId;
import org.thingsboard.server.common.data.id.RuleId;
import org.thingsboard.server.common.data.id.TenantId;
-
-import com.fasterxml.jackson.databind.JsonNode;
import org.thingsboard.server.common.data.plugin.ComponentLifecycleState;
@Data
diff --git a/dao/pom.xml b/dao/pom.xml
index 146b8c197e..977be95f95 100644
--- a/dao/pom.xml
+++ b/dao/pom.xml
@@ -150,6 +150,10 @@
org.bouncycastle
bcprov-jdk15on
+
+ org.springframework.boot
+ spring-boot-starter-data-jpa
+
diff --git a/dao/src/main/java/org/thingsboard/server/dao/AbstractAsyncDao.java b/dao/src/main/java/org/thingsboard/server/dao/CassandraAbstractAsyncDao.java
similarity index 93%
rename from dao/src/main/java/org/thingsboard/server/dao/AbstractAsyncDao.java
rename to dao/src/main/java/org/thingsboard/server/dao/CassandraAbstractAsyncDao.java
index 9b9368d45d..f241f2ca8b 100644
--- a/dao/src/main/java/org/thingsboard/server/dao/AbstractAsyncDao.java
+++ b/dao/src/main/java/org/thingsboard/server/dao/CassandraAbstractAsyncDao.java
@@ -23,7 +23,7 @@ import java.util.concurrent.Executors;
/**
* Created by ashvayka on 21.02.17.
*/
-public abstract class AbstractAsyncDao extends AbstractDao {
+public abstract class CassandraAbstractAsyncDao extends CassandraAbstractDao {
protected ExecutorService readResultsProcessingExecutor;
diff --git a/dao/src/main/java/org/thingsboard/server/dao/AbstractDao.java b/dao/src/main/java/org/thingsboard/server/dao/CassandraAbstractDao.java
similarity index 98%
rename from dao/src/main/java/org/thingsboard/server/dao/AbstractDao.java
rename to dao/src/main/java/org/thingsboard/server/dao/CassandraAbstractDao.java
index 5968477dc6..bd7346acf3 100644
--- a/dao/src/main/java/org/thingsboard/server/dao/AbstractDao.java
+++ b/dao/src/main/java/org/thingsboard/server/dao/CassandraAbstractDao.java
@@ -23,7 +23,7 @@ import org.thingsboard.server.dao.cassandra.CassandraCluster;
import org.thingsboard.server.dao.model.type.*;
@Slf4j
-public abstract class AbstractDao {
+public abstract class CassandraAbstractDao {
@Autowired
protected CassandraCluster cluster;
diff --git a/dao/src/main/java/org/thingsboard/server/dao/AbstractModelDao.java b/dao/src/main/java/org/thingsboard/server/dao/CassandraAbstractModelDao.java
similarity index 62%
rename from dao/src/main/java/org/thingsboard/server/dao/AbstractModelDao.java
rename to dao/src/main/java/org/thingsboard/server/dao/CassandraAbstractModelDao.java
index 01346b0da9..99c82a0cf6 100644
--- a/dao/src/main/java/org/thingsboard/server/dao/AbstractModelDao.java
+++ b/dao/src/main/java/org/thingsboard/server/dao/CassandraAbstractModelDao.java
@@ -28,8 +28,9 @@ import com.google.common.util.concurrent.Futures;
import com.google.common.util.concurrent.ListenableFuture;
import lombok.extern.slf4j.Slf4j;
import org.thingsboard.server.dao.model.BaseEntity;
-import org.thingsboard.server.dao.model.wrapper.EntityResultSet;
import org.thingsboard.server.dao.model.ModelConstants;
+import org.thingsboard.server.dao.model.SearchTextEntity;
+import org.thingsboard.server.dao.model.wrapper.EntityResultSet;
import javax.annotation.Nullable;
import java.util.Collections;
@@ -37,26 +38,29 @@ import java.util.List;
import java.util.UUID;
import static com.datastax.driver.core.querybuilder.QueryBuilder.eq;
-import static com.datastax.driver.core.querybuilder.QueryBuilder.lt;
import static com.datastax.driver.core.querybuilder.QueryBuilder.select;
@Slf4j
-public abstract class AbstractModelDao> extends AbstractDao implements Dao {
+public abstract class CassandraAbstractModelDao, D> extends CassandraAbstractDao implements Dao {
- protected abstract Class getColumnFamilyClass();
+ protected abstract Class getColumnFamilyClass();
protected abstract String getColumnFamilyName();
- protected Mapper getMapper() {
+ protected boolean isSearchTextDao() {
+ return false;
+ }
+
+ protected Mapper getMapper() {
return cluster.getMapper(getColumnFamilyClass());
}
- protected List findListByStatement(Statement statement) {
- List list = Collections.emptyList();
+ protected List findListByStatement(Statement statement) {
+ List list = Collections.emptyList();
if (statement != null) {
statement.setConsistencyLevel(cluster.getDefaultReadConsistencyLevel());
ResultSet resultSet = getSession().execute(statement);
- Result result = getMapper().map(resultSet);
+ Result result = getMapper().map(resultSet);
if (result != null) {
list = result.all();
}
@@ -64,33 +68,33 @@ public abstract class AbstractModelDao> extends Abstract
return list;
}
- protected ListenableFuture> findListByStatementAsync(Statement statement) {
+ protected ListenableFuture> findListByStatementAsync(Statement statement) {
if (statement != null) {
statement.setConsistencyLevel(cluster.getDefaultReadConsistencyLevel());
ResultSetFuture resultSetFuture = getSession().executeAsync(statement);
- ListenableFuture> result = Futures.transform(resultSetFuture, new Function>() {
+ return Futures.transform(resultSetFuture, new Function>() {
@Nullable
@Override
- public List apply(@Nullable ResultSet resultSet) {
- Result result = getMapper().map(resultSet);
+ public List apply(@Nullable ResultSet resultSet) {
+ Result result = getMapper().map(resultSet);
if (result != null) {
- return result.all();
+ List entities = result.all();
+ return DaoUtil.convertDataList(entities);
} else {
return Collections.emptyList();
}
}
});
- return result;
}
return Futures.immediateFuture(Collections.emptyList());
}
- protected T findOneByStatement(Statement statement) {
- T object = null;
+ protected E findOneByStatement(Statement statement) {
+ E object = null;
if (statement != null) {
statement.setConsistencyLevel(cluster.getDefaultReadConsistencyLevel());
ResultSet resultSet = getSession().execute(statement);
- Result result = getMapper().map(resultSet);
+ Result result = getMapper().map(resultSet);
if (result != null) {
object = result.one();
}
@@ -98,32 +102,32 @@ public abstract class AbstractModelDao> extends Abstract
return object;
}
- protected ListenableFuture findOneByStatementAsync(Statement statement) {
+ protected ListenableFuture findOneByStatementAsync(Statement statement) {
if (statement != null) {
statement.setConsistencyLevel(cluster.getDefaultReadConsistencyLevel());
ResultSetFuture resultSetFuture = getSession().executeAsync(statement);
- ListenableFuture result = Futures.transform(resultSetFuture, new Function() {
+ return Futures.transform(resultSetFuture, new Function() {
@Nullable
@Override
- public T apply(@Nullable ResultSet resultSet) {
- Result result = getMapper().map(resultSet);
+ public D apply(@Nullable ResultSet resultSet) {
+ Result result = getMapper().map(resultSet);
if (result != null) {
- return result.one();
+ E entity = result.one();
+ return DaoUtil.getData(entity);
} else {
return null;
}
}
});
- return result;
}
return Futures.immediateFuture(null);
}
- protected Statement getSaveQuery(T dto) {
+ protected Statement getSaveQuery(E dto) {
return getMapper().saveQuery(dto);
}
- protected EntityResultSet saveWithResult(T entity) {
+ protected EntityResultSet saveWithResult(E entity) {
log.debug("Save entity {}", entity);
if (entity.getId() == null) {
entity.setId(UUIDs.timeBased());
@@ -136,34 +140,51 @@ public abstract class AbstractModelDao> extends Abstract
return new EntityResultSet<>(resultSet, entity);
}
- public T save(T entity) {
- return saveWithResult(entity).getEntity();
+ @Override
+ public D save(D domain) {
+ E entity;
+ try {
+ entity = getColumnFamilyClass().getConstructor(domain.getClass()).newInstance(domain);
+ } catch (Exception e) {
+ log.error("Can't create entity for domain object {}", domain, e);
+ throw new IllegalArgumentException("Can't create entity for domain object {" + domain + "}", e);
+ }
+ if (isSearchTextDao()) {
+ ((SearchTextEntity) entity).setSearchText(((SearchTextEntity) entity).getSearchTextSource().toLowerCase());
+ }
+ log.debug("Saving entity {}", entity);
+ entity = saveWithResult(entity).getEntity();
+ return DaoUtil.getData(entity);
}
- public T findById(UUID key) {
+ @Override
+ public D findById(UUID key) {
log.debug("Get entity by key {}", key);
Select.Where query = select().from(getColumnFamilyName()).where(eq(ModelConstants.ID_PROPERTY, key));
log.trace("Execute query {}", query);
- return findOneByStatement(query);
+ E entity = findOneByStatement(query);
+ return DaoUtil.getData(entity);
}
- public ListenableFuture findByIdAsync(UUID key) {
+ @Override
+ public ListenableFuture findByIdAsync(UUID key) {
log.debug("Get entity by key {}", key);
Select.Where query = select().from(getColumnFamilyName()).where(eq(ModelConstants.ID_PROPERTY, key));
log.trace("Execute query {}", query);
return findOneByStatementAsync(query);
}
-
- public ResultSet removeById(UUID key) {
+ @Override
+ public boolean removeById(UUID key) {
Statement delete = QueryBuilder.delete().all().from(getColumnFamilyName()).where(eq(ModelConstants.ID_PROPERTY, key));
log.debug("Remove request: {}", delete.toString());
- return getSession().execute(delete);
+ return getSession().execute(delete).wasApplied();
}
-
- public List find() {
+ @Override
+ public List find() {
log.debug("Get all entities from column family {}", getColumnFamilyName());
- return findListByStatement(QueryBuilder.select().all().from(getColumnFamilyName()).setConsistencyLevel(cluster.getDefaultReadConsistencyLevel()));
+ List entities = findListByStatement(QueryBuilder.select().all().from(getColumnFamilyName()).setConsistencyLevel(cluster.getDefaultReadConsistencyLevel()));
+ return DaoUtil.convertDataList(entities);
}
}
diff --git a/dao/src/main/java/org/thingsboard/server/dao/AbstractSearchTextDao.java b/dao/src/main/java/org/thingsboard/server/dao/CassandraAbstractSearchTextDao.java
similarity index 83%
rename from dao/src/main/java/org/thingsboard/server/dao/AbstractSearchTextDao.java
rename to dao/src/main/java/org/thingsboard/server/dao/CassandraAbstractSearchTextDao.java
index 51aa20d0d7..735dd3050c 100644
--- a/dao/src/main/java/org/thingsboard/server/dao/AbstractSearchTextDao.java
+++ b/dao/src/main/java/org/thingsboard/server/dao/CassandraAbstractSearchTextDao.java
@@ -19,27 +19,26 @@ import com.datastax.driver.core.querybuilder.Clause;
import com.datastax.driver.core.querybuilder.QueryBuilder;
import com.datastax.driver.core.querybuilder.Select;
import com.datastax.driver.core.querybuilder.Select.Where;
+import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.thingsboard.server.common.data.page.TextPageLink;
-import org.thingsboard.server.dao.model.SearchTextEntity;
import org.thingsboard.server.dao.model.ModelConstants;
+import org.thingsboard.server.dao.model.SearchTextEntity;
import java.util.List;
import static com.datastax.driver.core.querybuilder.QueryBuilder.eq;
-import static com.datastax.driver.core.querybuilder.QueryBuilder.gt;
-import static com.datastax.driver.core.querybuilder.QueryBuilder.gte;
-import static com.datastax.driver.core.querybuilder.QueryBuilder.lt;
import static com.datastax.driver.core.querybuilder.QueryBuilder.select;
-public abstract class AbstractSearchTextDao> extends AbstractModelDao {
+@Slf4j
+public abstract class CassandraAbstractSearchTextDao, D> extends CassandraAbstractModelDao {
- public T save(T entity) {
- entity.setSearchText(entity.getSearchTextSource().toLowerCase());
- return super.save(entity);
+ @Override
+ protected boolean isSearchTextDao() {
+ return true;
}
-
- protected List findPageWithTextSearch(String searchView, List clauses, TextPageLink pageLink) {
+
+ protected List findPageWithTextSearch(String searchView, List clauses, TextPageLink pageLink) {
Select select = select().from(searchView);
Where query = select.where();
for (Clause clause : clauses) {
@@ -49,7 +48,7 @@ public abstract class AbstractSearchTextDao> exten
if (!StringUtils.isEmpty(pageLink.getTextOffset())) {
query.and(eq(ModelConstants.SEARCH_TEXT_PROPERTY, pageLink.getTextOffset()));
query.and(QueryBuilder.lt(ModelConstants.ID_PROPERTY, pageLink.getIdOffset()));
- List result = findListByStatement(query);
+ List result = findListByStatement(query);
if (result.size() < pageLink.getLimit()) {
select = select().from(searchView);
query = select.where();
diff --git a/dao/src/main/java/org/thingsboard/server/dao/AbstractSearchTimeDao.java b/dao/src/main/java/org/thingsboard/server/dao/CassandraAbstractSearchTimeDao.java
similarity index 87%
rename from dao/src/main/java/org/thingsboard/server/dao/AbstractSearchTimeDao.java
rename to dao/src/main/java/org/thingsboard/server/dao/CassandraAbstractSearchTimeDao.java
index 5852e3c7e3..cb60ea4be7 100644
--- a/dao/src/main/java/org/thingsboard/server/dao/AbstractSearchTimeDao.java
+++ b/dao/src/main/java/org/thingsboard/server/dao/CassandraAbstractSearchTimeDao.java
@@ -21,34 +21,29 @@ import com.datastax.driver.core.querybuilder.QueryBuilder;
import com.datastax.driver.core.querybuilder.Select;
import com.datastax.driver.core.querybuilder.Select.Where;
import com.datastax.driver.core.utils.UUIDs;
-import org.apache.commons.lang3.StringUtils;
-import org.thingsboard.server.common.data.page.TextPageLink;
import org.thingsboard.server.common.data.page.TimePageLink;
import org.thingsboard.server.dao.model.BaseEntity;
import org.thingsboard.server.dao.model.ModelConstants;
-import org.thingsboard.server.dao.model.SearchTextEntity;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.UUID;
-import static com.datastax.driver.core.querybuilder.QueryBuilder.eq;
import static com.datastax.driver.core.querybuilder.QueryBuilder.select;
-public abstract class AbstractSearchTimeDao> extends AbstractModelDao {
+public abstract class CassandraAbstractSearchTimeDao, D> extends CassandraAbstractModelDao {
- protected List findPageWithTimeSearch(String searchView, List clauses, TimePageLink pageLink) {
+ protected List findPageWithTimeSearch(String searchView, List clauses, TimePageLink pageLink) {
return findPageWithTimeSearch(searchView, clauses, Collections.emptyList(), pageLink);
}
- protected List findPageWithTimeSearch(String searchView, List clauses, Ordering ordering, TimePageLink pageLink) {
+ protected List findPageWithTimeSearch(String searchView, List clauses, Ordering ordering, TimePageLink pageLink) {
return findPageWithTimeSearch(searchView, clauses, Collections.singletonList(ordering), pageLink);
}
-
- protected List findPageWithTimeSearch(String searchView, List clauses, List topLevelOrderings, TimePageLink pageLink) {
+ protected List findPageWithTimeSearch(String searchView, List clauses, List topLevelOrderings, TimePageLink pageLink) {
Select select = select().from(searchView);
Where query = select.where();
for (Clause clause : clauses) {
diff --git a/dao/src/main/java/org/thingsboard/server/dao/Dao.java b/dao/src/main/java/org/thingsboard/server/dao/Dao.java
index 2703cdc23a..f0580eba3e 100644
--- a/dao/src/main/java/org/thingsboard/server/dao/Dao.java
+++ b/dao/src/main/java/org/thingsboard/server/dao/Dao.java
@@ -15,7 +15,6 @@
*/
package org.thingsboard.server.dao;
-import com.datastax.driver.core.ResultSet;
import com.google.common.util.concurrent.ListenableFuture;
import java.util.List;
@@ -31,6 +30,6 @@ public interface Dao {
T save(T t);
- ResultSet removeById(UUID id);
+ boolean removeById(UUID id);
}
diff --git a/dao/src/main/java/org/thingsboard/server/dao/DaoUtil.java b/dao/src/main/java/org/thingsboard/server/dao/DaoUtil.java
index 27499bb1bd..42823a1e68 100644
--- a/dao/src/main/java/org/thingsboard/server/dao/DaoUtil.java
+++ b/dao/src/main/java/org/thingsboard/server/dao/DaoUtil.java
@@ -15,15 +15,11 @@
*/
package org.thingsboard.server.dao;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.List;
-import java.util.UUID;
-
import org.thingsboard.server.common.data.id.UUIDBased;
import org.thingsboard.server.dao.model.ToData;
+import java.util.*;
+
public abstract class DaoUtil {
private DaoUtil() {
diff --git a/dao/src/main/java/org/thingsboard/server/dao/EncryptionUtil.java b/dao/src/main/java/org/thingsboard/server/dao/EncryptionUtil.java
index 9a4e592e07..1d74d30a08 100644
--- a/dao/src/main/java/org/thingsboard/server/dao/EncryptionUtil.java
+++ b/dao/src/main/java/org/thingsboard/server/dao/EncryptionUtil.java
@@ -15,7 +15,6 @@
*/
package org.thingsboard.server.dao;
-import com.google.common.base.CharMatcher;
import lombok.extern.slf4j.Slf4j;
import org.bouncycastle.crypto.digests.SHA3Digest;
import org.bouncycastle.pqc.math.linearalgebra.ByteUtils;
diff --git a/dao/src/main/java/org/thingsboard/server/dao/JpaDaoConfig.java b/dao/src/main/java/org/thingsboard/server/dao/JpaDaoConfig.java
new file mode 100644
index 0000000000..167518a6b7
--- /dev/null
+++ b/dao/src/main/java/org/thingsboard/server/dao/JpaDaoConfig.java
@@ -0,0 +1,42 @@
+/**
+ * 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;
+
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
+import org.springframework.boot.autoconfigure.jdbc.DataSourceBuilder;
+import org.springframework.context.annotation.Configuration;
+
+import javax.sql.DataSource;
+
+/**
+ * @author Valerii Sosliuk
+ */
+@Configuration
+@ConditionalOnProperty(prefix="sql", value="enabled",havingValue = "true", matchIfMissing = false)
+public class JpaDaoConfig {
+
+ @Value("sql.datasource.url")
+ private String url;
+ @Value("sql.datasource.username")
+ private String username;
+ @Value("sql.datasource.password")
+ private String password;
+
+ public DataSource dataSource() {
+ return DataSourceBuilder.create().url(url).username(username).password(password).build();
+ }
+}
diff --git a/dao/src/main/java/org/thingsboard/server/dao/attributes/AttributesDao.java b/dao/src/main/java/org/thingsboard/server/dao/attributes/AttributesDao.java
index ae58d4d9c6..6696f39556 100644
--- a/dao/src/main/java/org/thingsboard/server/dao/attributes/AttributesDao.java
+++ b/dao/src/main/java/org/thingsboard/server/dao/attributes/AttributesDao.java
@@ -15,8 +15,6 @@
*/
package org.thingsboard.server.dao.attributes;
-import com.datastax.driver.core.ResultSet;
-import com.datastax.driver.core.ResultSetFuture;
import com.google.common.util.concurrent.ListenableFuture;
import org.thingsboard.server.common.data.id.EntityId;
import org.thingsboard.server.common.data.kv.AttributeKvEntry;
diff --git a/dao/src/main/java/org/thingsboard/server/dao/attributes/AttributesService.java b/dao/src/main/java/org/thingsboard/server/dao/attributes/AttributesService.java
index 6bf9fb2bd5..222ffa3b1a 100644
--- a/dao/src/main/java/org/thingsboard/server/dao/attributes/AttributesService.java
+++ b/dao/src/main/java/org/thingsboard/server/dao/attributes/AttributesService.java
@@ -15,12 +15,8 @@
*/
package org.thingsboard.server.dao.attributes;
-import com.datastax.driver.core.ResultSet;
-import com.datastax.driver.core.ResultSetFuture;
import com.google.common.util.concurrent.ListenableFuture;
-import org.thingsboard.server.common.data.id.DeviceId;
import org.thingsboard.server.common.data.id.EntityId;
-import org.thingsboard.server.common.data.id.UUIDBased;
import org.thingsboard.server.common.data.kv.AttributeKvEntry;
import java.util.Collection;
diff --git a/dao/src/main/java/org/thingsboard/server/dao/attributes/BaseAttributesService.java b/dao/src/main/java/org/thingsboard/server/dao/attributes/BaseAttributesService.java
index 43612419d0..5ed231bd9f 100644
--- a/dao/src/main/java/org/thingsboard/server/dao/attributes/BaseAttributesService.java
+++ b/dao/src/main/java/org/thingsboard/server/dao/attributes/BaseAttributesService.java
@@ -15,16 +15,14 @@
*/
package org.thingsboard.server.dao.attributes;
-import com.datastax.driver.core.ResultSet;
-import com.datastax.driver.core.ResultSetFuture;
import com.google.common.collect.Lists;
import com.google.common.util.concurrent.Futures;
import com.google.common.util.concurrent.ListenableFuture;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
import org.thingsboard.server.common.data.id.EntityId;
import org.thingsboard.server.common.data.kv.AttributeKvEntry;
import org.thingsboard.server.dao.exception.IncorrectParameterException;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
import org.thingsboard.server.dao.service.Validator;
import java.util.Collection;
diff --git a/dao/src/main/java/org/thingsboard/server/dao/attributes/BaseAttributesDao.java b/dao/src/main/java/org/thingsboard/server/dao/attributes/CassandraBaseAttributesDao.java
similarity index 93%
rename from dao/src/main/java/org/thingsboard/server/dao/attributes/BaseAttributesDao.java
rename to dao/src/main/java/org/thingsboard/server/dao/attributes/CassandraBaseAttributesDao.java
index fd50f4d2ef..f19dee4d61 100644
--- a/dao/src/main/java/org/thingsboard/server/dao/attributes/BaseAttributesDao.java
+++ b/dao/src/main/java/org/thingsboard/server/dao/attributes/CassandraBaseAttributesDao.java
@@ -24,10 +24,11 @@ import com.google.common.util.concurrent.ListenableFuture;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
import org.thingsboard.server.common.data.id.EntityId;
-import org.thingsboard.server.dao.AbstractAsyncDao;
+import org.thingsboard.server.common.data.kv.AttributeKvEntry;
+import org.thingsboard.server.common.data.kv.BaseAttributeKvEntry;
+import org.thingsboard.server.dao.CassandraAbstractAsyncDao;
import org.thingsboard.server.dao.model.ModelConstants;
-import org.thingsboard.server.common.data.kv.*;
-import org.thingsboard.server.dao.timeseries.BaseTimeseriesDao;
+import org.thingsboard.server.dao.timeseries.CassandraBaseTimeseriesDao;
import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;
@@ -37,15 +38,16 @@ import java.util.List;
import java.util.Optional;
import java.util.stream.Collectors;
+import static com.datastax.driver.core.querybuilder.QueryBuilder.eq;
+import static com.datastax.driver.core.querybuilder.QueryBuilder.select;
import static org.thingsboard.server.dao.model.ModelConstants.*;
-import static com.datastax.driver.core.querybuilder.QueryBuilder.*;
/**
* @author Andrew Shvayka
*/
@Component
@Slf4j
-public class BaseAttributesDao extends AbstractAsyncDao implements AttributesDao {
+public class CassandraBaseAttributesDao extends CassandraAbstractAsyncDao implements AttributesDao {
private PreparedStatement saveStmt;
@@ -161,7 +163,7 @@ public class BaseAttributesDao extends AbstractAsyncDao implements AttributesDao
AttributeKvEntry attributeEntry = null;
if (row != null) {
long lastUpdateTs = row.get(LAST_UPDATE_TS_COLUMN, Long.class);
- attributeEntry = new BaseAttributeKvEntry(BaseTimeseriesDao.toKvEntry(row, key), lastUpdateTs);
+ attributeEntry = new BaseAttributeKvEntry(CassandraBaseTimeseriesDao.toKvEntry(row, key), lastUpdateTs);
}
return attributeEntry;
}
diff --git a/dao/src/main/java/org/thingsboard/server/dao/cassandra/CassandraCluster.java b/dao/src/main/java/org/thingsboard/server/dao/cassandra/CassandraCluster.java
index 62e376245a..efe05f8fb8 100644
--- a/dao/src/main/java/org/thingsboard/server/dao/cassandra/CassandraCluster.java
+++ b/dao/src/main/java/org/thingsboard/server/dao/cassandra/CassandraCluster.java
@@ -16,13 +16,8 @@
package org.thingsboard.server.dao.cassandra;
-import com.datastax.driver.core.Cluster;
-import com.datastax.driver.core.ConsistencyLevel;
-import com.datastax.driver.core.HostDistance;
-import com.datastax.driver.core.PoolingOptions;
+import com.datastax.driver.core.*;
import com.datastax.driver.core.ProtocolOptions.Compression;
-import com.datastax.driver.core.Session;
-import com.datastax.driver.core.exceptions.NoHostAvailableException;
import com.datastax.driver.mapping.Mapper;
import com.datastax.driver.mapping.MappingManager;
import lombok.Data;
@@ -31,16 +26,13 @@ import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
-import org.thingsboard.server.dao.exception.DatabaseException;
import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;
-import java.io.Closeable;
import java.net.InetSocketAddress;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
-import java.util.StringTokenizer;
@Component
@Slf4j
diff --git a/dao/src/main/java/org/thingsboard/server/dao/cassandra/CassandraQueryOptions.java b/dao/src/main/java/org/thingsboard/server/dao/cassandra/CassandraQueryOptions.java
index d5460b0081..27ac661231 100644
--- a/dao/src/main/java/org/thingsboard/server/dao/cassandra/CassandraQueryOptions.java
+++ b/dao/src/main/java/org/thingsboard/server/dao/cassandra/CassandraQueryOptions.java
@@ -21,12 +21,9 @@ import lombok.Data;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Configuration;
import org.springframework.stereotype.Component;
-import org.springframework.util.StringUtils;
import javax.annotation.PostConstruct;
-import static org.apache.commons.lang3.StringUtils.isNotBlank;
-
@Component
@Configuration
@Data
diff --git a/dao/src/main/java/org/thingsboard/server/dao/cassandra/CassandraSocketOptions.java b/dao/src/main/java/org/thingsboard/server/dao/cassandra/CassandraSocketOptions.java
index c6f51d108e..b4cb7ba120 100644
--- a/dao/src/main/java/org/thingsboard/server/dao/cassandra/CassandraSocketOptions.java
+++ b/dao/src/main/java/org/thingsboard/server/dao/cassandra/CassandraSocketOptions.java
@@ -15,13 +15,12 @@
*/
package org.thingsboard.server.dao.cassandra;
+import com.datastax.driver.core.SocketOptions;
import lombok.Data;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Configuration;
import org.springframework.stereotype.Component;
-import com.datastax.driver.core.SocketOptions;
-
import javax.annotation.PostConstruct;
@Component
diff --git a/dao/src/main/java/org/thingsboard/server/dao/component/BaseComponentDescriptorService.java b/dao/src/main/java/org/thingsboard/server/dao/component/BaseComponentDescriptorService.java
index 22fa19d013..3a89e55489 100644
--- a/dao/src/main/java/org/thingsboard/server/dao/component/BaseComponentDescriptorService.java
+++ b/dao/src/main/java/org/thingsboard/server/dao/component/BaseComponentDescriptorService.java
@@ -32,16 +32,12 @@ import org.thingsboard.server.common.data.plugin.ComponentScope;
import org.thingsboard.server.common.data.plugin.ComponentType;
import org.thingsboard.server.dao.exception.DataValidationException;
import org.thingsboard.server.dao.exception.IncorrectParameterException;
-import org.thingsboard.server.dao.model.ComponentDescriptorEntity;
import org.thingsboard.server.dao.service.DataValidator;
import org.thingsboard.server.dao.service.Validator;
import java.util.List;
import java.util.Optional;
-import static org.thingsboard.server.dao.DaoUtil.convertDataList;
-import static org.thingsboard.server.dao.DaoUtil.getData;
-
/**
* @author Andrew Shvayka
*/
@@ -55,39 +51,37 @@ public class BaseComponentDescriptorService implements ComponentDescriptorServic
@Override
public ComponentDescriptor saveComponent(ComponentDescriptor component) {
componentValidator.validate(component);
- Optional result = componentDescriptorDao.save(component);
+ Optional result = componentDescriptorDao.saveIfNotExist(component);
if (result.isPresent()) {
- return getData(result.get());
+ return result.get();
} else {
- return getData(componentDescriptorDao.findByClazz(component.getClazz()));
+ return componentDescriptorDao.findByClazz(component.getClazz());
}
}
@Override
public ComponentDescriptor findById(ComponentDescriptorId componentId) {
Validator.validateId(componentId, "Incorrect component id for search request.");
- return getData(componentDescriptorDao.findById(componentId));
+ return componentDescriptorDao.findById(componentId);
}
@Override
public ComponentDescriptor findByClazz(String clazz) {
Validator.validateString(clazz, "Incorrect clazz for search request.");
- return getData(componentDescriptorDao.findByClazz(clazz));
+ return componentDescriptorDao.findByClazz(clazz);
}
@Override
public TextPageData findByTypeAndPageLink(ComponentType type, TextPageLink pageLink) {
Validator.validatePageLink(pageLink, "Incorrect PageLink object for search plugin components request.");
- List pluginEntities = componentDescriptorDao.findByTypeAndPageLink(type, pageLink);
- List components = convertDataList(pluginEntities);
+ List components = componentDescriptorDao.findByTypeAndPageLink(type, pageLink);
return new TextPageData<>(components, pageLink);
}
@Override
public TextPageData findByScopeAndTypeAndPageLink(ComponentScope scope, ComponentType type, TextPageLink pageLink) {
Validator.validatePageLink(pageLink, "Incorrect PageLink object for search plugin components request.");
- List pluginEntities = componentDescriptorDao.findByScopeAndTypeAndPageLink(scope, type, pageLink);
- List components = convertDataList(pluginEntities);
+ List components = componentDescriptorDao.findByScopeAndTypeAndPageLink(scope, type, pageLink);
return new TextPageData<>(components, pageLink);
}
diff --git a/dao/src/main/java/org/thingsboard/server/dao/component/BaseComponentDescriptorDao.java b/dao/src/main/java/org/thingsboard/server/dao/component/CassandraBaseComponentDescriptorDao.java
similarity index 79%
rename from dao/src/main/java/org/thingsboard/server/dao/component/BaseComponentDescriptorDao.java
rename to dao/src/main/java/org/thingsboard/server/dao/component/CassandraBaseComponentDescriptorDao.java
index 7c43a765ae..0426a3372a 100644
--- a/dao/src/main/java/org/thingsboard/server/dao/component/BaseComponentDescriptorDao.java
+++ b/dao/src/main/java/org/thingsboard/server/dao/component/CassandraBaseComponentDescriptorDao.java
@@ -27,9 +27,10 @@ import org.thingsboard.server.common.data.page.TextPageLink;
import org.thingsboard.server.common.data.plugin.ComponentDescriptor;
import org.thingsboard.server.common.data.plugin.ComponentScope;
import org.thingsboard.server.common.data.plugin.ComponentType;
-import org.thingsboard.server.dao.AbstractSearchTextDao;
+import org.thingsboard.server.dao.CassandraAbstractSearchTextDao;
+import org.thingsboard.server.dao.DaoUtil;
+import org.thingsboard.server.dao.model.nosql.ComponentDescriptorEntity;
import org.thingsboard.server.dao.model.ModelConstants;
-import org.thingsboard.server.dao.model.ComponentDescriptorEntity;
import java.util.Arrays;
import java.util.List;
@@ -44,7 +45,7 @@ import static com.datastax.driver.core.querybuilder.QueryBuilder.select;
*/
@Component
@Slf4j
-public class BaseComponentDescriptorDao extends AbstractSearchTextDao implements ComponentDescriptorDao {
+public class CassandraBaseComponentDescriptorDao extends CassandraAbstractSearchTextDao implements ComponentDescriptorDao {
@Override
protected Class getColumnFamilyClass() {
@@ -57,10 +58,10 @@ public class BaseComponentDescriptorDao extends AbstractSearchTextDao save(ComponentDescriptor component) {
+ public Optional saveIfNotExist(ComponentDescriptor component) {
ComponentDescriptorEntity entity = new ComponentDescriptorEntity(component);
log.debug("Save component entity [{}]", entity);
- Optional result = saveIfNotExist(entity);
+ Optional result = saveIfNotExist(entity);
if (log.isTraceEnabled()) {
log.trace("Saved result: [{}] for component entity [{}]", result.isPresent(), result.orElse(null));
} else {
@@ -70,19 +71,19 @@ public class BaseComponentDescriptorDao extends AbstractSearchTextDao findByTypeAndPageLink(ComponentType type, TextPageLink pageLink) {
+ public List findByTypeAndPageLink(ComponentType type, TextPageLink pageLink) {
log.debug("Try to find component by type [{}] and pageLink [{}]", type, pageLink);
List entities = findPageWithTextSearch(ModelConstants.COMPONENT_DESCRIPTOR_BY_TYPE_AND_SEARCH_TEXT_COLUMN_FAMILY_NAME,
Arrays.asList(eq(ModelConstants.COMPONENT_DESCRIPTOR_TYPE_PROPERTY, type.name())), pageLink);
@@ -105,11 +106,11 @@ public class BaseComponentDescriptorDao extends AbstractSearchTextDao findByScopeAndTypeAndPageLink(ComponentScope scope, ComponentType type, TextPageLink pageLink) {
+ public List findByScopeAndTypeAndPageLink(ComponentScope scope, ComponentType type, TextPageLink pageLink) {
log.debug("Try to find component by scope [{}] and type [{}] and pageLink [{}]", scope, type, pageLink);
List entities = findPageWithTextSearch(ModelConstants.COMPONENT_DESCRIPTOR_BY_SCOPE_TYPE_AND_SEARCH_TEXT_COLUMN_FAMILY_NAME,
Arrays.asList(eq(ModelConstants.COMPONENT_DESCRIPTOR_TYPE_PROPERTY, type.name()),
@@ -119,20 +120,20 @@ public class BaseComponentDescriptorDao extends AbstractSearchTextDao saveIfNotExist(ComponentDescriptorEntity entity) {
+ private Optional saveIfNotExist(ComponentDescriptorEntity entity) {
if (entity.getId() == null) {
entity.setId(UUIDs.timeBased());
}
@@ -161,7 +162,7 @@ public class BaseComponentDescriptorDao extends AbstractSearchTextDao {
+public interface ComponentDescriptorDao extends Dao {
- Optional save(ComponentDescriptor component);
+ Optional saveIfNotExist(ComponentDescriptor component);
- ComponentDescriptorEntity findById(ComponentDescriptorId componentId);
+ ComponentDescriptor findById(ComponentDescriptorId componentId);
- ComponentDescriptorEntity findByClazz(String clazz);
+ ComponentDescriptor findByClazz(String clazz);
- List findByTypeAndPageLink(ComponentType type, TextPageLink pageLink);
+ List findByTypeAndPageLink(ComponentType type, TextPageLink pageLink);
- List findByScopeAndTypeAndPageLink(ComponentScope scope, ComponentType type, TextPageLink pageLink);
+ List findByScopeAndTypeAndPageLink(ComponentScope scope, ComponentType type, TextPageLink pageLink);
void deleteById(ComponentDescriptorId componentId);
diff --git a/dao/src/main/java/org/thingsboard/server/dao/customer/CustomerDaoImpl.java b/dao/src/main/java/org/thingsboard/server/dao/customer/CassandraCustomerDao.java
similarity index 75%
rename from dao/src/main/java/org/thingsboard/server/dao/customer/CustomerDaoImpl.java
rename to dao/src/main/java/org/thingsboard/server/dao/customer/CassandraCustomerDao.java
index 7b53836274..1bb682bdd7 100644
--- a/dao/src/main/java/org/thingsboard/server/dao/customer/CustomerDaoImpl.java
+++ b/dao/src/main/java/org/thingsboard/server/dao/customer/CassandraCustomerDao.java
@@ -15,24 +15,23 @@
*/
package org.thingsboard.server.dao.customer;
-import static com.datastax.driver.core.querybuilder.QueryBuilder.eq;
-
-import java.util.Arrays;
-import java.util.List;
-import java.util.UUID;
-
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
import org.thingsboard.server.common.data.Customer;
import org.thingsboard.server.common.data.page.TextPageLink;
-import org.thingsboard.server.dao.AbstractSearchTextDao;
-import org.thingsboard.server.dao.model.CustomerEntity;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
+import org.thingsboard.server.dao.CassandraAbstractSearchTextDao;
+import org.thingsboard.server.dao.DaoUtil;
+import org.thingsboard.server.dao.model.nosql.CustomerEntity;
import org.thingsboard.server.dao.model.ModelConstants;
+
+import java.util.Arrays;
+import java.util.List;
+import java.util.UUID;
+
+import static com.datastax.driver.core.querybuilder.QueryBuilder.eq;
@Component
@Slf4j
-public class CustomerDaoImpl extends AbstractSearchTextDao implements CustomerDao {
+public class CassandraCustomerDao extends CassandraAbstractSearchTextDao implements CustomerDao {
@Override
protected Class getColumnFamilyClass() {
@@ -43,21 +42,15 @@ public class CustomerDaoImpl extends AbstractSearchTextDao imple
protected String getColumnFamilyName() {
return ModelConstants.CUSTOMER_COLUMN_FAMILY_NAME;
}
-
- @Override
- public CustomerEntity save(Customer customer) {
- log.debug("Save customer [{}] ", customer);
- return save(new CustomerEntity(customer));
- }
@Override
- public List findCustomersByTenantId(UUID tenantId, TextPageLink pageLink) {
+ public List findCustomersByTenantId(UUID tenantId, TextPageLink pageLink) {
log.debug("Try to find customers by tenantId [{}] and pageLink [{}]", tenantId, pageLink);
List customerEntities = findPageWithTextSearch(ModelConstants.CUSTOMER_BY_TENANT_AND_SEARCH_TEXT_COLUMN_FAMILY_NAME,
Arrays.asList(eq(ModelConstants.CUSTOMER_TENANT_ID_PROPERTY, tenantId)),
pageLink);
log.trace("Found customers [{}] by tenantId [{}] and pageLink [{}]", customerEntities, tenantId, pageLink);
- return customerEntities;
+ return DaoUtil.convertDataList(customerEntities);
}
}
diff --git a/dao/src/main/java/org/thingsboard/server/dao/customer/CustomerDao.java b/dao/src/main/java/org/thingsboard/server/dao/customer/CustomerDao.java
index 6d7247b3a6..e26fc986bf 100644
--- a/dao/src/main/java/org/thingsboard/server/dao/customer/CustomerDao.java
+++ b/dao/src/main/java/org/thingsboard/server/dao/customer/CustomerDao.java
@@ -15,18 +15,17 @@
*/
package org.thingsboard.server.dao.customer;
-import java.util.List;
-import java.util.UUID;
-
import org.thingsboard.server.common.data.Customer;
import org.thingsboard.server.common.data.page.TextPageLink;
import org.thingsboard.server.dao.Dao;
-import org.thingsboard.server.dao.model.CustomerEntity;
+
+import java.util.List;
+import java.util.UUID;
/**
* The Interface CustomerDao.
*/
-public interface CustomerDao extends Dao {
+public interface CustomerDao extends Dao {
/**
* Save or update customer object
@@ -34,7 +33,7 @@ public interface CustomerDao extends Dao {
* @param customer the customer object
* @return saved customer object
*/
- CustomerEntity save(Customer customer);
+ Customer save(Customer customer);
/**
* Find customers by tenant id and page link.
@@ -43,6 +42,6 @@ public interface CustomerDao extends Dao {
* @param pageLink the page link
* @return the list of customer objects
*/
- List findCustomersByTenantId(UUID tenantId, TextPageLink pageLink);
+ List findCustomersByTenantId(UUID tenantId, TextPageLink pageLink);
}
diff --git a/dao/src/main/java/org/thingsboard/server/dao/customer/CustomerService.java b/dao/src/main/java/org/thingsboard/server/dao/customer/CustomerService.java
index 70321a20b0..566d71818e 100644
--- a/dao/src/main/java/org/thingsboard/server/dao/customer/CustomerService.java
+++ b/dao/src/main/java/org/thingsboard/server/dao/customer/CustomerService.java
@@ -23,14 +23,14 @@ import org.thingsboard.server.common.data.page.TextPageLink;
public interface CustomerService {
- public Customer findCustomerById(CustomerId customerId);
+ Customer findCustomerById(CustomerId customerId);
- public Customer saveCustomer(Customer customer);
+ Customer saveCustomer(Customer customer);
- public void deleteCustomer(CustomerId customerId);
+ void deleteCustomer(CustomerId customerId);
- public TextPageData findCustomersByTenantId(TenantId tenantId, TextPageLink pageLink);
+ TextPageData findCustomersByTenantId(TenantId tenantId, TextPageLink pageLink);
- public void deleteCustomersByTenantId(TenantId tenantId);
+ void deleteCustomersByTenantId(TenantId tenantId);
}
diff --git a/dao/src/main/java/org/thingsboard/server/dao/customer/CustomerServiceImpl.java b/dao/src/main/java/org/thingsboard/server/dao/customer/CustomerServiceImpl.java
index 18ead42d5a..3e9e472c06 100644
--- a/dao/src/main/java/org/thingsboard/server/dao/customer/CustomerServiceImpl.java
+++ b/dao/src/main/java/org/thingsboard/server/dao/customer/CustomerServiceImpl.java
@@ -15,14 +15,12 @@
*/
package org.thingsboard.server.dao.customer;
-import static org.thingsboard.server.dao.DaoUtil.convertDataList;
-import static org.thingsboard.server.dao.DaoUtil.getData;
-
-import java.util.List;
-
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
import org.thingsboard.server.common.data.Customer;
+import org.thingsboard.server.common.data.Tenant;
import org.thingsboard.server.common.data.id.CustomerId;
import org.thingsboard.server.common.data.id.TenantId;
import org.thingsboard.server.common.data.page.TextPageData;
@@ -31,17 +29,13 @@ import org.thingsboard.server.dao.dashboard.DashboardService;
import org.thingsboard.server.dao.device.DeviceService;
import org.thingsboard.server.dao.exception.DataValidationException;
import org.thingsboard.server.dao.exception.IncorrectParameterException;
-import org.thingsboard.server.dao.model.CustomerEntity;
-import org.thingsboard.server.dao.model.TenantEntity;
import org.thingsboard.server.dao.service.DataValidator;
import org.thingsboard.server.dao.service.PaginatedRemover;
+import org.thingsboard.server.dao.service.Validator;
import org.thingsboard.server.dao.tenant.TenantDao;
import org.thingsboard.server.dao.user.UserService;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-import org.thingsboard.server.dao.service.Validator;
+
+import java.util.List;
@Service
@Slf4j
public class CustomerServiceImpl implements CustomerService {
@@ -65,16 +59,14 @@ public class CustomerServiceImpl implements CustomerService {
public Customer findCustomerById(CustomerId customerId) {
log.trace("Executing findCustomerById [{}]", customerId);
Validator.validateId(customerId, "Incorrect customerId " + customerId);
- CustomerEntity customerEntity = customerDao.findById(customerId.getId());
- return getData(customerEntity);
+ return customerDao.findById(customerId.getId());
}
@Override
public Customer saveCustomer(Customer customer) {
log.trace("Executing saveCustomer [{}]", customer);
customerValidator.validate(customer);
- CustomerEntity customerEntity = customerDao.save(customer);
- return getData(customerEntity);
+ return customerDao.save(customer);
}
@Override
@@ -96,8 +88,7 @@ public class CustomerServiceImpl implements CustomerService {
log.trace("Executing findCustomersByTenantId, tenantId [{}], pageLink [{}]", tenantId, pageLink);
Validator.validateId(tenantId, "Incorrect tenantId " + tenantId);
Validator.validatePageLink(pageLink, "Incorrect page link " + pageLink);
- List customerEntities = customerDao.findCustomersByTenantId(tenantId.getId(), pageLink);
- List customers = convertDataList(customerEntities);
+ List customers = customerDao.findCustomersByTenantId(tenantId.getId(), pageLink);
return new TextPageData(customers, pageLink);
}
@@ -121,7 +112,7 @@ public class CustomerServiceImpl implements CustomerService {
if (customer.getTenantId() == null) {
throw new DataValidationException("Customer should be assigned to tenant!");
} else {
- TenantEntity tenant = tenantDao.findById(customer.getTenantId().getId());
+ Tenant tenant = tenantDao.findById(customer.getTenantId().getId());
if (tenant == null) {
throw new DataValidationException("Customer is referencing to non-existent tenant!");
}
@@ -129,17 +120,17 @@ public class CustomerServiceImpl implements CustomerService {
}
};
- private PaginatedRemover customersByTenantRemover =
- new PaginatedRemover() {
+ private PaginatedRemover customersByTenantRemover =
+ new PaginatedRemover() {
@Override
- protected List findEntities(TenantId id, TextPageLink pageLink) {
+ protected List findEntities(TenantId id, TextPageLink pageLink) {
return customerDao.findCustomersByTenantId(id.getId(), pageLink);
}
@Override
- protected void removeEntity(CustomerEntity entity) {
- deleteCustomer(new CustomerId(entity.getId()));
+ protected void removeEntity(Customer entity) {
+ deleteCustomer(new CustomerId(entity.getUuidId()));
}
};
}
diff --git a/dao/src/main/java/org/thingsboard/server/dao/dashboard/CassandraDashboardDao.java b/dao/src/main/java/org/thingsboard/server/dao/dashboard/CassandraDashboardDao.java
new file mode 100644
index 0000000000..82d5a26576
--- /dev/null
+++ b/dao/src/main/java/org/thingsboard/server/dao/dashboard/CassandraDashboardDao.java
@@ -0,0 +1,37 @@
+/**
+ * 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.dashboard;
+
+import org.springframework.stereotype.Component;
+import org.thingsboard.server.common.data.Dashboard;
+import org.thingsboard.server.dao.CassandraAbstractSearchTextDao;
+import org.thingsboard.server.dao.model.nosql.DashboardEntity;
+
+import static org.thingsboard.server.dao.model.ModelConstants.DASHBOARD_COLUMN_FAMILY_NAME;
+
+@Component
+public class CassandraDashboardDao extends CassandraAbstractSearchTextDao implements DashboardDao {
+
+ @Override
+ protected Class getColumnFamilyClass() {
+ return DashboardEntity.class;
+ }
+
+ @Override
+ protected String getColumnFamilyName() {
+ return DASHBOARD_COLUMN_FAMILY_NAME;
+ }
+}
diff --git a/dao/src/main/java/org/thingsboard/server/dao/dashboard/DashboardInfoDaoImpl.java b/dao/src/main/java/org/thingsboard/server/dao/dashboard/CassandraDashboardInfoDao.java
similarity index 76%
rename from dao/src/main/java/org/thingsboard/server/dao/dashboard/DashboardInfoDaoImpl.java
rename to dao/src/main/java/org/thingsboard/server/dao/dashboard/CassandraDashboardInfoDao.java
index 007bc8d7bb..b0c3e891d3 100644
--- a/dao/src/main/java/org/thingsboard/server/dao/dashboard/DashboardInfoDaoImpl.java
+++ b/dao/src/main/java/org/thingsboard/server/dao/dashboard/CassandraDashboardInfoDao.java
@@ -17,9 +17,11 @@ package org.thingsboard.server.dao.dashboard;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
+import org.thingsboard.server.common.data.DashboardInfo;
import org.thingsboard.server.common.data.page.TextPageLink;
-import org.thingsboard.server.dao.AbstractSearchTextDao;
-import org.thingsboard.server.dao.model.DashboardInfoEntity;
+import org.thingsboard.server.dao.CassandraAbstractSearchTextDao;
+import org.thingsboard.server.dao.DaoUtil;
+import org.thingsboard.server.dao.model.nosql.DashboardInfoEntity;
import java.util.Arrays;
import java.util.Collections;
@@ -31,7 +33,7 @@ import static org.thingsboard.server.dao.model.ModelConstants.*;
@Component
@Slf4j
-public class DashboardInfoDaoImpl extends AbstractSearchTextDao implements DashboardInfoDao {
+public class CassandraDashboardInfoDao extends CassandraAbstractSearchTextDao implements DashboardInfoDao {
@Override
protected Class getColumnFamilyClass() {
@@ -44,18 +46,18 @@ public class DashboardInfoDaoImpl extends AbstractSearchTextDao findDashboardsByTenantId(UUID tenantId, TextPageLink pageLink) {
+ public List findDashboardsByTenantId(UUID tenantId, TextPageLink pageLink) {
log.debug("Try to find dashboards by tenantId [{}] and pageLink [{}]", tenantId, pageLink);
List dashboardEntities = findPageWithTextSearch(DASHBOARD_BY_TENANT_AND_SEARCH_TEXT_COLUMN_FAMILY_NAME,
Collections.singletonList(eq(DASHBOARD_TENANT_ID_PROPERTY, tenantId)),
pageLink);
log.trace("Found dashboards [{}] by tenantId [{}] and pageLink [{}]", dashboardEntities, tenantId, pageLink);
- return dashboardEntities;
+ return DaoUtil.convertDataList(dashboardEntities);
}
@Override
- public List findDashboardsByTenantIdAndCustomerId(UUID tenantId, UUID customerId, TextPageLink pageLink) {
+ public List findDashboardsByTenantIdAndCustomerId(UUID tenantId, UUID customerId, TextPageLink pageLink) {
log.debug("Try to find dashboards by tenantId [{}], customerId[{}] and pageLink [{}]", tenantId, customerId, pageLink);
List dashboardEntities = findPageWithTextSearch(DASHBOARD_BY_CUSTOMER_AND_SEARCH_TEXT_COLUMN_FAMILY_NAME,
Arrays.asList(eq(DASHBOARD_CUSTOMER_ID_PROPERTY, customerId),
@@ -63,7 +65,7 @@ public class DashboardInfoDaoImpl extends AbstractSearchTextDao the generic type
*/
-public interface DashboardDao extends Dao {
+public interface DashboardDao extends Dao {
/**
* Save or update dashboard object
@@ -37,6 +29,6 @@ public interface DashboardDao extends Dao {
* @param dashboard the dashboard object
* @return saved dashboard object
*/
- DashboardEntity save(Dashboard dashboard);
+ Dashboard save(Dashboard dashboard);
}
diff --git a/dao/src/main/java/org/thingsboard/server/dao/dashboard/DashboardDaoImpl.java b/dao/src/main/java/org/thingsboard/server/dao/dashboard/DashboardDaoImpl.java
deleted file mode 100644
index 23546fde69..0000000000
--- a/dao/src/main/java/org/thingsboard/server/dao/dashboard/DashboardDaoImpl.java
+++ /dev/null
@@ -1,60 +0,0 @@
-/**
- * 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.dashboard;
-
-import static com.datastax.driver.core.querybuilder.QueryBuilder.eq;
-import static org.thingsboard.server.dao.model.ModelConstants.DASHBOARD_BY_CUSTOMER_AND_SEARCH_TEXT_COLUMN_FAMILY_NAME;
-import static org.thingsboard.server.dao.model.ModelConstants.DASHBOARD_BY_TENANT_AND_SEARCH_TEXT_COLUMN_FAMILY_NAME;
-import static org.thingsboard.server.dao.model.ModelConstants.DASHBOARD_COLUMN_FAMILY_NAME;
-import static org.thingsboard.server.dao.model.ModelConstants.DASHBOARD_CUSTOMER_ID_PROPERTY;
-import static org.thingsboard.server.dao.model.ModelConstants.DASHBOARD_TENANT_ID_PROPERTY;
-import static org.thingsboard.server.dao.model.ModelConstants.NULL_UUID;
-
-import java.util.Arrays;
-import java.util.List;
-import java.util.UUID;
-
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.stereotype.Component;
-import org.thingsboard.server.common.data.Dashboard;
-import org.thingsboard.server.common.data.page.TextPageLink;
-import org.thingsboard.server.dao.AbstractSearchTextDao;
-import org.thingsboard.server.dao.model.DashboardEntity;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.thingsboard.server.dao.model.DashboardInfoEntity;
-
-@Component
-@Slf4j
-public class DashboardDaoImpl extends AbstractSearchTextDao implements DashboardDao {
-
- @Override
- protected Class getColumnFamilyClass() {
- return DashboardEntity.class;
- }
-
- @Override
- protected String getColumnFamilyName() {
- return DASHBOARD_COLUMN_FAMILY_NAME;
- }
-
- @Override
- public DashboardEntity save(Dashboard dashboard) {
- log.debug("Save dashboard [{}] ", dashboard);
- return save(new DashboardEntity(dashboard));
- }
-
-}
diff --git a/dao/src/main/java/org/thingsboard/server/dao/dashboard/DashboardInfoDao.java b/dao/src/main/java/org/thingsboard/server/dao/dashboard/DashboardInfoDao.java
index 9852b358be..a26bd1410f 100644
--- a/dao/src/main/java/org/thingsboard/server/dao/dashboard/DashboardInfoDao.java
+++ b/dao/src/main/java/org/thingsboard/server/dao/dashboard/DashboardInfoDao.java
@@ -15,21 +15,17 @@
*/
package org.thingsboard.server.dao.dashboard;
-import java.util.List;
-import java.util.UUID;
-
-import org.thingsboard.server.common.data.Dashboard;
+import org.thingsboard.server.common.data.DashboardInfo;
import org.thingsboard.server.common.data.page.TextPageLink;
import org.thingsboard.server.dao.Dao;
-import org.thingsboard.server.dao.model.DashboardEntity;
-import org.thingsboard.server.dao.model.DashboardInfoEntity;
+
+import java.util.List;
+import java.util.UUID;
/**
* The Interface DashboardInfoDao.
- *
- * @param the generic type
*/
-public interface DashboardInfoDao extends Dao {
+public interface DashboardInfoDao extends Dao {
/**
* Find dashboards by tenantId and page link.
@@ -38,7 +34,7 @@ public interface DashboardInfoDao extends Dao {
* @param pageLink the page link
* @return the list of dashboard objects
*/
- List findDashboardsByTenantId(UUID tenantId, TextPageLink pageLink);
+ List findDashboardsByTenantId(UUID tenantId, TextPageLink pageLink);
/**
* Find dashboards by tenantId, customerId and page link.
@@ -48,6 +44,6 @@ public interface DashboardInfoDao extends Dao {
* @param pageLink the page link
* @return the list of dashboard objects
*/
- List findDashboardsByTenantIdAndCustomerId(UUID tenantId, UUID customerId, TextPageLink pageLink);
+ List findDashboardsByTenantIdAndCustomerId(UUID tenantId, UUID customerId, TextPageLink pageLink);
}
diff --git a/dao/src/main/java/org/thingsboard/server/dao/dashboard/DashboardService.java b/dao/src/main/java/org/thingsboard/server/dao/dashboard/DashboardService.java
index 8c860646bd..b49b5b44fe 100644
--- a/dao/src/main/java/org/thingsboard/server/dao/dashboard/DashboardService.java
+++ b/dao/src/main/java/org/thingsboard/server/dao/dashboard/DashboardService.java
@@ -25,22 +25,22 @@ import org.thingsboard.server.common.data.page.TextPageLink;
public interface DashboardService {
- public Dashboard findDashboardById(DashboardId dashboardId);
-
- public Dashboard saveDashboard(Dashboard dashboard);
-
- public Dashboard assignDashboardToCustomer(DashboardId dashboardId, CustomerId customerId);
+ Dashboard findDashboardById(DashboardId dashboardId);
- public Dashboard unassignDashboardFromCustomer(DashboardId dashboardId);
+ Dashboard saveDashboard(Dashboard dashboard);
- public void deleteDashboard(DashboardId dashboardId);
-
- public TextPageData findDashboardsByTenantId(TenantId tenantId, TextPageLink pageLink);
+ Dashboard assignDashboardToCustomer(DashboardId dashboardId, CustomerId customerId);
- public void deleteDashboardsByTenantId(TenantId tenantId);
-
- public TextPageData findDashboardsByTenantIdAndCustomerId(TenantId tenantId, CustomerId customerId, TextPageLink pageLink);
+ Dashboard unassignDashboardFromCustomer(DashboardId dashboardId);
+
+ void deleteDashboard(DashboardId dashboardId);
+
+ TextPageData findDashboardsByTenantId(TenantId tenantId, TextPageLink pageLink);
+
+ void deleteDashboardsByTenantId(TenantId tenantId);
+
+ TextPageData findDashboardsByTenantIdAndCustomerId(TenantId tenantId, CustomerId customerId, TextPageLink pageLink);
+
+ void unassignCustomerDashboards(TenantId tenantId, CustomerId customerId);
- public void unassignCustomerDashboards(TenantId tenantId, CustomerId customerId);
-
}
diff --git a/dao/src/main/java/org/thingsboard/server/dao/dashboard/DashboardServiceImpl.java b/dao/src/main/java/org/thingsboard/server/dao/dashboard/DashboardServiceImpl.java
index 2e0abfbdfd..fca73c4ae4 100644
--- a/dao/src/main/java/org/thingsboard/server/dao/dashboard/DashboardServiceImpl.java
+++ b/dao/src/main/java/org/thingsboard/server/dao/dashboard/DashboardServiceImpl.java
@@ -15,15 +15,14 @@
*/
package org.thingsboard.server.dao.dashboard;
-import static org.thingsboard.server.dao.DaoUtil.convertDataList;
-import static org.thingsboard.server.dao.DaoUtil.getData;
-
-import java.util.List;
-
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.thingsboard.server.common.data.Customer;
import org.thingsboard.server.common.data.Dashboard;
import org.thingsboard.server.common.data.DashboardInfo;
+import org.thingsboard.server.common.data.Tenant;
import org.thingsboard.server.common.data.id.CustomerId;
import org.thingsboard.server.common.data.id.DashboardId;
import org.thingsboard.server.common.data.id.TenantId;
@@ -31,15 +30,13 @@ import org.thingsboard.server.common.data.page.TextPageData;
import org.thingsboard.server.common.data.page.TextPageLink;
import org.thingsboard.server.dao.customer.CustomerDao;
import org.thingsboard.server.dao.exception.DataValidationException;
-import org.thingsboard.server.dao.model.*;
+import org.thingsboard.server.dao.model.ModelConstants;
import org.thingsboard.server.dao.service.DataValidator;
import org.thingsboard.server.dao.service.PaginatedRemover;
-import org.thingsboard.server.dao.tenant.TenantDao;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
import org.thingsboard.server.dao.service.Validator;
+import org.thingsboard.server.dao.tenant.TenantDao;
+
+import java.util.List;
@Service
@Slf4j
@@ -61,16 +58,14 @@ public class DashboardServiceImpl implements DashboardService {
public Dashboard findDashboardById(DashboardId dashboardId) {
log.trace("Executing findDashboardById [{}]", dashboardId);
Validator.validateId(dashboardId, "Incorrect dashboardId " + dashboardId);
- DashboardEntity dashboardEntity = dashboardDao.findById(dashboardId.getId());
- return getData(dashboardEntity);
+ return dashboardDao.findById(dashboardId.getId());
}
@Override
public Dashboard saveDashboard(Dashboard dashboard) {
log.trace("Executing saveDashboard [{}]", dashboard);
dashboardValidator.validate(dashboard);
- DashboardEntity dashboardEntity = dashboardDao.save(dashboard);
- return getData(dashboardEntity);
+ return dashboardDao.save(dashboard);
}
@Override
@@ -99,9 +94,8 @@ public class DashboardServiceImpl implements DashboardService {
log.trace("Executing findDashboardsByTenantId, tenantId [{}], pageLink [{}]", tenantId, pageLink);
Validator.validateId(tenantId, "Incorrect tenantId " + tenantId);
Validator.validatePageLink(pageLink, "Incorrect page link " + pageLink);
- List dashboardEntities = dashboardInfoDao.findDashboardsByTenantId(tenantId.getId(), pageLink);
- List dashboards = convertDataList(dashboardEntities);
- return new TextPageData(dashboards, pageLink);
+ List dashboards = dashboardInfoDao.findDashboardsByTenantId(tenantId.getId(), pageLink);
+ return new TextPageData<>(dashboards, pageLink);
}
@Override
@@ -117,9 +111,8 @@ public class DashboardServiceImpl implements DashboardService {
Validator.validateId(tenantId, "Incorrect tenantId " + tenantId);
Validator.validateId(customerId, "Incorrect customerId " + customerId);
Validator.validatePageLink(pageLink, "Incorrect page link " + pageLink);
- List dashboardEntities = dashboardInfoDao.findDashboardsByTenantIdAndCustomerId(tenantId.getId(), customerId.getId(), pageLink);
- List dashboards = convertDataList(dashboardEntities);
- return new TextPageData(dashboards, pageLink);
+ List dashboards = dashboardInfoDao.findDashboardsByTenantIdAndCustomerId(tenantId.getId(), customerId.getId(), pageLink);
+ return new TextPageData<>(dashboards, pageLink);
}
@Override
@@ -140,7 +133,7 @@ public class DashboardServiceImpl implements DashboardService {
if (dashboard.getTenantId() == null) {
throw new DataValidationException("Dashboard should be assigned to tenant!");
} else {
- TenantEntity tenant = tenantDao.findById(dashboard.getTenantId().getId());
+ Tenant tenant = tenantDao.findById(dashboard.getTenantId().getId());
if (tenant == null) {
throw new DataValidationException("Dashboard is referencing to non-existent tenant!");
}
@@ -148,32 +141,32 @@ public class DashboardServiceImpl implements DashboardService {
if (dashboard.getCustomerId() == null) {
dashboard.setCustomerId(new CustomerId(ModelConstants.NULL_UUID));
} else if (!dashboard.getCustomerId().getId().equals(ModelConstants.NULL_UUID)) {
- CustomerEntity customer = customerDao.findById(dashboard.getCustomerId().getId());
+ Customer customer = customerDao.findById(dashboard.getCustomerId().getId());
if (customer == null) {
throw new DataValidationException("Can't assign dashboard to non-existent customer!");
}
- if (!customer.getTenantId().equals(dashboard.getTenantId().getId())) {
+ if (!customer.getTenantId().getId().equals(dashboard.getTenantId().getId())) {
throw new DataValidationException("Can't assign dashboard to customer from different tenant!");
}
}
}
};
- private PaginatedRemover tenantDashboardsRemover =
- new PaginatedRemover() {
+ private PaginatedRemover tenantDashboardsRemover =
+ new PaginatedRemover() {
@Override
- protected List findEntities(TenantId id, TextPageLink pageLink) {
+ protected List findEntities(TenantId id, TextPageLink pageLink) {
return dashboardInfoDao.findDashboardsByTenantId(id.getId(), pageLink);
}
@Override
- protected void removeEntity(DashboardInfoEntity entity) {
- deleteDashboard(new DashboardId(entity.getId()));
+ protected void removeEntity(DashboardInfo entity) {
+ deleteDashboard(new DashboardId(entity.getUuidId()));
}
};
- class CustomerDashboardsUnassigner extends PaginatedRemover {
+ private class CustomerDashboardsUnassigner extends PaginatedRemover {
private TenantId tenantId;
@@ -182,13 +175,13 @@ public class DashboardServiceImpl implements DashboardService {
}
@Override
- protected List findEntities(CustomerId id, TextPageLink pageLink) {
+ protected List findEntities(CustomerId id, TextPageLink pageLink) {
return dashboardInfoDao.findDashboardsByTenantIdAndCustomerId(tenantId.getId(), id.getId(), pageLink);
}
@Override
- protected void removeEntity(DashboardInfoEntity entity) {
- unassignDashboardFromCustomer(new DashboardId(entity.getId()));
+ protected void removeEntity(DashboardInfo entity) {
+ unassignDashboardFromCustomer(new DashboardId(entity.getUuidId()));
}
}
diff --git a/dao/src/main/java/org/thingsboard/server/dao/device/DeviceCredentialsDaoImpl.java b/dao/src/main/java/org/thingsboard/server/dao/device/CassandraDeviceCredentialsDao.java
similarity index 75%
rename from dao/src/main/java/org/thingsboard/server/dao/device/DeviceCredentialsDaoImpl.java
rename to dao/src/main/java/org/thingsboard/server/dao/device/CassandraDeviceCredentialsDao.java
index 68fbc8ca64..14ac5bfd45 100644
--- a/dao/src/main/java/org/thingsboard/server/dao/device/DeviceCredentialsDaoImpl.java
+++ b/dao/src/main/java/org/thingsboard/server/dao/device/CassandraDeviceCredentialsDao.java
@@ -15,26 +15,23 @@
*/
package org.thingsboard.server.dao.device;
-import static com.datastax.driver.core.querybuilder.QueryBuilder.eq;
-import static com.datastax.driver.core.querybuilder.QueryBuilder.select;
-
-import java.util.UUID;
-
+import com.datastax.driver.core.querybuilder.Select.Where;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
import org.thingsboard.server.common.data.security.DeviceCredentials;
-import org.thingsboard.server.dao.AbstractModelDao;
-import org.thingsboard.server.dao.model.DeviceCredentialsEntity;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.stereotype.Repository;
-
-import com.datastax.driver.core.querybuilder.Select.Where;
+import org.thingsboard.server.dao.CassandraAbstractModelDao;
+import org.thingsboard.server.dao.DaoUtil;
+import org.thingsboard.server.dao.model.nosql.DeviceCredentialsEntity;
import org.thingsboard.server.dao.model.ModelConstants;
+import java.util.UUID;
+
+import static com.datastax.driver.core.querybuilder.QueryBuilder.eq;
+import static com.datastax.driver.core.querybuilder.QueryBuilder.select;
+
@Component
@Slf4j
-public class DeviceCredentialsDaoImpl extends AbstractModelDao implements DeviceCredentialsDao {
+public class CassandraDeviceCredentialsDao extends CassandraAbstractModelDao implements DeviceCredentialsDao {
@Override
protected Class getColumnFamilyClass() {
@@ -47,31 +44,24 @@ public class DeviceCredentialsDaoImpl extends AbstractModelDao implements DeviceDao {
+public class CassandraDeviceDao extends CassandraAbstractSearchTextDao implements DeviceDao {
@Override
protected Class getColumnFamilyClass() {
@@ -48,23 +45,17 @@ public class DeviceDaoImpl extends AbstractSearchTextDao implement
}
@Override
- public DeviceEntity save(Device device) {
- log.debug("Save device [{}] ", device);
- return save(new DeviceEntity(device));
- }
-
- @Override
- public List findDevicesByTenantId(UUID tenantId, TextPageLink pageLink) {
+ public List findDevicesByTenantId(UUID tenantId, TextPageLink pageLink) {
log.debug("Try to find devices by tenantId [{}] and pageLink [{}]", tenantId, pageLink);
List deviceEntities = findPageWithTextSearch(DEVICE_BY_TENANT_AND_SEARCH_TEXT_COLUMN_FAMILY_NAME,
Collections.singletonList(eq(DEVICE_TENANT_ID_PROPERTY, tenantId)), pageLink);
log.trace("Found devices [{}] by tenantId [{}] and pageLink [{}]", deviceEntities, tenantId, pageLink);
- return deviceEntities;
+ return DaoUtil.convertDataList(deviceEntities);
}
@Override
- public ListenableFuture> findDevicesByTenantIdAndIdsAsync(UUID tenantId, List deviceIds) {
+ public ListenableFuture> findDevicesByTenantIdAndIdsAsync(UUID tenantId, List deviceIds) {
log.debug("Try to find devices by tenantId [{}] and device Ids [{}]", tenantId, deviceIds);
Select select = select().from(getColumnFamilyName());
Select.Where query = select.where();
@@ -74,7 +65,7 @@ public class DeviceDaoImpl extends AbstractSearchTextDao implement
}
@Override
- public List findDevicesByTenantIdAndCustomerId(UUID tenantId, UUID customerId, TextPageLink pageLink) {
+ public List findDevicesByTenantIdAndCustomerId(UUID tenantId, UUID customerId, TextPageLink pageLink) {
log.debug("Try to find devices by tenantId [{}], customerId[{}] and pageLink [{}]", tenantId, customerId, pageLink);
List deviceEntities = findPageWithTextSearch(DEVICE_BY_CUSTOMER_AND_SEARCH_TEXT_COLUMN_FAMILY_NAME,
Arrays.asList(eq(DEVICE_CUSTOMER_ID_PROPERTY, customerId),
@@ -82,11 +73,11 @@ public class DeviceDaoImpl extends AbstractSearchTextDao implement
pageLink);
log.trace("Found devices [{}] by tenantId [{}], customerId [{}] and pageLink [{}]", deviceEntities, tenantId, customerId, pageLink);
- return deviceEntities;
+ return DaoUtil.convertDataList(deviceEntities);
}
@Override
- public ListenableFuture> findDevicesByTenantIdCustomerIdAndIdsAsync(UUID tenantId, UUID customerId, List deviceIds) {
+ public ListenableFuture> findDevicesByTenantIdCustomerIdAndIdsAsync(UUID tenantId, UUID customerId, List deviceIds) {
log.debug("Try to find devices by tenantId [{}], customerId [{}] and device Ids [{}]", tenantId, customerId, deviceIds);
Select select = select().from(getColumnFamilyName());
Select.Where query = select.where();
@@ -97,12 +88,12 @@ public class DeviceDaoImpl extends AbstractSearchTextDao implement
}
@Override
- public Optional findDevicesByTenantIdAndName(UUID tenantId, String deviceName) {
+ public Optional findDevicesByTenantIdAndName(UUID tenantId, String deviceName) {
Select select = select().from(DEVICE_BY_TENANT_AND_NAME_VIEW_NAME);
Select.Where query = select.where();
query.and(eq(DEVICE_TENANT_ID_PROPERTY, tenantId));
query.and(eq(DEVICE_NAME_PROPERTY, deviceName));
- return Optional.ofNullable(findOneByStatement(query));
+ return Optional.ofNullable(DaoUtil.getData(findOneByStatement(query)));
}
}
diff --git a/dao/src/main/java/org/thingsboard/server/dao/device/DeviceCredentialsDao.java b/dao/src/main/java/org/thingsboard/server/dao/device/DeviceCredentialsDao.java
index 89a4a025c5..c13129ad1d 100644
--- a/dao/src/main/java/org/thingsboard/server/dao/device/DeviceCredentialsDao.java
+++ b/dao/src/main/java/org/thingsboard/server/dao/device/DeviceCredentialsDao.java
@@ -15,18 +15,15 @@
*/
package org.thingsboard.server.dao.device;
-import java.util.UUID;
-
import org.thingsboard.server.common.data.security.DeviceCredentials;
import org.thingsboard.server.dao.Dao;
-import org.thingsboard.server.dao.model.DeviceCredentialsEntity;
+
+import java.util.UUID;
/**
* The Interface DeviceCredentialsDao.
- *
- * @param the generic type
*/
-public interface DeviceCredentialsDao extends Dao {
+public interface DeviceCredentialsDao extends Dao {
/**
* Save or update device credentials object
@@ -34,7 +31,7 @@ public interface DeviceCredentialsDao extends Dao {
* @param deviceCredentials the device credentials object
* @return saved device credentials object
*/
- DeviceCredentialsEntity save(DeviceCredentials deviceCredentials);
+ DeviceCredentials save(DeviceCredentials deviceCredentials);
/**
* Find device credentials by device id.
@@ -42,7 +39,7 @@ public interface DeviceCredentialsDao extends Dao {
* @param deviceId the device id
* @return the device credentials object
*/
- DeviceCredentialsEntity findByDeviceId(UUID deviceId);
+ DeviceCredentials findByDeviceId(UUID deviceId);
/**
* Find device credentials by credentials id.
@@ -50,6 +47,6 @@ public interface DeviceCredentialsDao extends Dao {
* @param credentialsId the credentials id
* @return the device credentials object
*/
- DeviceCredentialsEntity findByCredentialsId(String credentialsId);
+ DeviceCredentials findByCredentialsId(String credentialsId);
}
diff --git a/dao/src/main/java/org/thingsboard/server/dao/device/DeviceCredentialsServiceImpl.java b/dao/src/main/java/org/thingsboard/server/dao/device/DeviceCredentialsServiceImpl.java
index 10e329ad4d..ae2322121c 100644
--- a/dao/src/main/java/org/thingsboard/server/dao/device/DeviceCredentialsServiceImpl.java
+++ b/dao/src/main/java/org/thingsboard/server/dao/device/DeviceCredentialsServiceImpl.java
@@ -26,10 +26,8 @@ import org.thingsboard.server.common.data.security.DeviceCredentials;
import org.thingsboard.server.common.data.security.DeviceCredentialsType;
import org.thingsboard.server.dao.EncryptionUtil;
import org.thingsboard.server.dao.exception.DataValidationException;
-import org.thingsboard.server.dao.model.DeviceCredentialsEntity;
import org.thingsboard.server.dao.service.DataValidator;
-import static org.thingsboard.server.dao.DaoUtil.getData;
import static org.thingsboard.server.dao.service.Validator.validateId;
import static org.thingsboard.server.dao.service.Validator.validateString;
@@ -47,16 +45,14 @@ public class DeviceCredentialsServiceImpl implements DeviceCredentialsService {
public DeviceCredentials findDeviceCredentialsByDeviceId(DeviceId deviceId) {
log.trace("Executing findDeviceCredentialsByDeviceId [{}]", deviceId);
validateId(deviceId, "Incorrect deviceId " + deviceId);
- DeviceCredentialsEntity deviceCredentialsEntity = deviceCredentialsDao.findByDeviceId(deviceId.getId());
- return getData(deviceCredentialsEntity);
+ return deviceCredentialsDao.findByDeviceId(deviceId.getId());
}
@Override
public DeviceCredentials findDeviceCredentialsByCredentialsId(String credentialsId) {
log.trace("Executing findDeviceCredentialsByCredentialsId [{}]", credentialsId);
validateString(credentialsId, "Incorrect credentialsId " + credentialsId);
- DeviceCredentialsEntity deviceCredentialsEntity = deviceCredentialsDao.findByCredentialsId(credentialsId);
- return getData(deviceCredentialsEntity);
+ return deviceCredentialsDao.findByCredentialsId(credentialsId);
}
@Override
@@ -75,7 +71,7 @@ public class DeviceCredentialsServiceImpl implements DeviceCredentialsService {
}
log.trace("Executing updateDeviceCredentials [{}]", deviceCredentials);
credentialsValidator.validate(deviceCredentials);
- return getData(deviceCredentialsDao.save(deviceCredentials));
+ return deviceCredentialsDao.save(deviceCredentials);
}
private void formatCertData(DeviceCredentials deviceCredentials) {
@@ -96,7 +92,7 @@ public class DeviceCredentialsServiceImpl implements DeviceCredentialsService {
@Override
protected void validateCreate(DeviceCredentials deviceCredentials) {
- DeviceCredentialsEntity existingCredentialsEntity = deviceCredentialsDao.findByCredentialsId(deviceCredentials.getCredentialsId());
+ DeviceCredentials existingCredentialsEntity = deviceCredentialsDao.findByCredentialsId(deviceCredentials.getCredentialsId());
if (existingCredentialsEntity != null) {
throw new DataValidationException("Create of existent device credentials!");
}
@@ -104,12 +100,12 @@ public class DeviceCredentialsServiceImpl implements DeviceCredentialsService {
@Override
protected void validateUpdate(DeviceCredentials deviceCredentials) {
- DeviceCredentialsEntity existingCredentialsEntity = deviceCredentialsDao.findById(deviceCredentials.getUuidId());
- if (existingCredentialsEntity == null) {
+ DeviceCredentials existingCredentials = deviceCredentialsDao.findById(deviceCredentials.getUuidId());
+ if (existingCredentials == null) {
throw new DataValidationException("Unable to update non-existent device credentials!");
}
- DeviceCredentialsEntity sameCredentialsIdEntity = deviceCredentialsDao.findByCredentialsId(deviceCredentials.getCredentialsId());
- if (sameCredentialsIdEntity != null && !sameCredentialsIdEntity.getId().equals(deviceCredentials.getUuidId())) {
+ DeviceCredentials sameCredentialsId = deviceCredentialsDao.findByCredentialsId(deviceCredentials.getCredentialsId());
+ if (sameCredentialsId != null && !sameCredentialsId.getUuidId().equals(deviceCredentials.getUuidId())) {
throw new DataValidationException("Specified credentials are already registered!");
}
}
diff --git a/dao/src/main/java/org/thingsboard/server/dao/device/DeviceDao.java b/dao/src/main/java/org/thingsboard/server/dao/device/DeviceDao.java
index b8d395c8e2..86d2f8f7e6 100644
--- a/dao/src/main/java/org/thingsboard/server/dao/device/DeviceDao.java
+++ b/dao/src/main/java/org/thingsboard/server/dao/device/DeviceDao.java
@@ -15,21 +15,20 @@
*/
package org.thingsboard.server.dao.device;
-import java.util.List;
-import java.util.Optional;
-import java.util.UUID;
-
import com.google.common.util.concurrent.ListenableFuture;
import org.thingsboard.server.common.data.Device;
import org.thingsboard.server.common.data.page.TextPageLink;
import org.thingsboard.server.dao.Dao;
-import org.thingsboard.server.dao.model.DeviceEntity;
+
+import java.util.List;
+import java.util.Optional;
+import java.util.UUID;
/**
* The Interface DeviceDao.
*
*/
-public interface DeviceDao extends Dao {
+public interface DeviceDao extends Dao {
/**
* Save or update device object
@@ -37,7 +36,7 @@ public interface DeviceDao extends Dao {
* @param device the device object
* @return saved device object
*/
- DeviceEntity save(Device device);
+ Device save(Device device);
/**
* Find devices by tenantId and page link.
@@ -46,7 +45,7 @@ public interface DeviceDao extends Dao {
* @param pageLink the page link
* @return the list of device objects
*/
- List findDevicesByTenantId(UUID tenantId, TextPageLink pageLink);
+ List findDevicesByTenantId(UUID tenantId, TextPageLink pageLink);
/**
* Find devices by tenantId and devices Ids.
@@ -55,7 +54,7 @@ public interface DeviceDao extends Dao {
* @param deviceIds the device Ids
* @return the list of device objects
*/
- ListenableFuture> findDevicesByTenantIdAndIdsAsync(UUID tenantId, List deviceIds);
+ ListenableFuture> findDevicesByTenantIdAndIdsAsync(UUID tenantId, List deviceIds);
/**
* Find devices by tenantId, customerId and page link.
@@ -65,7 +64,7 @@ public interface DeviceDao extends Dao {
* @param pageLink the page link
* @return the list of device objects
*/
- List findDevicesByTenantIdAndCustomerId(UUID tenantId, UUID customerId, TextPageLink pageLink);
+ List findDevicesByTenantIdAndCustomerId(UUID tenantId, UUID customerId, TextPageLink pageLink);
/**
* Find devices by tenantId, customerId and devices Ids.
@@ -75,7 +74,7 @@ public interface DeviceDao extends Dao {
* @param deviceIds the device Ids
* @return the list of device objects
*/
- ListenableFuture> findDevicesByTenantIdCustomerIdAndIdsAsync(UUID tenantId, UUID customerId, List deviceIds);
+ ListenableFuture> findDevicesByTenantIdCustomerIdAndIdsAsync(UUID tenantId, UUID customerId, List deviceIds);
/**
* Find devices by tenantId and device name.
@@ -84,5 +83,5 @@ public interface DeviceDao extends Dao {
* @param name the device name
* @return the optional device object
*/
- Optional findDevicesByTenantIdAndName(UUID tenantId, String name);
+ Optional findDevicesByTenantIdAndName(UUID tenantId, String name);
}
diff --git a/dao/src/main/java/org/thingsboard/server/dao/device/DeviceServiceImpl.java b/dao/src/main/java/org/thingsboard/server/dao/device/DeviceServiceImpl.java
index 3d1ce31349..a5707ce29d 100644
--- a/dao/src/main/java/org/thingsboard/server/dao/device/DeviceServiceImpl.java
+++ b/dao/src/main/java/org/thingsboard/server/dao/device/DeviceServiceImpl.java
@@ -15,15 +15,15 @@
*/
package org.thingsboard.server.dao.device;
-import com.google.common.base.Function;
-import com.google.common.util.concurrent.Futures;
import com.google.common.util.concurrent.ListenableFuture;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.RandomStringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;
+import org.thingsboard.server.common.data.Customer;
import org.thingsboard.server.common.data.Device;
+import org.thingsboard.server.common.data.Tenant;
import org.thingsboard.server.common.data.id.CustomerId;
import org.thingsboard.server.common.data.id.DeviceId;
import org.thingsboard.server.common.data.id.TenantId;
@@ -33,9 +33,6 @@ import org.thingsboard.server.common.data.security.DeviceCredentials;
import org.thingsboard.server.common.data.security.DeviceCredentialsType;
import org.thingsboard.server.dao.customer.CustomerDao;
import org.thingsboard.server.dao.exception.DataValidationException;
-import org.thingsboard.server.dao.model.CustomerEntity;
-import org.thingsboard.server.dao.model.DeviceEntity;
-import org.thingsboard.server.dao.model.TenantEntity;
import org.thingsboard.server.dao.service.DataValidator;
import org.thingsboard.server.dao.service.PaginatedRemover;
import org.thingsboard.server.dao.tenant.TenantDao;
@@ -43,8 +40,6 @@ import org.thingsboard.server.dao.tenant.TenantDao;
import java.util.List;
import java.util.Optional;
-import static org.thingsboard.server.dao.DaoUtil.convertDataList;
-import static org.thingsboard.server.dao.DaoUtil.getData;
import static org.thingsboard.server.dao.DaoUtil.toUUIDs;
import static org.thingsboard.server.dao.model.ModelConstants.NULL_UUID;
import static org.thingsboard.server.dao.service.Validator.validateId;
@@ -71,25 +66,23 @@ public class DeviceServiceImpl implements DeviceService {
public Device findDeviceById(DeviceId deviceId) {
log.trace("Executing findDeviceById [{}]", deviceId);
validateId(deviceId, "Incorrect deviceId " + deviceId);
- DeviceEntity deviceEntity = deviceDao.findById(deviceId.getId());
- return getData(deviceEntity);
+ return deviceDao.findById(deviceId.getId());
}
@Override
public ListenableFuture findDeviceByIdAsync(DeviceId deviceId) {
log.trace("Executing findDeviceById [{}]", deviceId);
validateId(deviceId, "Incorrect deviceId " + deviceId);
- ListenableFuture deviceEntity = deviceDao.findByIdAsync(deviceId.getId());
- return Futures.transform(deviceEntity, (Function super DeviceEntity, ? extends Device>) input -> getData(input));
+ return deviceDao.findByIdAsync(deviceId.getId());
}
@Override
public Optional findDeviceByTenantIdAndName(TenantId tenantId, String name) {
log.trace("Executing findDeviceByTenantIdAndName [{}][{}]", tenantId, name);
validateId(tenantId, "Incorrect tenantId " + tenantId);
- Optional deviceEntityOpt = deviceDao.findDevicesByTenantIdAndName(tenantId.getId(), name);
- if (deviceEntityOpt.isPresent()) {
- return Optional.of(getData(deviceEntityOpt.get()));
+ Optional deviceOpt = deviceDao.findDevicesByTenantIdAndName(tenantId.getId(), name);
+ if (deviceOpt.isPresent()) {
+ return Optional.of(deviceOpt.get());
} else {
return Optional.empty();
}
@@ -99,15 +92,15 @@ public class DeviceServiceImpl implements DeviceService {
public Device saveDevice(Device device) {
log.trace("Executing saveDevice [{}]", device);
deviceValidator.validate(device);
- DeviceEntity deviceEntity = deviceDao.save(device);
+ Device savedDevice = deviceDao.save(device);
if (device.getId() == null) {
DeviceCredentials deviceCredentials = new DeviceCredentials();
- deviceCredentials.setDeviceId(new DeviceId(deviceEntity.getId()));
+ deviceCredentials.setDeviceId(new DeviceId(savedDevice.getUuidId()));
deviceCredentials.setCredentialsType(DeviceCredentialsType.ACCESS_TOKEN);
deviceCredentials.setCredentialsId(RandomStringUtils.randomAlphanumeric(20));
deviceCredentialsService.createDeviceCredentials(deviceCredentials);
}
- return getData(deviceEntity);
+ return savedDevice;
}
@Override
@@ -140,9 +133,8 @@ public class DeviceServiceImpl implements DeviceService {
log.trace("Executing findDevicesByTenantId, tenantId [{}], pageLink [{}]", tenantId, pageLink);
validateId(tenantId, "Incorrect tenantId " + tenantId);
validatePageLink(pageLink, "Incorrect page link " + pageLink);
- List deviceEntities = deviceDao.findDevicesByTenantId(tenantId.getId(), pageLink);
- List devices = convertDataList(deviceEntities);
- return new TextPageData(devices, pageLink);
+ List devices = deviceDao.findDevicesByTenantId(tenantId.getId(), pageLink);
+ return new TextPageData<>(devices, pageLink);
}
@Override
@@ -150,8 +142,7 @@ public class DeviceServiceImpl implements DeviceService {
log.trace("Executing findDevicesByTenantIdAndIdsAsync, tenantId [{}], deviceIds [{}]", tenantId, deviceIds);
validateId(tenantId, "Incorrect tenantId " + tenantId);
validateIds(deviceIds, "Incorrect deviceIds " + deviceIds);
- ListenableFuture> deviceEntities = deviceDao.findDevicesByTenantIdAndIdsAsync(tenantId.getId(), toUUIDs(deviceIds));
- return Futures.transform(deviceEntities, (Function, List>) input -> convertDataList(input));
+ return deviceDao.findDevicesByTenantIdAndIdsAsync(tenantId.getId(), toUUIDs(deviceIds));
}
@@ -168,9 +159,8 @@ public class DeviceServiceImpl implements DeviceService {
validateId(tenantId, "Incorrect tenantId " + tenantId);
validateId(customerId, "Incorrect customerId " + customerId);
validatePageLink(pageLink, "Incorrect page link " + pageLink);
- List deviceEntities = deviceDao.findDevicesByTenantIdAndCustomerId(tenantId.getId(), customerId.getId(), pageLink);
- List devices = convertDataList(deviceEntities);
- return new TextPageData(devices, pageLink);
+ List devices = deviceDao.findDevicesByTenantIdAndCustomerId(tenantId.getId(), customerId.getId(), pageLink);
+ return new TextPageData<>(devices, pageLink);
}
@Override
@@ -179,9 +169,8 @@ public class DeviceServiceImpl implements DeviceService {
validateId(tenantId, "Incorrect tenantId " + tenantId);
validateId(customerId, "Incorrect customerId " + customerId);
validateIds(deviceIds, "Incorrect deviceIds " + deviceIds);
- ListenableFuture> deviceEntities = deviceDao.findDevicesByTenantIdCustomerIdAndIdsAsync(tenantId.getId(),
+ return deviceDao.findDevicesByTenantIdCustomerIdAndIdsAsync(tenantId.getId(),
customerId.getId(), toUUIDs(deviceIds));
- return Futures.transform(deviceEntities, (Function, List>) input -> convertDataList(input));
}
@Override
@@ -208,7 +197,7 @@ public class DeviceServiceImpl implements DeviceService {
protected void validateUpdate(Device device) {
deviceDao.findDevicesByTenantIdAndName(device.getTenantId().getId(), device.getName()).ifPresent(
d -> {
- if (!d.getId().equals(device.getUuidId())) {
+ if (!d.getUuidId().equals(device.getUuidId())) {
throw new DataValidationException("Device with such name already exists!");
}
}
@@ -223,7 +212,7 @@ public class DeviceServiceImpl implements DeviceService {
if (device.getTenantId() == null) {
throw new DataValidationException("Device should be assigned to tenant!");
} else {
- TenantEntity tenant = tenantDao.findById(device.getTenantId().getId());
+ Tenant tenant = tenantDao.findById(device.getTenantId().getId());
if (tenant == null) {
throw new DataValidationException("Device is referencing to non-existent tenant!");
}
@@ -231,32 +220,32 @@ public class DeviceServiceImpl implements DeviceService {
if (device.getCustomerId() == null) {
device.setCustomerId(new CustomerId(NULL_UUID));
} else if (!device.getCustomerId().getId().equals(NULL_UUID)) {
- CustomerEntity customer = customerDao.findById(device.getCustomerId().getId());
+ Customer customer = customerDao.findById(device.getCustomerId().getId());
if (customer == null) {
throw new DataValidationException("Can't assign device to non-existent customer!");
}
- if (!customer.getTenantId().equals(device.getTenantId().getId())) {
+ if (!customer.getTenantId().getId().equals(device.getTenantId().getId())) {
throw new DataValidationException("Can't assign device to customer from different tenant!");
}
}
}
};
- private PaginatedRemover