thingsboard-developers

Changes

dao/src/test/java/org/thingsboard/server/dao/service/RelationServiceTest.java 284(+0 -284)

Details

diff --git a/dao/src/main/java/org/thingsboard/server/dao/annotation/NoSqlDao.java b/dao/src/main/java/org/thingsboard/server/dao/annotation/NoSqlDao.java
index f4ec83b..a9092a9 100644
--- a/dao/src/main/java/org/thingsboard/server/dao/annotation/NoSqlDao.java
+++ b/dao/src/main/java/org/thingsboard/server/dao/annotation/NoSqlDao.java
@@ -1,3 +1,18 @@
+/**
+ * Copyright © 2016-2017 The Thingsboard Authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
 package org.thingsboard.server.dao.annotation;
 
 import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
diff --git a/dao/src/main/java/org/thingsboard/server/dao/annotation/SqlDao.java b/dao/src/main/java/org/thingsboard/server/dao/annotation/SqlDao.java
index e5a11b1..6d26678 100644
--- a/dao/src/main/java/org/thingsboard/server/dao/annotation/SqlDao.java
+++ b/dao/src/main/java/org/thingsboard/server/dao/annotation/SqlDao.java
@@ -1,3 +1,18 @@
+/**
+ * Copyright © 2016-2017 The Thingsboard Authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
 package org.thingsboard.server.dao.annotation;
 
 import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
diff --git a/dao/src/main/java/org/thingsboard/server/dao/asset/BaseAssetService.java b/dao/src/main/java/org/thingsboard/server/dao/asset/BaseAssetService.java
index a6fea21..7e9f129 100644
--- a/dao/src/main/java/org/thingsboard/server/dao/asset/BaseAssetService.java
+++ b/dao/src/main/java/org/thingsboard/server/dao/asset/BaseAssetService.java
@@ -39,7 +39,6 @@ import org.thingsboard.server.common.data.relation.EntityRelation;
 import org.thingsboard.server.dao.customer.CustomerDao;
 import org.thingsboard.server.dao.entity.AbstractEntityService;
 import org.thingsboard.server.dao.exception.DataValidationException;
-import org.thingsboard.server.dao.model.*;
 import org.thingsboard.server.dao.relation.EntitySearchDirection;
 import org.thingsboard.server.dao.service.DataValidator;
 import org.thingsboard.server.dao.service.PaginatedRemover;
@@ -150,7 +149,7 @@ public class BaseAssetService extends AbstractEntityService implements AssetServ
     public void deleteAssetsByTenantId(TenantId tenantId) {
         log.trace("Executing deleteAssetsByTenantId, tenantId [{}]", tenantId);
         validateId(tenantId, "Incorrect tenantId " + tenantId);
-        tenantAssetsRemover.removeEntitites(tenantId);
+        tenantAssetsRemover.removeEntities(tenantId);
     }
 
     @Override
@@ -188,7 +187,7 @@ public class BaseAssetService extends AbstractEntityService implements AssetServ
         log.trace("Executing unassignCustomerAssets, tenantId [{}], customerId [{}]", tenantId, customerId);
         validateId(tenantId, "Incorrect tenantId " + tenantId);
         validateId(customerId, "Incorrect customerId " + customerId);
-        new CustomerAssetsUnassigner(tenantId).removeEntitites(customerId);
+        new CustomerAssetsUnassigner(tenantId).removeEntities(customerId);
     }
 
     @Override
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 65eb89f..24d1b8a 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
@@ -135,7 +135,7 @@ public class CustomerServiceImpl extends AbstractEntityService implements Custom
     public void deleteCustomersByTenantId(TenantId tenantId) {
         log.trace("Executing deleteCustomersByTenantId, tenantId [{}]", tenantId);
         Validator.validateId(tenantId, "Incorrect tenantId " + tenantId);
-        customersByTenantRemover.removeEntitites(tenantId);
+        customersByTenantRemover.removeEntities(tenantId);
     }
 
     private DataValidator<Customer> customerValidator =
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 523f774..e1b1587 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
@@ -128,7 +128,7 @@ public class DashboardServiceImpl extends AbstractEntityService implements Dashb
     public void deleteDashboardsByTenantId(TenantId tenantId) {
         log.trace("Executing deleteDashboardsByTenantId, tenantId [{}]", tenantId);
         Validator.validateId(tenantId, "Incorrect tenantId " + tenantId);
-        tenantDashboardsRemover.removeEntitites(tenantId);
+        tenantDashboardsRemover.removeEntities(tenantId);
     }
 
     @Override
@@ -146,7 +146,7 @@ public class DashboardServiceImpl extends AbstractEntityService implements Dashb
         log.trace("Executing unassignCustomerDashboards, tenantId [{}], customerId [{}]", tenantId, customerId);
         Validator.validateId(tenantId, "Incorrect tenantId " + tenantId);
         Validator.validateId(customerId, "Incorrect customerId " + customerId);
-        new CustomerDashboardsUnassigner(tenantId).removeEntitites(customerId);
+        new CustomerDashboardsUnassigner(tenantId).removeEntities(customerId);
     }
     
     private DataValidator<Dashboard> dashboardValidator =
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 458d30a..7535967 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
@@ -168,7 +168,7 @@ public class DeviceServiceImpl extends AbstractEntityService implements DeviceSe
     public void deleteDevicesByTenantId(TenantId tenantId) {
         log.trace("Executing deleteDevicesByTenantId, tenantId [{}]", tenantId);
         validateId(tenantId, "Incorrect tenantId " + tenantId);
-        tenantDevicesRemover.removeEntitites(tenantId);
+        tenantDevicesRemover.removeEntities(tenantId);
     }
 
     @Override
@@ -207,7 +207,7 @@ public class DeviceServiceImpl extends AbstractEntityService implements DeviceSe
         log.trace("Executing unassignCustomerDevices, tenantId [{}], customerId [{}]", tenantId, customerId);
         validateId(tenantId, "Incorrect tenantId " + tenantId);
         validateId(customerId, "Incorrect customerId " + customerId);
-        new CustomerDevicesUnassigner(tenantId).removeEntitites(customerId);
+        new CustomerDevicesUnassigner(tenantId).removeEntities(customerId);
     }
 
     @Override
diff --git a/dao/src/main/java/org/thingsboard/server/dao/model/sql/DashboardEntity.java b/dao/src/main/java/org/thingsboard/server/dao/model/sql/DashboardEntity.java
index e796715..82c9fa1 100644
--- a/dao/src/main/java/org/thingsboard/server/dao/model/sql/DashboardEntity.java
+++ b/dao/src/main/java/org/thingsboard/server/dao/model/sql/DashboardEntity.java
@@ -83,15 +83,6 @@ public final class DashboardEntity implements SearchTextEntity<Dashboard> {
     }
 
     @Override
-    public UUID getId() {
-        return id;
-    }
-
-    @Override
-    public void setId(UUID id) {
-    }
-    
-    @Override
     public String getSearchTextSource() {
         return title;
     }
@@ -100,10 +91,6 @@ public final class DashboardEntity implements SearchTextEntity<Dashboard> {
     public void setSearchText(String searchText) {
         this.searchText = searchText;
     }
-    
-    public String getSearchText() {
-        return searchText;
-    }
 
     @Override
     public Dashboard toData() {
diff --git a/dao/src/main/java/org/thingsboard/server/dao/model/sql/DeviceEntity.java b/dao/src/main/java/org/thingsboard/server/dao/model/sql/DeviceEntity.java
index 148e5f1..02e8c28 100644
--- a/dao/src/main/java/org/thingsboard/server/dao/model/sql/DeviceEntity.java
+++ b/dao/src/main/java/org/thingsboard/server/dao/model/sql/DeviceEntity.java
@@ -96,10 +96,6 @@ public final class DeviceEntity implements SearchTextEntity<Device> {
         this.searchText = searchText;
     }
     
-    public String getSearchText() {
-        return searchText;
-    }
-
     @Override
     public Device toData() {
         Device device = new Device(new DeviceId(id));
diff --git a/dao/src/main/java/org/thingsboard/server/dao/model/sql/UserEntity.java b/dao/src/main/java/org/thingsboard/server/dao/model/sql/UserEntity.java
index d1a1c71..250d91b 100644
--- a/dao/src/main/java/org/thingsboard/server/dao/model/sql/UserEntity.java
+++ b/dao/src/main/java/org/thingsboard/server/dao/model/sql/UserEntity.java
@@ -99,7 +99,7 @@ public class UserEntity implements SearchTextEntity<User> {
 
     @Override
     public String getSearchTextSource() {
-        return searchText;
+        return email;
     }
 
     @Override
diff --git a/dao/src/main/java/org/thingsboard/server/dao/plugin/BasePluginService.java b/dao/src/main/java/org/thingsboard/server/dao/plugin/BasePluginService.java
index 342ca4a..fe9a558 100644
--- a/dao/src/main/java/org/thingsboard/server/dao/plugin/BasePluginService.java
+++ b/dao/src/main/java/org/thingsboard/server/dao/plugin/BasePluginService.java
@@ -15,7 +15,6 @@
  */
 package org.thingsboard.server.dao.plugin;
 
