Browse Source

Merge branch 'master' of github.com:thingsboard/thingsboard

pull/9515/head
Igor Kulikov 3 years ago
parent
commit
535dec41e9
  1. 1
      application/src/main/resources/thingsboard.yml
  2. 26
      dao/src/main/java/org/thingsboard/server/dao/ThingsboardPostgreSQLDialect.java
  3. 72
      dao/src/main/java/org/thingsboard/server/dao/sql/alarm/AlarmRepository.java
  4. 12
      dao/src/main/java/org/thingsboard/server/dao/sql/alarm/JpaAlarmDao.java
  5. 4
      dao/src/main/java/org/thingsboard/server/dao/sql/asset/AssetProfileRepository.java
  6. 40
      dao/src/main/java/org/thingsboard/server/dao/sql/asset/AssetRepository.java
  7. 26
      dao/src/main/java/org/thingsboard/server/dao/sql/asset/JpaAssetDao.java
  8. 4
      dao/src/main/java/org/thingsboard/server/dao/sql/asset/JpaAssetProfileDao.java
  9. 36
      dao/src/main/java/org/thingsboard/server/dao/sql/audit/AuditLogRepository.java
  10. 8
      dao/src/main/java/org/thingsboard/server/dao/sql/audit/JpaAuditLogDao.java
  11. 6
      dao/src/main/java/org/thingsboard/server/dao/sql/component/ComponentDescriptorRepository.java
  12. 4
      dao/src/main/java/org/thingsboard/server/dao/sql/component/JpaBaseComponentDescriptorDao.java
  13. 2
      dao/src/main/java/org/thingsboard/server/dao/sql/customer/CustomerRepository.java
  14. 2
      dao/src/main/java/org/thingsboard/server/dao/sql/customer/JpaCustomerDao.java
  15. 10
      dao/src/main/java/org/thingsboard/server/dao/sql/dashboard/DashboardInfoRepository.java
  16. 10
      dao/src/main/java/org/thingsboard/server/dao/sql/dashboard/JpaDashboardInfoDao.java
  17. 12
      dao/src/main/java/org/thingsboard/server/dao/sql/device/DeviceProfileRepository.java
  18. 48
      dao/src/main/java/org/thingsboard/server/dao/sql/device/DeviceRepository.java
  19. 18
      dao/src/main/java/org/thingsboard/server/dao/sql/device/JpaDeviceDao.java
  20. 6
      dao/src/main/java/org/thingsboard/server/dao/sql/device/JpaDeviceProfileDao.java
  21. 2
      dao/src/main/java/org/thingsboard/server/dao/sql/edge/EdgeEventRepository.java
  22. 18
      dao/src/main/java/org/thingsboard/server/dao/sql/edge/EdgeRepository.java
  23. 2
      dao/src/main/java/org/thingsboard/server/dao/sql/edge/JpaBaseEdgeEventDao.java
  24. 18
      dao/src/main/java/org/thingsboard/server/dao/sql/edge/JpaEdgeDao.java
  25. 20
      dao/src/main/java/org/thingsboard/server/dao/sql/entityview/EntityViewRepository.java
  26. 20
      dao/src/main/java/org/thingsboard/server/dao/sql/entityview/JpaEntityViewDao.java
  27. 4
      dao/src/main/java/org/thingsboard/server/dao/sql/notification/JpaNotificationDao.java
  28. 2
      dao/src/main/java/org/thingsboard/server/dao/sql/notification/JpaNotificationRequestDao.java
  29. 4
      dao/src/main/java/org/thingsboard/server/dao/sql/notification/JpaNotificationRuleDao.java
  30. 6
      dao/src/main/java/org/thingsboard/server/dao/sql/notification/JpaNotificationTargetDao.java
  31. 2
      dao/src/main/java/org/thingsboard/server/dao/sql/notification/JpaNotificationTemplateDao.java
  32. 8
      dao/src/main/java/org/thingsboard/server/dao/sql/notification/NotificationRepository.java
  33. 2
      dao/src/main/java/org/thingsboard/server/dao/sql/notification/NotificationRequestRepository.java
  34. 4
      dao/src/main/java/org/thingsboard/server/dao/sql/notification/NotificationRuleRepository.java
  35. 4
      dao/src/main/java/org/thingsboard/server/dao/sql/notification/NotificationTargetRepository.java
  36. 4
      dao/src/main/java/org/thingsboard/server/dao/sql/notification/NotificationTemplateRepository.java
  37. 4
      dao/src/main/java/org/thingsboard/server/dao/sql/ota/JpaOtaPackageInfoDao.java
  38. 4
      dao/src/main/java/org/thingsboard/server/dao/sql/ota/OtaPackageInfoRepository.java
  39. 2
      dao/src/main/java/org/thingsboard/server/dao/sql/query/DefaultAlarmQueryRepository.java
  40. 14
      dao/src/main/java/org/thingsboard/server/dao/sql/query/DefaultEntityQueryRepository.java
  41. 2
      dao/src/main/java/org/thingsboard/server/dao/sql/queue/JpaQueueDao.java
  42. 2
      dao/src/main/java/org/thingsboard/server/dao/sql/queue/QueueRepository.java
  43. 4
      dao/src/main/java/org/thingsboard/server/dao/sql/resource/JpaTbResourceDao.java
  44. 2
      dao/src/main/java/org/thingsboard/server/dao/sql/resource/JpaTbResourceInfoDao.java
  45. 4
      dao/src/main/java/org/thingsboard/server/dao/sql/resource/TbResourceInfoRepository.java
  46. 4
      dao/src/main/java/org/thingsboard/server/dao/sql/resource/TbResourceRepository.java
  47. 8
      dao/src/main/java/org/thingsboard/server/dao/sql/rule/JpaRuleChainDao.java
  48. 8
      dao/src/main/java/org/thingsboard/server/dao/sql/rule/RuleChainRepository.java
  49. 4
      dao/src/main/java/org/thingsboard/server/dao/sql/tenant/JpaTenantDao.java
  50. 4
      dao/src/main/java/org/thingsboard/server/dao/sql/tenant/JpaTenantProfileDao.java
  51. 4
      dao/src/main/java/org/thingsboard/server/dao/sql/tenant/TenantProfileRepository.java
  52. 4
      dao/src/main/java/org/thingsboard/server/dao/sql/tenant/TenantRepository.java
  53. 8
      dao/src/main/java/org/thingsboard/server/dao/sql/user/JpaUserDao.java
  54. 6
      dao/src/main/java/org/thingsboard/server/dao/sql/user/UserRepository.java
  55. 8
      dao/src/main/java/org/thingsboard/server/dao/sql/widget/JpaWidgetTypeDao.java
  56. 10
      dao/src/main/java/org/thingsboard/server/dao/sql/widget/JpaWidgetsBundleDao.java
  57. 2
      dao/src/main/java/org/thingsboard/server/dao/sql/widget/WidgetTypeRepository.java
  58. 6
      dao/src/main/java/org/thingsboard/server/dao/sql/widget/WidgetsBundleRepository.java
  59. 2
      dao/src/test/resources/application-test.properties

1
application/src/main/resources/thingsboard.yml

@ -693,6 +693,7 @@ spring.servlet.multipart.max-request-size: "50MB" # Total request size for a mul
spring.jpa.properties.hibernate.jdbc.lob.non_contextual_creation: "true" #Fix Postgres JPA Error (Method org.postgresql.jdbc.PgConnection.createClob() is not yet implemented) spring.jpa.properties.hibernate.jdbc.lob.non_contextual_creation: "true" #Fix Postgres JPA Error (Method org.postgresql.jdbc.PgConnection.createClob() is not yet implemented)
spring.jpa.properties.hibernate.order_by.default_null_ordering: "${SPRING_JPA_PROPERTIES_HIBERNATE_ORDER_BY_DEFAULT_NULL_ORDERING:last}" # Note: as for current Spring JPA version, custom NullHandling for the Sort.Order is ignored and this parameter is used spring.jpa.properties.hibernate.order_by.default_null_ordering: "${SPRING_JPA_PROPERTIES_HIBERNATE_ORDER_BY_DEFAULT_NULL_ORDERING:last}" # Note: as for current Spring JPA version, custom NullHandling for the Sort.Order is ignored and this parameter is used
spring.jpa.properties.hibernate.dialect: "${SPRING_JPA_DIALECT:org.thingsboard.server.dao.ThingsboardPostgreSQLDialect}" # we use custom dialect that contains ilike(arg1, arg2) function (is interpreted to postgres ILIKE operator)
# SQL DAO Configuration parameters # SQL DAO Configuration parameters
spring: spring:

26
dao/src/main/java/org/thingsboard/server/dao/ThingsboardPostgreSQLDialect.java