-import com.google.common.util.concurrent.Futures;
 import com.google.common.util.concurrent.ListenableFuture;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.StringUtils;
@@ -223,7 +222,7 @@ public class BasePluginService extends AbstractEntityService implements PluginSe
     @Override
     public void deletePluginsByTenantId(TenantId tenantId) {
         Validator.validateId(tenantId, "Incorrect tenant id for delete plugins request.");
-        tenantPluginRemover.removeEntitites(tenantId);
+        tenantPluginRemover.removeEntities(tenantId);
     }
 
 
diff --git a/dao/src/main/java/org/thingsboard/server/dao/rule/BaseRuleService.java b/dao/src/main/java/org/thingsboard/server/dao/rule/BaseRuleService.java
index a5b34a2..b356c90 100644
--- a/dao/src/main/java/org/thingsboard/server/dao/rule/BaseRuleService.java
+++ b/dao/src/main/java/org/thingsboard/server/dao/rule/BaseRuleService.java
@@ -265,7 +265,7 @@ public class BaseRuleService extends AbstractEntityService implements RuleServic
     @Override
     public void deleteRulesByTenantId(TenantId tenantId) {
         validateId(tenantId, "Incorrect tenant id for delete rules request.");
-        tenantRulesRemover.removeEntitites(tenantId);
+        tenantRulesRemover.removeEntities(tenantId);
     }
 
     private DataValidator<RuleMetaData> ruleValidator =