@ -0,0 +1,26 @@
/**
* Copyright © 2016-2023 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.hibernate.dialect.function.SQLFunctionTemplate;
import org.hibernate.type.BooleanType;
public class ThingsboardPostgreSQLDialect extends org.hibernate.dialect.PostgreSQL10Dialect {
public ThingsboardPostgreSQLDialect() {
super();
registerFunction("ilike", new SQLFunctionTemplate(BooleanType.INSTANCE, "(?1 ILIKE ?2)"));
}
}

72
dao/src/main/java/org/thingsboard/server/dao/sql/alarm/AlarmRepository.java

@ -58,9 +58,9 @@ public interface AlarmRepository extends JpaRepository<AlarmEntity, UUID> {
"AND ((:clearFilterEnabled) IS FALSE OR a.cleared = :clearFilter) " + "AND ((:clearFilterEnabled) IS FALSE OR a.cleared = :clearFilter) " +
"AND ((:ackFilterEnabled) IS FALSE OR a.acknowledged = :ackFilter) " + "AND ((:ackFilterEnabled) IS FALSE OR a.acknowledged = :ackFilter) " +
"AND (:assigneeId IS NULL OR a.assigneeId = uuid(:assigneeId)) " + "AND (:assigneeId IS NULL OR a.assigneeId = uuid(:assigneeId)) " +
"AND (LOWER(a.type) LIKE LOWER(CONCAT('%', :searchText, '%')) " + "AND (:searchText IS NULL OR (ilike(a.type, CONCAT('%', :searchText, '%')) = true " +
" OR LOWER(a.severity) LIKE LOWER(CONCAT('%', :searchText, '%')) " + " OR ilike(a.severity, CONCAT('%', :searchText, '%')) = true " +
" OR LOWER(a.status) LIKE LOWER(CONCAT('%', :searchText, '%'))) " " OR ilike(a.status, CONCAT('%', :searchText, '%')) = true)) "
, ,
countQuery = "" + countQuery = "" +
"SELECT count(a) " + //alarms with relations only "SELECT count(a) " + //alarms with relations only
@ -75,9 +75,9 @@ public interface AlarmRepository extends JpaRepository<AlarmEntity, UUID> {
"AND ((:clearFilterEnabled) IS FALSE OR a.cleared = :clearFilter) " + "AND ((:clearFilterEnabled) IS FALSE OR a.cleared = :clearFilter) " +
"AND ((:ackFilterEnabled) IS FALSE OR a.acknowledged = :ackFilter) " + "AND ((:ackFilterEnabled) IS FALSE OR a.acknowledged = :ackFilter) " +
"AND (:assigneeId IS NULL OR a.assigneeId = uuid(:assigneeId)) " + "AND (:assigneeId IS NULL OR a.assigneeId = uuid(:assigneeId)) " +
"AND (LOWER(a.type) LIKE LOWER(CONCAT('%', :searchText, '%')) " + "AND (:searchText IS NULL OR (ilike(a.type, CONCAT('%', :searchText, '%')) = true " +
" OR LOWER(a.severity) LIKE LOWER(CONCAT('%', :searchText, '%')) " + " OR ilike(a.severity, CONCAT('%', :searchText, '%')) = true " +
" OR LOWER(a.status) LIKE LOWER(CONCAT('%', :searchText, '%'))) ") " OR ilike(a.status, CONCAT('%', :searchText, '%')) = true))")
Page<AlarmInfoEntity> findAlarms(@Param("tenantId") UUID tenantId, Page<AlarmInfoEntity> findAlarms(@Param("tenantId") UUID tenantId,
@Param("affectedEntityId") UUID affectedEntityId, @Param("affectedEntityId") UUID affectedEntityId,
@Param("affectedEntityType") String affectedEntityType, @Param("affectedEntityType") String affectedEntityType,
@ -105,9 +105,9 @@ public interface AlarmRepository extends JpaRepository<AlarmEntity, UUID> {
"AND ((:clearFilterEnabled) IS FALSE OR a.cleared = :clearFilter) " + "AND ((:clearFilterEnabled) IS FALSE OR a.cleared = :clearFilter) " +
"AND ((:ackFilterEnabled) IS FALSE OR a.acknowledged = :ackFilter) " + "AND ((:ackFilterEnabled) IS FALSE OR a.acknowledged = :ackFilter) " +
"AND (:assigneeId IS NULL OR a.assigneeId = uuid(:assigneeId)) " + "AND (:assigneeId IS NULL OR a.assigneeId = uuid(:assigneeId)) " +
"AND (LOWER(a.type) LIKE LOWER(CONCAT('%', :searchText, '%')) " + "AND (:searchText IS NULL OR (ilike(a.type, CONCAT('%', :searchText, '%')) = true " +
" OR LOWER(a.severity) LIKE LOWER(CONCAT('%', :searchText, '%')) " + " OR ilike(a.severity, CONCAT('%', :searchText, '%')) = true " +
" OR LOWER(a.status) LIKE LOWER(CONCAT('%', :searchText, '%'))) " " OR ilike(a.status, CONCAT('%', :searchText, '%')) = true)) "
, ,
countQuery = "" + countQuery = "" +
"SELECT count(a) " + //alarms with relations only "SELECT count(a) " + //alarms with relations only
@ -124,9 +124,9 @@ public interface AlarmRepository extends JpaRepository<AlarmEntity, UUID> {
"AND ((:clearFilterEnabled) IS FALSE OR a.cleared = :clearFilter) " + "AND ((:clearFilterEnabled) IS FALSE OR a.cleared = :clearFilter) " +
"AND ((:ackFilterEnabled) IS FALSE OR a.acknowledged = :ackFilter) " + "AND ((:ackFilterEnabled) IS FALSE OR a.acknowledged = :ackFilter) " +
"AND (:assigneeId IS NULL OR a.assigneeId = uuid(:assigneeId)) " + "AND (:assigneeId IS NULL OR a.assigneeId = uuid(:assigneeId)) " +
"AND (LOWER(a.type) LIKE LOWER(CONCAT('%', :searchText, '%')) " + "AND (:searchText IS NULL OR (ilike(a.type, CONCAT('%', :searchText, '%')) = true " +
" OR LOWER(a.severity) LIKE LOWER(CONCAT('%', :searchText, '%')) " + " OR ilike(a.severity, CONCAT('%', :searchText, '%')) = true " +
" OR LOWER(a.status) LIKE LOWER(CONCAT('%', :searchText, '%'))) ") " OR ilike(a.status, CONCAT('%', :searchText, '%')) = true))")
Page<AlarmInfoEntity> findAlarmsV2(@Param("tenantId") UUID tenantId, Page<AlarmInfoEntity> findAlarmsV2(@Param("tenantId") UUID tenantId,
@Param("affectedEntityId") UUID affectedEntityId, @Param("affectedEntityId") UUID affectedEntityId,
@Param("affectedEntityType") String affectedEntityType, @Param("affectedEntityType") String affectedEntityType,
@ -150,9 +150,9 @@ public interface AlarmRepository extends JpaRepository<AlarmEntity, UUID> {
"AND ((:clearFilterEnabled) IS FALSE OR a.cleared = :clearFilter) " + "AND ((:clearFilterEnabled) IS FALSE OR a.cleared = :clearFilter) " +
"AND ((:ackFilterEnabled) IS FALSE OR a.acknowledged = :ackFilter) " + "AND ((:ackFilterEnabled) IS FALSE OR a.acknowledged = :ackFilter) " +
"AND (:assigneeId IS NULL OR a.assigneeId = uuid(:assigneeId)) " + "AND (:assigneeId IS NULL OR a.assigneeId = uuid(:assigneeId)) " +
"AND (LOWER(a.type) LIKE LOWER(CONCAT('%', :searchText, '%')) " + "AND (:searchText IS NULL OR (ilike(a.type, CONCAT('%', :searchText, '%')) = true " +
" OR LOWER(a.severity) LIKE LOWER(CONCAT('%', :searchText, '%')) " + " OR ilike(a.severity, CONCAT('%', :searchText, '%')) = true " +
" OR LOWER(a.status) LIKE LOWER(CONCAT('%', :searchText, '%'))) ", " OR ilike(a.status, CONCAT('%', :searchText, '%')) = true)) ",
countQuery = "" + countQuery = "" +
"SELECT count(a) " + "SELECT count(a) " +
"FROM AlarmInfoEntity a " + "FROM AlarmInfoEntity a " +
@ -162,9 +162,9 @@ public interface AlarmRepository extends JpaRepository<AlarmEntity, UUID> {
"AND ((:clearFilterEnabled) IS FALSE OR a.cleared = :clearFilter) " + "AND ((:clearFilterEnabled) IS FALSE OR a.cleared = :clearFilter) " +
"AND ((:ackFilterEnabled) IS FALSE OR a.acknowledged = :ackFilter) " + "AND ((:ackFilterEnabled) IS FALSE OR a.acknowledged = :ackFilter) " +
"AND (:assigneeId IS NULL OR a.assigneeId = uuid(:assigneeId)) " + "AND (:assigneeId IS NULL OR a.assigneeId = uuid(:assigneeId)) " +
"AND (LOWER(a.type) LIKE LOWER(CONCAT('%', :searchText, '%')) " + "AND (:searchText IS NULL OR (ilike(a.type, CONCAT('%', :searchText, '%')) = true " +
" OR LOWER(a.severity) LIKE LOWER(CONCAT('%', :searchText, '%')) " + " OR ilike(a.severity, CONCAT('%', :searchText, '%')) = true " +
" OR LOWER(a.status) LIKE LOWER(CONCAT('%', :searchText, '%'))) ") " OR ilike(a.status, CONCAT('%', :searchText, '%')) = true))")
Page<AlarmInfoEntity> findAllAlarms(@Param("tenantId") UUID tenantId, Page<AlarmInfoEntity> findAllAlarms(@Param("tenantId") UUID tenantId,
@Param("startTime") Long startTime, @Param("startTime") Long startTime,
@Param("endTime") Long endTime, @Param("endTime") Long endTime,
@ -186,9 +186,9 @@ public interface AlarmRepository extends JpaRepository<AlarmEntity, UUID> {
"AND ((:clearFilterEnabled) IS FALSE OR a.cleared = :clearFilter) " + "AND ((:clearFilterEnabled) IS FALSE OR a.cleared = :clearFilter) " +
"AND ((:ackFilterEnabled) IS FALSE OR a.acknowledged = :ackFilter) " + "AND ((:ackFilterEnabled) IS FALSE OR a.acknowledged = :ackFilter) " +
"AND (:assigneeId IS NULL OR a.assigneeId = uuid(:assigneeId)) " + "AND (:assigneeId IS NULL OR a.assigneeId = uuid(:assigneeId)) " +
"AND (LOWER(a.type) LIKE LOWER(CONCAT('%', :searchText, '%')) " + "AND (:searchText IS NULL OR (ilike(a.type, CONCAT('%', :searchText, '%')) = true " +
" OR LOWER(a.severity) LIKE LOWER(CONCAT('%', :searchText, '%')) " + " OR ilike(a.severity, CONCAT('%', :searchText, '%')) = true " +
" OR LOWER(a.status) LIKE LOWER(CONCAT('%', :searchText, '%'))) ", " OR ilike(a.status, CONCAT('%', :searchText, '%')) = true)) ",
countQuery = "" + countQuery = "" +
"SELECT count(a) " + "SELECT count(a) " +
"FROM AlarmInfoEntity a " + "FROM AlarmInfoEntity a " +
@ -200,9 +200,9 @@ public interface AlarmRepository extends JpaRepository<AlarmEntity, UUID> {
"AND ((:clearFilterEnabled) IS FALSE OR a.cleared = :clearFilter) " + "AND ((:clearFilterEnabled) IS FALSE OR a.cleared = :clearFilter) " +
"AND ((:ackFilterEnabled) IS FALSE OR a.acknowledged = :ackFilter) " + "AND ((:ackFilterEnabled) IS FALSE OR a.acknowledged = :ackFilter) " +
"AND (:assigneeId IS NULL OR a.assigneeId = uuid(:assigneeId)) " + "AND (:assigneeId IS NULL OR a.assigneeId = uuid(:assigneeId)) " +
"AND (LOWER(a.type) LIKE LOWER(CONCAT('%', :searchText, '%')) " + "AND (:searchText IS NULL OR (ilike(a.type, CONCAT('%', :searchText, '%')) = true " +
" OR LOWER(a.severity) LIKE LOWER(CONCAT('%', :searchText, '%')) " + " OR ilike(a.severity, CONCAT('%', :searchText, '%')) = true " +
" OR LOWER(a.status) LIKE LOWER(CONCAT('%', :searchText, '%'))) ") " OR ilike(a.status, CONCAT('%', :searchText, '%')) = true))")
Page<AlarmInfoEntity> findAllAlarmsV2(@Param("tenantId") UUID tenantId, Page<AlarmInfoEntity> findAllAlarmsV2(@Param("tenantId") UUID tenantId,
@Param("startTime") Long startTime, @Param("startTime") Long startTime,
@Param("endTime") Long endTime, @Param("endTime") Long endTime,
@ -224,9 +224,9 @@ public interface AlarmRepository extends JpaRepository<AlarmEntity, UUID> {
"AND ((:clearFilterEnabled) IS FALSE OR a.cleared = :clearFilter) " + "AND ((:clearFilterEnabled) IS FALSE OR a.cleared = :clearFilter) " +
"AND ((:ackFilterEnabled) IS FALSE OR a.acknowledged = :ackFilter) " + "AND ((:ackFilterEnabled) IS FALSE OR a.acknowledged = :ackFilter) " +
"AND (:assigneeId IS NULL OR a.assigneeId = uuid(:assigneeId)) " + "AND (:assigneeId IS NULL OR a.assigneeId = uuid(:assigneeId)) " +
"AND (LOWER(a.type) LIKE LOWER(CONCAT('%', :searchText, '%')) " + "AND (:searchText IS NULL OR (ilike(a.type, CONCAT('%', :searchText, '%')) = true " +
" OR LOWER(a.severity) LIKE LOWER(CONCAT('%', :searchText, '%')) " + " OR ilike(a.severity, CONCAT('%', :searchText, '%')) = true " +
" OR LOWER(a.status) LIKE LOWER(CONCAT('%', :searchText, '%'))) " " OR ilike(a.status, CONCAT('%', :searchText, '%')) = true)) "
, ,
countQuery = "" + countQuery = "" +
"SELECT count(a) " + "SELECT count(a) " +
@ -237,9 +237,9 @@ public interface AlarmRepository extends JpaRepository<AlarmEntity, UUID> {
"AND ((:clearFilterEnabled) IS FALSE OR a.cleared = :clearFilter) " + "AND ((:clearFilterEnabled) IS FALSE OR a.cleared = :clearFilter) " +
"AND ((:ackFilterEnabled) IS FALSE OR a.acknowledged = :ackFilter) " + "AND ((:ackFilterEnabled) IS FALSE OR a.acknowledged = :ackFilter) " +
"AND (:assigneeId IS NULL OR a.assigneeId = uuid(:assigneeId)) " + "AND (:assigneeId IS NULL OR a.assigneeId = uuid(:assigneeId)) " +
"AND (LOWER(a.type) LIKE LOWER(CONCAT('%', :searchText, '%')) " + "AND (:searchText IS NULL OR (ilike(a.type, CONCAT('%', :searchText, '%')) = true " +
" OR LOWER(a.severity) LIKE LOWER(CONCAT('%', :searchText, '%')) " + " OR ilike(a.severity, CONCAT('%', :searchText, '%')) = true " +
" OR LOWER(a.status) LIKE LOWER(CONCAT('%', :searchText, '%'))) ") " OR ilike(a.status, CONCAT('%', :searchText, '%')) = true))")
Page<AlarmInfoEntity> findCustomerAlarms(@Param("tenantId") UUID tenantId, Page<AlarmInfoEntity> findCustomerAlarms(@Param("tenantId") UUID tenantId,
@Param("customerId") UUID customerId, @Param("customerId") UUID customerId,
@Param("startTime") Long startTime, @Param("startTime") Long startTime,
@ -262,9 +262,9 @@ public interface AlarmRepository extends JpaRepository<AlarmEntity, UUID> {
"AND ((:clearFilterEnabled) IS FALSE OR a.cleared = :clearFilter) " + "AND ((:clearFilterEnabled) IS FALSE OR a.cleared = :clearFilter) " +
"AND ((:ackFilterEnabled) IS FALSE OR a.acknowledged = :ackFilter) " + "AND ((:ackFilterEnabled) IS FALSE OR a.acknowledged = :ackFilter) " +
"AND (:assigneeId IS NULL OR a.assigneeId = uuid(:assigneeId)) " + "AND (:assigneeId IS NULL OR a.assigneeId = uuid(:assigneeId)) " +
"AND (LOWER(a.type) LIKE LOWER(CONCAT('%', :searchText, '%')) " + "AND (:searchText IS NULL OR (ilike(a.type, CONCAT('%', :searchText, '%')) = true " +
" OR LOWER(a.severity) LIKE LOWER(CONCAT('%', :searchText, '%')) " + " OR ilike(a.severity, CONCAT('%', :searchText, '%')) = true " +
" OR LOWER(a.status) LIKE LOWER(CONCAT('%', :searchText, '%'))) " " OR ilike(a.status, CONCAT('%', :searchText, '%')) = true)) "
, ,
countQuery = "" + countQuery = "" +
"SELECT count(a) " + "SELECT count(a) " +
@ -277,9 +277,9 @@ public interface AlarmRepository extends JpaRepository<AlarmEntity, UUID> {
"AND ((:clearFilterEnabled) IS FALSE OR a.cleared = :clearFilter) " + "AND ((:clearFilterEnabled) IS FALSE OR a.cleared = :clearFilter) " +
"AND ((:ackFilterEnabled) IS FALSE OR a.acknowledged = :ackFilter) " + "AND ((:ackFilterEnabled) IS FALSE OR a.acknowledged = :ackFilter) " +
"AND (:assigneeId IS NULL OR a.assigneeId = uuid(:assigneeId)) " + "AND (:assigneeId IS NULL OR a.assigneeId = uuid(:assigneeId)) " +
"AND (LOWER(a.type) LIKE LOWER(CONCAT('%', :searchText, '%')) " + "AND (:searchText IS NULL OR (ilike(a.type, CONCAT('%', :searchText, '%')) = true " +
" OR LOWER(a.severity) LIKE LOWER(CONCAT('%', :searchText, '%')) " + " OR ilike(a.severity, CONCAT('%', :searchText, '%')) = true " +
" OR LOWER(a.status) LIKE LOWER(CONCAT('%', :searchText, '%'))) ") " OR ilike(a.status, CONCAT('%', :searchText, '%')) = true))")
Page<AlarmInfoEntity> findCustomerAlarmsV2(@Param("tenantId") UUID tenantId, Page<AlarmInfoEntity> findCustomerAlarmsV2(@Param("tenantId") UUID tenantId,
@Param("customerId") UUID customerId, @Param("customerId") UUID customerId,
@Param("startTime") Long startTime, @Param("startTime") Long startTime,

12
dao/src/main/java/org/thingsboard/server/dao/sql/alarm/JpaAlarmDao.java

@ -155,7 +155,7 @@ public class JpaAlarmDao extends JpaAbstractDao<AlarmEntity, Alarm> implements A
asf.hasAckFilter(), asf.hasAckFilter(),
asf.hasAckFilter() && asf.getAckFilter(), asf.hasAckFilter() && asf.getAckFilter(),
DaoUtil.getStringId(query.getAssigneeId()), DaoUtil.getStringId(query.getAssigneeId()),
Objects.toString(query.getPageLink().getTextSearch(), ""), query.getPageLink().getTextSearch(),
DaoUtil.toPageable(query.getPageLink()) DaoUtil.toPageable(query.getPageLink())
) )
); );
@ -170,7 +170,7 @@ public class JpaAlarmDao extends JpaAbstractDao<AlarmEntity, Alarm> implements A
asf.hasAckFilter(), asf.hasAckFilter(),
asf.hasAckFilter() && asf.getAckFilter(), asf.hasAckFilter() && asf.getAckFilter(),
DaoUtil.getStringId(query.getAssigneeId()), DaoUtil.getStringId(query.getAssigneeId()),
Objects.toString(query.getPageLink().getTextSearch(), ""), query.getPageLink().getTextSearch(),
DaoUtil.toPageable(query.getPageLink()) DaoUtil.toPageable(query.getPageLink())
) )
); );
@ -192,7 +192,7 @@ public class JpaAlarmDao extends JpaAbstractDao<AlarmEntity, Alarm> implements A
asf.hasAckFilter(), asf.hasAckFilter(),
asf.hasAckFilter() && asf.getAckFilter(), asf.hasAckFilter() && asf.getAckFilter(),
DaoUtil.getStringId(query.getAssigneeId()), DaoUtil.getStringId(query.getAssigneeId()),
Objects.toString(query.getPageLink().getTextSearch(), ""), query.getPageLink().getTextSearch(),
DaoUtil.toPageable(query.getPageLink()) DaoUtil.toPageable(query.getPageLink())
) )
); );
@ -220,7 +220,7 @@ public class JpaAlarmDao extends JpaAbstractDao<AlarmEntity, Alarm> implements A
asf.hasAckFilter(), asf.hasAckFilter(),
asf.hasAckFilter() && asf.getAckFilter(), asf.hasAckFilter() && asf.getAckFilter(),
DaoUtil.getStringId(query.getAssigneeId()), DaoUtil.getStringId(query.getAssigneeId()),
Objects.toString(query.getPageLink().getTextSearch(), ""), query.getPageLink().getTextSearch(),
DaoUtil.toPageable(query.getPageLink()) DaoUtil.toPageable(query.getPageLink())
) )
); );
@ -237,7 +237,7 @@ public class JpaAlarmDao extends JpaAbstractDao<AlarmEntity, Alarm> implements A
asf.hasAckFilter(), asf.hasAckFilter(),
asf.hasAckFilter() && asf.getAckFilter(), asf.hasAckFilter() && asf.getAckFilter(),
DaoUtil.getStringId(query.getAssigneeId()), DaoUtil.getStringId(query.getAssigneeId()),
Objects.toString(query.getPageLink().getTextSearch(), ""), query.getPageLink().getTextSearch(),
DaoUtil.toPageable(query.getPageLink()) DaoUtil.toPageable(query.getPageLink())
) )
); );
@ -263,7 +263,7 @@ public class JpaAlarmDao extends JpaAbstractDao<AlarmEntity, Alarm> implements A
asf.hasAckFilter(), asf.hasAckFilter(),
asf.hasAckFilter() && asf.getAckFilter(), asf.hasAckFilter() && asf.getAckFilter(),
DaoUtil.getStringId(query.getAssigneeId()), DaoUtil.getStringId(query.getAssigneeId()),
Objects.toString(query.getPageLink().getTextSearch(), ""), query.getPageLink().getTextSearch(),
DaoUtil.toPageable(query.getPageLink()) DaoUtil.toPageable(query.getPageLink())
) )
); );

4
dao/src/main/java/org/thingsboard/server/dao/sql/asset/AssetProfileRepository.java

@ -34,14 +34,14 @@ public interface AssetProfileRepository extends JpaRepository<AssetProfileEntity
AssetProfileInfo findAssetProfileInfoById(@Param("assetProfileId") UUID assetProfileId); AssetProfileInfo findAssetProfileInfoById(@Param("assetProfileId") UUID assetProfileId);
@Query("SELECT a FROM AssetProfileEntity a WHERE " + @Query("SELECT a FROM AssetProfileEntity a WHERE " +
"a.tenantId = :tenantId AND LOWER(a.name) LIKE LOWER(CONCAT('%', :textSearch, '%'))") "a.tenantId = :tenantId AND (:textSearch IS NULL OR ilike(a.name, CONCAT('%', :textSearch, '%')) = true)")
Page<AssetProfileEntity> findAssetProfiles(@Param("tenantId") UUID tenantId, Page<AssetProfileEntity> findAssetProfiles(@Param("tenantId") UUID tenantId,
@Param("textSearch") String textSearch, @Param("textSearch") String textSearch,
Pageable pageable); Pageable pageable);
@Query("SELECT new org.thingsboard.server.common.data.asset.AssetProfileInfo(a.id, a.tenantId, a.name, a.image, a.defaultDashboardId) " + @Query("SELECT new org.thingsboard.server.common.data.asset.AssetProfileInfo(a.id, a.tenantId, a.name, a.image, a.defaultDashboardId) " +
"FROM AssetProfileEntity a WHERE " + "FROM AssetProfileEntity a WHERE " +
"a.tenantId = :tenantId AND LOWER(a.name) LIKE LOWER(CONCAT('%', :textSearch, '%'))") "a.tenantId = :tenantId AND (:textSearch IS NULL OR ilike(a.name, CONCAT('%', :textSearch, '%')) = true)")
Page<AssetProfileInfo> findAssetProfileInfos(@Param("tenantId") UUID tenantId, Page<AssetProfileInfo> findAssetProfileInfos(@Param("tenantId") UUID tenantId,
@Param("textSearch") String textSearch, @Param("textSearch") String textSearch,
Pageable pageable); Pageable pageable);

40
dao/src/main/java/org/thingsboard/server/dao/sql/asset/AssetRepository.java

@ -41,7 +41,7 @@ public interface AssetRepository extends JpaRepository<AssetEntity, UUID>, Expor
AssetInfoEntity findAssetInfoById(@Param("assetId") UUID assetId); AssetInfoEntity findAssetInfoById(@Param("assetId") UUID assetId);
@Query("SELECT a FROM AssetEntity a WHERE a.tenantId = :tenantId " + @Query("SELECT a FROM AssetEntity a WHERE a.tenantId = :tenantId " +
"AND LOWER(a.name) LIKE LOWER(CONCAT('%', :textSearch, '%'))") "AND (:textSearch IS NULL OR ilike(a.name, CONCAT('%', :textSearch, '%')) = true)")
Page<AssetEntity> findByTenantId(@Param("tenantId") UUID tenantId, Page<AssetEntity> findByTenantId(@Param("tenantId") UUID tenantId,
@Param("textSearch") String textSearch, @Param("textSearch") String textSearch,
Pageable pageable); Pageable pageable);
@ -51,17 +51,17 @@ public interface AssetRepository extends JpaRepository<AssetEntity, UUID>, Expor
"LEFT JOIN CustomerEntity c on c.id = a.customerId " + "LEFT JOIN CustomerEntity c on c.id = a.customerId " +
"LEFT JOIN AssetProfileEntity p on p.id = a.assetProfileId " + "LEFT JOIN AssetProfileEntity p on p.id = a.assetProfileId " +
"WHERE a.tenantId = :tenantId " + "WHERE a.tenantId = :tenantId " +
"AND (LOWER(a.name) LIKE LOWER(CONCAT('%', :textSearch, '%')) " + "AND (:textSearch IS NULL OR ilike(a.name, CONCAT('%', :textSearch, '%')) = true " +
"OR LOWER(a.label) LIKE LOWER(CONCAT('%', :textSearch, '%')) " + " OR ilike(a.label, CONCAT('%', :textSearch, '%')) = true " +
"OR LOWER(p.name) LIKE LOWER(CONCAT('%', :textSearch, '%')) " + " OR ilike(p.name, CONCAT('%', :textSearch, '%')) = true " +
"OR LOWER(c.title) LIKE LOWER(CONCAT('%', :textSearch, '%')))") " OR ilike(c.title, CONCAT('%', :textSearch, '%')) = true) ")
Page<AssetInfoEntity> findAssetInfosByTenantId(@Param("tenantId") UUID tenantId, Page<AssetInfoEntity> findAssetInfosByTenantId(@Param("tenantId") UUID tenantId,
@Param("textSearch") String textSearch, @Param("textSearch") String textSearch,
Pageable pageable); Pageable pageable);
@Query("SELECT a FROM AssetEntity a WHERE a.tenantId = :tenantId " + @Query("SELECT a FROM AssetEntity a WHERE a.tenantId = :tenantId " +
"AND a.customerId = :customerId " + "AND a.customerId = :customerId " +
"AND LOWER(a.name) LIKE LOWER(CONCAT('%', :textSearch, '%'))") "AND (:textSearch IS NULL OR ilike(a.name, CONCAT('%', :textSearch, '%')) = true)")
Page<AssetEntity> findByTenantIdAndCustomerId(@Param("tenantId") UUID tenantId, Page<AssetEntity> findByTenantIdAndCustomerId(@Param("tenantId") UUID tenantId,
@Param("customerId") UUID customerId, @Param("customerId") UUID customerId,
@Param("textSearch") String textSearch, @Param("textSearch") String textSearch,
@ -69,7 +69,7 @@ public interface AssetRepository extends JpaRepository<AssetEntity, UUID>, Expor
@Query("SELECT a FROM AssetEntity a WHERE a.tenantId = :tenantId " + @Query("SELECT a FROM AssetEntity a WHERE a.tenantId = :tenantId " +
"AND a.assetProfileId = :profileId " + "AND a.assetProfileId = :profileId " +
"AND LOWER(a.name) LIKE LOWER(CONCAT('%', :searchText, '%'))") "AND (:searchText IS NULL OR ilike(a.name, CONCAT('%', :searchText, '%')) = true)")
Page<AssetEntity> findByTenantIdAndProfileId(@Param("tenantId") UUID tenantId, Page<AssetEntity> findByTenantIdAndProfileId(@Param("tenantId") UUID tenantId,
@Param("profileId") UUID profileId, @Param("profileId") UUID profileId,
@Param("searchText") String searchText, @Param("searchText") String searchText,
@ -81,7 +81,7 @@ public interface AssetRepository extends JpaRepository<AssetEntity, UUID>, Expor
"LEFT JOIN AssetProfileEntity p on p.id = a.assetProfileId " + "LEFT JOIN AssetProfileEntity p on p.id = a.assetProfileId " +
"WHERE a.tenantId = :tenantId " + "WHERE a.tenantId = :tenantId " +
"AND a.customerId = :customerId " + "AND a.customerId = :customerId " +
"AND LOWER(a.name) LIKE LOWER(CONCAT('%', :searchText, '%'))") "AND (:searchText IS NULL OR ilike(a.name, CONCAT('%', :searchText, '%')) = true)")
Page<AssetInfoEntity> findAssetInfosByTenantIdAndCustomerId(@Param("tenantId") UUID tenantId, Page<AssetInfoEntity> findAssetInfosByTenantIdAndCustomerId(@Param("tenantId") UUID tenantId,
@Param("customerId") UUID customerId, @Param("customerId") UUID customerId,
@Param("searchText") String searchText, @Param("searchText") String searchText,
@ -95,7 +95,7 @@ public interface AssetRepository extends JpaRepository<AssetEntity, UUID>, Expor
@Query("SELECT a FROM AssetEntity a WHERE a.tenantId = :tenantId " + @Query("SELECT a FROM AssetEntity a WHERE a.tenantId = :tenantId " +
"AND a.type = :type " + "AND a.type = :type " +
"AND LOWER(a.name) LIKE LOWER(CONCAT('%', :textSearch, '%'))") "AND (:textSearch IS NULL OR ilike(a.name, CONCAT('%', :textSearch, '%')) = true)")
Page<AssetEntity> findByTenantIdAndType(@Param("tenantId") UUID tenantId, Page<AssetEntity> findByTenantIdAndType(@Param("tenantId") UUID tenantId,
@Param("type") String type, @Param("type") String type,
@Param("textSearch") String textSearch, @Param("textSearch") String textSearch,
@ -107,9 +107,9 @@ public interface AssetRepository extends JpaRepository<AssetEntity, UUID>, Expor
"LEFT JOIN AssetProfileEntity p on p.id = a.assetProfileId " + "LEFT JOIN AssetProfileEntity p on p.id = a.assetProfileId " +
"WHERE a.tenantId = :tenantId " + "WHERE a.tenantId = :tenantId " +
"AND a.type = :type " + "AND a.type = :type " +
"AND (LOWER(a.name) LIKE LOWER(CONCAT('%', :textSearch, '%')) " + "AND (:textSearch IS NULL OR ilike(a.name, CONCAT('%', :textSearch, '%')) = true " +
"OR LOWER(a.label) LIKE LOWER(CONCAT('%', :textSearch, '%')) " + " OR ilike(a.label, CONCAT('%', :textSearch, '%')) = true " +
"OR LOWER(c.title) LIKE LOWER(CONCAT('%', :textSearch, '%')))") " OR ilike(c.title, CONCAT('%', :textSearch, '%')) = true) ")
Page<AssetInfoEntity> findAssetInfosByTenantIdAndType(@Param("tenantId") UUID tenantId, Page<AssetInfoEntity> findAssetInfosByTenantIdAndType(@Param("tenantId") UUID tenantId,
@Param("type") String type, @Param("type") String type,
@Param("textSearch") String textSearch, @Param("textSearch") String textSearch,
@ -121,9 +121,9 @@ public interface AssetRepository extends JpaRepository<AssetEntity, UUID>, Expor
"LEFT JOIN AssetProfileEntity p on p.id = a.assetProfileId " + "LEFT JOIN AssetProfileEntity p on p.id = a.assetProfileId " +
"WHERE a.tenantId = :tenantId " + "WHERE a.tenantId = :tenantId " +
"AND a.assetProfileId = :assetProfileId " + "AND a.assetProfileId = :assetProfileId " +
"AND (LOWER(a.name) LIKE LOWER(CONCAT('%', :textSearch, '%')) " + "AND (:textSearch IS NULL OR ilike(a.name, CONCAT('%', :textSearch, '%')) = true " +
"OR LOWER(a.label) LIKE LOWER(CONCAT('%', :textSearch, '%')) " + " OR ilike(a.label, CONCAT('%', :textSearch, '%')) = true " +
"OR LOWER(c.title) LIKE LOWER(CONCAT('%', :textSearch, '%')))") " OR ilike(c.title, CONCAT('%', :textSearch, '%')) = true) ")
Page<AssetInfoEntity> findAssetInfosByTenantIdAndAssetProfileId(@Param("tenantId") UUID tenantId, Page<AssetInfoEntity> findAssetInfosByTenantIdAndAssetProfileId(@Param("tenantId") UUID tenantId,
@Param("assetProfileId") UUID assetProfileId, @Param("assetProfileId") UUID assetProfileId,
@Param("textSearch") String textSearch, @Param("textSearch") String textSearch,
@ -132,7 +132,7 @@ public interface AssetRepository extends JpaRepository<AssetEntity, UUID>, Expor
@Query("SELECT a FROM AssetEntity a WHERE a.tenantId = :tenantId " + @Query("SELECT a FROM AssetEntity a WHERE a.tenantId = :tenantId " +
"AND a.customerId = :customerId AND a.type = :type " + "AND a.customerId = :customerId AND a.type = :type " +
"AND LOWER(a.name) LIKE LOWER(CONCAT('%', :textSearch, '%'))") "AND (:textSearch IS NULL OR ilike(a.name, CONCAT('%', :textSearch, '%')) = true)")
Page<AssetEntity> findByTenantIdAndCustomerIdAndType(@Param("tenantId") UUID tenantId, Page<AssetEntity> findByTenantIdAndCustomerIdAndType(@Param("tenantId") UUID tenantId,
@Param("customerId") UUID customerId, @Param("customerId") UUID customerId,
@Param("type") String type, @Param("type") String type,
@ -146,7 +146,7 @@ public interface AssetRepository extends JpaRepository<AssetEntity, UUID>, Expor
"WHERE a.tenantId = :tenantId " + "WHERE a.tenantId = :tenantId " +
"AND a.customerId = :customerId " + "AND a.customerId = :customerId " +
"AND a.type = :type " + "AND a.type = :type " +
"AND LOWER(a.name) LIKE LOWER(CONCAT('%', :textSearch, '%'))") "AND (:textSearch IS NULL OR ilike(a.name, CONCAT('%', :textSearch, '%')) = true)")
Page<AssetInfoEntity> findAssetInfosByTenantIdAndCustomerIdAndType(@Param("tenantId") UUID tenantId, Page<AssetInfoEntity> findAssetInfosByTenantIdAndCustomerIdAndType(@Param("tenantId") UUID tenantId,
@Param("customerId") UUID customerId, @Param("customerId") UUID customerId,
@Param("type") String type, @Param("type") String type,
@ -160,7 +160,7 @@ public interface AssetRepository extends JpaRepository<AssetEntity, UUID>, Expor
"WHERE a.tenantId = :tenantId " + "WHERE a.tenantId = :tenantId " +
"AND a.customerId = :customerId " + "AND a.customerId = :customerId " +
"AND a.assetProfileId = :assetProfileId " + "AND a.assetProfileId = :assetProfileId " +
"AND LOWER(a.name) LIKE LOWER(CONCAT('%', :textSearch, '%'))") "AND (:textSearch IS NULL OR ilike(a.name, CONCAT('%', :textSearch, '%')) = true)")
Page<AssetInfoEntity> findAssetInfosByTenantIdAndCustomerIdAndAssetProfileId(@Param("tenantId") UUID tenantId, Page<AssetInfoEntity> findAssetInfosByTenantIdAndCustomerIdAndAssetProfileId(@Param("tenantId") UUID tenantId,
@Param("customerId") UUID customerId, @Param("customerId") UUID customerId,
@Param("assetProfileId") UUID assetProfileId, @Param("assetProfileId") UUID assetProfileId,
@ -175,7 +175,7 @@ public interface AssetRepository extends JpaRepository<AssetEntity, UUID>, Expor
@Query("SELECT a FROM AssetEntity a, RelationEntity re WHERE a.tenantId = :tenantId " + @Query("SELECT a FROM AssetEntity a, RelationEntity re WHERE a.tenantId = :tenantId " +
"AND a.id = re.toId AND re.toType = 'ASSET' AND re.relationTypeGroup = 'EDGE' " + "AND a.id = re.toId AND re.toType = 'ASSET' AND re.relationTypeGroup = 'EDGE' " +
"AND re.relationType = 'Contains' AND re.fromId = :edgeId AND re.fromType = 'EDGE' " + "AND re.relationType = 'Contains' AND re.fromId = :edgeId AND re.fromType = 'EDGE' " +
"AND LOWER(a.name) LIKE LOWER(CONCAT('%', :searchText, '%'))") "AND (:searchText IS NULL OR ilike(a.name, CONCAT('%', :searchText, '%')) = true)")
Page<AssetEntity> findByTenantIdAndEdgeId(@Param("tenantId") UUID tenantId, Page<AssetEntity> findByTenantIdAndEdgeId(@Param("tenantId") UUID tenantId,
@Param("edgeId") UUID edgeId, @Param("edgeId") UUID edgeId,
@Param("searchText") String searchText, @Param("searchText") String searchText,
@ -185,7 +185,7 @@ public interface AssetRepository extends JpaRepository<AssetEntity, UUID>, Expor
"AND a.id = re.toId AND re.toType = 'ASSET' AND re.relationTypeGroup = 'EDGE' " + "AND a.id = re.toId AND re.toType = 'ASSET' AND re.relationTypeGroup = 'EDGE' " +
"AND re.relationType = 'Contains' AND re.fromId = :edgeId AND re.fromType = 'EDGE' " + "AND re.relationType = 'Contains' AND re.fromId = :edgeId AND re.fromType = 'EDGE' " +
"AND a.type = :type " + "AND a.type = :type " +
"AND LOWER(a.name) LIKE LOWER(CONCAT('%', :searchText, '%'))") "AND (:searchText IS NULL OR ilike(a.name, CONCAT('%', :searchText, '%')) = true)")
Page<AssetEntity> findByTenantIdAndEdgeIdAndType(@Param("tenantId") UUID tenantId, Page<AssetEntity> findByTenantIdAndEdgeIdAndType(@Param("tenantId") UUID tenantId,
@Param("edgeId") UUID edgeId, @Param("edgeId") UUID edgeId,
@Param("type") String type, @Param("type") String type,

26
dao/src/main/java/org/thingsboard/server/dao/sql/asset/JpaAssetDao.java

@ -77,7 +77,7 @@ public class JpaAssetDao extends JpaAbstractDao<AssetEntity, Asset> implements A
return DaoUtil.toPageData(assetRepository return DaoUtil.toPageData(assetRepository
.findByTenantId( .findByTenantId(
tenantId, tenantId,
Objects.toString(pageLink.getTextSearch(), ""), pageLink.getTextSearch(),
DaoUtil.toPageable(pageLink))); DaoUtil.toPageable(pageLink)));
} }
@ -86,7 +86,7 @@ public class JpaAssetDao extends JpaAbstractDao<AssetEntity, Asset> implements A
return DaoUtil.toPageData( return DaoUtil.toPageData(
assetRepository.findAssetInfosByTenantId( assetRepository.findAssetInfosByTenantId(
tenantId, tenantId,
Objects.toString(pageLink.getTextSearch(), ""), pageLink.getTextSearch(),
DaoUtil.toPageable(pageLink, AssetInfoEntity.assetInfoColumnMap))); DaoUtil.toPageable(pageLink, AssetInfoEntity.assetInfoColumnMap)));
} }
@ -102,7 +102,7 @@ public class JpaAssetDao extends JpaAbstractDao<AssetEntity, Asset> implements A
.findByTenantIdAndCustomerId( .findByTenantIdAndCustomerId(
tenantId, tenantId,
customerId, customerId,
Objects.toString(pageLink.getTextSearch(), ""), pageLink.getTextSearch(),
DaoUtil.toPageable(pageLink))); DaoUtil.toPageable(pageLink)));
} }
@ -112,7 +112,7 @@ public class JpaAssetDao extends JpaAbstractDao<AssetEntity, Asset> implements A
assetRepository.findAssetInfosByTenantIdAndCustomerId( assetRepository.findAssetInfosByTenantIdAndCustomerId(
tenantId, tenantId,
customerId, customerId,
Objects.toString(pageLink.getTextSearch(), ""), pageLink.getTextSearch(),
DaoUtil.toPageable(pageLink, AssetInfoEntity.assetInfoColumnMap))); DaoUtil.toPageable(pageLink, AssetInfoEntity.assetInfoColumnMap)));
} }
@ -134,7 +134,7 @@ public class JpaAssetDao extends JpaAbstractDao<AssetEntity, Asset> implements A
.findByTenantIdAndType( .findByTenantIdAndType(
tenantId, tenantId,
type, type,
Objects.toString(pageLink.getTextSearch(), ""), pageLink.getTextSearch(),
DaoUtil.toPageable(pageLink))); DaoUtil.toPageable(pageLink)));
} }
@ -144,7 +144,7 @@ public class JpaAssetDao extends JpaAbstractDao<AssetEntity, Asset> implements A
assetRepository.findAssetInfosByTenantIdAndType( assetRepository.findAssetInfosByTenantIdAndType(
tenantId, tenantId,
type, type,
Objects.toString(pageLink.getTextSearch(), ""), pageLink.getTextSearch(),
DaoUtil.toPageable(pageLink, AssetInfoEntity.assetInfoColumnMap))); DaoUtil.toPageable(pageLink, AssetInfoEntity.assetInfoColumnMap)));
} }
@ -154,7 +154,7 @@ public class JpaAssetDao extends JpaAbstractDao<AssetEntity, Asset> implements A
assetRepository.findAssetInfosByTenantIdAndAssetProfileId( assetRepository.findAssetInfosByTenantIdAndAssetProfileId(
tenantId, tenantId,
assetProfileId, assetProfileId,
Objects.toString(pageLink.getTextSearch(), ""), pageLink.getTextSearch(),
DaoUtil.toPageable(pageLink, AssetInfoEntity.assetInfoColumnMap))); DaoUtil.toPageable(pageLink, AssetInfoEntity.assetInfoColumnMap)));
} }
@ -165,7 +165,7 @@ public class JpaAssetDao extends JpaAbstractDao<AssetEntity, Asset> implements A
tenantId, tenantId,
customerId, customerId,
type, type,
Objects.toString(pageLink.getTextSearch(), ""), pageLink.getTextSearch(),
DaoUtil.toPageable(pageLink))); DaoUtil.toPageable(pageLink)));
} }
@ -176,7 +176,7 @@ public class JpaAssetDao extends JpaAbstractDao<AssetEntity, Asset> implements A
tenantId, tenantId,
customerId, customerId,
type, type,
Objects.toString(pageLink.getTextSearch(), ""), pageLink.getTextSearch(),
DaoUtil.toPageable(pageLink, AssetInfoEntity.assetInfoColumnMap))); DaoUtil.toPageable(pageLink, AssetInfoEntity.assetInfoColumnMap)));
} }
@ -187,7 +187,7 @@ public class JpaAssetDao extends JpaAbstractDao<AssetEntity, Asset> implements A
tenantId, tenantId,
customerId, customerId,
assetProfileId, assetProfileId,
Objects.toString(pageLink.getTextSearch(), ""), pageLink.getTextSearch(),
DaoUtil.toPageable(pageLink, AssetInfoEntity.assetInfoColumnMap))); DaoUtil.toPageable(pageLink, AssetInfoEntity.assetInfoColumnMap)));
} }
@ -207,7 +207,7 @@ public class JpaAssetDao extends JpaAbstractDao<AssetEntity, Asset> implements A
assetRepository.findByTenantIdAndProfileId( assetRepository.findByTenantIdAndProfileId(
tenantId, tenantId,
profileId, profileId,
Objects.toString(pageLink.getTextSearch(), ""), pageLink.getTextSearch(),
DaoUtil.toPageable(pageLink))); DaoUtil.toPageable(pageLink)));
} }
@ -218,7 +218,7 @@ public class JpaAssetDao extends JpaAbstractDao<AssetEntity, Asset> implements A
.findByTenantIdAndEdgeId( .findByTenantIdAndEdgeId(
tenantId, tenantId,
edgeId, edgeId,
Objects.toString(pageLink.getTextSearch(), ""), pageLink.getTextSearch(),
DaoUtil.toPageable(pageLink))); DaoUtil.toPageable(pageLink)));
} }
@ -230,7 +230,7 @@ public class JpaAssetDao extends JpaAbstractDao<AssetEntity, Asset> implements A
tenantId, tenantId,
edgeId, edgeId,
type, type,
Objects.toString(pageLink.getTextSearch(), ""), pageLink.getTextSearch(),
DaoUtil.toPageable(pageLink))); DaoUtil.toPageable(pageLink)));
} }

4
dao/src/main/java/org/thingsboard/server/dao/sql/asset/JpaAssetProfileDao.java

@ -69,7 +69,7 @@ public class JpaAssetProfileDao extends JpaAbstractDao<AssetProfileEntity, Asset
return DaoUtil.toPageData( return DaoUtil.toPageData(
assetProfileRepository.findAssetProfiles( assetProfileRepository.findAssetProfiles(
tenantId.getId(), tenantId.getId(),
Objects.toString(pageLink.getTextSearch(), ""), pageLink.getTextSearch(),
DaoUtil.toPageable(pageLink))); DaoUtil.toPageable(pageLink)));
} }
@ -78,7 +78,7 @@ public class JpaAssetProfileDao extends JpaAbstractDao<AssetProfileEntity, Asset
return DaoUtil.pageToPageData( return DaoUtil.pageToPageData(
assetProfileRepository.findAssetProfileInfos( assetProfileRepository.findAssetProfileInfos(
tenantId.getId(), tenantId.getId(),
Objects.toString(pageLink.getTextSearch(), ""), pageLink.getTextSearch(),
DaoUtil.toPageable(pageLink))); DaoUtil.toPageable(pageLink)));
} }

36
dao/src/main/java/org/thingsboard/server/dao/sql/audit/AuditLogRepository.java

@ -34,11 +34,11 @@ public interface AuditLogRepository extends JpaRepository<AuditLogEntity, UUID>
"AND (:startTime IS NULL OR a.createdTime >= :startTime) " + "AND (:startTime IS NULL OR a.createdTime >= :startTime) " +
"AND (:endTime IS NULL OR a.createdTime <= :endTime) " + "AND (:endTime IS NULL OR a.createdTime <= :endTime) " +
"AND ((:actionTypes) IS NULL OR a.actionType in (:actionTypes)) " + "AND ((:actionTypes) IS NULL OR a.actionType in (:actionTypes)) " +
"AND (LOWER(a.entityType) LIKE LOWER(CONCAT('%', :textSearch, '%'))" + "AND (:textSearch IS NULL OR ilike(a.entityType, CONCAT('%', :textSearch, '%')) = true " +
"OR LOWER(a.entityName) LIKE LOWER(CONCAT('%', :textSearch, '%'))" + "OR ilike(a.entityName, CONCAT('%', :textSearch, '%')) = true " +
"OR LOWER(a.userName) LIKE LOWER(CONCAT('%', :textSearch, '%'))" + "OR ilike(a.userName, CONCAT('%', :textSearch, '%')) = true " +
"OR LOWER(a.actionType) LIKE LOWER(CONCAT('%', :textSearch, '%'))" + "OR ilike(a.actionType, CONCAT('%', :textSearch, '%')) = true " +
"OR LOWER(a.actionStatus) LIKE LOWER(CONCAT('%', :textSearch, '%')))" "OR ilike(a.actionStatus, CONCAT('%', :textSearch, '%')) = true)"
) )
Page<AuditLogEntity> findByTenantId( Page<AuditLogEntity> findByTenantId(
@Param("tenantId") UUID tenantId, @Param("tenantId") UUID tenantId,
@ -54,10 +54,10 @@ public interface AuditLogRepository extends JpaRepository<AuditLogEntity, UUID>
"AND (:startTime IS NULL OR a.createdTime >= :startTime) " + "AND (:startTime IS NULL OR a.createdTime >= :startTime) " +
"AND (:endTime IS NULL OR a.createdTime <= :endTime) " + "AND (:endTime IS NULL OR a.createdTime <= :endTime) " +
"AND ((:actionTypes) IS NULL OR a.actionType in (:actionTypes)) " + "AND ((:actionTypes) IS NULL OR a.actionType in (:actionTypes)) " +
"AND (LOWER(a.entityName) LIKE LOWER(CONCAT('%', :textSearch, '%'))" + "AND (:textSearch IS NULL OR ilike(a.entityName, CONCAT('%', :textSearch, '%')) = true " +
"OR LOWER(a.userName) LIKE LOWER(CONCAT('%', :textSearch, '%'))" + "OR ilike(a.userName, CONCAT('%', :textSearch, '%')) = true " +
"OR LOWER(a.actionType) LIKE LOWER(CONCAT('%', :textSearch, '%'))" + "OR ilike(a.actionType, CONCAT('%', :textSearch, '%')) = true " +
"OR LOWER(a.actionStatus) LIKE LOWER(CONCAT('%', :textSearch, '%')))" "OR ilike(a.actionStatus, CONCAT('%', :textSearch, '%')) = true)"
) )
Page<AuditLogEntity> findAuditLogsByTenantIdAndEntityId(@Param("tenantId") UUID tenantId, Page<AuditLogEntity> findAuditLogsByTenantIdAndEntityId(@Param("tenantId") UUID tenantId,
@Param("entityType") EntityType entityType, @Param("entityType") EntityType entityType,
@ -74,11 +74,11 @@ public interface AuditLogRepository extends JpaRepository<AuditLogEntity, UUID>
"AND (:startTime IS NULL OR a.createdTime >= :startTime) " + "AND (:startTime IS NULL OR a.createdTime >= :startTime) " +
"AND (:endTime IS NULL OR a.createdTime <= :endTime) " + "AND (:endTime IS NULL OR a.createdTime <= :endTime) " +
"AND ((:actionTypes) IS NULL OR a.actionType in (:actionTypes)) " + "AND ((:actionTypes) IS NULL OR a.actionType in (:actionTypes)) " +
"AND (LOWER(a.entityType) LIKE LOWER(CONCAT('%', :textSearch, '%'))" + "AND (:textSearch IS NULL OR ilike(a.entityType, CONCAT('%', :textSearch, '%')) = true " +
"OR LOWER(a.entityName) LIKE LOWER(CONCAT('%', :textSearch, '%'))" + "OR ilike(a.entityName, CONCAT('%', :textSearch, '%')) = true " +
"OR LOWER(a.userName) LIKE LOWER(CONCAT('%', :textSearch, '%'))" + "OR ilike(a.userName, CONCAT('%', :textSearch, '%')) = true " +
"OR LOWER(a.actionType) LIKE LOWER(CONCAT('%', :textSearch, '%'))" + "OR ilike(a.actionType, CONCAT('%', :textSearch, '%')) = true " +
"OR LOWER(a.actionStatus) LIKE LOWER(CONCAT('%', :textSearch, '%')))" "OR ilike(a.actionStatus, CONCAT('%', :textSearch, '%')) = true)"
) )
Page<AuditLogEntity> findAuditLogsByTenantIdAndCustomerId(@Param("tenantId") UUID tenantId, Page<AuditLogEntity> findAuditLogsByTenantIdAndCustomerId(@Param("tenantId") UUID tenantId,
@Param("customerId") UUID customerId, @Param("customerId") UUID customerId,
@ -94,10 +94,10 @@ public interface AuditLogRepository extends JpaRepository<AuditLogEntity, UUID>
"AND (:startTime IS NULL OR a.createdTime >= :startTime) " + "AND (:startTime IS NULL OR a.createdTime >= :startTime) " +
"AND (:endTime IS NULL OR a.createdTime <= :endTime) " + "AND (:endTime IS NULL OR a.createdTime <= :endTime) " +
"AND ((:actionTypes) IS NULL OR a.actionType in (:actionTypes)) " + "AND ((:actionTypes) IS NULL OR a.actionType in (:actionTypes)) " +
"AND (LOWER(a.entityType) LIKE LOWER(CONCAT('%', :textSearch, '%'))" + "AND (:textSearch IS NULL OR ilike(a.entityType, CONCAT('%', :textSearch, '%')) = true " +
"OR LOWER(a.entityName) LIKE LOWER(CONCAT('%', :textSearch, '%'))" + "OR ilike(a.entityName, CONCAT('%', :textSearch, '%')) = true " +
"OR LOWER(a.actionType) LIKE LOWER(CONCAT('%', :textSearch, '%'))" + "OR ilike(a.actionType, CONCAT('%', :textSearch, '%')) = true " +
"OR LOWER(a.actionStatus) LIKE LOWER(CONCAT('%', :textSearch, '%')))" "OR ilike(a.actionStatus, CONCAT('%', :textSearch, '%')) = true)"
) )
Page<AuditLogEntity> findAuditLogsByTenantIdAndUserId(@Param("tenantId") UUID tenantId, Page<AuditLogEntity> findAuditLogsByTenantIdAndUserId(@Param("tenantId") UUID tenantId,
@Param("userId") UUID userId, @Param("userId") UUID userId,

8
dao/src/main/java/org/thingsboard/server/dao/sql/audit/JpaAuditLogDao.java

@ -99,7 +99,7 @@ public class JpaAuditLogDao extends JpaAbstractDao<AuditLogEntity, AuditLog> imp
tenantId, tenantId,
entityId.getEntityType(), entityId.getEntityType(),
entityId.getId(), entityId.getId(),
Objects.toString(pageLink.getTextSearch(), ""), pageLink.getTextSearch(),
pageLink.getStartTime(), pageLink.getStartTime(),
pageLink.getEndTime(), pageLink.getEndTime(),
actionTypes, actionTypes,
@ -113,7 +113,7 @@ public class JpaAuditLogDao extends JpaAbstractDao<AuditLogEntity, AuditLog> imp
.findAuditLogsByTenantIdAndCustomerId( .findAuditLogsByTenantIdAndCustomerId(
tenantId, tenantId,
customerId.getId(), customerId.getId(),
Objects.toString(pageLink.getTextSearch(), ""), pageLink.getTextSearch(),
pageLink.getStartTime(), pageLink.getStartTime(),
pageLink.getEndTime(), pageLink.getEndTime(),
actionTypes, actionTypes,
@ -127,7 +127,7 @@ public class JpaAuditLogDao extends JpaAbstractDao<AuditLogEntity, AuditLog> imp
.findAuditLogsByTenantIdAndUserId( .findAuditLogsByTenantIdAndUserId(
tenantId, tenantId,
userId.getId(), userId.getId(),
Objects.toString(pageLink.getTextSearch(), ""), pageLink.getTextSearch(),
pageLink.getStartTime(), pageLink.getStartTime(),
pageLink.getEndTime(), pageLink.getEndTime(),
actionTypes, actionTypes,
@ -139,7 +139,7 @@ public class JpaAuditLogDao extends JpaAbstractDao<AuditLogEntity, AuditLog> imp
return DaoUtil.toPageData( return DaoUtil.toPageData(
auditLogRepository.findByTenantId( auditLogRepository.findByTenantId(
tenantId, tenantId,
Objects.toString(pageLink.getTextSearch(), ""), pageLink.getTextSearch(),
pageLink.getStartTime(), pageLink.getStartTime(),
pageLink.getEndTime(), pageLink.getEndTime(),
actionTypes, actionTypes,

6
dao/src/main/java/org/thingsboard/server/dao/sql/component/ComponentDescriptorRepository.java

@ -36,13 +36,13 @@ public interface ComponentDescriptorRepository extends JpaRepository<ComponentDe
ComponentDescriptorEntity findByClazz(String clazz); ComponentDescriptorEntity findByClazz(String clazz);
@Query("SELECT cd FROM ComponentDescriptorEntity cd WHERE cd.type = :type " + @Query("SELECT cd FROM ComponentDescriptorEntity cd WHERE cd.type = :type " +
"AND LOWER(cd.name) LIKE LOWER(CONCAT('%', :textSearch, '%'))") "AND (:textSearch IS NULL OR ilike(cd.name, CONCAT('%', :textSearch, '%')) = true)")
Page<ComponentDescriptorEntity> findByType(@Param("type") ComponentType type, Page<ComponentDescriptorEntity> findByType(@Param("type") ComponentType type,
@Param("textSearch") String textSearch, @Param("textSearch") String textSearch,
Pageable pageable); Pageable pageable);
@Query("SELECT cd FROM ComponentDescriptorEntity cd WHERE cd.type = :type " + @Query("SELECT cd FROM ComponentDescriptorEntity cd WHERE cd.type = :type AND cd.scope = :scope " +
"AND cd.scope = :scope AND LOWER(cd.name) LIKE LOWER(CONCAT('%', :textSearch, '%'))") "AND (:textSearch IS NULL OR ilike(cd.name, CONCAT('%', :textSearch, '%')) = true)")
Page<ComponentDescriptorEntity> findByScopeAndType(@Param("type") ComponentType type, Page<ComponentDescriptorEntity> findByScopeAndType(@Param("type") ComponentType type,
@Param("scope") ComponentScope scope, @Param("scope") ComponentScope scope,
@Param("textSearch") String textSearch, @Param("textSearch") String textSearch,

4
dao/src/main/java/org/thingsboard/server/dao/sql/component/JpaBaseComponentDescriptorDao.java

@ -89,7 +89,7 @@ public class JpaBaseComponentDescriptorDao extends JpaAbstractDao<ComponentDescr
return DaoUtil.toPageData(componentDescriptorRepository return DaoUtil.toPageData(componentDescriptorRepository
.findByType( .findByType(
type, type,
Objects.toString(pageLink.getTextSearch(), ""), pageLink.getTextSearch(),
DaoUtil.toPageable(pageLink))); DaoUtil.toPageable(pageLink)));
} }
@ -99,7 +99,7 @@ public class JpaBaseComponentDescriptorDao extends JpaAbstractDao<ComponentDescr
.findByScopeAndType( .findByScopeAndType(
type, type,
scope, scope,
Objects.toString(pageLink.getTextSearch(), ""), pageLink.getTextSearch(),
DaoUtil.toPageable(pageLink))); DaoUtil.toPageable(pageLink)));
} }

2
dao/src/main/java/org/thingsboard/server/dao/sql/customer/CustomerRepository.java

@ -31,7 +31,7 @@ import java.util.UUID;
public interface CustomerRepository extends JpaRepository<CustomerEntity, UUID>, ExportableEntityRepository<CustomerEntity> { public interface CustomerRepository extends JpaRepository<CustomerEntity, UUID>, ExportableEntityRepository<CustomerEntity> {
@Query("SELECT c FROM CustomerEntity c WHERE c.tenantId = :tenantId " + @Query("SELECT c FROM CustomerEntity c WHERE c.tenantId = :tenantId " +
"AND LOWER(c.title) LIKE LOWER(CONCAT('%', :textSearch, '%'))") "AND (:textSearch IS NULL OR ilike(c.title, CONCAT('%', :textSearch, '%')) = true)")
Page<CustomerEntity> findByTenantId(@Param("tenantId") UUID tenantId, Page<CustomerEntity> findByTenantId(@Param("tenantId") UUID tenantId,
@Param("textSearch") String textSearch, @Param("textSearch") String textSearch,
Pageable pageable); Pageable pageable);

2
dao/src/main/java/org/thingsboard/server/dao/sql/customer/JpaCustomerDao.java

@ -58,7 +58,7 @@ public class JpaCustomerDao extends JpaAbstractDao<CustomerEntity, Customer> imp
public PageData<Customer> findCustomersByTenantId(UUID tenantId, PageLink pageLink) { public PageData<Customer> findCustomersByTenantId(UUID tenantId, PageLink pageLink) {
return DaoUtil.toPageData(customerRepository.findByTenantId( return DaoUtil.toPageData(customerRepository.findByTenantId(
tenantId, tenantId,
Objects.toString(pageLink.getTextSearch(), ""), pageLink.getTextSearch(),
DaoUtil.toPageable(pageLink))); DaoUtil.toPageable(pageLink)));
} }

10
dao/src/main/java/org/thingsboard/server/dao/sql/dashboard/DashboardInfoRepository.java

@ -32,14 +32,14 @@ public interface DashboardInfoRepository extends JpaRepository<DashboardInfoEnti
DashboardInfoEntity findFirstByTenantIdAndTitle(UUID tenantId, String title); DashboardInfoEntity findFirstByTenantIdAndTitle(UUID tenantId, String title);
@Query("SELECT di FROM DashboardInfoEntity di WHERE di.tenantId = :tenantId " + @Query("SELECT di FROM DashboardInfoEntity di WHERE di.tenantId = :tenantId " +
"AND LOWER(di.title) LIKE LOWER(CONCAT('%', :searchText, '%'))") "AND (:searchText IS NULL OR ilike(di.title, CONCAT('%', :searchText, '%')) = true)")
Page<DashboardInfoEntity> findByTenantId(@Param("tenantId") UUID tenantId, Page<DashboardInfoEntity> findByTenantId(@Param("tenantId") UUID tenantId,
@Param("searchText") String searchText, @Param("searchText") String searchText,
Pageable pageable); Pageable pageable);
@Query("SELECT di FROM DashboardInfoEntity di WHERE di.tenantId = :tenantId " + @Query("SELECT di FROM DashboardInfoEntity di WHERE di.tenantId = :tenantId " +
"AND di.mobileHide = false " + "AND di.mobileHide = false " +
"AND LOWER(di.title) LIKE LOWER(CONCAT('%', :searchText, '%'))") "AND (:searchText IS NULL OR ilike(di.title, CONCAT('%', :searchText, '%')) = true)")
Page<DashboardInfoEntity> findMobileByTenantId(@Param("tenantId") UUID tenantId, Page<DashboardInfoEntity> findMobileByTenantId(@Param("tenantId") UUID tenantId,
@Param("searchText") String searchText, @Param("searchText") String searchText,
Pageable pageable); Pageable pageable);
@ -47,7 +47,7 @@ public interface DashboardInfoRepository extends JpaRepository<DashboardInfoEnti
@Query("SELECT di FROM DashboardInfoEntity di, RelationEntity re WHERE di.tenantId = :tenantId " + @Query("SELECT di FROM DashboardInfoEntity di, RelationEntity re WHERE di.tenantId = :tenantId " +
"AND di.id = re.toId AND re.toType = 'DASHBOARD' AND re.relationTypeGroup = 'DASHBOARD' " + "AND di.id = re.toId AND re.toType = 'DASHBOARD' AND re.relationTypeGroup = 'DASHBOARD' " +
"AND re.relationType = 'Contains' AND re.fromId = :customerId AND re.fromType = 'CUSTOMER' " + "AND re.relationType = 'Contains' AND re.fromId = :customerId AND re.fromType = 'CUSTOMER' " +
"AND LOWER(di.title) LIKE LOWER(CONCAT('%', :searchText, '%'))") "AND (:searchText IS NULL OR ilike(di.title, CONCAT('%', :searchText, '%')) = true)")
Page<DashboardInfoEntity> findByTenantIdAndCustomerId(@Param("tenantId") UUID tenantId, Page<DashboardInfoEntity> findByTenantIdAndCustomerId(@Param("tenantId") UUID tenantId,
@Param("customerId") UUID customerId, @Param("customerId") UUID customerId,
@Param("searchText") String searchText, @Param("searchText") String searchText,
@ -57,7 +57,7 @@ public interface DashboardInfoRepository extends JpaRepository<DashboardInfoEnti
"AND di.mobileHide = false " + "AND di.mobileHide = false " +
"AND di.id = re.toId AND re.toType = 'DASHBOARD' AND re.relationTypeGroup = 'DASHBOARD' " + "AND di.id = re.toId AND re.toType = 'DASHBOARD' AND re.relationTypeGroup = 'DASHBOARD' " +
"AND re.relationType = 'Contains' AND re.fromId = :customerId AND re.fromType = 'CUSTOMER' " + "AND re.relationType = 'Contains' AND re.fromId = :customerId AND re.fromType = 'CUSTOMER' " +
"AND LOWER(di.title) LIKE LOWER(CONCAT('%', :searchText, '%'))") "AND (:searchText IS NULL OR ilike(di.title, CONCAT('%', :searchText, '%')) = true)")
Page<DashboardInfoEntity> findMobileByTenantIdAndCustomerId(@Param("tenantId") UUID tenantId, Page<DashboardInfoEntity> findMobileByTenantIdAndCustomerId(@Param("tenantId") UUID tenantId,
@Param("customerId") UUID customerId, @Param("customerId") UUID customerId,
@Param("searchText") String searchText, @Param("searchText") String searchText,
@ -66,7 +66,7 @@ public interface DashboardInfoRepository extends JpaRepository<DashboardInfoEnti
@Query("SELECT di FROM DashboardInfoEntity di, RelationEntity re WHERE di.tenantId = :tenantId " + @Query("SELECT di FROM DashboardInfoEntity di, RelationEntity re WHERE di.tenantId = :tenantId " +
"AND di.id = re.toId AND re.toType = 'DASHBOARD' AND re.relationTypeGroup = 'EDGE' " + "AND di.id = re.toId AND re.toType = 'DASHBOARD' AND re.relationTypeGroup = 'EDGE' " +
"AND re.relationType = 'Contains' AND re.fromId = :edgeId AND re.fromType = 'EDGE' " + "AND re.relationType = 'Contains' AND re.fromId = :edgeId AND re.fromType = 'EDGE' " +
"AND LOWER(di.title) LIKE LOWER(CONCAT('%', :searchText, '%'))") "AND (:searchText IS NULL OR ilike(di.title, CONCAT('%', :searchText, '%')) = true)")
Page<DashboardInfoEntity> findByTenantIdAndEdgeId(@Param("tenantId") UUID tenantId, Page<DashboardInfoEntity> findByTenantIdAndEdgeId(@Param("tenantId") UUID tenantId,
@Param("edgeId") UUID edgeId, @Param("edgeId") UUID edgeId,
@Param("searchText") String searchText, @Param("searchText") String searchText,

10
dao/src/main/java/org/thingsboard/server/dao/sql/dashboard/JpaDashboardInfoDao.java

@ -60,7 +60,7 @@ public class JpaDashboardInfoDao extends JpaAbstractDao<DashboardInfoEntity, Das
return DaoUtil.toPageData(dashboardInfoRepository return DaoUtil.toPageData(dashboardInfoRepository
.findByTenantId( .findByTenantId(
tenantId, tenantId,
Objects.toString(pageLink.getTextSearch(), ""), pageLink.getTextSearch(),
DaoUtil.toPageable(pageLink))); DaoUtil.toPageable(pageLink)));
} }
@ -74,7 +74,7 @@ public class JpaDashboardInfoDao extends JpaAbstractDao<DashboardInfoEntity, Das
return DaoUtil.toPageData(dashboardInfoRepository return DaoUtil.toPageData(dashboardInfoRepository
.findMobileByTenantId( .findMobileByTenantId(
tenantId, tenantId,
Objects.toString(pageLink.getTextSearch(), ""), pageLink.getTextSearch(),
DaoUtil.toPageable(pageLink, sortOrders))); DaoUtil.toPageable(pageLink, sortOrders)));
} }
@ -84,7 +84,7 @@ public class JpaDashboardInfoDao extends JpaAbstractDao<DashboardInfoEntity, Das
.findByTenantIdAndCustomerId( .findByTenantIdAndCustomerId(
tenantId, tenantId,
customerId, customerId,
Objects.toString(pageLink.getTextSearch(), ""), pageLink.getTextSearch(),
DaoUtil.toPageable(pageLink))); DaoUtil.toPageable(pageLink)));
} }
@ -99,7 +99,7 @@ public class JpaDashboardInfoDao extends JpaAbstractDao<DashboardInfoEntity, Das
.findMobileByTenantIdAndCustomerId( .findMobileByTenantIdAndCustomerId(
tenantId, tenantId,
customerId, customerId,
Objects.toString(pageLink.getTextSearch(), ""), pageLink.getTextSearch(),
DaoUtil.toPageable(pageLink, sortOrders))); DaoUtil.toPageable(pageLink, sortOrders)));
} }
@ -110,7 +110,7 @@ public class JpaDashboardInfoDao extends JpaAbstractDao<DashboardInfoEntity, Das
.findByTenantIdAndEdgeId( .findByTenantIdAndEdgeId(
tenantId, tenantId,
edgeId, edgeId,
Objects.toString(pageLink.getTextSearch(), ""), pageLink.getTextSearch(),
DaoUtil.toPageable(pageLink))); DaoUtil.toPageable(pageLink)));
} }

12
dao/src/main/java/org/thingsboard/server/dao/sql/device/DeviceProfileRepository.java

@ -34,22 +34,22 @@ public interface DeviceProfileRepository extends JpaRepository<DeviceProfileEnti
"WHERE d.id = :deviceProfileId") "WHERE d.id = :deviceProfileId")
DeviceProfileInfo findDeviceProfileInfoById(@Param("deviceProfileId") UUID deviceProfileId); DeviceProfileInfo findDeviceProfileInfoById(@Param("deviceProfileId") UUID deviceProfileId);
@Query("SELECT d FROM DeviceProfileEntity d WHERE " + @Query("SELECT d FROM DeviceProfileEntity d WHERE d.tenantId = :tenantId " +
"d.tenantId = :tenantId AND LOWER(d.name) LIKE LOWER(CONCAT('%', :textSearch, '%'))") "AND (:textSearch IS NULL OR ilike(d.name, CONCAT('%', :textSearch, '%')) = true)")
Page<DeviceProfileEntity> findDeviceProfiles(@Param("tenantId") UUID tenantId, Page<DeviceProfileEntity> findDeviceProfiles(@Param("tenantId") UUID tenantId,
@Param("textSearch") String textSearch, @Param("textSearch") String textSearch,
Pageable pageable); Pageable pageable);
@Query("SELECT new org.thingsboard.server.common.data.DeviceProfileInfo(d.id, d.tenantId, d.name, d.image, d.defaultDashboardId, d.type, d.transportType) " + @Query("SELECT new org.thingsboard.server.common.data.DeviceProfileInfo(d.id, d.tenantId, d.name, d.image, d.defaultDashboardId, d.type, d.transportType) " +
"FROM DeviceProfileEntity d WHERE " + "FROM DeviceProfileEntity d WHERE d.tenantId = :tenantId " +
"d.tenantId = :tenantId AND LOWER(d.name) LIKE LOWER(CONCAT('%', :textSearch, '%'))") "AND (:textSearch IS NULL OR ilike(d.name, CONCAT('%', :textSearch, '%')) = true)")
Page<DeviceProfileInfo> findDeviceProfileInfos(@Param("tenantId") UUID tenantId, Page<DeviceProfileInfo> findDeviceProfileInfos(@Param("tenantId") UUID tenantId,
@Param("textSearch") String textSearch, @Param("textSearch") String textSearch,
Pageable pageable); Pageable pageable);
@Query("SELECT new org.thingsboard.server.common.data.DeviceProfileInfo(d.id, d.tenantId, d.name, d.image, d.defaultDashboardId, d.type, d.transportType) " + @Query("SELECT new org.thingsboard.server.common.data.DeviceProfileInfo(d.id, d.tenantId, d.name, d.image, d.defaultDashboardId, d.type, d.transportType) " +
"FROM DeviceProfileEntity d WHERE " + "FROM DeviceProfileEntity d WHERE d.tenantId = :tenantId AND d.transportType = :transportType " +
"d.tenantId = :tenantId AND d.transportType = :transportType AND LOWER(d.name) LIKE LOWER(CONCAT('%', :textSearch, '%'))") "AND (:textSearch IS NULL OR ilike(d.name, CONCAT('%', :textSearch, '%')) = true)")
Page<DeviceProfileInfo> findDeviceProfileInfos(@Param("tenantId") UUID tenantId, Page<DeviceProfileInfo> findDeviceProfileInfos(@Param("tenantId") UUID tenantId,
@Param("textSearch") String textSearch, @Param("textSearch") String textSearch,
@Param("transportType") DeviceTransportType transportType, @Param("transportType") DeviceTransportType transportType,

48
dao/src/main/java/org/thingsboard/server/dao/sql/device/DeviceRepository.java

@ -35,8 +35,8 @@ public interface DeviceRepository extends JpaRepository<DeviceEntity, UUID>, Exp
@Query("SELECT d FROM DeviceEntity d WHERE d.tenantId = :tenantId " + @Query("SELECT d FROM DeviceEntity d WHERE d.tenantId = :tenantId " +
"AND d.customerId = :customerId " + "AND d.customerId = :customerId " +
"AND (LOWER(d.name) LIKE LOWER(CONCAT('%', :textSearch, '%')) " + "AND (:textSearch IS NULL OR ilike(d.name, CONCAT('%', :textSearch, '%')) = true " +
"OR LOWER(d.label) LIKE LOWER(CONCAT('%', :textSearch, '%')))") "OR ilike(d.label, CONCAT('%', :textSearch, '%')) = true)")
Page<DeviceEntity> findByTenantIdAndCustomerId(@Param("tenantId") UUID tenantId, Page<DeviceEntity> findByTenantIdAndCustomerId(@Param("tenantId") UUID tenantId,
@Param("customerId") UUID customerId, @Param("customerId") UUID customerId,
@Param("textSearch") String textSearch, @Param("textSearch") String textSearch,
@ -44,8 +44,8 @@ public interface DeviceRepository extends JpaRepository<DeviceEntity, UUID>, Exp
@Query("SELECT d FROM DeviceEntity d WHERE d.tenantId = :tenantId " + @Query("SELECT d FROM DeviceEntity d WHERE d.tenantId = :tenantId " +
"AND d.deviceProfileId = :profileId " + "AND d.deviceProfileId = :profileId " +
"AND (LOWER(d.name) LIKE LOWER(CONCAT('%', :textSearch, '%')) " + "AND (:textSearch IS NULL OR ilike(d.name, CONCAT('%', :textSearch, '%')) = true " +
"OR LOWER(d.label) LIKE LOWER(CONCAT('%', :textSearch, '%')))") "OR ilike(d.label, CONCAT('%', :textSearch, '%')) = true)")
Page<DeviceEntity> findByTenantIdAndProfileId(@Param("tenantId") UUID tenantId, Page<DeviceEntity> findByTenantIdAndProfileId(@Param("tenantId") UUID tenantId,
@Param("profileId") UUID profileId, @Param("profileId") UUID profileId,
@Param("textSearch") String textSearch, @Param("textSearch") String textSearch,
@ -54,8 +54,8 @@ public interface DeviceRepository extends JpaRepository<DeviceEntity, UUID>, Exp
@Query("SELECT d FROM DeviceInfoEntity d " + @Query("SELECT d FROM DeviceInfoEntity d " +
"WHERE d.tenantId = :tenantId " + "WHERE d.tenantId = :tenantId " +
"AND d.customerId = :customerId " + "AND d.customerId = :customerId " +
"AND (LOWER(d.name) LIKE LOWER(CONCAT('%', :textSearch, '%')) " + "AND (:textSearch IS NULL OR ilike(d.name, CONCAT('%', :textSearch, '%')) = true " +
"OR LOWER(d.label) LIKE LOWER(CONCAT('%', :textSearch, '%')))") "OR ilike(d.label, CONCAT('%', :textSearch, '%')) = true)")
Page<DeviceInfoEntity> findDeviceInfosByTenantIdAndCustomerId(@Param("tenantId") UUID tenantId, Page<DeviceInfoEntity> findDeviceInfosByTenantIdAndCustomerId(@Param("tenantId") UUID tenantId,
@Param("customerId") UUID customerId, @Param("customerId") UUID customerId,
@Param("textSearch") String textSearch, @Param("textSearch") String textSearch,
@ -66,16 +66,16 @@ public interface DeviceRepository extends JpaRepository<DeviceEntity, UUID>, Exp
Pageable pageable); Pageable pageable);
@Query("SELECT d FROM DeviceEntity d WHERE d.tenantId = :tenantId " + @Query("SELECT d FROM DeviceEntity d WHERE d.tenantId = :tenantId " +
"AND (LOWER(d.name) LIKE LOWER(CONCAT('%', :textSearch, '%')) " + "AND (:textSearch IS NULL OR ilike(d.name, CONCAT('%', :textSearch, '%')) = true " +
"OR LOWER(d.label) LIKE LOWER(CONCAT('%', :textSearch, '%')))") "OR ilike(d.label, CONCAT('%', :textSearch, '%')) = true)")
Page<DeviceEntity> findByTenantId(@Param("tenantId") UUID tenantId, Page<DeviceEntity> findByTenantId(@Param("tenantId") UUID tenantId,
@Param("textSearch") String textSearch, @Param("textSearch") String textSearch,
Pageable pageable); Pageable pageable);
@Query("SELECT d FROM DeviceEntity d WHERE d.tenantId = :tenantId " + @Query("SELECT d FROM DeviceEntity d WHERE d.tenantId = :tenantId " +
"AND d.type = :type " + "AND d.type = :type " +
"AND (LOWER(d.name) LIKE LOWER(CONCAT('%', :textSearch, '%')) " + "AND (:textSearch IS NULL OR ilike(d.name, CONCAT('%', :textSearch, '%')) = true " +
"OR LOWER(d.label) LIKE LOWER(CONCAT('%', :textSearch, '%')))") "OR ilike(d.label, CONCAT('%', :textSearch, '%')) = true)")
Page<DeviceEntity> findByTenantIdAndType(@Param("tenantId") UUID tenantId, Page<DeviceEntity> findByTenantIdAndType(@Param("tenantId") UUID tenantId,
@Param("type") String type, @Param("type") String type,
@Param("textSearch") String textSearch, @Param("textSearch") String textSearch,
@ -84,8 +84,8 @@ public interface DeviceRepository extends JpaRepository<DeviceEntity, UUID>, Exp
@Query("SELECT d FROM DeviceEntity d WHERE d.tenantId = :tenantId " + @Query("SELECT d FROM DeviceEntity d WHERE d.tenantId = :tenantId " +
"AND d.deviceProfileId = :deviceProfileId " + "AND d.deviceProfileId = :deviceProfileId " +
"AND d.firmwareId = null " + "AND d.firmwareId = null " +
"AND (LOWER(d.name) LIKE LOWER(CONCAT('%', :textSearch, '%')) " + "AND (:textSearch IS NULL OR ilike(d.name, CONCAT('%', :textSearch, '%')) = true " +
"OR LOWER(d.label) LIKE LOWER(CONCAT('%', :textSearch, '%')))") "OR ilike(d.label, CONCAT('%', :textSearch, '%')) = true)")
Page<DeviceEntity> findByTenantIdAndTypeAndFirmwareIdIsNull(@Param("tenantId") UUID tenantId, Page<DeviceEntity> findByTenantIdAndTypeAndFirmwareIdIsNull(@Param("tenantId") UUID tenantId,
@Param("deviceProfileId") UUID deviceProfileId, @Param("deviceProfileId") UUID deviceProfileId,
@Param("textSearch") String textSearch, @Param("textSearch") String textSearch,
@ -94,8 +94,8 @@ public interface DeviceRepository extends JpaRepository<DeviceEntity, UUID>, Exp
@Query("SELECT d FROM DeviceEntity d WHERE d.tenantId = :tenantId " + @Query("SELECT d FROM DeviceEntity d WHERE d.tenantId = :tenantId " +
"AND d.deviceProfileId = :deviceProfileId " + "AND d.deviceProfileId = :deviceProfileId " +
"AND d.softwareId = null " + "AND d.softwareId = null " +
"AND (LOWER(d.name) LIKE LOWER(CONCAT('%', :textSearch, '%')) " + "AND (:textSearch IS NULL OR ilike(d.name, CONCAT('%', :textSearch, '%')) = true " +
"OR LOWER(d.label) LIKE LOWER(CONCAT('%', :textSearch, '%')))") "OR ilike(d.label, CONCAT('%', :textSearch, '%')) = true)")
Page<DeviceEntity> findByTenantIdAndTypeAndSoftwareIdIsNull(@Param("tenantId") UUID tenantId, Page<DeviceEntity> findByTenantIdAndTypeAndSoftwareIdIsNull(@Param("tenantId") UUID tenantId,
@Param("deviceProfileId") UUID deviceProfileId, @Param("deviceProfileId") UUID deviceProfileId,
@Param("textSearch") String textSearch, @Param("textSearch") String textSearch,
@ -116,8 +116,8 @@ public interface DeviceRepository extends JpaRepository<DeviceEntity, UUID>, Exp
@Query("SELECT d FROM DeviceEntity d WHERE d.tenantId = :tenantId " + @Query("SELECT d FROM DeviceEntity d WHERE d.tenantId = :tenantId " +
"AND d.customerId = :customerId " + "AND d.customerId = :customerId " +
"AND d.type = :type " + "AND d.type = :type " +
"AND (LOWER(d.name) LIKE LOWER(CONCAT('%', :textSearch, '%')) " + "AND (:textSearch IS NULL OR ilike(d.name, CONCAT('%', :textSearch, '%')) = true " +
"OR LOWER(d.label) LIKE LOWER(CONCAT('%', :textSearch, '%')))") "OR ilike(d.label, CONCAT('%', :textSearch, '%')) = true)")
Page<DeviceEntity> findByTenantIdAndCustomerIdAndType(@Param("tenantId") UUID tenantId, Page<DeviceEntity> findByTenantIdAndCustomerIdAndType(@Param("tenantId") UUID tenantId,
@Param("customerId") UUID customerId, @Param("customerId") UUID customerId,
@Param("type") String type, @Param("type") String type,
@ -131,10 +131,10 @@ public interface DeviceRepository extends JpaRepository<DeviceEntity, UUID>, Exp
"AND ((:deviceType) IS NULL OR d.type = :deviceType) " + "AND ((:deviceType) IS NULL OR d.type = :deviceType) " +
"AND (:deviceProfileId IS NULL OR d.deviceProfileId = uuid(:deviceProfileId)) " + "AND (:deviceProfileId IS NULL OR d.deviceProfileId = uuid(:deviceProfileId)) " +
"AND ((:filterByActive) IS FALSE OR d.active = :deviceActive) " + "AND ((:filterByActive) IS FALSE OR d.active = :deviceActive) " +
"AND (LOWER(d.name) LIKE LOWER(CONCAT('%', :textSearch, '%')) " + "AND (:textSearch IS NULL OR ilike(d.name, CONCAT('%', :textSearch, '%')) = true " +
"OR LOWER(d.label) LIKE LOWER(CONCAT('%', :textSearch, '%')) " + "OR ilike(d.label, CONCAT('%', :textSearch, '%')) = true " +
"OR LOWER(d.type) LIKE LOWER(CONCAT('%', :textSearch, '%')) " + "OR ilike(d.type, CONCAT('%', :textSearch, '%')) = true " +
"OR LOWER(d.customerTitle) LIKE LOWER(CONCAT('%', :textSearch, '%')))") "OR ilike(d.customerTitle, CONCAT('%', :textSearch, '%')) = true)")
Page<DeviceInfoEntity> findDeviceInfosByFilter(@Param("tenantId") UUID tenantId, Page<DeviceInfoEntity> findDeviceInfosByFilter(@Param("tenantId") UUID tenantId,
@Param("customerId") String customerId, @Param("customerId") String customerId,
@Param("edgeId") String edgeId, @Param("edgeId") String edgeId,
@ -163,8 +163,8 @@ public interface DeviceRepository extends JpaRepository<DeviceEntity, UUID>, Exp
@Query("SELECT d FROM DeviceEntity d, RelationEntity re WHERE d.tenantId = :tenantId " + @Query("SELECT d FROM DeviceEntity d, RelationEntity re WHERE d.tenantId = :tenantId " +
"AND d.id = re.toId AND re.toType = 'DEVICE' AND re.relationTypeGroup = 'EDGE' " + "AND d.id = re.toId AND re.toType = 'DEVICE' AND re.relationTypeGroup = 'EDGE' " +
"AND re.relationType = 'Contains' AND re.fromId = :edgeId AND re.fromType = 'EDGE' " + "AND re.relationType = 'Contains' AND re.fromId = :edgeId AND re.fromType = 'EDGE' " +
"AND (LOWER(d.name) LIKE LOWER(CONCAT('%', :textSearch, '%')) " + "AND (:textSearch IS NULL OR ilike(d.name, CONCAT('%', :textSearch, '%')) = true " +
"OR LOWER(d.label) LIKE LOWER(CONCAT('%', :textSearch, '%')))") "OR ilike(d.label, CONCAT('%', :textSearch, '%')) = true)")
Page<DeviceEntity> findByTenantIdAndEdgeId(@Param("tenantId") UUID tenantId, Page<DeviceEntity> findByTenantIdAndEdgeId(@Param("tenantId") UUID tenantId,
@Param("edgeId") UUID edgeId, @Param("edgeId") UUID edgeId,
@Param("textSearch") String textSearch, @Param("textSearch") String textSearch,
@ -174,8 +174,8 @@ public interface DeviceRepository extends JpaRepository<DeviceEntity, UUID>, Exp
"AND d.id = re.toId AND re.toType = 'DEVICE' AND re.relationTypeGroup = 'EDGE' " + "AND d.id = re.toId AND re.toType = 'DEVICE' AND re.relationTypeGroup = 'EDGE' " +
"AND re.relationType = 'Contains' AND re.fromId = :edgeId AND re.fromType = 'EDGE' " + "AND re.relationType = 'Contains' AND re.fromId = :edgeId AND re.fromType = 'EDGE' " +
"AND d.type = :type " + "AND d.type = :type " +
"AND (LOWER(d.name) LIKE LOWER(CONCAT('%', :textSearch, '%')) " + "AND (:textSearch IS NULL OR ilike(d.name, CONCAT('%', :textSearch, '%')) = true " +
"OR LOWER(d.label) LIKE LOWER(CONCAT('%', :textSearch, '%')))") "OR ilike(d.label, CONCAT('%', :textSearch, '%')) = true)")
Page<DeviceEntity> findByTenantIdAndEdgeIdAndType(@Param("tenantId") UUID tenantId, Page<DeviceEntity> findByTenantIdAndEdgeIdAndType(@Param("tenantId") UUID tenantId,
@Param("edgeId") UUID edgeId, @Param("edgeId") UUID edgeId,
@Param("type") String type, @Param("type") String type,

18
dao/src/main/java/org/thingsboard/server/dao/sql/device/JpaDeviceDao.java

@ -98,7 +98,7 @@ public class JpaDeviceDao extends JpaAbstractDao<DeviceEntity, Device> implement
return DaoUtil.toPageData( return DaoUtil.toPageData(
deviceRepository.findByTenantId( deviceRepository.findByTenantId(
tenantId, tenantId,
Objects.toString(pageLink.getTextSearch(), ""), pageLink.getTextSearch(),
DaoUtil.toPageable(pageLink))); DaoUtil.toPageable(pageLink)));
} }
} }
@ -114,7 +114,7 @@ public class JpaDeviceDao extends JpaAbstractDao<DeviceEntity, Device> implement
DaoUtil.getStringId(filter.getDeviceProfileId()), DaoUtil.getStringId(filter.getDeviceProfileId()),
filter.getActive() != null, filter.getActive() != null,
Boolean.TRUE.equals(filter.getActive()), Boolean.TRUE.equals(filter.getActive()),
Objects.toString(pageLink.getTextSearch(), ""), pageLink.getTextSearch(),
DaoUtil.toPageable(pageLink))); DaoUtil.toPageable(pageLink)));
} }
@ -139,7 +139,7 @@ public class JpaDeviceDao extends JpaAbstractDao<DeviceEntity, Device> implement
deviceRepository.findByTenantIdAndCustomerId( deviceRepository.findByTenantIdAndCustomerId(
tenantId, tenantId,
customerId, customerId,
Objects.toString(pageLink.getTextSearch(), ""), pageLink.getTextSearch(),
DaoUtil.toPageable(pageLink))); DaoUtil.toPageable(pageLink)));
} }
@ -149,7 +149,7 @@ public class JpaDeviceDao extends JpaAbstractDao<DeviceEntity, Device> implement
deviceRepository.findByTenantIdAndProfileId( deviceRepository.findByTenantIdAndProfileId(
tenantId, tenantId,
profileId, profileId,
Objects.toString(pageLink.getTextSearch(), ""), pageLink.getTextSearch(),
DaoUtil.toPageable(pageLink))); DaoUtil.toPageable(pageLink)));
} }
@ -176,7 +176,7 @@ public class JpaDeviceDao extends JpaAbstractDao<DeviceEntity, Device> implement
deviceRepository.findByTenantIdAndType( deviceRepository.findByTenantIdAndType(
tenantId, tenantId,
type, type,
Objects.toString(pageLink.getTextSearch(), ""), pageLink.getTextSearch(),
DaoUtil.toPageable(pageLink))); DaoUtil.toPageable(pageLink)));
} }
@ -186,7 +186,7 @@ public class JpaDeviceDao extends JpaAbstractDao<DeviceEntity, Device> implement
OtaPackageType type, OtaPackageType type,
PageLink pageLink) { PageLink pageLink) {
Pageable pageable = DaoUtil.toPageable(pageLink); Pageable pageable = DaoUtil.toPageable(pageLink);
String searchText = Objects.toString(pageLink.getTextSearch(), ""); String searchText = pageLink.getTextSearch();
Page<DeviceEntity> page = OtaPackageUtil.getByOtaPackageType( Page<DeviceEntity> page = OtaPackageUtil.getByOtaPackageType(
() -> deviceRepository.findByTenantIdAndTypeAndFirmwareIdIsNull(tenantId, deviceProfileId, searchText, pageable), () -> deviceRepository.findByTenantIdAndTypeAndFirmwareIdIsNull(tenantId, deviceProfileId, searchText, pageable),
() -> deviceRepository.findByTenantIdAndTypeAndSoftwareIdIsNull(tenantId, deviceProfileId, searchText, pageable), () -> deviceRepository.findByTenantIdAndTypeAndSoftwareIdIsNull(tenantId, deviceProfileId, searchText, pageable),
@ -211,7 +211,7 @@ public class JpaDeviceDao extends JpaAbstractDao<DeviceEntity, Device> implement
tenantId, tenantId,
customerId, customerId,
type, type,
Objects.toString(pageLink.getTextSearch(), ""), pageLink.getTextSearch(),
DaoUtil.toPageable(pageLink))); DaoUtil.toPageable(pageLink)));
} }
@ -247,7 +247,7 @@ public class JpaDeviceDao extends JpaAbstractDao<DeviceEntity, Device> implement
.findByTenantIdAndEdgeId( .findByTenantIdAndEdgeId(
tenantId, tenantId,
edgeId, edgeId,
Objects.toString(pageLink.getTextSearch(), ""), pageLink.getTextSearch(),
DaoUtil.toPageable(pageLink))); DaoUtil.toPageable(pageLink)));
} }
@ -259,7 +259,7 @@ public class JpaDeviceDao extends JpaAbstractDao<DeviceEntity, Device> implement
tenantId, tenantId,
edgeId, edgeId,
type, type,
Objects.toString(pageLink.getTextSearch(), ""), pageLink.getTextSearch(),
DaoUtil.toPageable(pageLink))); DaoUtil.toPageable(pageLink)));
} }

6
dao/src/main/java/org/thingsboard/server/dao/sql/device/JpaDeviceProfileDao.java

@ -73,7 +73,7 @@ public class JpaDeviceProfileDao extends JpaAbstractDao<DeviceProfileEntity, Dev
return DaoUtil.toPageData( return DaoUtil.toPageData(
deviceProfileRepository.findDeviceProfiles( deviceProfileRepository.findDeviceProfiles(
tenantId.getId(), tenantId.getId(),
Objects.toString(pageLink.getTextSearch(), ""), pageLink.getTextSearch(),
DaoUtil.toPageable(pageLink))); DaoUtil.toPageable(pageLink)));
} }
@ -83,14 +83,14 @@ public class JpaDeviceProfileDao extends JpaAbstractDao<DeviceProfileEntity, Dev
return DaoUtil.pageToPageData( return DaoUtil.pageToPageData(
deviceProfileRepository.findDeviceProfileInfos( deviceProfileRepository.findDeviceProfileInfos(
tenantId.getId(), tenantId.getId(),
Objects.toString(pageLink.getTextSearch(), ""), pageLink.getTextSearch(),
DeviceTransportType.valueOf(transportType), DeviceTransportType.valueOf(transportType),
DaoUtil.toPageable(pageLink))); DaoUtil.toPageable(pageLink)));
} else { } else {
return DaoUtil.pageToPageData( return DaoUtil.pageToPageData(
deviceProfileRepository.findDeviceProfileInfos( deviceProfileRepository.findDeviceProfileInfos(
tenantId.getId(), tenantId.getId(),
Objects.toString(pageLink.getTextSearch(), ""), pageLink.getTextSearch(),
DaoUtil.toPageable(pageLink))); DaoUtil.toPageable(pageLink)));
} }
} }

2
dao/src/main/java/org/thingsboard/server/dao/sql/edge/EdgeEventRepository.java

@ -34,7 +34,7 @@ public interface EdgeEventRepository extends JpaRepository<EdgeEventEntity, UUID
"AND (:endTime IS NULL OR e.createdTime <= :endTime) " + "AND (:endTime IS NULL OR e.createdTime <= :endTime) " +
"AND (:seqIdStart IS NULL OR e.seqId > :seqIdStart) " + "AND (:seqIdStart IS NULL OR e.seqId > :seqIdStart) " +
"AND (:seqIdEnd IS NULL OR e.seqId < :seqIdEnd) " + "AND (:seqIdEnd IS NULL OR e.seqId < :seqIdEnd) " +
"AND LOWER(e.edgeEventType) LIKE LOWER(CONCAT('%', :textSearch, '%'))" "AND (:textSearch IS NULL OR ilike(e.edgeEventType, CONCAT('%', :textSearch, '%')) = true)"
) )
Page<EdgeEventEntity> findEdgeEventsByTenantIdAndEdgeId(@Param("tenantId") UUID tenantId, Page<EdgeEventEntity> findEdgeEventsByTenantIdAndEdgeId(@Param("tenantId") UUID tenantId,
@Param("edgeId") UUID edgeId, @Param("edgeId") UUID edgeId,

18
dao/src/main/java/org/thingsboard/server/dao/sql/edge/EdgeRepository.java

@ -30,7 +30,7 @@ public interface EdgeRepository extends JpaRepository<EdgeEntity, UUID> {
@Query("SELECT d FROM EdgeEntity d WHERE d.tenantId = :tenantId " + @Query("SELECT d FROM EdgeEntity d WHERE d.tenantId = :tenantId " +
"AND d.customerId = :customerId " + "AND d.customerId = :customerId " +
"AND LOWER(d.name) LIKE LOWER(CONCAT('%', :textSearch, '%'))") "AND (:textSearch IS NULL OR ilike(d.name, CONCAT('%', :textSearch, '%')) = true)")
Page<EdgeEntity> findByTenantIdAndCustomerId(@Param("tenantId") UUID tenantId, Page<EdgeEntity> findByTenantIdAndCustomerId(@Param("tenantId") UUID tenantId,
@Param("customerId") UUID customerId, @Param("customerId") UUID customerId,
@Param("textSearch") String textSearch, @Param("textSearch") String textSearch,
@ -43,7 +43,7 @@ public interface EdgeRepository extends JpaRepository<EdgeEntity, UUID> {
EdgeInfoEntity findEdgeInfoById(@Param("edgeId") UUID edgeId); EdgeInfoEntity findEdgeInfoById(@Param("edgeId") UUID edgeId);
@Query("SELECT d FROM EdgeEntity d WHERE d.tenantId = :tenantId " + @Query("SELECT d FROM EdgeEntity d WHERE d.tenantId = :tenantId " +
"AND LOWER(d.name) LIKE LOWER(CONCAT('%', :textSearch, '%'))") "AND (:textSearch IS NULL OR ilike(d.name, CONCAT('%', :textSearch, '%')) = true)")
Page<EdgeEntity> findByTenantId(@Param("tenantId") UUID tenantId, Page<EdgeEntity> findByTenantId(@Param("tenantId") UUID tenantId,
@Param("textSearch") String textSearch, @Param("textSearch") String textSearch,
Pageable pageable); Pageable pageable);
@ -52,14 +52,14 @@ public interface EdgeRepository extends JpaRepository<EdgeEntity, UUID> {
"FROM EdgeEntity d " + "FROM EdgeEntity d " +
"LEFT JOIN CustomerEntity c on c.id = d.customerId " + "LEFT JOIN CustomerEntity c on c.id = d.customerId " +
"WHERE d.tenantId = :tenantId " + "WHERE d.tenantId = :tenantId " +
"AND LOWER(d.name) LIKE LOWER(CONCAT('%', :textSearch, '%'))") "AND (:textSearch IS NULL OR ilike(d.name, CONCAT('%', :textSearch, '%')) = true)")
Page<EdgeInfoEntity> findEdgeInfosByTenantId(@Param("tenantId") UUID tenantId, Page<EdgeInfoEntity> findEdgeInfosByTenantId(@Param("tenantId") UUID tenantId,
@Param("textSearch") String textSearch, @Param("textSearch") String textSearch,
Pageable pageable); Pageable pageable);
@Query("SELECT d FROM EdgeEntity d WHERE d.tenantId = :tenantId " + @Query("SELECT d FROM EdgeEntity d WHERE d.tenantId = :tenantId " +
"AND d.type = :type " + "AND d.type = :type " +
"AND LOWER(d.name) LIKE LOWER(CONCAT('%', :textSearch, '%'))") "AND (:textSearch IS NULL OR ilike(d.name, CONCAT('%', :textSearch, '%')) = true)")
Page<EdgeEntity> findByTenantIdAndType(@Param("tenantId") UUID tenantId, Page<EdgeEntity> findByTenantIdAndType(@Param("tenantId") UUID tenantId,
@Param("type") String type, @Param("type") String type,
@Param("textSearch") String textSearch, @Param("textSearch") String textSearch,
@ -70,7 +70,7 @@ public interface EdgeRepository extends JpaRepository<EdgeEntity, UUID> {
"LEFT JOIN CustomerEntity c on c.id = d.customerId " + "LEFT JOIN CustomerEntity c on c.id = d.customerId " +
"WHERE d.tenantId = :tenantId " + "WHERE d.tenantId = :tenantId " +
"AND d.type = :type " + "AND d.type = :type " +
"AND LOWER(d.name) LIKE LOWER(CONCAT('%', :textSearch, '%'))") "AND (:textSearch IS NULL OR ilike(d.name, CONCAT('%', :textSearch, '%')) = true)")
Page<EdgeInfoEntity> findEdgeInfosByTenantIdAndType(@Param("tenantId") UUID tenantId, Page<EdgeInfoEntity> findEdgeInfosByTenantIdAndType(@Param("tenantId") UUID tenantId,
@Param("type") String type, @Param("type") String type,
@Param("textSearch") String textSearch, @Param("textSearch") String textSearch,
@ -79,7 +79,7 @@ public interface EdgeRepository extends JpaRepository<EdgeEntity, UUID> {
@Query("SELECT d FROM EdgeEntity d WHERE d.tenantId = :tenantId " + @Query("SELECT d FROM EdgeEntity d WHERE d.tenantId = :tenantId " +
"AND d.customerId = :customerId " + "AND d.customerId = :customerId " +
"AND d.type = :type " + "AND d.type = :type " +
"AND LOWER(d.name) LIKE LOWER(CONCAT('%', :textSearch, '%'))") "AND (:textSearch IS NULL OR ilike(d.name, CONCAT('%', :textSearch, '%')) = true)")
Page<EdgeEntity> findByTenantIdAndCustomerIdAndType(@Param("tenantId") UUID tenantId, Page<EdgeEntity> findByTenantIdAndCustomerIdAndType(@Param("tenantId") UUID tenantId,
@Param("customerId") UUID customerId, @Param("customerId") UUID customerId,
@Param("type") String type, @Param("type") String type,
@ -91,7 +91,7 @@ public interface EdgeRepository extends JpaRepository<EdgeEntity, UUID> {
"LEFT JOIN CustomerEntity c on c.id = a.customerId " + "LEFT JOIN CustomerEntity c on c.id = a.customerId " +
"WHERE a.tenantId = :tenantId " + "WHERE a.tenantId = :tenantId " +
"AND a.customerId = :customerId " + "AND a.customerId = :customerId " +
"AND LOWER(a.name) LIKE LOWER(CONCAT('%', :searchText, '%'))") "AND (:searchText IS NULL OR ilike(a.name, CONCAT('%', :textSearch, '%')) = true)")
Page<EdgeInfoEntity> findEdgeInfosByTenantIdAndCustomerId(@Param("tenantId") UUID tenantId, Page<EdgeInfoEntity> findEdgeInfosByTenantIdAndCustomerId(@Param("tenantId") UUID tenantId,
@Param("customerId") UUID customerId, @Param("customerId") UUID customerId,
@Param("searchText") String searchText, @Param("searchText") String searchText,
@ -103,7 +103,7 @@ public interface EdgeRepository extends JpaRepository<EdgeEntity, UUID> {
"WHERE a.tenantId = :tenantId " + "WHERE a.tenantId = :tenantId " +
"AND a.customerId = :customerId " + "AND a.customerId = :customerId " +
"AND a.type = :type " + "AND a.type = :type " +
"AND LOWER(a.name) LIKE LOWER(CONCAT('%', :textSearch, '%'))") "AND (:textSearch IS NULL OR ilike(a.name, CONCAT('%', :textSearch, '%')) = true)")
Page<EdgeInfoEntity> findEdgeInfosByTenantIdAndCustomerIdAndType(@Param("tenantId") UUID tenantId, Page<EdgeInfoEntity> findEdgeInfosByTenantIdAndCustomerIdAndType(@Param("tenantId") UUID tenantId,
@Param("customerId") UUID customerId, @Param("customerId") UUID customerId,
@Param("type") String type, @Param("type") String type,
@ -113,7 +113,7 @@ public interface EdgeRepository extends JpaRepository<EdgeEntity, UUID> {
@Query("SELECT ee FROM EdgeEntity ee, RelationEntity re WHERE ee.tenantId = :tenantId " + @Query("SELECT ee FROM EdgeEntity ee, RelationEntity re WHERE ee.tenantId = :tenantId " +
"AND ee.id = re.fromId AND re.fromType = 'EDGE' AND re.relationTypeGroup = 'EDGE' " + "AND ee.id = re.fromId AND re.fromType = 'EDGE' AND re.relationTypeGroup = 'EDGE' " +
"AND re.relationType = 'Contains' AND re.toId = :entityId AND re.toType = :entityType " + "AND re.relationType = 'Contains' AND re.toId = :entityId AND re.toType = :entityType " +
"AND LOWER(ee.name) LIKE LOWER(CONCAT('%', :searchText, '%'))") "AND (:searchText IS NULL OR ilike(ee.name, CONCAT('%', :searchText, '%')) = true)")
Page<EdgeEntity> findByTenantIdAndEntityId(@Param("tenantId") UUID tenantId, Page<EdgeEntity> findByTenantIdAndEntityId(@Param("tenantId") UUID tenantId,
@Param("entityId") UUID entityId, @Param("entityId") UUID entityId,
@Param("entityType") String entityType, @Param("entityType") String entityType,

2
dao/src/main/java/org/thingsboard/server/dao/sql/edge/JpaBaseEdgeEventDao.java

@ -185,7 +185,7 @@ public class JpaBaseEdgeEventDao extends JpaAbstractDao<EdgeEventEntity, EdgeEve
.findEdgeEventsByTenantIdAndEdgeId( .findEdgeEventsByTenantIdAndEdgeId(
tenantId, tenantId,
edgeId.getId(), edgeId.getId(),
Objects.toString(pageLink.getTextSearch(), ""), pageLink.getTextSearch(),
pageLink.getStartTime(), pageLink.getStartTime(),
pageLink.getEndTime(), pageLink.getEndTime(),
seqIdStart, seqIdStart,

18
dao/src/main/java/org/thingsboard/server/dao/sql/edge/JpaEdgeDao.java

@ -69,7 +69,7 @@ public class JpaEdgeDao extends JpaAbstractDao<EdgeEntity, Edge> implements Edge
return DaoUtil.toPageData( return DaoUtil.toPageData(
edgeRepository.findByTenantId( edgeRepository.findByTenantId(
tenantId, tenantId,
Objects.toString(pageLink.getTextSearch(), ""), pageLink.getTextSearch(),
DaoUtil.toPageable(pageLink))); DaoUtil.toPageable(pageLink)));
} }
@ -84,7 +84,7 @@ public class JpaEdgeDao extends JpaAbstractDao<EdgeEntity, Edge> implements Edge
edgeRepository.findByTenantIdAndCustomerId( edgeRepository.findByTenantIdAndCustomerId(
tenantId, tenantId,
customerId, customerId,
Objects.toString(pageLink.getTextSearch(), ""), pageLink.getTextSearch(),
DaoUtil.toPageable(pageLink))); DaoUtil.toPageable(pageLink)));
} }
@ -106,7 +106,7 @@ public class JpaEdgeDao extends JpaAbstractDao<EdgeEntity, Edge> implements Edge
edgeRepository.findByTenantIdAndType( edgeRepository.findByTenantIdAndType(
tenantId, tenantId,
type, type,
Objects.toString(pageLink.getTextSearch(), ""), pageLink.getTextSearch(),
DaoUtil.toPageable(pageLink))); DaoUtil.toPageable(pageLink)));
} }
@ -117,7 +117,7 @@ public class JpaEdgeDao extends JpaAbstractDao<EdgeEntity, Edge> implements Edge
tenantId, tenantId,
customerId, customerId,
type, type,
Objects.toString(pageLink.getTextSearch(), ""), pageLink.getTextSearch(),
DaoUtil.toPageable(pageLink))); DaoUtil.toPageable(pageLink)));
} }
@ -127,7 +127,7 @@ public class JpaEdgeDao extends JpaAbstractDao<EdgeEntity, Edge> implements Edge
edgeRepository.findEdgeInfosByTenantIdAndCustomerId( edgeRepository.findEdgeInfosByTenantIdAndCustomerId(
tenantId, tenantId,
customerId, customerId,
Objects.toString(pageLink.getTextSearch(), ""), pageLink.getTextSearch(),
DaoUtil.toPageable(pageLink, EdgeInfoEntity.edgeInfoColumnMap))); DaoUtil.toPageable(pageLink, EdgeInfoEntity.edgeInfoColumnMap)));
} }
@ -138,7 +138,7 @@ public class JpaEdgeDao extends JpaAbstractDao<EdgeEntity, Edge> implements Edge
tenantId, tenantId,
customerId, customerId,
type, type,
Objects.toString(pageLink.getTextSearch(), ""), pageLink.getTextSearch(),
DaoUtil.toPageable(pageLink, EdgeInfoEntity.edgeInfoColumnMap))); DaoUtil.toPageable(pageLink, EdgeInfoEntity.edgeInfoColumnMap)));
} }
@ -153,7 +153,7 @@ public class JpaEdgeDao extends JpaAbstractDao<EdgeEntity, Edge> implements Edge
edgeRepository.findEdgeInfosByTenantIdAndType( edgeRepository.findEdgeInfosByTenantIdAndType(
tenantId, tenantId,
type, type,
Objects.toString(pageLink.getTextSearch(), ""), pageLink.getTextSearch(),
DaoUtil.toPageable(pageLink, EdgeInfoEntity.edgeInfoColumnMap))); DaoUtil.toPageable(pageLink, EdgeInfoEntity.edgeInfoColumnMap)));
} }
@ -162,7 +162,7 @@ public class JpaEdgeDao extends JpaAbstractDao<EdgeEntity, Edge> implements Edge
return DaoUtil.toPageData( return DaoUtil.toPageData(
edgeRepository.findEdgeInfosByTenantId( edgeRepository.findEdgeInfosByTenantId(
tenantId, tenantId,
Objects.toString(pageLink.getTextSearch(), ""), pageLink.getTextSearch(),
DaoUtil.toPageable(pageLink, EdgeInfoEntity.edgeInfoColumnMap))); DaoUtil.toPageable(pageLink, EdgeInfoEntity.edgeInfoColumnMap)));
} }
@ -180,7 +180,7 @@ public class JpaEdgeDao extends JpaAbstractDao<EdgeEntity, Edge> implements Edge
tenantId, tenantId,
entityId, entityId,
entityType.name(), entityType.name(),
Objects.toString(pageLink.getTextSearch(), ""), pageLink.getTextSearch(),
DaoUtil.toPageable(pageLink))); DaoUtil.toPageable(pageLink)));
} }

20
dao/src/main/java/org/thingsboard/server/dao/sql/entityview/EntityViewRepository.java

@ -39,7 +39,7 @@ public interface EntityViewRepository extends JpaRepository<EntityViewEntity, UU
EntityViewInfoEntity findEntityViewInfoById(@Param("entityViewId") UUID entityViewId); EntityViewInfoEntity findEntityViewInfoById(@Param("entityViewId") UUID entityViewId);
@Query("SELECT e FROM EntityViewEntity e WHERE e.tenantId = :tenantId " + @Query("SELECT e FROM EntityViewEntity e WHERE e.tenantId = :tenantId " +
"AND LOWER(e.name) LIKE LOWER(CONCAT('%', :textSearch, '%'))") "AND (:textSearch IS NULL OR ilike(e.name, CONCAT('%', :textSearch, '%')) = true)")
Page<EntityViewEntity> findByTenantId(@Param("tenantId") UUID tenantId, Page<EntityViewEntity> findByTenantId(@Param("tenantId") UUID tenantId,
@Param("textSearch") String textSearch, @Param("textSearch") String textSearch,
Pageable pageable); Pageable pageable);
@ -48,14 +48,14 @@ public interface EntityViewRepository extends JpaRepository<EntityViewEntity, UU
"FROM EntityViewEntity e " + "FROM EntityViewEntity e " +
"LEFT JOIN CustomerEntity c on c.id = e.customerId " + "LEFT JOIN CustomerEntity c on c.id = e.customerId " +
"WHERE e.tenantId = :tenantId " + "WHERE e.tenantId = :tenantId " +
"AND LOWER(e.name) LIKE LOWER(CONCAT('%', :textSearch, '%'))") "AND (:textSearch IS NULL OR ilike(e.name, CONCAT('%', :textSearch, '%')) = true)")
Page<EntityViewInfoEntity> findEntityViewInfosByTenantId(@Param("tenantId") UUID tenantId, Page<EntityViewInfoEntity> findEntityViewInfosByTenantId(@Param("tenantId") UUID tenantId,
@Param("textSearch") String textSearch, @Param("textSearch") String textSearch,
Pageable pageable); Pageable pageable);
@Query("SELECT e FROM EntityViewEntity e WHERE e.tenantId = :tenantId " + @Query("SELECT e FROM EntityViewEntity e WHERE e.tenantId = :tenantId " +
"AND e.type = :type " + "AND e.type = :type " +
"AND LOWER(e.name) LIKE LOWER(CONCAT('%', :textSearch, '%'))") "AND (:textSearch IS NULL OR ilike(e.name, CONCAT('%', :textSearch, '%')) = true)")
Page<EntityViewEntity> findByTenantIdAndType(@Param("tenantId") UUID tenantId, Page<EntityViewEntity> findByTenantIdAndType(@Param("tenantId") UUID tenantId,
@Param("type") String type, @Param("type") String type,
@Param("textSearch") String textSearch, @Param("textSearch") String textSearch,
@ -66,7 +66,7 @@ public interface EntityViewRepository extends JpaRepository<EntityViewEntity, UU
"LEFT JOIN CustomerEntity c on c.id = e.customerId " + "LEFT JOIN CustomerEntity c on c.id = e.customerId " +
"WHERE e.tenantId = :tenantId " + "WHERE e.tenantId = :tenantId " +
"AND e.type = :type " + "AND e.type = :type " +
"AND LOWER(e.name) LIKE LOWER(CONCAT('%', :textSearch, '%'))") "AND (:textSearch IS NULL OR ilike(e.name, CONCAT('%', :textSearch, '%')) = true)")
Page<EntityViewInfoEntity> findEntityViewInfosByTenantIdAndType(@Param("tenantId") UUID tenantId, Page<EntityViewInfoEntity> findEntityViewInfosByTenantIdAndType(@Param("tenantId") UUID tenantId,
@Param("type") String type, @Param("type") String type,
@Param("textSearch") String textSearch, @Param("textSearch") String textSearch,
@ -74,7 +74,7 @@ public interface EntityViewRepository extends JpaRepository<EntityViewEntity, UU
@Query("SELECT e FROM EntityViewEntity e WHERE e.tenantId = :tenantId " + @Query("SELECT e FROM EntityViewEntity e WHERE e.tenantId = :tenantId " +
"AND e.customerId = :customerId " + "AND e.customerId = :customerId " +
"AND LOWER(e.name) LIKE LOWER(CONCAT('%', :searchText, '%'))") "AND (:searchText IS NULL OR ilike(e.name, CONCAT('%', :searchText, '%')) = true)")
Page<EntityViewEntity> findByTenantIdAndCustomerId(@Param("tenantId") UUID tenantId, Page<EntityViewEntity> findByTenantIdAndCustomerId(@Param("tenantId") UUID tenantId,
@Param("customerId") UUID customerId, @Param("customerId") UUID customerId,
@Param("searchText") String searchText, @Param("searchText") String searchText,
@ -85,7 +85,7 @@ public interface EntityViewRepository extends JpaRepository<EntityViewEntity, UU
"LEFT JOIN CustomerEntity c on c.id = e.customerId " + "LEFT JOIN CustomerEntity c on c.id = e.customerId " +
"WHERE e.tenantId = :tenantId " + "WHERE e.tenantId = :tenantId " +
"AND e.customerId = :customerId " + "AND e.customerId = :customerId " +
"AND LOWER(e.name) LIKE LOWER(CONCAT('%', :searchText, '%'))") "AND (:searchText IS NULL OR ilike(e.name, CONCAT('%', :searchText, '%')) = true)")
Page<EntityViewInfoEntity> findEntityViewInfosByTenantIdAndCustomerId(@Param("tenantId") UUID tenantId, Page<EntityViewInfoEntity> findEntityViewInfosByTenantIdAndCustomerId(@Param("tenantId") UUID tenantId,
@Param("customerId") UUID customerId, @Param("customerId") UUID customerId,
@Param("searchText") String searchText, @Param("searchText") String searchText,
@ -94,7 +94,7 @@ public interface EntityViewRepository extends JpaRepository<EntityViewEntity, UU
@Query("SELECT e FROM EntityViewEntity e WHERE e.tenantId = :tenantId " + @Query("SELECT e FROM EntityViewEntity e WHERE e.tenantId = :tenantId " +
"AND e.customerId = :customerId " + "AND e.customerId = :customerId " +
"AND e.type = :type " + "AND e.type = :type " +
"AND LOWER(e.name) LIKE LOWER(CONCAT('%', :searchText, '%'))") "AND (:searchText IS NULL OR ilike(e.name, CONCAT('%', :searchText, '%')) = true)")
Page<EntityViewEntity> findByTenantIdAndCustomerIdAndType(@Param("tenantId") UUID tenantId, Page<EntityViewEntity> findByTenantIdAndCustomerIdAndType(@Param("tenantId") UUID tenantId,
@Param("customerId") UUID customerId, @Param("customerId") UUID customerId,
@Param("type") String type, @Param("type") String type,
@ -107,7 +107,7 @@ public interface EntityViewRepository extends JpaRepository<EntityViewEntity, UU
"WHERE e.tenantId = :tenantId " + "WHERE e.tenantId = :tenantId " +
"AND e.customerId = :customerId " + "AND e.customerId = :customerId " +
"AND e.type = :type " + "AND e.type = :type " +
"AND LOWER(e.name) LIKE LOWER(CONCAT('%', :textSearch, '%'))") "AND (:textSearch IS NULL OR ilike(e.name, CONCAT('%', :textSearch, '%')) = true)")
Page<EntityViewInfoEntity> findEntityViewInfosByTenantIdAndCustomerIdAndType(@Param("tenantId") UUID tenantId, Page<EntityViewInfoEntity> findEntityViewInfosByTenantIdAndCustomerIdAndType(@Param("tenantId") UUID tenantId,
@Param("customerId") UUID customerId, @Param("customerId") UUID customerId,
@Param("type") String type, @Param("type") String type,
@ -126,7 +126,7 @@ public interface EntityViewRepository extends JpaRepository<EntityViewEntity, UU
@Query("SELECT ev FROM EntityViewEntity ev, RelationEntity re WHERE ev.tenantId = :tenantId " + @Query("SELECT ev FROM EntityViewEntity ev, RelationEntity re WHERE ev.tenantId = :tenantId " +
"AND ev.id = re.toId AND re.toType = 'ENTITY_VIEW' AND re.relationTypeGroup = 'EDGE' " + "AND ev.id = re.toId AND re.toType = 'ENTITY_VIEW' AND re.relationTypeGroup = 'EDGE' " +
"AND re.relationType = 'Contains' AND re.fromId = :edgeId AND re.fromType = 'EDGE' " + "AND re.relationType = 'Contains' AND re.fromId = :edgeId AND re.fromType = 'EDGE' " +
"AND LOWER(ev.name) LIKE LOWER(CONCAT('%', :searchText, '%'))") "AND (:searchText IS NULL OR ilike(ev.name, CONCAT('%', :searchText, '%')) = true)")
Page<EntityViewEntity> findByTenantIdAndEdgeId(@Param("tenantId") UUID tenantId, Page<EntityViewEntity> findByTenantIdAndEdgeId(@Param("tenantId") UUID tenantId,
@Param("edgeId") UUID edgeId, @Param("edgeId") UUID edgeId,
@Param("searchText") String searchText, @Param("searchText") String searchText,
@ -136,7 +136,7 @@ public interface EntityViewRepository extends JpaRepository<EntityViewEntity, UU
"AND ev.id = re.toId AND re.toType = 'ENTITY_VIEW' AND re.relationTypeGroup = 'EDGE' " + "AND ev.id = re.toId AND re.toType = 'ENTITY_VIEW' AND re.relationTypeGroup = 'EDGE' " +
"AND re.relationType = 'Contains' AND re.fromId = :edgeId AND re.fromType = 'EDGE' " + "AND re.relationType = 'Contains' AND re.fromId = :edgeId AND re.fromType = 'EDGE' " +
"AND ev.type = :type " + "AND ev.type = :type " +
"AND LOWER(ev.name) LIKE LOWER(CONCAT('%', :searchText, '%'))") "AND (:searchText IS NULL OR ilike(ev.name, CONCAT('%', :searchText, '%')) = true)")
Page<EntityViewEntity> findByTenantIdAndEdgeIdAndType(@Param("tenantId") UUID tenantId, Page<EntityViewEntity> findByTenantIdAndEdgeIdAndType(@Param("tenantId") UUID tenantId,
@Param("edgeId") UUID edgeId, @Param("edgeId") UUID edgeId,
@Param("type") String type, @Param("type") String type,

20
dao/src/main/java/org/thingsboard/server/dao/sql/entityview/JpaEntityViewDao.java

@ -74,7 +74,7 @@ public class JpaEntityViewDao extends JpaAbstractDao<EntityViewEntity, EntityVie
return DaoUtil.toPageData( return DaoUtil.toPageData(
entityViewRepository.findByTenantId( entityViewRepository.findByTenantId(
tenantId, tenantId,
Objects.toString(pageLink.getTextSearch(), ""), pageLink.getTextSearch(),
DaoUtil.toPageable(pageLink))); DaoUtil.toPageable(pageLink)));
} }
@ -83,7 +83,7 @@ public class JpaEntityViewDao extends JpaAbstractDao<EntityViewEntity, EntityVie
return DaoUtil.toPageData( return DaoUtil.toPageData(
entityViewRepository.findEntityViewInfosByTenantId( entityViewRepository.findEntityViewInfosByTenantId(
tenantId, tenantId,
Objects.toString(pageLink.getTextSearch(), ""), pageLink.getTextSearch(),
DaoUtil.toPageable(pageLink, EntityViewInfoEntity.entityViewInfoColumnMap))); DaoUtil.toPageable(pageLink, EntityViewInfoEntity.entityViewInfoColumnMap)));
} }
@ -93,7 +93,7 @@ public class JpaEntityViewDao extends JpaAbstractDao<EntityViewEntity, EntityVie
entityViewRepository.findByTenantIdAndType( entityViewRepository.findByTenantIdAndType(
tenantId, tenantId,
type, type,
Objects.toString(pageLink.getTextSearch(), ""), pageLink.getTextSearch(),
DaoUtil.toPageable(pageLink))); DaoUtil.toPageable(pageLink)));
} }
@ -103,7 +103,7 @@ public class JpaEntityViewDao extends JpaAbstractDao<EntityViewEntity, EntityVie
entityViewRepository.findEntityViewInfosByTenantIdAndType( entityViewRepository.findEntityViewInfosByTenantIdAndType(
tenantId, tenantId,
type, type,
Objects.toString(pageLink.getTextSearch(), ""), pageLink.getTextSearch(),
DaoUtil.toPageable(pageLink, EntityViewInfoEntity.entityViewInfoColumnMap))); DaoUtil.toPageable(pageLink, EntityViewInfoEntity.entityViewInfoColumnMap)));
} }
@ -121,7 +121,7 @@ public class JpaEntityViewDao extends JpaAbstractDao<EntityViewEntity, EntityVie
entityViewRepository.findByTenantIdAndCustomerId( entityViewRepository.findByTenantIdAndCustomerId(
tenantId, tenantId,
customerId, customerId,
Objects.toString(pageLink.getTextSearch(), ""), pageLink.getTextSearch(),
DaoUtil.toPageable(pageLink) DaoUtil.toPageable(pageLink)
)); ));
} }
@ -132,7 +132,7 @@ public class JpaEntityViewDao extends JpaAbstractDao<EntityViewEntity, EntityVie
entityViewRepository.findEntityViewInfosByTenantIdAndCustomerId( entityViewRepository.findEntityViewInfosByTenantIdAndCustomerId(
tenantId, tenantId,
customerId, customerId,
Objects.toString(pageLink.getTextSearch(), ""), pageLink.getTextSearch(),
DaoUtil.toPageable(pageLink, EntityViewInfoEntity.entityViewInfoColumnMap))); DaoUtil.toPageable(pageLink, EntityViewInfoEntity.entityViewInfoColumnMap)));
} }
@ -143,7 +143,7 @@ public class JpaEntityViewDao extends JpaAbstractDao<EntityViewEntity, EntityVie
tenantId, tenantId,
customerId, customerId,
type, type,
Objects.toString(pageLink.getTextSearch(), ""), pageLink.getTextSearch(),
DaoUtil.toPageable(pageLink) DaoUtil.toPageable(pageLink)
)); ));
} }
@ -155,7 +155,7 @@ public class JpaEntityViewDao extends JpaAbstractDao<EntityViewEntity, EntityVie
tenantId, tenantId,
customerId, customerId,
type, type,
Objects.toString(pageLink.getTextSearch(), ""), pageLink.getTextSearch(),
DaoUtil.toPageable(pageLink, EntityViewInfoEntity.entityViewInfoColumnMap))); DaoUtil.toPageable(pageLink, EntityViewInfoEntity.entityViewInfoColumnMap)));
} }
@ -182,7 +182,7 @@ public class JpaEntityViewDao extends JpaAbstractDao<EntityViewEntity, EntityVie
.findByTenantIdAndEdgeId( .findByTenantIdAndEdgeId(
tenantId, tenantId,
edgeId, edgeId,
Objects.toString(pageLink.getTextSearch(), ""), pageLink.getTextSearch(),
DaoUtil.toPageable(pageLink))); DaoUtil.toPageable(pageLink)));
} }
@ -194,7 +194,7 @@ public class JpaEntityViewDao extends JpaAbstractDao<EntityViewEntity, EntityVie
tenantId, tenantId,
edgeId, edgeId,
type, type,
Objects.toString(pageLink.getTextSearch(), ""), pageLink.getTextSearch(),
DaoUtil.toPageable(pageLink))); DaoUtil.toPageable(pageLink)));
} }

4
dao/src/main/java/org/thingsboard/server/dao/sql/notification/JpaNotificationDao.java

@ -67,13 +67,13 @@ public class JpaNotificationDao extends JpaAbstractDao<NotificationEntity, Notif
@Override @Override
public PageData<Notification> findUnreadByRecipientIdAndPageLink(TenantId tenantId, UserId recipientId, PageLink pageLink) { public PageData<Notification> findUnreadByRecipientIdAndPageLink(TenantId tenantId, UserId recipientId, PageLink pageLink) {
return DaoUtil.toPageData(notificationRepository.findByRecipientIdAndStatusNot(recipientId.getId(), NotificationStatus.READ, return DaoUtil.toPageData(notificationRepository.findByRecipientIdAndStatusNot(recipientId.getId(), NotificationStatus.READ,
Strings.nullToEmpty(pageLink.getTextSearch()), DaoUtil.toPageable(pageLink))); pageLink.getTextSearch(), DaoUtil.toPageable(pageLink)));
} }
@Override @Override
public PageData<Notification> findByRecipientIdAndPageLink(TenantId tenantId, UserId recipientId, PageLink pageLink) { public PageData<Notification> findByRecipientIdAndPageLink(TenantId tenantId, UserId recipientId, PageLink pageLink) {
return DaoUtil.toPageData(notificationRepository.findByRecipientId(recipientId.getId(), return DaoUtil.toPageData(notificationRepository.findByRecipientId(recipientId.getId(),
Strings.nullToEmpty(pageLink.getTextSearch()), DaoUtil.toPageable(pageLink))); pageLink.getTextSearch(), DaoUtil.toPageable(pageLink)));
} }
@Override @Override

2
dao/src/main/java/org/thingsboard/server/dao/sql/notification/JpaNotificationRequestDao.java

@ -61,7 +61,7 @@ public class JpaNotificationRequestDao extends JpaAbstractDao<NotificationReques
@Override @Override
public PageData<NotificationRequestInfo> findInfosByTenantIdAndOriginatorTypeAndPageLink(TenantId tenantId, EntityType originatorType, PageLink pageLink) { public PageData<NotificationRequestInfo> findInfosByTenantIdAndOriginatorTypeAndPageLink(TenantId tenantId, EntityType originatorType, PageLink pageLink) {
return DaoUtil.pageToPageData(notificationRequestRepository.findInfosByTenantIdAndOriginatorEntityTypeAndSearchText(tenantId.getId(), return DaoUtil.pageToPageData(notificationRequestRepository.findInfosByTenantIdAndOriginatorEntityTypeAndSearchText(tenantId.getId(),
originatorType, Strings.nullToEmpty(pageLink.getTextSearch()), DaoUtil.toPageable(pageLink, Map.of( originatorType, pageLink.getTextSearch(), DaoUtil.toPageable(pageLink, Map.of(
"templateName", "t.name" "templateName", "t.name"
)))) ))))
.mapData(NotificationRequestInfoEntity::toData); .mapData(NotificationRequestInfoEntity::toData);

4
dao/src/main/java/org/thingsboard/server/dao/sql/notification/JpaNotificationRuleDao.java

@ -49,13 +49,13 @@ public class JpaNotificationRuleDao extends JpaAbstractDao<NotificationRuleEntit
@Override @Override
public PageData<NotificationRule> findByTenantIdAndPageLink(TenantId tenantId, PageLink pageLink) { public PageData<NotificationRule> findByTenantIdAndPageLink(TenantId tenantId, PageLink pageLink) {
return DaoUtil.toPageData(notificationRuleRepository.findByTenantIdAndSearchText(tenantId.getId(), return DaoUtil.toPageData(notificationRuleRepository.findByTenantIdAndSearchText(tenantId.getId(),
Strings.nullToEmpty(pageLink.getTextSearch()), DaoUtil.toPageable(pageLink))); pageLink.getTextSearch(), DaoUtil.toPageable(pageLink)));
} }
@Override @Override
public PageData<NotificationRuleInfo> findInfosByTenantIdAndPageLink(TenantId tenantId, PageLink pageLink) { public PageData<NotificationRuleInfo> findInfosByTenantIdAndPageLink(TenantId tenantId, PageLink pageLink) {
return DaoUtil.pageToPageData(notificationRuleRepository.findInfosByTenantIdAndSearchText(tenantId.getId(), return DaoUtil.pageToPageData(notificationRuleRepository.findInfosByTenantIdAndSearchText(tenantId.getId(),
Strings.nullToEmpty(pageLink.getTextSearch()), DaoUtil.toPageable(pageLink, Map.of( pageLink.getTextSearch(), DaoUtil.toPageable(pageLink, Map.of(
"templateName", "t.name" "templateName", "t.name"
)))) ))))
.mapData(NotificationRuleInfoEntity::toData); .mapData(NotificationRuleInfoEntity::toData);

6
dao/src/main/java/org/thingsboard/server/dao/sql/notification/JpaNotificationTargetDao.java

@ -48,13 +48,13 @@ public class JpaNotificationTargetDao extends JpaAbstractDao<NotificationTargetE
@Override @Override
public PageData<NotificationTarget> findByTenantIdAndPageLink(TenantId tenantId, PageLink pageLink) { public PageData<NotificationTarget> findByTenantIdAndPageLink(TenantId tenantId, PageLink pageLink) {
return DaoUtil.toPageData(notificationTargetRepository.findByTenantIdAndSearchText(tenantId.getId(), return DaoUtil.toPageData(notificationTargetRepository.findByTenantIdAndSearchText(tenantId.getId(),
Strings.nullToEmpty(pageLink.getTextSearch()), DaoUtil.toPageable(pageLink))); pageLink.getTextSearch(), DaoUtil.toPageable(pageLink)));
} }
@Override @Override
public PageData<NotificationTarget> findByTenantIdAndSupportedNotificationTypeAndPageLink(TenantId tenantId, NotificationType notificationType, PageLink pageLink) { public PageData<NotificationTarget> findByTenantIdAndSupportedNotificationTypeAndPageLink(TenantId tenantId, NotificationType notificationType, PageLink pageLink) {
return DaoUtil.toPageData(notificationTargetRepository.findByTenantIdAndSearchTextAndUsersFilterTypeIfPresent(tenantId.getId(), return DaoUtil.toPageData(notificationTargetRepository.findByTenantIdAndSearchTextAndUsersFilterTypeIfPresent(tenantId.getId(),
Strings.nullToEmpty(pageLink.getTextSearch()), pageLink.getTextSearch(),
Arrays.stream(UsersFilterType.values()) Arrays.stream(UsersFilterType.values())
.filter(type -> notificationType != NotificationType.GENERAL || !type.isForRules()) .filter(type -> notificationType != NotificationType.GENERAL || !type.isForRules())
.map(Enum::name).collect(Collectors.toList()), .map(Enum::name).collect(Collectors.toList()),
@ -68,7 +68,7 @@ public class JpaNotificationTargetDao extends JpaAbstractDao<NotificationTargetE
@Override @Override
public List<NotificationTarget> findByTenantIdAndUsersFilterType(TenantId tenantId, UsersFilterType filterType) { public List<NotificationTarget> findByTenantIdAndUsersFilterType(TenantId tenantId, UsersFilterType filterType) {
return DaoUtil.convertDataList(notificationTargetRepository.findByTenantIdAndSearchTextAndUsersFilterTypeIfPresent(tenantId.getId(), "", return DaoUtil.convertDataList(notificationTargetRepository.findByTenantIdAndSearchTextAndUsersFilterTypeIfPresent(tenantId.getId(), null,
List.of(filterType.name()), DaoUtil.toPageable(new PageLink(Integer.MAX_VALUE))).getContent()); List.of(filterType.name()), DaoUtil.toPageable(new PageLink(Integer.MAX_VALUE))).getContent());
} }

2
dao/src/main/java/org/thingsboard/server/dao/sql/notification/JpaNotificationTemplateDao.java

@ -50,7 +50,7 @@ public class JpaNotificationTemplateDao extends JpaAbstractDao<NotificationTempl
@Override @Override
public PageData<NotificationTemplate> findByTenantIdAndNotificationTypesAndPageLink(TenantId tenantId, List<NotificationType> notificationTypes, PageLink pageLink) { public PageData<NotificationTemplate> findByTenantIdAndNotificationTypesAndPageLink(TenantId tenantId, List<NotificationType> notificationTypes, PageLink pageLink) {
return DaoUtil.toPageData(notificationTemplateRepository.findByTenantIdAndNotificationTypesAndSearchText(tenantId.getId(), return DaoUtil.toPageData(notificationTemplateRepository.findByTenantIdAndNotificationTypesAndSearchText(tenantId.getId(),
notificationTypes, Strings.nullToEmpty(pageLink.getTextSearch()), DaoUtil.toPageable(pageLink))); notificationTypes, pageLink.getTextSearch(), DaoUtil.toPageable(pageLink)));
} }
@Override @Override

8
dao/src/main/java/org/thingsboard/server/dao/sql/notification/NotificationRepository.java

@ -32,16 +32,16 @@ import java.util.UUID;
public interface NotificationRepository extends JpaRepository<NotificationEntity, UUID> { public interface NotificationRepository extends JpaRepository<NotificationEntity, UUID> {
@Query("SELECT n FROM NotificationEntity n WHERE n.recipientId = :recipientId AND n.status <> :status " + @Query("SELECT n FROM NotificationEntity n WHERE n.recipientId = :recipientId AND n.status <> :status " +
"AND (:searchText = '' OR lower(n.subject) LIKE lower(concat('%', :searchText, '%')) " + "AND (:searchText is NULL OR ilike(n.subject, concat('%', :searchText, '%')) = true " +
"OR lower(n.text) LIKE lower(concat('%', :searchText, '%')))") "OR ilike(n.text, concat('%', :searchText, '%')) = true)")
Page<NotificationEntity> findByRecipientIdAndStatusNot(@Param("recipientId") UUID recipientId, Page<NotificationEntity> findByRecipientIdAndStatusNot(@Param("recipientId") UUID recipientId,
@Param("status") NotificationStatus status, @Param("status") NotificationStatus status,
@Param("searchText") String searchText, @Param("searchText") String searchText,
Pageable pageable); Pageable pageable);
@Query("SELECT n FROM NotificationEntity n WHERE n.recipientId = :recipientId " + @Query("SELECT n FROM NotificationEntity n WHERE n.recipientId = :recipientId " +
"AND (:searchText = '' OR lower(n.subject) LIKE lower(concat('%', :searchText, '%')) " + "AND (:searchText is NULL OR ilike(n.subject, concat('%', :searchText, '%')) = true " +
"OR lower(n.text) LIKE lower(concat('%', :searchText, '%')))") "OR ilike(n.text, concat('%', :searchText, '%')) = true)")
Page<NotificationEntity> findByRecipientId(@Param("recipientId") UUID recipientId, Page<NotificationEntity> findByRecipientId(@Param("recipientId") UUID recipientId,
@Param("searchText") String searchText, @Param("searchText") String searchText,
Pageable pageable); Pageable pageable);

2
dao/src/main/java/org/thingsboard/server/dao/sql/notification/NotificationRequestRepository.java

@ -41,7 +41,7 @@ public interface NotificationRequestRepository extends JpaRepository<Notificatio
Page<NotificationRequestEntity> findByTenantIdAndOriginatorEntityType(UUID tenantId, EntityType originatorType, Pageable pageable); Page<NotificationRequestEntity> findByTenantIdAndOriginatorEntityType(UUID tenantId, EntityType originatorType, Pageable pageable);
@Query(REQUEST_INFO_QUERY + " WHERE r.tenantId = :tenantId AND r.originatorEntityType = :originatorType " + @Query(REQUEST_INFO_QUERY + " WHERE r.tenantId = :tenantId AND r.originatorEntityType = :originatorType " +
"AND (:searchText = '' OR t.name IS NOT NULL AND lower(t.name) LIKE lower(concat('%', :searchText, '%')))") "AND (:searchText is NULL OR (t.name IS NOT NULL AND ilike(t.name, concat('%', :searchText, '%')) = true))")
Page<NotificationRequestInfoEntity> findInfosByTenantIdAndOriginatorEntityTypeAndSearchText(@Param("tenantId") UUID tenantId, Page<NotificationRequestInfoEntity> findInfosByTenantIdAndOriginatorEntityTypeAndSearchText(@Param("tenantId") UUID tenantId,
@Param("originatorType") EntityType originatorType, @Param("originatorType") EntityType originatorType,
@Param("searchText") String searchText, @Param("searchText") String searchText,

4
dao/src/main/java/org/thingsboard/server/dao/sql/notification/NotificationRuleRepository.java

@ -38,7 +38,7 @@ public interface NotificationRuleRepository extends JpaRepository<NotificationRu
"FROM NotificationRuleEntity r INNER JOIN NotificationTemplateEntity t ON r.templateId = t.id"; "FROM NotificationRuleEntity r INNER JOIN NotificationTemplateEntity t ON r.templateId = t.id";
@Query("SELECT r FROM NotificationRuleEntity r WHERE r.tenantId = :tenantId " + @Query("SELECT r FROM NotificationRuleEntity r WHERE r.tenantId = :tenantId " +
"AND (:searchText = '' OR lower(r.name) LIKE lower(concat('%', :searchText, '%')))") "AND (:searchText is NULL OR ilike(r.name, concat('%', :searchText, '%')) = true)")
Page<NotificationRuleEntity> findByTenantIdAndSearchText(@Param("tenantId") UUID tenantId, Page<NotificationRuleEntity> findByTenantIdAndSearchText(@Param("tenantId") UUID tenantId,
@Param("searchText") String searchText, @Param("searchText") String searchText,
Pageable pageable); Pageable pageable);
@ -53,7 +53,7 @@ public interface NotificationRuleRepository extends JpaRepository<NotificationRu
@Query(RULE_INFO_QUERY + " WHERE r.id = :id") @Query(RULE_INFO_QUERY + " WHERE r.id = :id")
NotificationRuleInfoEntity findInfoById(@Param("id") UUID id); NotificationRuleInfoEntity findInfoById(@Param("id") UUID id);
@Query(RULE_INFO_QUERY + " WHERE r.tenantId = :tenantId AND (:searchText = '' OR lower(r.name) LIKE lower(concat('%', :searchText, '%')))") @Query(RULE_INFO_QUERY + " WHERE r.tenantId = :tenantId AND (:searchText IS NULL OR ilike(r.name, concat('%', :searchText, '%')) = true)")
Page<NotificationRuleInfoEntity> findInfosByTenantIdAndSearchText(@Param("tenantId") UUID tenantId, Page<NotificationRuleInfoEntity> findInfosByTenantIdAndSearchText(@Param("tenantId") UUID tenantId,
@Param("searchText") String searchText, @Param("searchText") String searchText,
Pageable pageable); Pageable pageable);

4
dao/src/main/java/org/thingsboard/server/dao/sql/notification/NotificationTargetRepository.java

@ -33,13 +33,13 @@ import java.util.UUID;
public interface NotificationTargetRepository extends JpaRepository<NotificationTargetEntity, UUID>, ExportableEntityRepository<NotificationTargetEntity> { public interface NotificationTargetRepository extends JpaRepository<NotificationTargetEntity, UUID>, ExportableEntityRepository<NotificationTargetEntity> {
@Query("SELECT t FROM NotificationTargetEntity t WHERE t.tenantId = :tenantId " + @Query("SELECT t FROM NotificationTargetEntity t WHERE t.tenantId = :tenantId " +
"AND (:searchText = '' OR lower(t.name) LIKE lower(concat('%', :searchText, '%')))") "AND (:searchText is NULL OR ilike(t.name, concat('%', :searchText, '%')) = true)")
Page<NotificationTargetEntity> findByTenantIdAndSearchText(@Param("tenantId") UUID tenantId, Page<NotificationTargetEntity> findByTenantIdAndSearchText(@Param("tenantId") UUID tenantId,
@Param("searchText") String searchText, @Param("searchText") String searchText,
Pageable pageable); Pageable pageable);
@Query(value = "SELECT * FROM notification_target t WHERE t.tenant_id = :tenantId " + @Query(value = "SELECT * FROM notification_target t WHERE t.tenant_id = :tenantId " +
"AND (:searchText = '' OR lower(t.name) LIKE lower(concat('%', :searchText, '%'))) " + "AND (:searchText IS NULL OR ilike(t.name, concat('%', :searchText, '%')) = true) " +
"AND (cast(t.configuration as json) ->> 'type' <> 'PLATFORM_USERS' OR " + "AND (cast(t.configuration as json) ->> 'type' <> 'PLATFORM_USERS' OR " +
"cast(t.configuration as json) -> 'usersFilter' ->> 'type' IN :usersFilterTypes)", nativeQuery = true) "cast(t.configuration as json) -> 'usersFilter' ->> 'type' IN :usersFilterTypes)", nativeQuery = true)
Page<NotificationTargetEntity> findByTenantIdAndSearchTextAndUsersFilterTypeIfPresent(@Param("tenantId") UUID tenantId, Page<NotificationTargetEntity> findByTenantIdAndSearchTextAndUsersFilterTypeIfPresent(@Param("tenantId") UUID tenantId,

4
dao/src/main/java/org/thingsboard/server/dao/sql/notification/NotificationTemplateRepository.java

@ -35,8 +35,8 @@ public interface NotificationTemplateRepository extends JpaRepository<Notificati
@Query("SELECT t FROM NotificationTemplateEntity t WHERE t.tenantId = :tenantId AND " + @Query("SELECT t FROM NotificationTemplateEntity t WHERE t.tenantId = :tenantId AND " +
"t.notificationType IN :notificationTypes " + "t.notificationType IN :notificationTypes " +
"AND (:searchText = '' OR lower(t.name) LIKE lower(concat('%', :searchText, '%')) " + "AND (:searchText is NULL OR ilike(t.name, concat('%', :searchText, '%')) = true " +
"OR lower(t.notificationType) LIKE lower(concat('%', :searchText, '%')))") "OR ilike(t.notificationType, concat('%', :searchText, '%')) = true)")
Page<NotificationTemplateEntity> findByTenantIdAndNotificationTypesAndSearchText(@Param("tenantId") UUID tenantId, Page<NotificationTemplateEntity> findByTenantIdAndNotificationTypesAndSearchText(@Param("tenantId") UUID tenantId,
@Param("notificationTypes") List<NotificationType> notificationTypes, @Param("notificationTypes") List<NotificationType> notificationTypes,
@Param("searchText") String searchText, @Param("searchText") String searchText,

4
dao/src/main/java/org/thingsboard/server/dao/sql/ota/JpaOtaPackageInfoDao.java

@ -73,7 +73,7 @@ public class JpaOtaPackageInfoDao extends JpaAbstractDao<OtaPackageInfoEntity, O
return DaoUtil.toPageData(otaPackageInfoRepository return DaoUtil.toPageData(otaPackageInfoRepository
.findAllByTenantId( .findAllByTenantId(
tenantId.getId(), tenantId.getId(),
Objects.toString(pageLink.getTextSearch(), ""), pageLink.getTextSearch(),
DaoUtil.toPageable(pageLink))); DaoUtil.toPageable(pageLink)));
} }
@ -84,7 +84,7 @@ public class JpaOtaPackageInfoDao extends JpaAbstractDao<OtaPackageInfoEntity, O
tenantId.getId(), tenantId.getId(),
deviceProfileId.getId(), deviceProfileId.getId(),
otaPackageType, otaPackageType,
Objects.toString(pageLink.getTextSearch(), ""), pageLink.getTextSearch(),
DaoUtil.toPageable(pageLink))); DaoUtil.toPageable(pageLink)));
} }

4
dao/src/main/java/org/thingsboard/server/dao/sql/ota/OtaPackageInfoRepository.java

@ -28,7 +28,7 @@ import java.util.UUID;
public interface OtaPackageInfoRepository extends JpaRepository<OtaPackageInfoEntity, UUID> { public interface OtaPackageInfoRepository extends JpaRepository<OtaPackageInfoEntity, UUID> {
@Query("SELECT new OtaPackageInfoEntity(f.id, f.createdTime, f.tenantId, f.deviceProfileId, f.type, f.title, f.version, f.tag, f.url, f.fileName, f.contentType, f.checksumAlgorithm, f.checksum, f.dataSize, f.additionalInfo, CASE WHEN (f.data IS NOT NULL OR f.url IS NOT NULL) THEN true ELSE false END) FROM OtaPackageEntity f WHERE " + @Query("SELECT new OtaPackageInfoEntity(f.id, f.createdTime, f.tenantId, f.deviceProfileId, f.type, f.title, f.version, f.tag, f.url, f.fileName, f.contentType, f.checksumAlgorithm, f.checksum, f.dataSize, f.additionalInfo, CASE WHEN (f.data IS NOT NULL OR f.url IS NOT NULL) THEN true ELSE false END) FROM OtaPackageEntity f WHERE " +
"f.tenantId = :tenantId " + "f.tenantId = :tenantId " +
"AND LOWER(f.title) LIKE LOWER(CONCAT('%', :searchText, '%'))") "AND (:searchText IS NULL OR ilike(f.title, CONCAT('%', :searchText, '%')) = true)")
Page<OtaPackageInfoEntity> findAllByTenantId(@Param("tenantId") UUID tenantId, Page<OtaPackageInfoEntity> findAllByTenantId(@Param("tenantId") UUID tenantId,
@Param("searchText") String searchText, @Param("searchText") String searchText,
Pageable pageable); Pageable pageable);
@ -38,7 +38,7 @@ public interface OtaPackageInfoRepository extends JpaRepository<OtaPackageInfoEn
"AND f.deviceProfileId = :deviceProfileId " + "AND f.deviceProfileId = :deviceProfileId " +
"AND f.type = :type " + "AND f.type = :type " +
"AND (f.data IS NOT NULL OR f.url IS NOT NULL) " + "AND (f.data IS NOT NULL OR f.url IS NOT NULL) " +
"AND LOWER(f.title) LIKE LOWER(CONCAT('%', :searchText, '%'))") "AND (:searchText IS NULL OR ilike(f.title, CONCAT('%', :searchText, '%')) = true)")
Page<OtaPackageInfoEntity> findAllByTenantIdAndTypeAndDeviceProfileIdAndHasData(@Param("tenantId") UUID tenantId, Page<OtaPackageInfoEntity> findAllByTenantIdAndTypeAndDeviceProfileIdAndHasData(@Param("tenantId") UUID tenantId,
@Param("deviceProfileId") UUID deviceProfileId, @Param("deviceProfileId") UUID deviceProfileId,
@Param("type") OtaPackageType type, @Param("type") OtaPackageType type,

2
dao/src/main/java/org/thingsboard/server/dao/sql/query/DefaultAlarmQueryRepository.java

@ -406,7 +406,7 @@ public class DefaultAlarmQueryRepository implements AlarmQueryRepository {
.map(mapping -> { .map(mapping -> {
String paramName = mapping + "_lowerSearchText"; String paramName = mapping + "_lowerSearchText";
ctx.addStringParameter(paramName, lowerSearchText); ctx.addStringParameter(paramName, lowerSearchText);
return String.format("LOWER(cast(%s as varchar)) LIKE concat('%%', :%s, '%%')", mapping, paramName); return String.format("cast(%s as varchar) ILIKE concat('%%', :%s, '%%')", mapping, paramName);
} }
).collect(Collectors.toList()); ).collect(Collectors.toList());
return String.format("%s", String.join(" or ", searchPredicates)); return String.format("%s", String.join(" or ", searchPredicates));

14
dao/src/main/java/org/thingsboard/server/dao/sql/query/DefaultEntityQueryRepository.java

@ -801,8 +801,8 @@ public class DefaultEntityQueryRepository implements EntityQueryRepository {
private String buildTextSearchQuery(QueryContext ctx, List<EntityKeyMapping> selectionMapping, String searchText) { private String buildTextSearchQuery(QueryContext ctx, List<EntityKeyMapping> selectionMapping, String searchText) {
if (!StringUtils.isEmpty(searchText) && !selectionMapping.isEmpty()) { if (!StringUtils.isEmpty(searchText) && !selectionMapping.isEmpty()) {
String lowerSearchText = "%" + searchText.toLowerCase() + "%"; String sqlSearchText = "%" + searchText + "%";
ctx.addStringParameter("lowerSearchTextParam", lowerSearchText); ctx.addStringParameter("lowerSearchTextParam", sqlSearchText);
List<String> searchAliases = selectionMapping.stream().filter(EntityKeyMapping::isSearchable).map(EntityKeyMapping::getValueAlias).collect(Collectors.toList()); List<String> searchAliases = selectionMapping.stream().filter(EntityKeyMapping::isSearchable).map(EntityKeyMapping::getValueAlias).collect(Collectors.toList());
String searchAliasesExpression; String searchAliasesExpression;
if (searchAliases.size() > 1) { if (searchAliases.size() > 1) {
@ -810,7 +810,7 @@ public class DefaultEntityQueryRepository implements EntityQueryRepository {
} else { } else {
searchAliasesExpression = searchAliases.get(0); searchAliasesExpression = searchAliases.get(0);
} }
return String.format(" WHERE LOWER(%s) LIKE :%s", searchAliasesExpression, "lowerSearchTextParam"); return String.format(" WHERE %s ILIKE :%s", searchAliasesExpression, "lowerSearchTextParam");
} else { } else {
return ""; return "";
} }
@ -830,10 +830,10 @@ public class DefaultEntityQueryRepository implements EntityQueryRepository {
ctx.addStringParameter("entity_filter_name_filter", filter.getEntityNameFilter()); ctx.addStringParameter("entity_filter_name_filter", filter.getEntityNameFilter());
String nameColumn = getNameColumn(filter.getEntityType()); String nameColumn = getNameColumn(filter.getEntityType());
if (filter.getEntityNameFilter().startsWith("%") || filter.getEntityNameFilter().endsWith("%")) { if (filter.getEntityNameFilter().startsWith("%") || filter.getEntityNameFilter().endsWith("%")) {
return String.format("lower(e.%s) like lower(:entity_filter_name_filter)", nameColumn); return String.format("e.%s ilike :entity_filter_name_filter", nameColumn);
} }
return String.format("lower(e.%s) like lower(concat(:entity_filter_name_filter, '%%'))", nameColumn); return String.format("e.%s ilike concat(:entity_filter_name_filter, '%%')", nameColumn);
} }
private String typeQuery(QueryContext ctx, EntityFilter filter) { private String typeQuery(QueryContext ctx, EntityFilter filter) {
@ -869,9 +869,9 @@ public class DefaultEntityQueryRepository implements EntityQueryRepository {
if (!StringUtils.isEmpty(name)) { if (!StringUtils.isEmpty(name)) {
ctx.addStringParameter("entity_filter_type_query_name", name); ctx.addStringParameter("entity_filter_type_query_name", name);
if (name.startsWith("%") || name.endsWith("%")) { if (name.startsWith("%") || name.endsWith("%")) {
return typesFilter + " and lower(e." + nameColumn + ") like lower(:entity_filter_type_query_name)"; return typesFilter + " and e." + nameColumn + " ilike :entity_filter_type_query_name";
} }
return typesFilter + " and lower(e." + nameColumn + ") like lower(concat(:entity_filter_type_query_name, '%%'))"; return typesFilter + " and e." + nameColumn + " ilike concat(:entity_filter_type_query_name, '%%')";
} else { } else {
return typesFilter; return typesFilter;
} }

2
dao/src/main/java/org/thingsboard/server/dao/sql/queue/JpaQueueDao.java

@ -84,6 +84,6 @@ public class JpaQueueDao extends JpaAbstractDao<QueueEntity, Queue> implements Q
@Override @Override
public PageData<Queue> findQueuesByTenantId(TenantId tenantId, PageLink pageLink) { public PageData<Queue> findQueuesByTenantId(TenantId tenantId, PageLink pageLink) {
return DaoUtil.toPageData(queueRepository return DaoUtil.toPageData(queueRepository
.findByTenantId(tenantId.getId(), Objects.toString(pageLink.getTextSearch(), ""), DaoUtil.toPageable(pageLink))); .findByTenantId(tenantId.getId(), pageLink.getTextSearch(), DaoUtil.toPageable(pageLink)));
} }
} }

2
dao/src/main/java/org/thingsboard/server/dao/sql/queue/QueueRepository.java

@ -33,7 +33,7 @@ public interface QueueRepository extends JpaRepository<QueueEntity, UUID> {
List<QueueEntity> findByTenantId(UUID tenantId); List<QueueEntity> findByTenantId(UUID tenantId);
@Query("SELECT q FROM QueueEntity q WHERE q.tenantId = :tenantId " + @Query("SELECT q FROM QueueEntity q WHERE q.tenantId = :tenantId " +
"AND LOWER(q.name) LIKE LOWER(CONCAT(:textSearch, '%'))") "AND (:textSearch IS NULL OR ilike(q.name, CONCAT(:textSearch, '%')) = true)")
Page<QueueEntity> findByTenantId(@Param("tenantId") UUID tenantId, Page<QueueEntity> findByTenantId(@Param("tenantId") UUID tenantId,
@Param("textSearch") String textSearch, @Param("textSearch") String textSearch,
Pageable pageable); Pageable pageable);

4
dao/src/main/java/org/thingsboard/server/dao/sql/resource/JpaTbResourceDao.java

@ -74,7 +74,7 @@ public class JpaTbResourceDao extends JpaAbstractDao<TbResourceEntity, TbResourc
tenantId.getId(), tenantId.getId(),
TenantId.SYS_TENANT_ID.getId(), TenantId.SYS_TENANT_ID.getId(),
resourceType.name(), resourceType.name(),
Objects.toString(pageLink.getTextSearch(), ""), pageLink.getTextSearch(),
DaoUtil.toPageable(pageLink) DaoUtil.toPageable(pageLink)
)); ));
} }
@ -88,7 +88,7 @@ public class JpaTbResourceDao extends JpaAbstractDao<TbResourceEntity, TbResourc
tenantId.getId(), tenantId.getId(),
TenantId.SYS_TENANT_ID.getId(), TenantId.SYS_TENANT_ID.getId(),
resourceType.name(), resourceType.name(),
Objects.toString(searchText, ""))) : searchText)) :
DaoUtil.convertDataList(resourceRepository.findResourcesByIds( DaoUtil.convertDataList(resourceRepository.findResourcesByIds(
tenantId.getId(), tenantId.getId(),
TenantId.SYS_TENANT_ID.getId(), TenantId.SYS_TENANT_ID.getId(),

2
dao/src/main/java/org/thingsboard/server/dao/sql/resource/JpaTbResourceInfoDao.java

@ -71,7 +71,7 @@ public class JpaTbResourceInfoDao extends JpaAbstractDao<TbResourceInfoEntity, T
.findTenantResourcesByTenantId( .findTenantResourcesByTenantId(
filter.getTenantId().getId(), filter.getTenantId().getId(),
resourceType == null ? null : resourceType.name(), resourceType == null ? null : resourceType.name(),
Objects.toString(pageLink.getTextSearch(), ""), pageLink.getTextSearch(),
DaoUtil.toPageable(pageLink))); DaoUtil.toPageable(pageLink)));
} }

4
dao/src/main/java/org/thingsboard/server/dao/sql/resource/TbResourceInfoRepository.java

@ -27,7 +27,7 @@ import java.util.UUID;
public interface TbResourceInfoRepository extends JpaRepository<TbResourceInfoEntity, UUID> { public interface TbResourceInfoRepository extends JpaRepository<TbResourceInfoEntity, UUID> {
@Query("SELECT tr FROM TbResourceInfoEntity tr WHERE " + @Query("SELECT tr FROM TbResourceInfoEntity tr WHERE " +
"LOWER(tr.title) LIKE LOWER(CONCAT('%', :searchText, '%'))" + "(:searchText IS NULL OR ilike(tr.title, CONCAT('%', :searchText, '%')) = true) " +
"AND (tr.tenantId = :tenantId " + "AND (tr.tenantId = :tenantId " +
"OR (tr.tenantId = :systemAdminId " + "OR (tr.tenantId = :systemAdminId " +
"AND NOT EXISTS " + "AND NOT EXISTS " +
@ -45,7 +45,7 @@ public interface TbResourceInfoRepository extends JpaRepository<TbResourceInfoEn
@Query("SELECT ri FROM TbResourceInfoEntity ri WHERE " + @Query("SELECT ri FROM TbResourceInfoEntity ri WHERE " +
"ri.tenantId = :tenantId " + "ri.tenantId = :tenantId " +
"AND (:resourceType IS NULL OR ri.resourceType = :resourceType)" + "AND (:resourceType IS NULL OR ri.resourceType = :resourceType)" +
"AND LOWER(ri.title) LIKE LOWER(CONCAT('%', :searchText, '%'))") "AND (:searchText IS NULL OR ilike(ri.title, CONCAT('%', :searchText, '%')) = true)")
Page<TbResourceInfoEntity> findTenantResourcesByTenantId(@Param("tenantId") UUID tenantId, Page<TbResourceInfoEntity> findTenantResourcesByTenantId(@Param("tenantId") UUID tenantId,
@Param("resourceType") String resourceType, @Param("resourceType") String resourceType,
@Param("searchText") String searchText, @Param("searchText") String searchText,

4
dao/src/main/java/org/thingsboard/server/dao/sql/resource/TbResourceRepository.java

@ -33,7 +33,7 @@ public interface TbResourceRepository extends JpaRepository<TbResourceEntity, UU
@Query("SELECT tr FROM TbResourceEntity tr " + @Query("SELECT tr FROM TbResourceEntity tr " +
"WHERE tr.resourceType = :resourceType " + "WHERE tr.resourceType = :resourceType " +
"AND LOWER(tr.searchText) LIKE LOWER(CONCAT('%', :searchText, '%')) " + "AND (:searchText IS NULL OR ilike(tr.searchText, CONCAT('%', :searchText, '%')) = true) " +
"AND (tr.tenantId = :tenantId " + "AND (tr.tenantId = :tenantId " +
"OR (tr.tenantId = :systemAdminId " + "OR (tr.tenantId = :systemAdminId " +
"AND NOT EXISTS " + "AND NOT EXISTS " +
@ -50,7 +50,7 @@ public interface TbResourceRepository extends JpaRepository<TbResourceEntity, UU
@Query("SELECT tr FROM TbResourceEntity tr " + @Query("SELECT tr FROM TbResourceEntity tr " +
"WHERE tr.resourceType = :resourceType " + "WHERE tr.resourceType = :resourceType " +
"AND LOWER(tr.searchText) LIKE LOWER(CONCAT('%', :searchText, '%')) " + "AND (:searchText IS NULL OR ilike(tr.searchText, CONCAT('%', :searchText, '%')) = true) " +
"AND (tr.tenantId = :tenantId " + "AND (tr.tenantId = :tenantId " +
"OR (tr.tenantId = :systemAdminId " + "OR (tr.tenantId = :systemAdminId " +
"AND NOT EXISTS " + "AND NOT EXISTS " +

8
dao/src/main/java/org/thingsboard/server/dao/sql/rule/JpaRuleChainDao.java

@ -61,7 +61,7 @@ public class JpaRuleChainDao extends JpaAbstractDao<RuleChainEntity, RuleChain>
return DaoUtil.toPageData(ruleChainRepository return DaoUtil.toPageData(ruleChainRepository
.findByTenantId( .findByTenantId(
tenantId, tenantId,
Objects.toString(pageLink.getTextSearch(), ""), pageLink.getTextSearch(),
DaoUtil.toPageable(pageLink))); DaoUtil.toPageable(pageLink)));
} }
@ -72,7 +72,7 @@ public class JpaRuleChainDao extends JpaAbstractDao<RuleChainEntity, RuleChain>
.findByTenantIdAndType( .findByTenantIdAndType(
tenantId, tenantId,
type, type,
Objects.toString(pageLink.getTextSearch(), ""), pageLink.getTextSearch(),
DaoUtil.toPageable(pageLink))); DaoUtil.toPageable(pageLink)));
} }
@ -89,7 +89,7 @@ public class JpaRuleChainDao extends JpaAbstractDao<RuleChainEntity, RuleChain>
.findByTenantIdAndEdgeId( .findByTenantIdAndEdgeId(
tenantId, tenantId,
edgeId, edgeId,
Objects.toString(pageLink.getTextSearch(), ""), pageLink.getTextSearch(),
DaoUtil.toPageable(pageLink))); DaoUtil.toPageable(pageLink)));
} }
@ -99,7 +99,7 @@ public class JpaRuleChainDao extends JpaAbstractDao<RuleChainEntity, RuleChain>
return DaoUtil.toPageData(ruleChainRepository return DaoUtil.toPageData(ruleChainRepository
.findAutoAssignByTenantId( .findAutoAssignByTenantId(
tenantId, tenantId,
Objects.toString(pageLink.getTextSearch(), ""), pageLink.getTextSearch(),
DaoUtil.toPageable(pageLink))); DaoUtil.toPageable(pageLink)));
} }

8
dao/src/main/java/org/thingsboard/server/dao/sql/rule/RuleChainRepository.java

@ -30,14 +30,14 @@ import java.util.UUID;
public interface RuleChainRepository extends JpaRepository<RuleChainEntity, UUID>, ExportableEntityRepository<RuleChainEntity> { public interface RuleChainRepository extends JpaRepository<RuleChainEntity, UUID>, ExportableEntityRepository<RuleChainEntity> {
@Query("SELECT rc FROM RuleChainEntity rc WHERE rc.tenantId = :tenantId " + @Query("SELECT rc FROM RuleChainEntity rc WHERE rc.tenantId = :tenantId " +
"AND LOWER(rc.name) LIKE LOWER(CONCAT('%', :searchText, '%'))") "AND (:searchText IS NULL OR ilike(rc.name, CONCAT('%', :searchText, '%')) = true)")
Page<RuleChainEntity> findByTenantId(@Param("tenantId") UUID tenantId, Page<RuleChainEntity> findByTenantId(@Param("tenantId") UUID tenantId,
@Param("searchText") String searchText, @Param("searchText") String searchText,
Pageable pageable); Pageable pageable);
@Query("SELECT rc FROM RuleChainEntity rc WHERE rc.tenantId = :tenantId " + @Query("SELECT rc FROM RuleChainEntity rc WHERE rc.tenantId = :tenantId " +
"AND rc.type = :type " + "AND rc.type = :type " +
"AND LOWER(rc.name) LIKE LOWER(CONCAT('%', :searchText, '%'))") "AND (:searchText IS NULL OR ilike(rc.name, CONCAT('%', :searchText, '%')) = true)")
Page<RuleChainEntity> findByTenantIdAndType(@Param("tenantId") UUID tenantId, Page<RuleChainEntity> findByTenantIdAndType(@Param("tenantId") UUID tenantId,
@Param("type") RuleChainType type, @Param("type") RuleChainType type,
@Param("searchText") String searchText, @Param("searchText") String searchText,
@ -46,7 +46,7 @@ public interface RuleChainRepository extends JpaRepository<RuleChainEntity, UUID
@Query("SELECT rc FROM RuleChainEntity rc, RelationEntity re WHERE rc.tenantId = :tenantId " + @Query("SELECT rc FROM RuleChainEntity rc, RelationEntity re WHERE rc.tenantId = :tenantId " +
"AND rc.id = re.toId AND re.toType = 'RULE_CHAIN' AND re.relationTypeGroup = 'EDGE' " + "AND rc.id = re.toId AND re.toType = 'RULE_CHAIN' AND re.relationTypeGroup = 'EDGE' " +
"AND re.relationType = 'Contains' AND re.fromId = :edgeId AND re.fromType = 'EDGE' " + "AND re.relationType = 'Contains' AND re.fromId = :edgeId AND re.fromType = 'EDGE' " +
"AND LOWER(rc.name) LIKE LOWER(CONCAT('%', :searchText, '%'))") "AND (:searchText IS NULL OR ilike(rc.name, CONCAT('%', :searchText, '%')) = true)")
Page<RuleChainEntity> findByTenantIdAndEdgeId(@Param("tenantId") UUID tenantId, Page<RuleChainEntity> findByTenantIdAndEdgeId(@Param("tenantId") UUID tenantId,
@Param("edgeId") UUID edgeId, @Param("edgeId") UUID edgeId,
@Param("searchText") String searchText, @Param("searchText") String searchText,
@ -55,7 +55,7 @@ public interface RuleChainRepository extends JpaRepository<RuleChainEntity, UUID
@Query("SELECT rc FROM RuleChainEntity rc, RelationEntity re WHERE rc.tenantId = :tenantId " + @Query("SELECT rc FROM RuleChainEntity rc, RelationEntity re WHERE rc.tenantId = :tenantId " +
"AND rc.id = re.toId AND re.toType = 'RULE_CHAIN' AND re.relationTypeGroup = 'EDGE_AUTO_ASSIGN_RULE_CHAIN' " + "AND rc.id = re.toId AND re.toType = 'RULE_CHAIN' AND re.relationTypeGroup = 'EDGE_AUTO_ASSIGN_RULE_CHAIN' " +
"AND re.relationType = 'Contains' AND re.fromId = :tenantId AND re.fromType = 'TENANT' " + "AND re.relationType = 'Contains' AND re.fromId = :tenantId AND re.fromType = 'TENANT' " +
"AND LOWER(rc.name) LIKE LOWER(CONCAT('%', :searchText, '%'))") "AND (:searchText IS NULL OR ilike(rc.name, CONCAT('%', :searchText, '%')) = true)")
Page<RuleChainEntity> findAutoAssignByTenantId(@Param("tenantId") UUID tenantId, Page<RuleChainEntity> findAutoAssignByTenantId(@Param("tenantId") UUID tenantId,
@Param("searchText") String searchText, @Param("searchText") String searchText,
Pageable pageable); Pageable pageable);

4
dao/src/main/java/org/thingsboard/server/dao/sql/tenant/JpaTenantDao.java

@ -67,7 +67,7 @@ public class JpaTenantDao extends JpaAbstractDao<TenantEntity, Tenant> implement
public PageData<Tenant> findTenants(TenantId tenantId, PageLink pageLink) { public PageData<Tenant> findTenants(TenantId tenantId, PageLink pageLink) {
return DaoUtil.toPageData(tenantRepository return DaoUtil.toPageData(tenantRepository
.findTenantsNextPage( .findTenantsNextPage(
Objects.toString(pageLink.getTextSearch(), ""), pageLink.getTextSearch(),
DaoUtil.toPageable(pageLink))); DaoUtil.toPageable(pageLink)));
} }
@ -75,7 +75,7 @@ public class JpaTenantDao extends JpaAbstractDao<TenantEntity, Tenant> implement
public PageData<TenantInfo> findTenantInfos(TenantId tenantId, PageLink pageLink) { public PageData<TenantInfo> findTenantInfos(TenantId tenantId, PageLink pageLink) {
return DaoUtil.toPageData(tenantRepository return DaoUtil.toPageData(tenantRepository
.findTenantInfosNextPage( .findTenantInfosNextPage(
Objects.toString(pageLink.getTextSearch(), ""), pageLink.getTextSearch(),
DaoUtil.toPageable(pageLink, TenantInfoEntity.tenantInfoColumnMap))); DaoUtil.toPageable(pageLink, TenantInfoEntity.tenantInfoColumnMap)));
} }

4
dao/src/main/java/org/thingsboard/server/dao/sql/tenant/JpaTenantProfileDao.java

@ -60,7 +60,7 @@ public class JpaTenantProfileDao extends JpaAbstractDao<TenantProfileEntity, Ten
public PageData<TenantProfile> findTenantProfiles(TenantId tenantId, PageLink pageLink) { public PageData<TenantProfile> findTenantProfiles(TenantId tenantId, PageLink pageLink) {
return DaoUtil.toPageData( return DaoUtil.toPageData(
tenantProfileRepository.findTenantProfiles( tenantProfileRepository.findTenantProfiles(
Objects.toString(pageLink.getTextSearch(), ""), pageLink.getTextSearch(),
DaoUtil.toPageable(pageLink))); DaoUtil.toPageable(pageLink)));
} }
@ -68,7 +68,7 @@ public class JpaTenantProfileDao extends JpaAbstractDao<TenantProfileEntity, Ten
public PageData<EntityInfo> findTenantProfileInfos(TenantId tenantId, PageLink pageLink) { public PageData<EntityInfo> findTenantProfileInfos(TenantId tenantId, PageLink pageLink) {
return DaoUtil.pageToPageData( return DaoUtil.pageToPageData(
tenantProfileRepository.findTenantProfileInfos( tenantProfileRepository.findTenantProfileInfos(
Objects.toString(pageLink.getTextSearch(), ""), pageLink.getTextSearch(),
DaoUtil.toPageable(pageLink))); DaoUtil.toPageable(pageLink)));
} }

4
dao/src/main/java/org/thingsboard/server/dao/sql/tenant/TenantProfileRepository.java

@ -34,13 +34,13 @@ public interface TenantProfileRepository extends JpaRepository<TenantProfileEnti
EntityInfo findTenantProfileInfoById(@Param("tenantProfileId") UUID tenantProfileId); EntityInfo findTenantProfileInfoById(@Param("tenantProfileId") UUID tenantProfileId);
@Query("SELECT t FROM TenantProfileEntity t WHERE " + @Query("SELECT t FROM TenantProfileEntity t WHERE " +
"LOWER(t.name) LIKE LOWER(CONCAT('%', :textSearch, '%'))") "(:textSearch IS NULL OR ilike(t.name, CONCAT('%', :textSearch, '%')) = true)")
Page<TenantProfileEntity> findTenantProfiles(@Param("textSearch") String textSearch, Page<TenantProfileEntity> findTenantProfiles(@Param("textSearch") String textSearch,
Pageable pageable); Pageable pageable);
@Query("SELECT new org.thingsboard.server.common.data.EntityInfo(t.id, 'TENANT_PROFILE', t.name) " + @Query("SELECT new org.thingsboard.server.common.data.EntityInfo(t.id, 'TENANT_PROFILE', t.name) " +
"FROM TenantProfileEntity t " + "FROM TenantProfileEntity t " +
"WHERE LOWER(t.name) LIKE LOWER(CONCAT('%', :textSearch, '%'))") "WHERE (:textSearch IS NULL OR ilike(t.name, CONCAT('%', :textSearch, '%')) = true)")
Page<EntityInfo> findTenantProfileInfos(@Param("textSearch") String textSearch, Page<EntityInfo> findTenantProfileInfos(@Param("textSearch") String textSearch,
Pageable pageable); Pageable pageable);

4
dao/src/main/java/org/thingsboard/server/dao/sql/tenant/TenantRepository.java

@ -37,14 +37,14 @@ public interface TenantRepository extends JpaRepository<TenantEntity, UUID> {
"WHERE t.id = :tenantId") "WHERE t.id = :tenantId")
TenantInfoEntity findTenantInfoById(@Param("tenantId") UUID tenantId); TenantInfoEntity findTenantInfoById(@Param("tenantId") UUID tenantId);
@Query("SELECT t FROM TenantEntity t WHERE LOWER(t.title) LIKE LOWER(CONCAT('%', :textSearch, '%'))") @Query("SELECT t FROM TenantEntity t WHERE (:textSearch IS NULL OR ilike(t.title, CONCAT('%', :textSearch, '%')) = true)")
Page<TenantEntity> findTenantsNextPage(@Param("textSearch") String textSearch, Page<TenantEntity> findTenantsNextPage(@Param("textSearch") String textSearch,
Pageable pageable); Pageable pageable);
@Query("SELECT new org.thingsboard.server.dao.model.sql.TenantInfoEntity(t, p.name) " + @Query("SELECT new org.thingsboard.server.dao.model.sql.TenantInfoEntity(t, p.name) " +
"FROM TenantEntity t " + "FROM TenantEntity t " +
"LEFT JOIN TenantProfileEntity p on p.id = t.tenantProfileId " + "LEFT JOIN TenantProfileEntity p on p.id = t.tenantProfileId " +
"WHERE LOWER(t.title) LIKE LOWER(CONCAT('%', :textSearch, '%'))") "WHERE (:textSearch IS NULL OR ilike(t.title, CONCAT('%', :textSearch, '%')) = true)")
Page<TenantInfoEntity> findTenantInfosNextPage(@Param("textSearch") String textSearch, Page<TenantInfoEntity> findTenantInfosNextPage(@Param("textSearch") String textSearch,
Pageable pageable); Pageable pageable);

8
dao/src/main/java/org/thingsboard/server/dao/sql/user/JpaUserDao.java

@ -74,7 +74,7 @@ public class JpaUserDao extends JpaAbstractDao<UserEntity, User> implements User
userRepository userRepository
.findByTenantId( .findByTenantId(
tenantId, tenantId,
Objects.toString(pageLink.getTextSearch(), ""), pageLink.getTextSearch(),
DaoUtil.toPageable(pageLink))); DaoUtil.toPageable(pageLink)));
} }
@ -85,7 +85,7 @@ public class JpaUserDao extends JpaAbstractDao<UserEntity, User> implements User
.findUsersByAuthority( .findUsersByAuthority(
tenantId, tenantId,
NULL_UUID, NULL_UUID,
Objects.toString(pageLink.getTextSearch(), ""), pageLink.getTextSearch(),
Authority.TENANT_ADMIN, Authority.TENANT_ADMIN,
DaoUtil.toPageable(pageLink))); DaoUtil.toPageable(pageLink)));
} }
@ -97,7 +97,7 @@ public class JpaUserDao extends JpaAbstractDao<UserEntity, User> implements User
.findUsersByAuthority( .findUsersByAuthority(
tenantId, tenantId,
customerId, customerId,
Objects.toString(pageLink.getTextSearch(), ""), pageLink.getTextSearch(),
Authority.CUSTOMER_USER, Authority.CUSTOMER_USER,
DaoUtil.toPageable(pageLink))); DaoUtil.toPageable(pageLink)));
@ -110,7 +110,7 @@ public class JpaUserDao extends JpaAbstractDao<UserEntity, User> implements User
.findTenantAndCustomerUsers( .findTenantAndCustomerUsers(
tenantId, tenantId,
DaoUtil.toUUIDs(customerIds), DaoUtil.toUUIDs(customerIds),
Objects.toString(pageLink.getTextSearch(), ""), pageLink.getTextSearch(),
DaoUtil.toPageable(pageLink))); DaoUtil.toPageable(pageLink)));
} }

6
dao/src/main/java/org/thingsboard/server/dao/sql/user/UserRepository.java

@ -37,7 +37,7 @@ public interface UserRepository extends JpaRepository<UserEntity, UUID> {
@Query("SELECT u FROM UserEntity u WHERE u.tenantId = :tenantId " + @Query("SELECT u FROM UserEntity u WHERE u.tenantId = :tenantId " +
"AND u.customerId = :customerId AND u.authority = :authority " + "AND u.customerId = :customerId AND u.authority = :authority " +
"AND LOWER(u.email) LIKE LOWER(CONCAT('%', :searchText, '%'))") "AND (:searchText IS NULL OR ilike(u.email, CONCAT('%', :searchText, '%')) = true)")
Page<UserEntity> findUsersByAuthority(@Param("tenantId") UUID tenantId, Page<UserEntity> findUsersByAuthority(@Param("tenantId") UUID tenantId,
@Param("customerId") UUID customerId, @Param("customerId") UUID customerId,
@Param("searchText") String searchText, @Param("searchText") String searchText,
@ -46,14 +46,14 @@ public interface UserRepository extends JpaRepository<UserEntity, UUID> {
@Query("SELECT u FROM UserEntity u WHERE u.tenantId = :tenantId " + @Query("SELECT u FROM UserEntity u WHERE u.tenantId = :tenantId " +
"AND u.customerId IN (:customerIds) " + "AND u.customerId IN (:customerIds) " +
"AND LOWER(u.email) LIKE LOWER(CONCAT('%', :searchText, '%'))") "AND (:searchText IS NULL OR ilike(u.email, CONCAT('%', :searchText, '%')) = true)")
Page<UserEntity> findTenantAndCustomerUsers(@Param("tenantId") UUID tenantId, Page<UserEntity> findTenantAndCustomerUsers(@Param("tenantId") UUID tenantId,
@Param("customerIds") Collection<UUID> customerIds, @Param("customerIds") Collection<UUID> customerIds,
@Param("searchText") String searchText, @Param("searchText") String searchText,
Pageable pageable); Pageable pageable);
@Query("SELECT u FROM UserEntity u WHERE u.tenantId = :tenantId " + @Query("SELECT u FROM UserEntity u WHERE u.tenantId = :tenantId " +
"AND LOWER(u.email) LIKE LOWER(CONCAT('%', :searchText, '%'))") "AND (:searchText IS NULL OR ilike(u.email, CONCAT('%', :searchText, '%')) = true)")
Page<UserEntity> findByTenantId(@Param("tenantId") UUID tenantId, Page<UserEntity> findByTenantId(@Param("tenantId") UUID tenantId,
@Param("searchText") String searchText, @Param("searchText") String searchText,
Pageable pageable); Pageable pageable);

8
dao/src/main/java/org/thingsboard/server/dao/sql/widget/JpaWidgetTypeDao.java

@ -92,7 +92,7 @@ public class JpaWidgetTypeDao extends JpaAbstractDao<WidgetTypeDetailsEntity, Wi
widgetTypeInfoRepository widgetTypeInfoRepository
.findSystemWidgetTypes( .findSystemWidgetTypes(
NULL_UUID, NULL_UUID,
Objects.toString(pageLink.getTextSearch(), ""), pageLink.getTextSearch(),
fullSearch, fullSearch,
deprecatedFilterEnabled, deprecatedFilterEnabled,
deprecatedFilterBool, deprecatedFilterBool,
@ -111,7 +111,7 @@ public class JpaWidgetTypeDao extends JpaAbstractDao<WidgetTypeDetailsEntity, Wi
.findAllTenantWidgetTypesByTenantId( .findAllTenantWidgetTypesByTenantId(
tenantId, tenantId,
NULL_UUID, NULL_UUID,
Objects.toString(pageLink.getTextSearch(), ""), pageLink.getTextSearch(),
fullSearch, fullSearch,
deprecatedFilterEnabled, deprecatedFilterEnabled,
deprecatedFilterBool, deprecatedFilterBool,
@ -129,7 +129,7 @@ public class JpaWidgetTypeDao extends JpaAbstractDao<WidgetTypeDetailsEntity, Wi
widgetTypeInfoRepository widgetTypeInfoRepository
.findTenantWidgetTypesByTenantId( .findTenantWidgetTypesByTenantId(
tenantId, tenantId,
Objects.toString(pageLink.getTextSearch(), ""), pageLink.getTextSearch(),
fullSearch, fullSearch,
deprecatedFilterEnabled, deprecatedFilterEnabled,
deprecatedFilterBool, deprecatedFilterBool,
@ -200,7 +200,7 @@ public class JpaWidgetTypeDao extends JpaAbstractDao<WidgetTypeDetailsEntity, Wi
widgetTypeRepository widgetTypeRepository
.findTenantWidgetTypeDetailsByTenantId( .findTenantWidgetTypeDetailsByTenantId(
tenantId, tenantId,
Objects.toString(pageLink.getTextSearch(), ""), pageLink.getTextSearch(),
DaoUtil.toPageable(pageLink))); DaoUtil.toPageable(pageLink)));
} }

10
dao/src/main/java/org/thingsboard/server/dao/sql/widget/JpaWidgetsBundleDao.java

@ -68,14 +68,14 @@ public class JpaWidgetsBundleDao extends JpaAbstractDao<WidgetsBundleEntity, Wid
widgetsBundleRepository widgetsBundleRepository
.findSystemWidgetsBundlesFullSearch( .findSystemWidgetsBundlesFullSearch(
NULL_UUID, NULL_UUID,
Objects.toString(pageLink.getTextSearch(), ""), pageLink.getTextSearch(),
DaoUtil.toPageable(pageLink))); DaoUtil.toPageable(pageLink)));
} else { } else {
return DaoUtil.toPageData( return DaoUtil.toPageData(
widgetsBundleRepository widgetsBundleRepository
.findSystemWidgetsBundles( .findSystemWidgetsBundles(
NULL_UUID, NULL_UUID,
Objects.toString(pageLink.getTextSearch(), ""), pageLink.getTextSearch(),
DaoUtil.toPageable(pageLink))); DaoUtil.toPageable(pageLink)));
} }
} }
@ -86,7 +86,7 @@ public class JpaWidgetsBundleDao extends JpaAbstractDao<WidgetsBundleEntity, Wid
widgetsBundleRepository widgetsBundleRepository
.findTenantWidgetsBundlesByTenantId( .findTenantWidgetsBundlesByTenantId(
tenantId, tenantId,
Objects.toString(pageLink.getTextSearch(), ""), pageLink.getTextSearch(),
DaoUtil.toPageable(pageLink))); DaoUtil.toPageable(pageLink)));
} }
@ -98,7 +98,7 @@ public class JpaWidgetsBundleDao extends JpaAbstractDao<WidgetsBundleEntity, Wid
.findAllTenantWidgetsBundlesByTenantIdFullSearch( .findAllTenantWidgetsBundlesByTenantIdFullSearch(
tenantId, tenantId,
NULL_UUID, NULL_UUID,
Objects.toString(pageLink.getTextSearch(), ""), pageLink.getTextSearch(),
DaoUtil.toPageable(pageLink))); DaoUtil.toPageable(pageLink)));
} else { } else {
return DaoUtil.toPageData( return DaoUtil.toPageData(
@ -106,7 +106,7 @@ public class JpaWidgetsBundleDao extends JpaAbstractDao<WidgetsBundleEntity, Wid
.findAllTenantWidgetsBundlesByTenantId( .findAllTenantWidgetsBundlesByTenantId(
tenantId, tenantId,
NULL_UUID, NULL_UUID,
Objects.toString(pageLink.getTextSearch(), ""), pageLink.getTextSearch(),
DaoUtil.toPageable(pageLink))); DaoUtil.toPageable(pageLink)));
} }
} }

2
dao/src/main/java/org/thingsboard/server/dao/sql/widget/WidgetTypeRepository.java

@ -36,7 +36,7 @@ public interface WidgetTypeRepository extends JpaRepository<WidgetTypeDetailsEnt
boolean existsByTenantIdAndId(UUID tenantId, UUID id); boolean existsByTenantIdAndId(UUID tenantId, UUID id);
@Query("SELECT wtd FROM WidgetTypeDetailsEntity wtd WHERE wtd.tenantId = :tenantId " + @Query("SELECT wtd FROM WidgetTypeDetailsEntity wtd WHERE wtd.tenantId = :tenantId " +
"AND LOWER(wtd.name) LIKE LOWER(CONCAT('%', :textSearch, '%'))") "AND (:textSearch IS NULL OR ilike(wtd.name, CONCAT('%', :textSearch, '%')) = true)")
Page<WidgetTypeDetailsEntity> findTenantWidgetTypeDetailsByTenantId(@Param("tenantId") UUID tenantId, Page<WidgetTypeDetailsEntity> findTenantWidgetTypeDetailsByTenantId(@Param("tenantId") UUID tenantId,
@Param("textSearch") String textSearch, @Param("textSearch") String textSearch,
Pageable pageable); Pageable pageable);

6
dao/src/main/java/org/thingsboard/server/dao/sql/widget/WidgetsBundleRepository.java

@ -33,7 +33,7 @@ public interface WidgetsBundleRepository extends JpaRepository<WidgetsBundleEnti
WidgetsBundleEntity findWidgetsBundleByTenantIdAndAlias(UUID tenantId, String alias); WidgetsBundleEntity findWidgetsBundleByTenantIdAndAlias(UUID tenantId, String alias);
@Query("SELECT wb FROM WidgetsBundleEntity wb WHERE wb.tenantId = :systemTenantId " + @Query("SELECT wb FROM WidgetsBundleEntity wb WHERE wb.tenantId = :systemTenantId " +
"AND LOWER(wb.title) LIKE LOWER(CONCAT('%', :textSearch, '%'))") "AND (:textSearch is NULL OR ilike(wb.title, CONCAT('%', :textSearch, '%')) = true)")
Page<WidgetsBundleEntity> findSystemWidgetsBundles(@Param("systemTenantId") UUID systemTenantId, Page<WidgetsBundleEntity> findSystemWidgetsBundles(@Param("systemTenantId") UUID systemTenantId,
@Param("textSearch") String textSearch, @Param("textSearch") String textSearch,
Pageable pageable); Pageable pageable);
@ -61,13 +61,13 @@ public interface WidgetsBundleRepository extends JpaRepository<WidgetsBundleEnti
Pageable pageable); Pageable pageable);
@Query("SELECT wb FROM WidgetsBundleEntity wb WHERE wb.tenantId = :tenantId " + @Query("SELECT wb FROM WidgetsBundleEntity wb WHERE wb.tenantId = :tenantId " +
"AND LOWER(wb.title) LIKE LOWER(CONCAT('%', :textSearch, '%'))") "AND (:textSearch IS NULL OR ilike(wb.title, CONCAT('%', :textSearch, '%')) = true)")
Page<WidgetsBundleEntity> findTenantWidgetsBundlesByTenantId(@Param("tenantId") UUID tenantId, Page<WidgetsBundleEntity> findTenantWidgetsBundlesByTenantId(@Param("tenantId") UUID tenantId,
@Param("textSearch") String textSearch, @Param("textSearch") String textSearch,
Pageable pageable); Pageable pageable);
@Query("SELECT wb FROM WidgetsBundleEntity wb WHERE wb.tenantId IN (:tenantId, :nullTenantId) " + @Query("SELECT wb FROM WidgetsBundleEntity wb WHERE wb.tenantId IN (:tenantId, :nullTenantId) " +
"AND LOWER(wb.title) LIKE LOWER(CONCAT('%', :textSearch, '%'))") "AND (:textSearch IS NULL OR ilike(wb.title, CONCAT('%', :textSearch, '%')) = true)")
Page<WidgetsBundleEntity> findAllTenantWidgetsBundlesByTenantId(@Param("tenantId") UUID tenantId, Page<WidgetsBundleEntity> findAllTenantWidgetsBundlesByTenantId(@Param("tenantId") UUID tenantId,
@Param("nullTenantId") UUID nullTenantId, @Param("nullTenantId") UUID nullTenantId,
@Param("textSearch") String textSearch, @Param("textSearch") String textSearch,

2
dao/src/test/resources/application-test.properties

@ -139,3 +139,5 @@ queue.rule-engine.queues[2].partitions=2
queue.rule-engine.queues[2].processing-strategy.retries=1 queue.rule-engine.queues[2].processing-strategy.retries=1
queue.rule-engine.queues[2].processing-strategy.pause-between-retries=0 queue.rule-engine.queues[2].processing-strategy.pause-between-retries=0
queue.rule-engine.queues[2].processing-strategy.max-pause-between-retries=0 queue.rule-engine.queues[2].processing-strategy.max-pause-between-retries=0
spring.jpa.properties.hibernate.dialect=org.thingsboard.server.dao.ThingsboardPostgreSQLDialect
Loading…
Cancel
Save