diff --git a/dao/src/main/java/org/thingsboard/server/dao/service/PaginatedRemover.java b/dao/src/main/java/org/thingsboard/server/dao/service/PaginatedRemover.java
index 8bdefd9..c1c89c2 100644
--- a/dao/src/main/java/org/thingsboard/server/dao/service/PaginatedRemover.java
+++ b/dao/src/main/java/org/thingsboard/server/dao/service/PaginatedRemover.java
@@ -25,7 +25,7 @@ public abstract class PaginatedRemover<I, D extends IdBased<?>> {
 
     private static final int DEFAULT_LIMIT = 100;
 
-    public void removeEntitites(I id) {
+    public void removeEntities(I id) {
         TextPageLink pageLink = new TextPageLink(DEFAULT_LIMIT);
         boolean hasNext = true;
         while (hasNext) {
diff --git a/dao/src/main/java/org/thingsboard/server/dao/sql/relation/JpaRelationDao.java b/dao/src/main/java/org/thingsboard/server/dao/sql/relation/JpaRelationDao.java
index 550424c..8fca908 100644
--- a/dao/src/main/java/org/thingsboard/server/dao/sql/relation/JpaRelationDao.java
+++ b/dao/src/main/java/org/thingsboard/server/dao/sql/relation/JpaRelationDao.java
@@ -178,21 +178,21 @@ public class JpaRelationDao extends JpaAbstractDaoListeningExecutorService imple
             public Predicate toPredicate(Root<RelationEntity> root, CriteriaQuery<?> criteriaQuery, CriteriaBuilder criteriaBuilder) {
                 List<Predicate> predicates = new ArrayList<>();
                 if (from != null) {
-                    Predicate fromIdPredicate = criteriaBuilder.equal(root.get(RELATION_FROM_ID_PROPERTY), from.getId());
+                    Predicate fromIdPredicate = criteriaBuilder.equal(root.get("fromId"), from.getId());
                     predicates.add(fromIdPredicate);
-                    Predicate fromEntityTypePredicate = criteriaBuilder.equal(root.get(RELATION_FROM_TYPE_PROPERTY), from.getEntityType().name());
+                    Predicate fromEntityTypePredicate = criteriaBuilder.equal(root.get("fromType"), from.getEntityType().name());
                     predicates.add(fromEntityTypePredicate);
                 }
                 if (relationType != null) {
-                    Predicate relationTypePredicate = criteriaBuilder.equal(root.get(RELATION_TYPE_PROPERTY), relationType);
+                    Predicate relationTypePredicate = criteriaBuilder.equal(root.get("relationType"), relationType);
                     predicates.add(relationTypePredicate);
                 }
                 if (typeGroup != null) {
-                    Predicate typeGroupPredicate = criteriaBuilder.equal(root.get(RELATION_TYPE_GROUP_PROPERTY), typeGroup);
+                    Predicate typeGroupPredicate = criteriaBuilder.equal(root.get("relationTypeGroup"), typeGroup);
                     predicates.add(typeGroupPredicate);
                 }
                 if (childType != null) {
-                    Predicate childTypePredicate = criteriaBuilder.equal(root.get(RELATION_TO_TYPE_PROPERTY), childType.name());
+                    Predicate childTypePredicate = criteriaBuilder.equal(root.get("toType"), childType.name());
                     predicates.add(childTypePredicate);
                 }
                 return criteriaBuilder.and(predicates.toArray(new Predicate[0]));
diff --git a/dao/src/main/java/org/thingsboard/server/dao/sql/settings/JpaAdminSettingsDao.java b/dao/src/main/java/org/thingsboard/server/dao/sql/settings/JpaAdminSettingsDao.java
index 5433a13..e4ab2d4 100644
--- a/dao/src/main/java/org/thingsboard/server/dao/sql/settings/JpaAdminSettingsDao.java
+++ b/dao/src/main/java/org/thingsboard/server/dao/sql/settings/JpaAdminSettingsDao.java
@@ -31,7 +31,7 @@ import java.util.UUID;
 @Component
 @Slf4j
 @SqlDao
-public class JpaAdminSettingsDao extends JpaAbstractDao<AdminSettingsEntity, AdminSettings> implements AdminSettingsDao{
+public class JpaAdminSettingsDao extends JpaAbstractDao<AdminSettingsEntity, AdminSettings> implements AdminSettingsDao {
 
     @Autowired
     private AdminSettingsRepository adminSettingsRepository;
diff --git a/dao/src/main/java/org/thingsboard/server/dao/sql/user/JpaUserDao.java b/dao/src/main/java/org/thingsboard/server/dao/sql/user/JpaUserDao.java
index de2f5f9..d4308cf 100644
--- a/dao/src/main/java/org/thingsboard/server/dao/sql/user/JpaUserDao.java
+++ b/dao/src/main/java/org/thingsboard/server/dao/sql/user/JpaUserDao.java
@@ -20,10 +20,12 @@ import org.springframework.data.repository.CrudRepository;
 import org.springframework.stereotype.Component;
 import org.thingsboard.server.common.data.User;
 import org.thingsboard.server.common.data.page.TextPageLink;
+import org.thingsboard.server.common.data.security.Authority;
 import org.thingsboard.server.dao.DaoUtil;
 import org.thingsboard.server.dao.annotation.SqlDao;
 import org.thingsboard.server.dao.model.sql.UserEntity;
 import org.thingsboard.server.dao.sql.JpaAbstractDao;
+import org.thingsboard.server.dao.sql.JpaAbstractSearchTextDao;
 import org.thingsboard.server.dao.user.UserDao;
 
 import java.util.List;
@@ -36,7 +38,7 @@ import static org.thingsboard.server.dao.model.ModelConstants.NULL_UUID;
  */
 @Component
 @SqlDao
-public class JpaUserDao extends JpaAbstractDao<UserEntity, User> implements UserDao {
+public class JpaUserDao extends JpaAbstractSearchTextDao<UserEntity, User> implements UserDao {
 
     @Autowired
     private UserRepository userRepository;
@@ -60,20 +62,26 @@ public class JpaUserDao extends JpaAbstractDao<UserEntity, User> implements User
     public List<User> findTenantAdmins(UUID tenantId, TextPageLink pageLink) {
         return DaoUtil.convertDataList(
                 userRepository
-                        .findTenantAdmins(
-                                pageLink.getLimit(),
+                        .findUsersByAuthority(
                                 tenantId,
-                                pageLink.getIdOffset() == null ? NULL_UUID : pageLink.getIdOffset()));
+                                NULL_UUID,
+                                pageLink.getIdOffset() == null ? NULL_UUID : pageLink.getIdOffset(),
+                                pageLink.getTextSearch(),
+                                Authority.TENANT_ADMIN.name(),
+                                pageLink.getLimit()));
     }
 
     @Override
     public List<User> findCustomerUsers(UUID tenantId, UUID customerId, TextPageLink pageLink) {
         return DaoUtil.convertDataList(
                 userRepository
-                        .findCustomerUsers(
-                                pageLink.getLimit(),
+                        .findUsersByAuthority(
                                 tenantId,
                                 customerId,
-                                pageLink.getIdOffset() == null ? NULL_UUID : pageLink.getIdOffset()));
+                                pageLink.getIdOffset() == null ? NULL_UUID : pageLink.getIdOffset(),
+                                pageLink.getTextSearch(),
+                                Authority.CUSTOMER_USER.name(),
+                                pageLink.getLimit()));
+
     }
 }
diff --git a/dao/src/main/java/org/thingsboard/server/dao/sql/user/UserRepository.java b/dao/src/main/java/org/thingsboard/server/dao/sql/user/UserRepository.java
index a0fb882..128f45f 100644
--- a/dao/src/main/java/org/thingsboard/server/dao/sql/user/UserRepository.java
+++ b/dao/src/main/java/org/thingsboard/server/dao/sql/user/UserRepository.java
@@ -33,18 +33,14 @@ public interface UserRepository extends CrudRepository<UserEntity, UUID> {
     UserEntity findByEmail(String email);
 
     @Query(nativeQuery = true, value = "SELECT * FROM TB_USER WHERE TENANT_ID = :tenantId " +
-            "AND CUSTOMER_ID IS NULL AND AUTHORITY = 'TENANT_ADMIN' " +
+            "AND CUSTOMER_ID = :customerId AND AUTHORITY = :authority " +
+            "AND LOWER(SEARCH_TEXT) LIKE LOWER(CONCAT(:searchText, '%'))" +
             "AND ID > :idOffset ORDER BY ID LIMIT :limit")
-    List<UserEntity> findTenantAdmins(@Param("limit") int limit,
-                                      @Param("tenantId") UUID tenantId,
-                                      @Param("idOffset") UUID idOffset);
-
-    @Query(nativeQuery = true, value = "SELECT * FROM TB_USER WHERE TENANT_ID = :tenantId " +
-            "AND CUSTOMER_ID = :customerId AND AUTHORITY = 'CUSTOMER_USER' " +
-            "AND ID > :idOffset ORDER BY ID LIMIT :limit")
-    List<UserEntity> findCustomerUsers(@Param("limit") int limit,
-                                       @Param("tenantId") UUID tenantId,
-                                       @Param("customerId") UUID customerId,
-                                       @Param("idOffset") UUID idOffset);
+    List<UserEntity> findUsersByAuthority(@Param("tenantId") UUID tenantId,
+                                          @Param("customerId") UUID customerId,
+                                          @Param("idOffset") UUID idOffset,
+                                          @Param("searchText") String searchText,
+                                          @Param("authority") String authority,
+                                          @Param("limit") int limit);
 
 }
\ No newline at end of file
diff --git a/dao/src/main/java/org/thingsboard/server/dao/tenant/TenantServiceImpl.java b/dao/src/main/java/org/thingsboard/server/dao/tenant/TenantServiceImpl.java
index 7645b28..678e811 100644
--- a/dao/src/main/java/org/thingsboard/server/dao/tenant/TenantServiceImpl.java
+++ b/dao/src/main/java/org/thingsboard/server/dao/tenant/TenantServiceImpl.java
@@ -119,7 +119,7 @@ public class TenantServiceImpl extends AbstractEntityService implements TenantSe
     @Override
     public void deleteTenants() {
         log.trace("Executing deleteTenants");
-        tenantsRemover.removeEntitites(DEFAULT_TENANT_REGION);
+        tenantsRemover.removeEntities(DEFAULT_TENANT_REGION);
     }
 
     private DataValidator<Tenant> tenantValidator =
diff --git a/dao/src/main/java/org/thingsboard/server/dao/user/UserServiceImpl.java b/dao/src/main/java/org/thingsboard/server/dao/user/UserServiceImpl.java
index d8782db..6b75f62 100644
--- a/dao/src/main/java/org/thingsboard/server/dao/user/UserServiceImpl.java
+++ b/dao/src/main/java/org/thingsboard/server/dao/user/UserServiceImpl.java
@@ -15,14 +15,12 @@
  */
 package org.thingsboard.server.dao.user;
 
-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.validatePageLink;
 import static org.thingsboard.server.dao.service.Validator.validateString;
 
 import java.util.List;
 
-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;
@@ -48,10 +46,6 @@ import org.thingsboard.server.dao.service.DataValidator;
 import org.thingsboard.server.dao.service.PaginatedRemover;
 import org.thingsboard.server.dao.tenant.TenantDao;
 
-import java.util.List;
-
-import static org.thingsboard.server.dao.service.Validator.*;
-
 @Service
 @Slf4j
 public class UserServiceImpl extends AbstractEntityService implements UserService {
@@ -193,7 +187,7 @@ public class UserServiceImpl extends AbstractEntityService implements UserServic
     public void deleteTenantAdmins(TenantId tenantId) {
         log.trace("Executing deleteTenantAdmins, tenantId [{}]", tenantId);
         validateId(tenantId, "Incorrect tenantId " + tenantId);
-        tenantAdminsRemover.removeEntitites(tenantId);
+        tenantAdminsRemover.removeEntities(tenantId);
     }
 
     @Override
@@ -211,7 +205,7 @@ public class UserServiceImpl extends AbstractEntityService implements UserServic
         log.trace("Executing deleteCustomerUsers, customerId [{}]", customerId);
         validateId(tenantId, "Incorrect tenantId " + tenantId);
         validateId(customerId, "Incorrect customerId " + customerId);
-        new CustomerUsersRemover(tenantId).removeEntitites(customerId);
+        new CustomerUsersRemover(tenantId).removeEntities(customerId);
     }
 
     private DataValidator<User> userValidator =
diff --git a/dao/src/main/java/org/thingsboard/server/dao/widget/WidgetsBundleServiceImpl.java b/dao/src/main/java/org/thingsboard/server/dao/widget/WidgetsBundleServiceImpl.java
index 9e90aca..de20ff0 100644
--- a/dao/src/main/java/org/thingsboard/server/dao/widget/WidgetsBundleServiceImpl.java
+++ b/dao/src/main/java/org/thingsboard/server/dao/widget/WidgetsBundleServiceImpl.java
@@ -145,7 +145,7 @@ public class WidgetsBundleServiceImpl implements WidgetsBundleService {
     public void deleteWidgetsBundlesByTenantId(TenantId tenantId) {
         log.trace("Executing deleteWidgetsBundlesByTenantId, tenantId [{}]", tenantId);
         Validator.validateId(tenantId, "Incorrect tenantId " + tenantId);
-        tenantWidgetsBundleRemover.removeEntitites(tenantId);
+        tenantWidgetsBundleRemover.removeEntities(tenantId);
     }
 
     private DataValidator<WidgetsBundle> widgetsBundleValidator =
diff --git a/dao/src/main/resources/postgres/schema.sql b/dao/src/main/resources/postgres/schema.sql
index da50020..3f77e81 100644
--- a/dao/src/main/resources/postgres/schema.sql
+++ b/dao/src/main/resources/postgres/schema.sql
@@ -17,7 +17,7 @@
 
 CREATE TABLE IF NOT EXISTS admin_settings (
     id uuid NOT NULL CONSTRAINT admin_settings_pkey PRIMARY KEY,
-    json_value varchar,
+    json_value text,
     key character varying(255)
 );
 
@@ -25,7 +25,7 @@ CREATE TABLE IF NOT EXISTS alarm (
     id uuid NOT NULL CONSTRAINT alarm_pkey PRIMARY KEY,
     ack_ts bigint,
     clear_ts bigint,
-    additional_info varchar,
+    additional_info text,
     end_ts bigint,
     originator_id uuid,
     originator_type integer,
@@ -39,7 +39,7 @@ CREATE TABLE IF NOT EXISTS alarm (
 
 CREATE TABLE IF NOT EXISTS asset (
     id uuid NOT NULL CONSTRAINT asset_pkey PRIMARY KEY,
-    additional_info varchar,
+    additional_info text,
     customer_id uuid,
     name character varying(255),
     search_text character varying(255),
@@ -64,7 +64,7 @@ CREATE TABLE IF NOT EXISTS component_descriptor (
     id uuid NOT NULL CONSTRAINT component_descriptor_pkey PRIMARY KEY,
     actions character varying(255),
     clazz character varying(255),
-    configuration_descriptor varchar,
+    configuration_descriptor text,
     name character varying(255),
     scope character varying(255),
     search_text character varying(255),
@@ -73,7 +73,7 @@ CREATE TABLE IF NOT EXISTS component_descriptor (
 
 CREATE TABLE IF NOT EXISTS customer (
     id uuid NOT NULL CONSTRAINT customer_pkey PRIMARY KEY,
-    additional_info varchar,
+    additional_info text,
     address character varying(255),
     address2 character varying(255),
     city character varying(255),
@@ -89,7 +89,7 @@ CREATE TABLE IF NOT EXISTS customer (
 
 CREATE TABLE IF NOT EXISTS dashboard (
     id uuid NOT NULL CONSTRAINT dashboard_pkey PRIMARY KEY,
-    configuration varchar,
+    configuration text,
     customer_id uuid,
     search_text character varying(255),
     tenant_id uuid,
@@ -98,7 +98,7 @@ CREATE TABLE IF NOT EXISTS dashboard (
 
 CREATE TABLE IF NOT EXISTS device (
     id uuid NOT NULL CONSTRAINT device_pkey PRIMARY KEY,
-    additional_info varchar,
+    additional_info text,
     customer_id uuid,
     type character varying(255),
     name character varying(255),
@@ -116,7 +116,7 @@ CREATE TABLE IF NOT EXISTS device_credentials (
 
 CREATE TABLE IF NOT EXISTS event (
     id uuid NOT NULL CONSTRAINT event_pkey PRIMARY KEY,
-    body varchar,
+    body text,
     entity_id uuid,
     entity_type character varying(255),
     event_type character varying(255),
@@ -126,10 +126,10 @@ CREATE TABLE IF NOT EXISTS event (
 
 CREATE TABLE IF NOT EXISTS plugin (
     id uuid NOT NULL CONSTRAINT plugin_pkey PRIMARY KEY,
-    additional_info varchar,
+    additional_info text,
     api_token character varying(255),
     plugin_class character varying(255),
-    configuration varchar,
+    configuration text,
     name character varying(255),
     public_access boolean,
     search_text character varying(255),
@@ -144,18 +144,18 @@ CREATE TABLE IF NOT EXISTS relation (
     to_type character varying(255),
     relation_type_group character varying(255),
     relation_type character varying(255),
-    additional_info varchar,
+    additional_info text,
     CONSTRAINT relation_unq_key UNIQUE (from_id, from_type, relation_type_group, relation_type, to_id, to_type)
 );
 
 CREATE TABLE IF NOT EXISTS rule (
     id uuid NOT NULL CONSTRAINT rule_pkey PRIMARY KEY,
-    action varchar,
-    additional_info varchar,
-    filters varchar,
+    action text,
+    additional_info text,
+    filters text,
     name character varying(255),
     plugin_token character varying(255),
-    processor varchar,
+    processor text,
     search_text character varying(255),
     state character varying(255),
     tenant_id uuid,
@@ -164,7 +164,7 @@ CREATE TABLE IF NOT EXISTS rule (
 
 CREATE TABLE IF NOT EXISTS tb_user (
     id uuid NOT NULL CONSTRAINT tb_user_pkey PRIMARY KEY,
-    additional_info varchar,
+    additional_info text,
     authority character varying(255),
     customer_id uuid,
     email character varying(255) UNIQUE,
@@ -176,7 +176,7 @@ CREATE TABLE IF NOT EXISTS tb_user (
 
 CREATE TABLE IF NOT EXISTS tenant (
     id uuid NOT NULL CONSTRAINT tenant_pkey PRIMARY KEY,
-    additional_info varchar,
+    additional_info text,
     address character varying(255),
     address2 character varying(255),
     city character varying(255),
@@ -227,7 +227,7 @@ CREATE TABLE IF NOT EXISTS widget_type (
     id uuid NOT NULL CONSTRAINT widget_type_pkey PRIMARY KEY,
     alias character varying(255),
     bundle_alias character varying(255),
-    descriptor varchar,
+    descriptor text,
     name character varying(255),
     tenant_id uuid
 );
diff --git a/dao/src/test/java/org/thingsboard/server/dao/service/RelationServiceImplTest.java b/dao/src/test/java/org/thingsboard/server/dao/service/RelationServiceImplTest.java
index f7e47ce..cb1fbc5 100644
--- a/dao/src/test/java/org/thingsboard/server/dao/service/RelationServiceImplTest.java
+++ b/dao/src/test/java/org/thingsboard/server/dao/service/RelationServiceImplTest.java
@@ -16,13 +16,11 @@
 package org.thingsboard.server.dao.service;
 
 import com.datastax.driver.core.utils.UUIDs;
-import com.google.common.util.concurrent.ListenableFuture;
 import org.junit.After;
 import org.junit.Assert;
 import org.junit.Before;
 import org.junit.Test;
 import org.thingsboard.server.common.data.EntityType;
-import org.thingsboard.server.common.data.asset.Asset;
 import org.thingsboard.server.common.data.id.AssetId;
 import org.thingsboard.server.common.data.id.DeviceId;
 import org.thingsboard.server.common.data.relation.EntityRelation;
diff --git a/dao/src/test/resources/jpa-test.properties b/dao/src/test/resources/jpa-test.properties
index 06a7296..58ca25f 100644
--- a/dao/src/test/resources/jpa-test.properties
+++ b/dao/src/test/resources/jpa-test.properties
@@ -5,8 +5,6 @@ sql.enabled=true
 spring.jpa.show-sql=false
 spring.jpa.hibernate.ddl-auto=validate
 
-spring.datasource.driverClassName=org.h2.Driver
-spring.datasource.url=jdbc:h2:mem:test;MODE=PostgreSQL
-spring.datasource.schema=classpath:postgres/schema.sql
-spring.datasource.data=classpath:postgres/system-data.sql;classpath:system-test.sql
-
+spring.datasource.url=jdbc:postgresql://localhost:5432/thingsboard
+spring.datasource.username=postgres
+spring.datasource.password=postgres
\ No newline at end of file
diff --git a/dao/src/test/resources/system-test.sql b/dao/src/test/resources/system-test.sql
new file mode 100644
index 0000000..57d49dd
--- /dev/null
+++ b/dao/src/test/resources/system-test.sql
@@ -0,0 +1,2 @@
+TRUNCATE TABLE plugin;
+TRUNCATE TABLE rule;
\ No newline at end of file