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.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
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 ((:ackFilterEnabled) IS FALSE OR a.acknowledged = :ackFilter) " +
"AND (:assigneeId IS NULL OR a.assigneeId = uuid(:assigneeId)) " +
"AND (LOWER(a.type) LIKE LOWER(CONCAT('%', :searchText, '%')) " +
" OR LOWER(a.severity) LIKE LOWER(CONCAT('%', :searchText, '%')) " +
" OR LOWER(a.status) LIKE LOWER(CONCAT('%', :searchText, '%'))) "
"AND (:searchText IS NULL OR (ilike(a.type, CONCAT('%', :searchText, '%')) = true " +
" OR ilike(a.severity, CONCAT('%', :searchText, '%')) = true " +
" OR ilike(a.status, CONCAT('%', :searchText, '%')) = true)) "
,
countQuery = "" +
"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 ((:ackFilterEnabled) IS FALSE OR a.acknowledged = :ackFilter) " +
"AND (:assigneeId IS NULL OR a.assigneeId = uuid(:assigneeId)) " +
"AND (LOWER(a.type) LIKE LOWER(CONCAT('%', :searchText, '%')) " +
" OR LOWER(a.severity) LIKE LOWER(CONCAT('%', :searchText, '%')) " +
" OR LOWER(a.status) LIKE LOWER(CONCAT('%', :searchText, '%'))) ")
"AND (:searchText IS NULL OR (ilike(a.type, CONCAT('%', :searchText, '%')) = true " +
" OR ilike(a.severity, CONCAT('%', :searchText, '%')) = true " +
" OR ilike(a.status, CONCAT('%', :searchText, '%')) = true))")
Page<AlarmInfoEntity> findAlarms(@Param("tenantId") UUID tenantId,
@Param("affectedEntityId") UUID affectedEntityId,
@Param("affectedEntityType") String affectedEntityType,
@ -105,9 +105,9 @@ public interface AlarmRepository extends JpaRepository<AlarmEntity, UUID> {
"AND ((:clearFilterEnabled) IS FALSE OR a.cleared = :clearFilter) " +
"AND ((:ackFilterEnabled) IS FALSE OR a.acknowledged = :ackFilter) " +
"AND (:assigneeId IS NULL OR a.assigneeId = uuid(:assigneeId)) " +
"AND (LOWER(a.type) LIKE LOWER(CONCAT('%', :searchText, '%')) " +
" OR LOWER(a.severity) LIKE LOWER(CONCAT('%', :searchText, '%')) " +
" OR LOWER(a.status) LIKE LOWER(CONCAT('%', :searchText, '%'))) "
"AND (:searchText IS NULL OR (ilike(a.type, CONCAT('%', :searchText, '%')) = true " +
" OR ilike(a.severity, CONCAT('%', :searchText, '%')) = true " +
" OR ilike(a.status, CONCAT('%', :searchText, '%')) = true)) "
,
countQuery = "" +
"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 ((:ackFilterEnabled) IS FALSE OR a.acknowledged = :ackFilter) " +
"AND (:assigneeId IS NULL OR a.assigneeId = uuid(:assigneeId)) " +
"AND (LOWER(a.type) LIKE LOWER(CONCAT('%', :searchText, '%')) " +
" OR LOWER(a.severity) LIKE LOWER(CONCAT('%', :searchText, '%')) " +
" OR LOWER(a.status) LIKE LOWER(CONCAT('%', :searchText, '%'))) ")
"AND (:searchText IS NULL OR (ilike(a.type, CONCAT('%', :searchText, '%')) = true " +
" OR ilike(a.severity, CONCAT('%', :searchText, '%')) = true " +
" OR ilike(a.status, CONCAT('%', :searchText, '%')) = true))")
Page<AlarmInfoEntity> findAlarmsV2(@Param("tenantId") UUID tenantId,
@Param("affectedEntityId") UUID affectedEntityId,
@Param("affectedEntityType") String affectedEntityType,
@ -150,9 +150,9 @@ public interface AlarmRepository extends JpaRepository<AlarmEntity, UUID> {
"AND ((:clearFilterEnabled) IS FALSE OR a.cleared = :clearFilter) " +
"AND ((:ackFilterEnabled) IS FALSE OR a.acknowledged = :ackFilter) " +
"AND (:assigneeId IS NULL OR a.assigneeId = uuid(:assigneeId)) " +
"AND (LOWER(a.type) LIKE LOWER(CONCAT('%', :searchText, '%')) " +
" OR LOWER(a.severity) LIKE LOWER(CONCAT('%', :searchText, '%')) " +
" OR LOWER(a.status) LIKE LOWER(CONCAT('%', :searchText, '%'))) ",
"AND (:searchText IS NULL OR (ilike(a.type, CONCAT('%', :searchText, '%')) = true " +
" OR ilike(a.severity, CONCAT('%', :searchText, '%')) = true " +
" OR ilike(a.status, CONCAT('%', :searchText, '%')) = true)) ",
countQuery = "" +
"SELECT count(a) " +
"FROM AlarmInfoEntity a " +
@ -162,9 +162,9 @@ public interface AlarmRepository extends JpaRepository<AlarmEntity, UUID> {
"AND ((:clearFilterEnabled) IS FALSE OR a.cleared = :clearFilter) " +
"AND ((:ackFilterEnabled) IS FALSE OR a.acknowledged = :ackFilter) " +
"AND (:assigneeId IS NULL OR a.assigneeId = uuid(:assigneeId)) " +
"AND (LOWER(a.type) LIKE LOWER(CONCAT('%', :searchText, '%')) " +
" OR LOWER(a.severity) LIKE LOWER(CONCAT('%', :searchText, '%')) " +
" OR LOWER(a.status) LIKE LOWER(CONCAT('%', :searchText, '%'))) ")
"AND (:searchText IS NULL OR (ilike(a.type, CONCAT('%', :searchText, '%')) = true " +
" OR ilike(a.severity, CONCAT('%', :searchText, '%')) = true " +
" OR ilike(a.status, CONCAT('%', :searchText, '%')) = true))")
Page<AlarmInfoEntity> findAllAlarms(@Param("tenantId") UUID tenantId,
@Param("startTime") Long startTime,
@Param("endTime") Long endTime,
@ -186,9 +186,9 @@ public interface AlarmRepository extends JpaRepository<AlarmEntity, UUID> {
"AND ((:clearFilterEnabled) IS FALSE OR a.cleared = :clearFilter) " +
"AND ((:ackFilterEnabled) IS FALSE OR a.acknowledged = :ackFilter) " +
"AND (:assigneeId IS NULL OR a.assigneeId = uuid(:assigneeId)) " +
"AND (LOWER(a.type) LIKE LOWER(CONCAT('%', :searchText, '%')) " +
" OR LOWER(a.severity) LIKE LOWER(CONCAT('%', :searchText, '%')) " +
" OR LOWER(a.status) LIKE LOWER(CONCAT('%', :searchText, '%'))) ",
"AND (:searchText IS NULL OR (ilike(a.type, CONCAT('%', :searchText, '%')) = true " +
" OR ilike(a.severity, CONCAT('%', :searchText, '%')) = true " +
" OR ilike(a.status, CONCAT('%', :searchText, '%')) = true)) ",
countQuery = "" +
"SELECT count(a) " +
"FROM AlarmInfoEntity a " +
@ -200,9 +200,9 @@ public interface AlarmRepository extends JpaRepository<AlarmEntity, UUID> {
"AND ((:clearFilterEnabled) IS FALSE OR a.cleared = :clearFilter) " +
"AND ((:ackFilterEnabled) IS FALSE OR a.acknowledged = :ackFilter) " +
"AND (:assigneeId IS NULL OR a.assigneeId = uuid(:assigneeId)) " +
"AND (LOWER(a.type) LIKE LOWER(CONCAT('%', :searchText, '%')) " +
" OR LOWER(a.severity) LIKE LOWER(CONCAT('%', :searchText, '%')) " +
" OR LOWER(a.status) LIKE LOWER(CONCAT('%', :searchText, '%'))) ")
"AND (:searchText IS NULL OR (ilike(a.type, CONCAT('%', :searchText, '%')) = true " +
" OR ilike(a.severity, CONCAT('%', :searchText, '%')) = true " +
" OR ilike(a.status, CONCAT('%', :searchText, '%')) = true))")
Page<AlarmInfoEntity> findAllAlarmsV2(@Param("tenantId") UUID tenantId,
@Param("startTime") Long startTime,
@Param("endTime") Long endTime,
@ -224,9 +224,9 @@ public interface AlarmRepository extends JpaRepository<AlarmEntity, UUID> {
"AND ((:clearFilterEnabled) IS FALSE OR a.cleared = :clearFilter) " +
"AND ((:ackFilterEnabled) IS FALSE OR a.acknowledged = :ackFilter) " +
"AND (:assigneeId IS NULL OR a.assigneeId = uuid(:assigneeId)) " +
"AND (LOWER(a.type) LIKE LOWER(CONCAT('%', :searchText, '%')) " +
" OR LOWER(a.severity) LIKE LOWER(CONCAT('%', :searchText, '%')) " +
" OR LOWER(a.status) LIKE LOWER(CONCAT('%', :searchText, '%'))) "
"AND (:searchText IS NULL OR (ilike(a.type, CONCAT('%', :searchText, '%')) = true " +
" OR ilike(a.severity, CONCAT('%', :searchText, '%')) = true " +
" OR ilike(a.status, CONCAT('%', :searchText, '%')) = true)) "
,
countQuery = "" +
"SELECT count(a) " +
@ -237,9 +237,9 @@ public interface AlarmRepository extends JpaRepository<AlarmEntity, UUID> {
"AND ((:clearFilterEnabled) IS FALSE OR a.cleared = :clearFilter) " +
"AND ((:ackFilterEnabled) IS FALSE OR a.acknowledged = :ackFilter) " +
"AND (:assigneeId IS NULL OR a.assigneeId = uuid(:assigneeId)) " +
"AND (LOWER(a.type) LIKE LOWER(CONCAT('%', :searchText, '%')) " +
" OR LOWER(a.severity) LIKE LOWER(CONCAT('%', :searchText, '%')) " +
" OR LOWER(a.status) LIKE LOWER(CONCAT('%', :searchText, '%'))) ")
"AND (:searchText IS NULL OR (ilike(a.type, CONCAT('%', :searchText, '%')) = true " +
" OR ilike(a.severity, CONCAT('%', :searchText, '%')) = true " +
" OR ilike(a.status, CONCAT('%', :searchText, '%')) = true))")
Page<AlarmInfoEntity> findCustomerAlarms(@Param("tenantId") UUID tenantId,
@Param("customerId") UUID customerId,
@Param("startTime") Long startTime,
@ -262,9 +262,9 @@ public interface AlarmRepository extends JpaRepository<AlarmEntity, UUID> {
"AND ((:clearFilterEnabled) IS FALSE OR a.cleared = :clearFilter) " +
"AND ((:ackFilterEnabled) IS FALSE OR a.acknowledged = :ackFilter) " +
"AND (:assigneeId IS NULL OR a.assigneeId = uuid(:assigneeId)) " +
"AND (LOWER(a.type) LIKE LOWER(CONCAT('%', :searchText, '%')) " +
" OR LOWER(a.severity) LIKE LOWER(CONCAT('%', :searchText, '%')) " +
" OR LOWER(a.status) LIKE LOWER(CONCAT('%', :searchText, '%'))) "
"AND (:searchText IS NULL OR (ilike(a.type, CONCAT('%', :searchText, '%')) = true " +
" OR ilike(a.severity, CONCAT('%', :searchText, '%')) = true " +
" OR ilike(a.status, CONCAT('%', :searchText, '%')) = true)) "
,
countQuery = "" +
"SELECT count(a) " +
@ -277,9 +277,9 @@ public interface AlarmRepository extends JpaRepository<AlarmEntity, UUID> {
"AND ((:clearFilterEnabled) IS FALSE OR a.cleared = :clearFilter) " +
"AND ((:ackFilterEnabled) IS FALSE OR a.acknowledged = :ackFilter) " +
"AND (:assigneeId IS NULL OR a.assigneeId = uuid(:assigneeId)) " +
"AND (LOWER(a.type) LIKE LOWER(CONCAT('%', :searchText, '%')) " +
" OR LOWER(a.severity) LIKE LOWER(CONCAT('%', :searchText, '%')) " +
" OR LOWER(a.status) LIKE LOWER(CONCAT('%', :searchText, '%'))) ")
"AND (:searchText IS NULL OR (ilike(a.type, CONCAT('%', :searchText, '%')) = true " +
" OR ilike(a.severity, CONCAT('%', :searchText, '%')) = true " +
" OR ilike(a.status, CONCAT('%', :searchText, '%')) = true))")
Page<AlarmInfoEntity> findCustomerAlarmsV2(@Param("tenantId") UUID tenantId,
@Param("customerId") UUID customerId,
@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.getAckFilter(),
DaoUtil.getStringId(query.getAssigneeId()),
Objects.toString(query.getPageLink().getTextSearch(), ""),
query.getPageLink().getTextSearch(),
DaoUtil.toPageable(query.getPageLink())
)
);
@ -170,7 +170,7 @@ public class JpaAlarmDao extends JpaAbstractDao<AlarmEntity, Alarm> implements A
asf.hasAckFilter(),
asf.hasAckFilter() && asf.getAckFilter(),
DaoUtil.getStringId(query.getAssigneeId()),
Objects.toString(query.getPageLink().getTextSearch(), ""),
query.getPageLink().getTextSearch(),
DaoUtil.toPageable(query.getPageLink())
)
);
@ -192,7 +192,7 @@ public class JpaAlarmDao extends JpaAbstractDao<AlarmEntity, Alarm> implements A
asf.hasAckFilter(),
asf.hasAckFilter() && asf.getAckFilter(),
DaoUtil.getStringId(query.getAssigneeId()),
Objects.toString(query.getPageLink().getTextSearch(), ""),
query.getPageLink().getTextSearch(),
DaoUtil.toPageable(query.getPageLink())
)
);
@ -220,7 +220,7 @@ public class JpaAlarmDao extends JpaAbstractDao<AlarmEntity, Alarm> implements A
asf.hasAckFilter(),
asf.hasAckFilter() && asf.getAckFilter(),
DaoUtil.getStringId(query.getAssigneeId()),
Objects.toString(query.getPageLink().getTextSearch(), ""),
query.getPageLink().getTextSearch(),
DaoUtil.toPageable(query.getPageLink())
)
);
@ -237,7 +237,7 @@ public class JpaAlarmDao extends JpaAbstractDao<AlarmEntity, Alarm> implements A
asf.hasAckFilter(),
asf.hasAckFilter() && asf.getAckFilter(),
DaoUtil.getStringId(query.getAssigneeId()),
Objects.toString(query.getPageLink().getTextSearch(), ""),
query.getPageLink().getTextSearch(),
DaoUtil.toPageable(query.getPageLink())
)
);
@ -263,7 +263,7 @@ public class JpaAlarmDao extends JpaAbstractDao<AlarmEntity, Alarm> implements A
asf.hasAckFilter(),
asf.hasAckFilter() && asf.getAckFilter(),
DaoUtil.getStringId(query.getAssigneeId()),
Objects.toString(query.getPageLink().getTextSearch(), ""),
query.getPageLink().getTextSearch(),
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);
@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,
@Param("textSearch") String textSearch,
Pageable pageable);
@Query("SELECT new org.thingsboard.server.common.data.asset.AssetProfileInfo(a.id, a.tenantId, a.name, a.image, a.defaultDashboardId) " +
"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,
@Param("textSearch") String textSearch,
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);
@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,
@Param("textSearch") String textSearch,
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 AssetProfileEntity p on p.id = a.assetProfileId " +
"WHERE a.tenantId = :tenantId " +
"AND (LOWER(a.name) LIKE LOWER(CONCAT('%', :textSearch, '%')) " +
"OR LOWER(a.label) LIKE LOWER(CONCAT('%', :textSearch, '%')) " +
"OR LOWER(p.name) LIKE LOWER(CONCAT('%', :textSearch, '%')) " +
"OR LOWER(c.title) LIKE LOWER(CONCAT('%', :textSearch, '%')))")
"AND (:textSearch IS NULL OR ilike(a.name, CONCAT('%', :textSearch, '%')) = true " +
" OR ilike(a.label, CONCAT('%', :textSearch, '%')) = true " +
" OR ilike(p.name, CONCAT('%', :textSearch, '%')) = true " +
" OR ilike(c.title, CONCAT('%', :textSearch, '%')) = true) ")
Page<AssetInfoEntity> findAssetInfosByTenantId(@Param("tenantId") UUID tenantId,
@Param("textSearch") String textSearch,
Pageable pageable);
@Query("SELECT a FROM AssetEntity a WHERE a.tenantId = :tenantId " +
"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,
@Param("customerId") UUID customerId,
@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 " +
"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,
@Param("profileId") UUID profileId,
@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 " +
"WHERE a.tenantId = :tenantId " +
"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,
@Param("customerId") UUID customerId,
@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 " +
"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,
@Param("type") String type,
@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 " +
"WHERE a.tenantId = :tenantId " +
"AND a.type = :type " +
"AND (LOWER(a.name) LIKE LOWER(CONCAT('%', :textSearch, '%')) " +
"OR LOWER(a.label) LIKE LOWER(CONCAT('%', :textSearch, '%')) " +
"OR LOWER(c.title) LIKE LOWER(CONCAT('%', :textSearch, '%')))")
"AND (:textSearch IS NULL OR ilike(a.name, CONCAT('%', :textSearch, '%')) = true " +
" OR ilike(a.label, CONCAT('%', :textSearch, '%')) = true " +
" OR ilike(c.title, CONCAT('%', :textSearch, '%')) = true) ")
Page<AssetInfoEntity> findAssetInfosByTenantIdAndType(@Param("tenantId") UUID tenantId,
@Param("type") String type,
@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 " +
"WHERE a.tenantId = :tenantId " +
"AND a.assetProfileId = :assetProfileId " +
"AND (LOWER(a.name) LIKE LOWER(CONCAT('%', :textSearch, '%')) " +
"OR LOWER(a.label) LIKE LOWER(CONCAT('%', :textSearch, '%')) " +
"OR LOWER(c.title) LIKE LOWER(CONCAT('%', :textSearch, '%')))")
"AND (:textSearch IS NULL OR ilike(a.name, CONCAT('%', :textSearch, '%')) = true " +
" OR ilike(a.label, CONCAT('%', :textSearch, '%')) = true " +
" OR ilike(c.title, CONCAT('%', :textSearch, '%')) = true) ")
Page<AssetInfoEntity> findAssetInfosByTenantIdAndAssetProfileId(@Param("tenantId") UUID tenantId,
@Param("assetProfileId") UUID assetProfileId,
@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 " +
"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,
@Param("customerId") UUID customerId,
@Param("type") String type,
@ -146,7 +146,7 @@ public interface AssetRepository extends JpaRepository<AssetEntity, UUID>, Expor
"WHERE a.tenantId = :tenantId " +
"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<AssetInfoEntity> findAssetInfosByTenantIdAndCustomerIdAndType(@Param("tenantId") UUID tenantId,
@Param("customerId") UUID customerId,
@Param("type") String type,
@ -160,7 +160,7 @@ public interface AssetRepository extends JpaRepository<AssetEntity, UUID>, Expor
"WHERE a.tenantId = :tenantId " +
"AND a.customerId = :customerId " +
"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,
@Param("customerId") UUID customerId,
@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 " +
"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 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,
@Param("edgeId") UUID edgeId,
@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 re.relationType = 'Contains' AND re.fromId = :edgeId AND re.fromType = 'EDGE' " +
"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,
@Param("edgeId") UUID edgeId,
@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
.findByTenantId(
tenantId,
Objects.toString(pageLink.getTextSearch(), ""),
pageLink.getTextSearch(),
DaoUtil.toPageable(pageLink)));
}
@ -86,7 +86,7 @@ public class JpaAssetDao extends JpaAbstractDao<AssetEntity, Asset> implements A
return DaoUtil.toPageData(
assetRepository.findAssetInfosByTenantId(
tenantId,
Objects.toString(pageLink.getTextSearch(), ""),
pageLink.getTextSearch(),
DaoUtil.toPageable(pageLink, AssetInfoEntity.assetInfoColumnMap)));
}
@ -102,7 +102,7 @@ public class JpaAssetDao extends JpaAbstractDao<AssetEntity, Asset> implements A
.findByTenantIdAndCustomerId(
tenantId,
customerId,
Objects.toString(pageLink.getTextSearch(), ""),
pageLink.getTextSearch(),
DaoUtil.toPageable(pageLink)));
}
@ -112,7 +112,7 @@ public class JpaAssetDao extends JpaAbstractDao<AssetEntity, Asset> implements A
assetRepository.findAssetInfosByTenantIdAndCustomerId(
tenantId,
customerId,
Objects.toString(pageLink.getTextSearch(), ""),
pageLink.getTextSearch(),
DaoUtil.toPageable(pageLink, AssetInfoEntity.assetInfoColumnMap)));
}
@ -134,7 +134,7 @@ public class JpaAssetDao extends JpaAbstractDao<AssetEntity, Asset> implements A
.findByTenantIdAndType(
tenantId,
type,
Objects.toString(pageLink.getTextSearch(), ""),
pageLink.getTextSearch(),
DaoUtil.toPageable(pageLink)));
}
@ -144,7 +144,7 @@ public class JpaAssetDao extends JpaAbstractDao<AssetEntity, Asset> implements A
assetRepository.findAssetInfosByTenantIdAndType(
tenantId,
type,
Objects.toString(pageLink.getTextSearch(), ""),
pageLink.getTextSearch(),
DaoUtil.toPageable(pageLink, AssetInfoEntity.assetInfoColumnMap)));
}
@ -154,7 +154,7 @@ public class JpaAssetDao extends JpaAbstractDao<AssetEntity, Asset> implements A
assetRepository.findAssetInfosByTenantIdAndAssetProfileId(
tenantId,
assetProfileId,
Objects.toString(pageLink.getTextSearch(), ""),
pageLink.getTextSearch(),
DaoUtil.toPageable(pageLink, AssetInfoEntity.assetInfoColumnMap)));
}
@ -165,7 +165,7 @@ public class JpaAssetDao extends JpaAbstractDao<AssetEntity, Asset> implements A
tenantId,
customerId,
type,
Objects.toString(pageLink.getTextSearch(), ""),
pageLink.getTextSearch(),
DaoUtil.toPageable(pageLink)));
}
@ -176,7 +176,7 @@ public class JpaAssetDao extends JpaAbstractDao<AssetEntity, Asset> implements A
tenantId,
customerId,
type,
Objects.toString(pageLink.getTextSearch(), ""),
pageLink.getTextSearch(),
DaoUtil.toPageable(pageLink, AssetInfoEntity.assetInfoColumnMap)));
}
@ -187,7 +187,7 @@ public class JpaAssetDao extends JpaAbstractDao<AssetEntity, Asset> implements A
tenantId,
customerId,
assetProfileId,
Objects.toString(pageLink.getTextSearch(), ""),
pageLink.getTextSearch(),
DaoUtil.toPageable(pageLink, AssetInfoEntity.assetInfoColumnMap)));
}
@ -207,7 +207,7 @@ public class JpaAssetDao extends JpaAbstractDao<AssetEntity, Asset> implements A
assetRepository.findByTenantIdAndProfileId(
tenantId,
profileId,
Objects.toString(pageLink.getTextSearch(), ""),
pageLink.getTextSearch(),
DaoUtil.toPageable(pageLink)));
}
@ -218,7 +218,7 @@ public class JpaAssetDao extends JpaAbstractDao<AssetEntity, Asset> implements A
.findByTenantIdAndEdgeId(
tenantId,
edgeId,
Objects.toString(pageLink.getTextSearch(), ""),
pageLink.getTextSearch(),
DaoUtil.toPageable(pageLink)));
}
@ -230,7 +230,7 @@ public class JpaAssetDao extends JpaAbstractDao<AssetEntity, Asset> implements A
tenantId,
edgeId,
type,
Objects.toString(pageLink.getTextSearch(), ""),
pageLink.getTextSearch(),
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(
assetProfileRepository.findAssetProfiles(
tenantId.getId(),
Objects.toString(pageLink.getTextSearch(), ""),
pageLink.getTextSearch(),
DaoUtil.toPageable(pageLink)));
}
@ -78,7 +78,7 @@ public class JpaAssetProfileDao extends JpaAbstractDao<AssetProfileEntity, Asset
return DaoUtil.pageToPageData(
assetProfileRepository.findAssetProfileInfos(
tenantId.getId(),
Objects.toString(pageLink.getTextSearch(), ""),
pageLink.getTextSearch(),
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 (:endTime IS NULL OR a.createdTime <= :endTime) " +
"AND ((:actionTypes) IS NULL OR a.actionType in (:actionTypes)) " +
"AND (LOWER(a.entityType) LIKE LOWER(CONCAT('%', :textSearch, '%'))" +
"OR LOWER(a.entityName) LIKE LOWER(CONCAT('%', :textSearch, '%'))" +
"OR LOWER(a.userName) LIKE LOWER(CONCAT('%', :textSearch, '%'))" +
"OR LOWER(a.actionType) LIKE LOWER(CONCAT('%', :textSearch, '%'))" +
"OR LOWER(a.actionStatus) LIKE LOWER(CONCAT('%', :textSearch, '%')))"
"AND (:textSearch IS NULL OR ilike(a.entityType, CONCAT('%', :textSearch, '%')) = true " +
"OR ilike(a.entityName, CONCAT('%', :textSearch, '%')) = true " +
"OR ilike(a.userName, CONCAT('%', :textSearch, '%')) = true " +
"OR ilike(a.actionType, CONCAT('%', :textSearch, '%')) = true " +
"OR ilike(a.actionStatus, CONCAT('%', :textSearch, '%')) = true)"
)
Page<AuditLogEntity> findByTenantId(
@Param("tenantId") UUID tenantId,
@ -54,10 +54,10 @@ public interface AuditLogRepository extends JpaRepository<AuditLogEntity, UUID>
"AND (:startTime IS NULL OR a.createdTime >= :startTime) " +
"AND (:endTime IS NULL OR a.createdTime <= :endTime) " +
"AND ((:actionTypes) IS NULL OR a.actionType in (:actionTypes)) " +
"AND (LOWER(a.entityName) LIKE LOWER(CONCAT('%', :textSearch, '%'))" +
"OR LOWER(a.userName) LIKE LOWER(CONCAT('%', :textSearch, '%'))" +
"OR LOWER(a.actionType) LIKE LOWER(CONCAT('%', :textSearch, '%'))" +
"OR LOWER(a.actionStatus) LIKE LOWER(CONCAT('%', :textSearch, '%')))"
"AND (:textSearch IS NULL OR ilike(a.entityName, CONCAT('%', :textSearch, '%')) = true " +
"OR ilike(a.userName, CONCAT('%', :textSearch, '%')) = true " +
"OR ilike(a.actionType, CONCAT('%', :textSearch, '%')) = true " +
"OR ilike(a.actionStatus, CONCAT('%', :textSearch, '%')) = true)"
)
Page<AuditLogEntity> findAuditLogsByTenantIdAndEntityId(@Param("tenantId") UUID tenantId,
@Param("entityType") EntityType entityType,
@ -74,11 +74,11 @@ public interface AuditLogRepository extends JpaRepository<AuditLogEntity, UUID>
"AND (:startTime IS NULL OR a.createdTime >= :startTime) " +
"AND (:endTime IS NULL OR a.createdTime <= :endTime) " +
"AND ((:actionTypes) IS NULL OR a.actionType in (:actionTypes)) " +
"AND (LOWER(a.entityType) LIKE LOWER(CONCAT('%', :textSearch, '%'))" +
"OR LOWER(a.entityName) LIKE LOWER(CONCAT('%', :textSearch, '%'))" +
"OR LOWER(a.userName) LIKE LOWER(CONCAT('%', :textSearch, '%'))" +
"OR LOWER(a.actionType) LIKE LOWER(CONCAT('%', :textSearch, '%'))" +
"OR LOWER(a.actionStatus) LIKE LOWER(CONCAT('%', :textSearch, '%')))"
"AND (:textSearch IS NULL OR ilike(a.entityType, CONCAT('%', :textSearch, '%')) = true " +
"OR ilike(a.entityName, CONCAT('%', :textSearch, '%')) = true " +
"OR ilike(a.userName, CONCAT('%', :textSearch, '%')) = true " +
"OR ilike(a.actionType, CONCAT('%', :textSearch, '%')) = true " +
"OR ilike(a.actionStatus, CONCAT('%', :textSearch, '%')) = true)"
)
Page<AuditLogEntity> findAuditLogsByTenantIdAndCustomerId(@Param("tenantId") UUID tenantId,
@Param("customerId") UUID customerId,
@ -94,10 +94,10 @@ public interface AuditLogRepository extends JpaRepository<AuditLogEntity, UUID>
"AND (:startTime IS NULL OR a.createdTime >= :startTime) " +
"AND (:endTime IS NULL OR a.createdTime <= :endTime) " +
"AND ((:actionTypes) IS NULL OR a.actionType in (:actionTypes)) " +
"AND (LOWER(a.entityType) LIKE LOWER(CONCAT('%', :textSearch, '%'))" +
"OR LOWER(a.entityName) LIKE LOWER(CONCAT('%', :textSearch, '%'))" +
"OR LOWER(a.actionType) LIKE LOWER(CONCAT('%', :textSearch, '%'))" +
"OR LOWER(a.actionStatus) LIKE LOWER(CONCAT('%', :textSearch, '%')))"
"AND (:textSearch IS NULL OR ilike(a.entityType, CONCAT('%', :textSearch, '%')) = true " +
"OR ilike(a.entityName, CONCAT('%', :textSearch, '%')) = true " +
"OR ilike(a.actionType, CONCAT('%', :textSearch, '%')) = true " +
"OR ilike(a.actionStatus, CONCAT('%', :textSearch, '%')) = true)"
)
Page<AuditLogEntity> findAuditLogsByTenantIdAndUserId(@Param("tenantId") UUID tenantId,
@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,
entityId.getEntityType(),
entityId.getId(),
Objects.toString(pageLink.getTextSearch(), ""),
pageLink.getTextSearch(),
pageLink.getStartTime(),
pageLink.getEndTime(),
actionTypes,
@ -113,7 +113,7 @@ public class JpaAuditLogDao extends JpaAbstractDao<AuditLogEntity, AuditLog> imp
.findAuditLogsByTenantIdAndCustomerId(
tenantId,
customerId.getId(),
Objects.toString(pageLink.getTextSearch(), ""),
pageLink.getTextSearch(),
pageLink.getStartTime(),
pageLink.getEndTime(),
actionTypes,
@ -127,7 +127,7 @@ public class JpaAuditLogDao extends JpaAbstractDao<AuditLogEntity, AuditLog> imp
.findAuditLogsByTenantIdAndUserId(
tenantId,
userId.getId(),
Objects.toString(pageLink.getTextSearch(), ""),
pageLink.getTextSearch(),
pageLink.getStartTime(),
pageLink.getEndTime(),
actionTypes,
@ -139,7 +139,7 @@ public class JpaAuditLogDao extends JpaAbstractDao<AuditLogEntity, AuditLog> imp
return DaoUtil.toPageData(
auditLogRepository.findByTenantId(
tenantId,
Objects.toString(pageLink.getTextSearch(), ""),
pageLink.getTextSearch(),
pageLink.getStartTime(),
pageLink.getEndTime(),
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);
@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,
@Param("textSearch") String textSearch,
Pageable pageable);
@Query("SELECT cd FROM ComponentDescriptorEntity cd WHERE cd.type = :type " +
"AND cd.scope = :scope AND LOWER(cd.name) LIKE LOWER(CONCAT('%', :textSearch, '%'))")
@Query("SELECT cd FROM ComponentDescriptorEntity cd WHERE cd.type = :type AND cd.scope = :scope " +
"AND (:textSearch IS NULL OR ilike(cd.name, CONCAT('%', :textSearch, '%')) = true)")
Page<ComponentDescriptorEntity> findByScopeAndType(@Param("type") ComponentType type,
@Param("scope") ComponentScope scope,
@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
.findByType(
type,
Objects.toString(pageLink.getTextSearch(), ""),
pageLink.getTextSearch(),
DaoUtil.toPageable(pageLink)));
}
@ -99,7 +99,7 @@ public class JpaBaseComponentDescriptorDao extends JpaAbstractDao<ComponentDescr
.findByScopeAndType(
type,
scope,
Objects.toString(pageLink.getTextSearch(), ""),
pageLink.getTextSearch(),
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> {
@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,
@Param("textSearch") String textSearch,
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) {
return DaoUtil.toPageData(customerRepository.findByTenantId(
tenantId,
Objects.toString(pageLink.getTextSearch(), ""),
pageLink.getTextSearch(),
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);
@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,
@Param("searchText") String searchText,
Pageable pageable);
@Query("SELECT di FROM DashboardInfoEntity di WHERE di.tenantId = :tenantId " +
"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,
@Param("searchText") String searchText,
Pageable pageable);
@ -47,7 +47,7 @@ public interface DashboardInfoRepository extends JpaRepository<DashboardInfoEnti
@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 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,
@Param("customerId") UUID customerId,
@Param("searchText") String searchText,
@ -57,7 +57,7 @@ public interface DashboardInfoRepository extends JpaRepository<DashboardInfoEnti
"AND di.mobileHide = false " +
"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 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,
@Param("customerId") UUID customerId,
@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 " +
"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 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,
@Param("edgeId") UUID edgeId,
@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
.findByTenantId(
tenantId,
Objects.toString(pageLink.getTextSearch(), ""),
pageLink.getTextSearch(),
DaoUtil.toPageable(pageLink)));
}
@ -74,7 +74,7 @@ public class JpaDashboardInfoDao extends JpaAbstractDao<DashboardInfoEntity, Das
return DaoUtil.toPageData(dashboardInfoRepository
.findMobileByTenantId(
tenantId,
Objects.toString(pageLink.getTextSearch(), ""),
pageLink.getTextSearch(),
DaoUtil.toPageable(pageLink, sortOrders)));
}
@ -84,7 +84,7 @@ public class JpaDashboardInfoDao extends JpaAbstractDao<DashboardInfoEntity, Das
.findByTenantIdAndCustomerId(
tenantId,
customerId,
Objects.toString(pageLink.getTextSearch(), ""),
pageLink.getTextSearch(),
DaoUtil.toPageable(pageLink)));
}
@ -99,7 +99,7 @@ public class JpaDashboardInfoDao extends JpaAbstractDao<DashboardInfoEntity, Das
.findMobileByTenantIdAndCustomerId(
tenantId,
customerId,
Objects.toString(pageLink.getTextSearch(), ""),
pageLink.getTextSearch(),
DaoUtil.toPageable(pageLink, sortOrders)));
}
@ -110,7 +110,7 @@ public class JpaDashboardInfoDao extends JpaAbstractDao<DashboardInfoEntity, Das
.findByTenantIdAndEdgeId(
tenantId,
edgeId,
Objects.toString(pageLink.getTextSearch(), ""),
pageLink.getTextSearch(),
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")
DeviceProfileInfo findDeviceProfileInfoById(@Param("deviceProfileId") UUID deviceProfileId);
@Query("SELECT d FROM DeviceProfileEntity d WHERE " +
"d.tenantId = :tenantId AND LOWER(d.name) LIKE LOWER(CONCAT('%', :textSearch, '%'))")
@Query("SELECT d FROM DeviceProfileEntity d WHERE d.tenantId = :tenantId " +
"AND (:textSearch IS NULL OR ilike(d.name, CONCAT('%', :textSearch, '%')) = true)")
Page<DeviceProfileEntity> findDeviceProfiles(@Param("tenantId") UUID tenantId,
@Param("textSearch") String textSearch,
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) " +
"FROM DeviceProfileEntity d WHERE " +
"d.tenantId = :tenantId AND LOWER(d.name) LIKE LOWER(CONCAT('%', :textSearch, '%'))")
"FROM DeviceProfileEntity d WHERE d.tenantId = :tenantId " +
"AND (:textSearch IS NULL OR ilike(d.name, CONCAT('%', :textSearch, '%')) = true)")
Page<DeviceProfileInfo> findDeviceProfileInfos(@Param("tenantId") UUID tenantId,
@Param("textSearch") String textSearch,
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) " +
"FROM DeviceProfileEntity d WHERE " +
"d.tenantId = :tenantId AND d.transportType = :transportType AND LOWER(d.name) LIKE LOWER(CONCAT('%', :textSearch, '%'))")
"FROM DeviceProfileEntity d WHERE d.tenantId = :tenantId AND d.transportType = :transportType " +
"AND (:textSearch IS NULL OR ilike(d.name, CONCAT('%', :textSearch, '%')) = true)")
Page<DeviceProfileInfo> findDeviceProfileInfos(@Param("tenantId") UUID tenantId,
@Param("textSearch") String textSearch,
@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 " +
"AND d.customerId = :customerId " +
"AND (LOWER(d.name) LIKE LOWER(CONCAT('%', :textSearch, '%')) " +
"OR LOWER(d.label) LIKE LOWER(CONCAT('%', :textSearch, '%')))")
"AND (:textSearch IS NULL OR ilike(d.name, CONCAT('%', :textSearch, '%')) = true " +
"OR ilike(d.label, CONCAT('%', :textSearch, '%')) = true)")
Page<DeviceEntity> findByTenantIdAndCustomerId(@Param("tenantId") UUID tenantId,
@Param("customerId") UUID customerId,
@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 " +
"AND d.deviceProfileId = :profileId " +
"AND (LOWER(d.name) LIKE LOWER(CONCAT('%', :textSearch, '%')) " +
"OR LOWER(d.label) LIKE LOWER(CONCAT('%', :textSearch, '%')))")
"AND (:textSearch IS NULL OR ilike(d.name, CONCAT('%', :textSearch, '%')) = true " +
"OR ilike(d.label, CONCAT('%', :textSearch, '%')) = true)")
Page<DeviceEntity> findByTenantIdAndProfileId(@Param("tenantId") UUID tenantId,
@Param("profileId") UUID profileId,
@Param("textSearch") String textSearch,
@ -54,8 +54,8 @@ public interface DeviceRepository extends JpaRepository<DeviceEntity, UUID>, Exp
@Query("SELECT d FROM DeviceInfoEntity d " +
"WHERE d.tenantId = :tenantId " +
"AND d.customerId = :customerId " +
"AND (LOWER(d.name) LIKE LOWER(CONCAT('%', :textSearch, '%')) " +
"OR LOWER(d.label) LIKE LOWER(CONCAT('%', :textSearch, '%')))")
"AND (:textSearch IS NULL OR ilike(d.name, CONCAT('%', :textSearch, '%')) = true " +
"OR ilike(d.label, CONCAT('%', :textSearch, '%')) = true)")
Page<DeviceInfoEntity> findDeviceInfosByTenantIdAndCustomerId(@Param("tenantId") UUID tenantId,
@Param("customerId") UUID customerId,
@Param("textSearch") String textSearch,
@ -66,16 +66,16 @@ public interface DeviceRepository extends JpaRepository<DeviceEntity, UUID>, Exp
Pageable pageable);
@Query("SELECT d FROM DeviceEntity d WHERE d.tenantId = :tenantId " +
"AND (LOWER(d.name) LIKE LOWER(CONCAT('%', :textSearch, '%')) " +
"OR LOWER(d.label) LIKE LOWER(CONCAT('%', :textSearch, '%')))")
"AND (:textSearch IS NULL OR ilike(d.name, CONCAT('%', :textSearch, '%')) = true " +
"OR ilike(d.label, CONCAT('%', :textSearch, '%')) = true)")
Page<DeviceEntity> findByTenantId(@Param("tenantId") UUID tenantId,
@Param("textSearch") String textSearch,
Pageable pageable);
@Query("SELECT d FROM DeviceEntity d WHERE d.tenantId = :tenantId " +
"AND d.type = :type " +
"AND (LOWER(d.name) LIKE LOWER(CONCAT('%', :textSearch, '%')) " +
"OR LOWER(d.label) LIKE LOWER(CONCAT('%', :textSearch, '%')))")
"AND (:textSearch IS NULL OR ilike(d.name, CONCAT('%', :textSearch, '%')) = true " +
"OR ilike(d.label, CONCAT('%', :textSearch, '%')) = true)")
Page<DeviceEntity> findByTenantIdAndType(@Param("tenantId") UUID tenantId,
@Param("type") String type,
@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 " +
"AND d.deviceProfileId = :deviceProfileId " +
"AND d.firmwareId = null " +
"AND (LOWER(d.name) LIKE LOWER(CONCAT('%', :textSearch, '%')) " +
"OR LOWER(d.label) LIKE LOWER(CONCAT('%', :textSearch, '%')))")
"AND (:textSearch IS NULL OR ilike(d.name, CONCAT('%', :textSearch, '%')) = true " +
"OR ilike(d.label, CONCAT('%', :textSearch, '%')) = true)")
Page<DeviceEntity> findByTenantIdAndTypeAndFirmwareIdIsNull(@Param("tenantId") UUID tenantId,
@Param("deviceProfileId") UUID deviceProfileId,
@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 " +
"AND d.deviceProfileId = :deviceProfileId " +
"AND d.softwareId = null " +
"AND (LOWER(d.name) LIKE LOWER(CONCAT('%', :textSearch, '%')) " +
"OR LOWER(d.label) LIKE LOWER(CONCAT('%', :textSearch, '%')))")
"AND (:textSearch IS NULL OR ilike(d.name, CONCAT('%', :textSearch, '%')) = true " +
"OR ilike(d.label, CONCAT('%', :textSearch, '%')) = true)")
Page<DeviceEntity> findByTenantIdAndTypeAndSoftwareIdIsNull(@Param("tenantId") UUID tenantId,
@Param("deviceProfileId") UUID deviceProfileId,
@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 " +
"AND d.customerId = :customerId " +
"AND d.type = :type " +
"AND (LOWER(d.name) LIKE LOWER(CONCAT('%', :textSearch, '%')) " +
"OR LOWER(d.label) LIKE LOWER(CONCAT('%', :textSearch, '%')))")
"AND (:textSearch IS NULL OR ilike(d.name, CONCAT('%', :textSearch, '%')) = true " +
"OR ilike(d.label, CONCAT('%', :textSearch, '%')) = true)")
Page<DeviceEntity> findByTenantIdAndCustomerIdAndType(@Param("tenantId") UUID tenantId,
@Param("customerId") UUID customerId,
@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 (:deviceProfileId IS NULL OR d.deviceProfileId = uuid(:deviceProfileId)) " +
"AND ((:filterByActive) IS FALSE OR d.active = :deviceActive) " +
"AND (LOWER(d.name) LIKE LOWER(CONCAT('%', :textSearch, '%')) " +
"OR LOWER(d.label) LIKE LOWER(CONCAT('%', :textSearch, '%')) " +
"OR LOWER(d.type) LIKE LOWER(CONCAT('%', :textSearch, '%')) " +
"OR LOWER(d.customerTitle) LIKE LOWER(CONCAT('%', :textSearch, '%')))")
"AND (:textSearch IS NULL OR ilike(d.name, CONCAT('%', :textSearch, '%')) = true " +
"OR ilike(d.label, CONCAT('%', :textSearch, '%')) = true " +
"OR ilike(d.type, CONCAT('%', :textSearch, '%')) = true " +
"OR ilike(d.customerTitle, CONCAT('%', :textSearch, '%')) = true)")
Page<DeviceInfoEntity> findDeviceInfosByFilter(@Param("tenantId") UUID tenantId,
@Param("customerId") String customerId,
@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 " +
"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 (LOWER(d.name) LIKE LOWER(CONCAT('%', :textSearch, '%')) " +
"OR LOWER(d.label) LIKE LOWER(CONCAT('%', :textSearch, '%')))")
"AND (:textSearch IS NULL OR ilike(d.name, CONCAT('%', :textSearch, '%')) = true " +
"OR ilike(d.label, CONCAT('%', :textSearch, '%')) = true)")
Page<DeviceEntity> findByTenantIdAndEdgeId(@Param("tenantId") UUID tenantId,
@Param("edgeId") UUID edgeId,
@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 re.relationType = 'Contains' AND re.fromId = :edgeId AND re.fromType = 'EDGE' " +
"AND d.type = :type " +
"AND (LOWER(d.name) LIKE LOWER(CONCAT('%', :textSearch, '%')) " +
"OR LOWER(d.label) LIKE LOWER(CONCAT('%', :textSearch, '%')))")
"AND (:textSearch IS NULL OR ilike(d.name, CONCAT('%', :textSearch, '%')) = true " +
"OR ilike(d.label, CONCAT('%', :textSearch, '%')) = true)")
Page<DeviceEntity> findByTenantIdAndEdgeIdAndType(@Param("tenantId") UUID tenantId,
@Param("edgeId") UUID edgeId,
@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(
deviceRepository.findByTenantId(
tenantId,
Objects.toString(pageLink.getTextSearch(), ""),
pageLink.getTextSearch(),
DaoUtil.toPageable(pageLink)));
}
}
@ -114,7 +114,7 @@ public class JpaDeviceDao extends JpaAbstractDao<DeviceEntity, Device> implement
DaoUtil.getStringId(filter.getDeviceProfileId()),
filter.getActive() != null,
Boolean.TRUE.equals(filter.getActive()),
Objects.toString(pageLink.getTextSearch(), ""),
pageLink.getTextSearch(),
DaoUtil.toPageable(pageLink)));
}
@ -139,7 +139,7 @@ public class JpaDeviceDao extends JpaAbstractDao<DeviceEntity, Device> implement
deviceRepository.findByTenantIdAndCustomerId(
tenantId,
customerId,
Objects.toString(pageLink.getTextSearch(), ""),
pageLink.getTextSearch(),
DaoUtil.toPageable(pageLink)));
}
@ -149,7 +149,7 @@ public class JpaDeviceDao extends JpaAbstractDao<DeviceEntity, Device> implement
deviceRepository.findByTenantIdAndProfileId(
tenantId,
profileId,
Objects.toString(pageLink.getTextSearch(), ""),
pageLink.getTextSearch(),
DaoUtil.toPageable(pageLink)));
}
@ -176,7 +176,7 @@ public class JpaDeviceDao extends JpaAbstractDao<DeviceEntity, Device> implement
deviceRepository.findByTenantIdAndType(
tenantId,
type,
Objects.toString(pageLink.getTextSearch(), ""),
pageLink.getTextSearch(),
DaoUtil.toPageable(pageLink)));
}
@ -186,7 +186,7 @@ public class JpaDeviceDao extends JpaAbstractDao<DeviceEntity, Device> implement
OtaPackageType type,
PageLink pageLink) {
Pageable pageable = DaoUtil.toPageable(pageLink);
String searchText = Objects.toString(pageLink.getTextSearch(), "");
String searchText = pageLink.getTextSearch();
Page<DeviceEntity> page = OtaPackageUtil.getByOtaPackageType(
() -> deviceRepository.findByTenantIdAndTypeAndFirmwareIdIsNull(tenantId, deviceProfileId, searchText, pageable),
() -> deviceRepository.findByTenantIdAndTypeAndSoftwareIdIsNull(tenantId, deviceProfileId, searchText, pageable),
@ -211,7 +211,7 @@ public class JpaDeviceDao extends JpaAbstractDao<DeviceEntity, Device> implement
tenantId,
customerId,
type,
Objects.toString(pageLink.getTextSearch(), ""),
pageLink.getTextSearch(),
DaoUtil.toPageable(pageLink)));
}
@ -247,7 +247,7 @@ public class JpaDeviceDao extends JpaAbstractDao<DeviceEntity, Device> implement
.findByTenantIdAndEdgeId(
tenantId,
edgeId,
Objects.toString(pageLink.getTextSearch(), ""),
pageLink.getTextSearch(),
DaoUtil.toPageable(pageLink)));
}
@ -259,7 +259,7 @@ public class JpaDeviceDao extends JpaAbstractDao<DeviceEntity, Device> implement
tenantId,
edgeId,
type,
Objects.toString(pageLink.getTextSearch(), ""),
pageLink.getTextSearch(),
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(
deviceProfileRepository.findDeviceProfiles(
tenantId.getId(),
Objects.toString(pageLink.getTextSearch(), ""),
pageLink.getTextSearch(),
DaoUtil.toPageable(pageLink)));
}
@ -83,14 +83,14 @@ public class JpaDeviceProfileDao extends JpaAbstractDao<DeviceProfileEntity, Dev
return DaoUtil.pageToPageData(
deviceProfileRepository.findDeviceProfileInfos(
tenantId.getId(),
Objects.toString(pageLink.getTextSearch(), ""),
pageLink.getTextSearch(),
DeviceTransportType.valueOf(transportType),
DaoUtil.toPageable(pageLink)));
} else {
return DaoUtil.pageToPageData(
deviceProfileRepository.findDeviceProfileInfos(
tenantId.getId(),
Objects.toString(pageLink.getTextSearch(), ""),
pageLink.getTextSearch(),
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 (:seqIdStart IS NULL OR e.seqId > :seqIdStart) " +
"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,
@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 " +
"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,
@Param("customerId") UUID customerId,
@Param("textSearch") String textSearch,
@ -43,7 +43,7 @@ public interface EdgeRepository extends JpaRepository<EdgeEntity, UUID> {
EdgeInfoEntity findEdgeInfoById(@Param("edgeId") UUID edgeId);
@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,
@Param("textSearch") String textSearch,
Pageable pageable);
@ -52,14 +52,14 @@ public interface EdgeRepository extends JpaRepository<EdgeEntity, UUID> {
"FROM EdgeEntity d " +
"LEFT JOIN CustomerEntity c on c.id = d.customerId " +
"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,
@Param("textSearch") String textSearch,
Pageable pageable);
@Query("SELECT d FROM EdgeEntity d WHERE d.tenantId = :tenantId " +
"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,
@Param("type") String type,
@Param("textSearch") String textSearch,
@ -70,7 +70,7 @@ public interface EdgeRepository extends JpaRepository<EdgeEntity, UUID> {
"LEFT JOIN CustomerEntity c on c.id = d.customerId " +
"WHERE d.tenantId = :tenantId " +
"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,
@Param("type") String type,
@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 " +
"AND d.customerId = :customerId " +
"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,
@Param("customerId") UUID customerId,
@Param("type") String type,
@ -91,7 +91,7 @@ public interface EdgeRepository extends JpaRepository<EdgeEntity, UUID> {
"LEFT JOIN CustomerEntity c on c.id = a.customerId " +
"WHERE a.tenantId = :tenantId " +
"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,
@Param("customerId") UUID customerId,
@Param("searchText") String searchText,
@ -103,7 +103,7 @@ public interface EdgeRepository extends JpaRepository<EdgeEntity, UUID> {
"WHERE a.tenantId = :tenantId " +
"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<EdgeInfoEntity> findEdgeInfosByTenantIdAndCustomerIdAndType(@Param("tenantId") UUID tenantId,
@Param("customerId") UUID customerId,
@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 " +
"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 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,
@Param("entityId") UUID entityId,
@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(
tenantId,
edgeId.getId(),
Objects.toString(pageLink.getTextSearch(), ""),
pageLink.getTextSearch(),
pageLink.getStartTime(),
pageLink.getEndTime(),
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(
edgeRepository.findByTenantId(
tenantId,
Objects.toString(pageLink.getTextSearch(), ""),
pageLink.getTextSearch(),
DaoUtil.toPageable(pageLink)));
}
@ -84,7 +84,7 @@ public class JpaEdgeDao extends JpaAbstractDao<EdgeEntity, Edge> implements Edge
edgeRepository.findByTenantIdAndCustomerId(
tenantId,
customerId,
Objects.toString(pageLink.getTextSearch(), ""),
pageLink.getTextSearch(),
DaoUtil.toPageable(pageLink)));
}
@ -106,7 +106,7 @@ public class JpaEdgeDao extends JpaAbstractDao<EdgeEntity, Edge> implements Edge
edgeRepository.findByTenantIdAndType(
tenantId,
type,
Objects.toString(pageLink.getTextSearch(), ""),
pageLink.getTextSearch(),
DaoUtil.toPageable(pageLink)));
}
@ -117,7 +117,7 @@ public class JpaEdgeDao extends JpaAbstractDao<EdgeEntity, Edge> implements Edge
tenantId,
customerId,
type,
Objects.toString(pageLink.getTextSearch(), ""),
pageLink.getTextSearch(),
DaoUtil.toPageable(pageLink)));
}
@ -127,7 +127,7 @@ public class JpaEdgeDao extends JpaAbstractDao<EdgeEntity, Edge> implements Edge
edgeRepository.findEdgeInfosByTenantIdAndCustomerId(
tenantId,
customerId,
Objects.toString(pageLink.getTextSearch(), ""),
pageLink.getTextSearch(),
DaoUtil.toPageable(pageLink, EdgeInfoEntity.edgeInfoColumnMap)));
}
@ -138,7 +138,7 @@ public class JpaEdgeDao extends JpaAbstractDao<EdgeEntity, Edge> implements Edge
tenantId,
customerId,
type,
Objects.toString(pageLink.getTextSearch(), ""),
pageLink.getTextSearch(),
DaoUtil.toPageable(pageLink, EdgeInfoEntity.edgeInfoColumnMap)));
}
@ -153,7 +153,7 @@ public class JpaEdgeDao extends JpaAbstractDao<EdgeEntity, Edge> implements Edge
edgeRepository.findEdgeInfosByTenantIdAndType(
tenantId,
type,
Objects.toString(pageLink.getTextSearch(), ""),
pageLink.getTextSearch(),
DaoUtil.toPageable(pageLink, EdgeInfoEntity.edgeInfoColumnMap)));
}
@ -162,7 +162,7 @@ public class JpaEdgeDao extends JpaAbstractDao<EdgeEntity, Edge> implements Edge
return DaoUtil.toPageData(
edgeRepository.findEdgeInfosByTenantId(
tenantId,
Objects.toString(pageLink.getTextSearch(), ""),
pageLink.getTextSearch(),
DaoUtil.toPageable(pageLink, EdgeInfoEntity.edgeInfoColumnMap)));
}
@ -180,7 +180,7 @@ public class JpaEdgeDao extends JpaAbstractDao<EdgeEntity, Edge> implements Edge
tenantId,
entityId,
entityType.name(),
Objects.toString(pageLink.getTextSearch(), ""),
pageLink.getTextSearch(),
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);
@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,
@Param("textSearch") String textSearch,
Pageable pageable);
@ -48,14 +48,14 @@ public interface EntityViewRepository extends JpaRepository<EntityViewEntity, UU
"FROM EntityViewEntity e " +
"LEFT JOIN CustomerEntity c on c.id = e.customerId " +
"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,
@Param("textSearch") String textSearch,
Pageable pageable);
@Query("SELECT e FROM EntityViewEntity e WHERE e.tenantId = :tenantId " +
"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,
@Param("type") String type,
@Param("textSearch") String textSearch,
@ -66,7 +66,7 @@ public interface EntityViewRepository extends JpaRepository<EntityViewEntity, UU
"LEFT JOIN CustomerEntity c on c.id = e.customerId " +
"WHERE e.tenantId = :tenantId " +
"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,
@Param("type") String type,
@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 " +
"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,
@Param("customerId") UUID customerId,
@Param("searchText") String searchText,
@ -85,7 +85,7 @@ public interface EntityViewRepository extends JpaRepository<EntityViewEntity, UU
"LEFT JOIN CustomerEntity c on c.id = e.customerId " +
"WHERE e.tenantId = :tenantId " +
"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,
@Param("customerId") UUID customerId,
@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 " +
"AND e.customerId = :customerId " +
"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,
@Param("customerId") UUID customerId,
@Param("type") String type,
@ -107,7 +107,7 @@ public interface EntityViewRepository extends JpaRepository<EntityViewEntity, UU
"WHERE e.tenantId = :tenantId " +
"AND e.customerId = :customerId " +
"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,
@Param("customerId") UUID customerId,
@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 " +
"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 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,
@Param("edgeId") UUID edgeId,
@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 re.relationType = 'Contains' AND re.fromId = :edgeId AND re.fromType = 'EDGE' " +
"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,
@Param("edgeId") UUID edgeId,
@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(
entityViewRepository.findByTenantId(
tenantId,
Objects.toString(pageLink.getTextSearch(), ""),
pageLink.getTextSearch(),
DaoUtil.toPageable(pageLink)));
}
@ -83,7 +83,7 @@ public class JpaEntityViewDao extends JpaAbstractDao<EntityViewEntity, EntityVie
return DaoUtil.toPageData(
entityViewRepository.findEntityViewInfosByTenantId(
tenantId,
Objects.toString(pageLink.getTextSearch(), ""),
pageLink.getTextSearch(),
DaoUtil.toPageable(pageLink, EntityViewInfoEntity.entityViewInfoColumnMap)));
}
@ -93,7 +93,7 @@ public class JpaEntityViewDao extends JpaAbstractDao<EntityViewEntity, EntityVie
entityViewRepository.findByTenantIdAndType(
tenantId,
type,
Objects.toString(pageLink.getTextSearch(), ""),
pageLink.getTextSearch(),
DaoUtil.toPageable(pageLink)));
}
@ -103,7 +103,7 @@ public class JpaEntityViewDao extends JpaAbstractDao<EntityViewEntity, EntityVie
entityViewRepository.findEntityViewInfosByTenantIdAndType(
tenantId,
type,
Objects.toString(pageLink.getTextSearch(), ""),
pageLink.getTextSearch(),
DaoUtil.toPageable(pageLink, EntityViewInfoEntity.entityViewInfoColumnMap)));
}
@ -121,7 +121,7 @@ public class JpaEntityViewDao extends JpaAbstractDao<EntityViewEntity, EntityVie
entityViewRepository.findByTenantIdAndCustomerId(
tenantId,
customerId,
Objects.toString(pageLink.getTextSearch(), ""),
pageLink.getTextSearch(),
DaoUtil.toPageable(pageLink)
));
}
@ -132,7 +132,7 @@ public class JpaEntityViewDao extends JpaAbstractDao<EntityViewEntity, EntityVie
entityViewRepository.findEntityViewInfosByTenantIdAndCustomerId(
tenantId,
customerId,
Objects.toString(pageLink.getTextSearch(), ""),
pageLink.getTextSearch(),
DaoUtil.toPageable(pageLink, EntityViewInfoEntity.entityViewInfoColumnMap)));
}
@ -143,7 +143,7 @@ public class JpaEntityViewDao extends JpaAbstractDao<EntityViewEntity, EntityVie
tenantId,
customerId,
type,
Objects.toString(pageLink.getTextSearch(), ""),
pageLink.getTextSearch(),
DaoUtil.toPageable(pageLink)
));
}
@ -155,7 +155,7 @@ public class JpaEntityViewDao extends JpaAbstractDao<EntityViewEntity, EntityVie
tenantId,
customerId,
type,
Objects.toString(pageLink.getTextSearch(), ""),
pageLink.getTextSearch(),
DaoUtil.toPageable(pageLink, EntityViewInfoEntity.entityViewInfoColumnMap)));
}
@ -182,7 +182,7 @@ public class JpaEntityViewDao extends JpaAbstractDao<EntityViewEntity, EntityVie
.findByTenantIdAndEdgeId(
tenantId,
edgeId,
Objects.toString(pageLink.getTextSearch(), ""),
pageLink.getTextSearch(),
DaoUtil.toPageable(pageLink)));
}
@ -194,7 +194,7 @@ public class JpaEntityViewDao extends JpaAbstractDao<EntityViewEntity, EntityVie
tenantId,
edgeId,
type,
Objects.toString(pageLink.getTextSearch(), ""),
pageLink.getTextSearch(),
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
public PageData<Notification> findUnreadByRecipientIdAndPageLink(TenantId tenantId, UserId recipientId, PageLink pageLink) {
return DaoUtil.toPageData(notificationRepository.findByRecipientIdAndStatusNot(recipientId.getId(), NotificationStatus.READ,
Strings.nullToEmpty(pageLink.getTextSearch()), DaoUtil.toPageable(pageLink)));
pageLink.getTextSearch(), DaoUtil.toPageable(pageLink)));
}
@Override
public PageData<Notification> findByRecipientIdAndPageLink(TenantId tenantId, UserId recipientId, PageLink pageLink) {
return DaoUtil.toPageData(notificationRepository.findByRecipientId(recipientId.getId(),
Strings.nullToEmpty(pageLink.getTextSearch()), DaoUtil.toPageable(pageLink)));
pageLink.getTextSearch(), DaoUtil.toPageable(pageLink)));
}
@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
public PageData<NotificationRequestInfo> findInfosByTenantIdAndOriginatorTypeAndPageLink(TenantId tenantId, EntityType originatorType, PageLink pageLink) {
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"
))))
.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
public PageData<NotificationRule> findByTenantIdAndPageLink(TenantId tenantId, PageLink pageLink) {
return DaoUtil.toPageData(notificationRuleRepository.findByTenantIdAndSearchText(tenantId.getId(),
Strings.nullToEmpty(pageLink.getTextSearch()), DaoUtil.toPageable(pageLink)));
pageLink.getTextSearch(), DaoUtil.toPageable(pageLink)));
}
@Override
public PageData<NotificationRuleInfo> findInfosByTenantIdAndPageLink(TenantId tenantId, PageLink pageLink) {
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"
))))
.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
public PageData<NotificationTarget> findByTenantIdAndPageLink(TenantId tenantId, PageLink pageLink) {
return DaoUtil.toPageData(notificationTargetRepository.findByTenantIdAndSearchText(tenantId.getId(),
Strings.nullToEmpty(pageLink.getTextSearch()), DaoUtil.toPageable(pageLink)));
pageLink.getTextSearch(), DaoUtil.toPageable(pageLink)));
}
@Override
public PageData<NotificationTarget> findByTenantIdAndSupportedNotificationTypeAndPageLink(TenantId tenantId, NotificationType notificationType, PageLink pageLink) {
return DaoUtil.toPageData(notificationTargetRepository.findByTenantIdAndSearchTextAndUsersFilterTypeIfPresent(tenantId.getId(),
Strings.nullToEmpty(pageLink.getTextSearch()),
pageLink.getTextSearch(),
Arrays.stream(UsersFilterType.values())
.filter(type -> notificationType != NotificationType.GENERAL || !type.isForRules())
.map(Enum::name).collect(Collectors.toList()),
@ -68,7 +68,7 @@ public class JpaNotificationTargetDao extends JpaAbstractDao<NotificationTargetE
@Override
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());
}

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

@ -50,7 +50,7 @@ public class JpaNotificationTemplateDao extends JpaAbstractDao<NotificationTempl
@Override
public PageData<NotificationTemplate> findByTenantIdAndNotificationTypesAndPageLink(TenantId tenantId, List<NotificationType> notificationTypes, PageLink pageLink) {
return DaoUtil.toPageData(notificationTemplateRepository.findByTenantIdAndNotificationTypesAndSearchText(tenantId.getId(),
notificationTypes, Strings.nullToEmpty(pageLink.getTextSearch()), DaoUtil.toPageable(pageLink)));
notificationTypes, pageLink.getTextSearch(), DaoUtil.toPageable(pageLink)));
}
@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> {
@Query("SELECT n FROM NotificationEntity n WHERE n.recipientId = :recipientId AND n.status <> :status " +
"AND (:searchText = '' OR lower(n.subject) LIKE lower(concat('%', :searchText, '%')) " +
"OR lower(n.text) LIKE lower(concat('%', :searchText, '%')))")
"AND (:searchText is NULL OR ilike(n.subject, concat('%', :searchText, '%')) = true " +
"OR ilike(n.text, concat('%', :searchText, '%')) = true)")
Page<NotificationEntity> findByRecipientIdAndStatusNot(@Param("recipientId") UUID recipientId,
@Param("status") NotificationStatus status,
@Param("searchText") String searchText,
Pageable pageable);
@Query("SELECT n FROM NotificationEntity n WHERE n.recipientId = :recipientId " +
"AND (:searchText = '' OR lower(n.subject) LIKE lower(concat('%', :searchText, '%')) " +
"OR lower(n.text) LIKE lower(concat('%', :searchText, '%')))")
"AND (:searchText is NULL OR ilike(n.subject, concat('%', :searchText, '%')) = true " +
"OR ilike(n.text, concat('%', :searchText, '%')) = true)")
Page<NotificationEntity> findByRecipientId(@Param("recipientId") UUID recipientId,
@Param("searchText") String searchText,
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);
@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,
@Param("originatorType") EntityType originatorType,
@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";
@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,
@Param("searchText") String searchText,
Pageable pageable);
@ -53,7 +53,7 @@ public interface NotificationRuleRepository extends JpaRepository<NotificationRu
@Query(RULE_INFO_QUERY + " WHERE r.id = :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,
@Param("searchText") String searchText,
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> {
@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,
@Param("searchText") String searchText,
Pageable pageable);
@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 " +
"cast(t.configuration as json) -> 'usersFilter' ->> 'type' IN :usersFilterTypes)", nativeQuery = true)
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 " +
"t.notificationType IN :notificationTypes " +
"AND (:searchText = '' OR lower(t.name) LIKE lower(concat('%', :searchText, '%')) " +
"OR lower(t.notificationType) LIKE lower(concat('%', :searchText, '%')))")
"AND (:searchText is NULL OR ilike(t.name, concat('%', :searchText, '%')) = true " +
"OR ilike(t.notificationType, concat('%', :searchText, '%')) = true)")
Page<NotificationTemplateEntity> findByTenantIdAndNotificationTypesAndSearchText(@Param("tenantId") UUID tenantId,
@Param("notificationTypes") List<NotificationType> notificationTypes,
@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
.findAllByTenantId(
tenantId.getId(),
Objects.toString(pageLink.getTextSearch(), ""),
pageLink.getTextSearch(),
DaoUtil.toPageable(pageLink)));
}
@ -84,7 +84,7 @@ public class JpaOtaPackageInfoDao extends JpaAbstractDao<OtaPackageInfoEntity, O
tenantId.getId(),
deviceProfileId.getId(),
otaPackageType,
Objects.toString(pageLink.getTextSearch(), ""),
pageLink.getTextSearch(),
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> {
@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 " +
"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,
@Param("searchText") String searchText,
Pageable pageable);
@ -38,7 +38,7 @@ public interface OtaPackageInfoRepository extends JpaRepository<OtaPackageInfoEn
"AND f.deviceProfileId = :deviceProfileId " +
"AND f.type = :type " +
"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,
@Param("deviceProfileId") UUID deviceProfileId,
@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 -> {
String paramName = mapping + "_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());
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) {
if (!StringUtils.isEmpty(searchText) && !selectionMapping.isEmpty()) {
String lowerSearchText = "%" + searchText.toLowerCase() + "%";
ctx.addStringParameter("lowerSearchTextParam", lowerSearchText);
String sqlSearchText = "%" + searchText + "%";
ctx.addStringParameter("lowerSearchTextParam", sqlSearchText);
List<String> searchAliases = selectionMapping.stream().filter(EntityKeyMapping::isSearchable).map(EntityKeyMapping::getValueAlias).collect(Collectors.toList());
String searchAliasesExpression;
if (searchAliases.size() > 1) {
@ -810,7 +810,7 @@ public class DefaultEntityQueryRepository implements EntityQueryRepository {
} else {
searchAliasesExpression = searchAliases.get(0);
}
return String.format(" WHERE LOWER(%s) LIKE :%s", searchAliasesExpression, "lowerSearchTextParam");
return String.format(" WHERE %s ILIKE :%s", searchAliasesExpression, "lowerSearchTextParam");
} else {
return "";
}
@ -830,10 +830,10 @@ public class DefaultEntityQueryRepository implements EntityQueryRepository {
ctx.addStringParameter("entity_filter_name_filter", filter.getEntityNameFilter());
String nameColumn = getNameColumn(filter.getEntityType());
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) {
@ -869,9 +869,9 @@ public class DefaultEntityQueryRepository implements EntityQueryRepository {
if (!StringUtils.isEmpty(name)) {
ctx.addStringParameter("entity_filter_type_query_name", name);
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 {
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
public PageData<Queue> findQueuesByTenantId(TenantId tenantId, PageLink pageLink) {
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);
@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,
@Param("textSearch") String textSearch,
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.SYS_TENANT_ID.getId(),
resourceType.name(),
Objects.toString(pageLink.getTextSearch(), ""),
pageLink.getTextSearch(),
DaoUtil.toPageable(pageLink)
));
}
@ -88,7 +88,7 @@ public class JpaTbResourceDao extends JpaAbstractDao<TbResourceEntity, TbResourc
tenantId.getId(),
TenantId.SYS_TENANT_ID.getId(),
resourceType.name(),
Objects.toString(searchText, ""))) :
searchText)) :
DaoUtil.convertDataList(resourceRepository.findResourcesByIds(
tenantId.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(
filter.getTenantId().getId(),
resourceType == null ? null : resourceType.name(),
Objects.toString(pageLink.getTextSearch(), ""),
pageLink.getTextSearch(),
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> {
@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 " +
"OR (tr.tenantId = :systemAdminId " +
"AND NOT EXISTS " +
@ -45,7 +45,7 @@ public interface TbResourceInfoRepository extends JpaRepository<TbResourceInfoEn
@Query("SELECT ri FROM TbResourceInfoEntity ri WHERE " +
"ri.tenantId = :tenantId " +
"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,
@Param("resourceType") String resourceType,
@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 " +
"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 " +
"OR (tr.tenantId = :systemAdminId " +
"AND NOT EXISTS " +
@ -50,7 +50,7 @@ public interface TbResourceRepository extends JpaRepository<TbResourceEntity, UU
@Query("SELECT tr FROM TbResourceEntity tr " +
"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 " +
"OR (tr.tenantId = :systemAdminId " +
"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
.findByTenantId(
tenantId,
Objects.toString(pageLink.getTextSearch(), ""),
pageLink.getTextSearch(),
DaoUtil.toPageable(pageLink)));
}
@ -72,7 +72,7 @@ public class JpaRuleChainDao extends JpaAbstractDao<RuleChainEntity, RuleChain>
.findByTenantIdAndType(
tenantId,
type,
Objects.toString(pageLink.getTextSearch(), ""),
pageLink.getTextSearch(),
DaoUtil.toPageable(pageLink)));
}
@ -89,7 +89,7 @@ public class JpaRuleChainDao extends JpaAbstractDao<RuleChainEntity, RuleChain>
.findByTenantIdAndEdgeId(
tenantId,
edgeId,
Objects.toString(pageLink.getTextSearch(), ""),
pageLink.getTextSearch(),
DaoUtil.toPageable(pageLink)));
}
@ -99,7 +99,7 @@ public class JpaRuleChainDao extends JpaAbstractDao<RuleChainEntity, RuleChain>
return DaoUtil.toPageData(ruleChainRepository
.findAutoAssignByTenantId(
tenantId,
Objects.toString(pageLink.getTextSearch(), ""),
pageLink.getTextSearch(),
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> {
@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,
@Param("searchText") String searchText,
Pageable pageable);
@Query("SELECT rc FROM RuleChainEntity rc WHERE rc.tenantId = :tenantId " +
"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,
@Param("type") RuleChainType type,
@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 " +
"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 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,
@Param("edgeId") UUID edgeId,
@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 " +
"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 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,
@Param("searchText") String searchText,
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) {
return DaoUtil.toPageData(tenantRepository
.findTenantsNextPage(
Objects.toString(pageLink.getTextSearch(), ""),
pageLink.getTextSearch(),
DaoUtil.toPageable(pageLink)));
}
@ -75,7 +75,7 @@ public class JpaTenantDao extends JpaAbstractDao<TenantEntity, Tenant> implement
public PageData<TenantInfo> findTenantInfos(TenantId tenantId, PageLink pageLink) {
return DaoUtil.toPageData(tenantRepository
.findTenantInfosNextPage(
Objects.toString(pageLink.getTextSearch(), ""),
pageLink.getTextSearch(),
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) {
return DaoUtil.toPageData(
tenantProfileRepository.findTenantProfiles(
Objects.toString(pageLink.getTextSearch(), ""),
pageLink.getTextSearch(),
DaoUtil.toPageable(pageLink)));
}
@ -68,7 +68,7 @@ public class JpaTenantProfileDao extends JpaAbstractDao<TenantProfileEntity, Ten
public PageData<EntityInfo> findTenantProfileInfos(TenantId tenantId, PageLink pageLink) {
return DaoUtil.pageToPageData(
tenantProfileRepository.findTenantProfileInfos(
Objects.toString(pageLink.getTextSearch(), ""),
pageLink.getTextSearch(),
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);
@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,
Pageable pageable);
@Query("SELECT new org.thingsboard.server.common.data.EntityInfo(t.id, 'TENANT_PROFILE', t.name) " +
"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,
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")
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,
Pageable pageable);
@Query("SELECT new org.thingsboard.server.dao.model.sql.TenantInfoEntity(t, p.name) " +
"FROM TenantEntity t " +
"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,
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
.findByTenantId(
tenantId,
Objects.toString(pageLink.getTextSearch(), ""),
pageLink.getTextSearch(),
DaoUtil.toPageable(pageLink)));
}
@ -85,7 +85,7 @@ public class JpaUserDao extends JpaAbstractDao<UserEntity, User> implements User
.findUsersByAuthority(
tenantId,
NULL_UUID,
Objects.toString(pageLink.getTextSearch(), ""),
pageLink.getTextSearch(),
Authority.TENANT_ADMIN,
DaoUtil.toPageable(pageLink)));
}
@ -97,7 +97,7 @@ public class JpaUserDao extends JpaAbstractDao<UserEntity, User> implements User
.findUsersByAuthority(
tenantId,
customerId,
Objects.toString(pageLink.getTextSearch(), ""),
pageLink.getTextSearch(),
Authority.CUSTOMER_USER,
DaoUtil.toPageable(pageLink)));
@ -110,7 +110,7 @@ public class JpaUserDao extends JpaAbstractDao<UserEntity, User> implements User
.findTenantAndCustomerUsers(
tenantId,
DaoUtil.toUUIDs(customerIds),
Objects.toString(pageLink.getTextSearch(), ""),
pageLink.getTextSearch(),
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 " +
"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,
@Param("customerId") UUID customerId,
@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 " +
"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,
@Param("customerIds") Collection<UUID> customerIds,
@Param("searchText") String searchText,
Pageable pageable);
@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,
@Param("searchText") String searchText,
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
.findSystemWidgetTypes(
NULL_UUID,
Objects.toString(pageLink.getTextSearch(), ""),
pageLink.getTextSearch(),
fullSearch,
deprecatedFilterEnabled,
deprecatedFilterBool,
@ -111,7 +111,7 @@ public class JpaWidgetTypeDao extends JpaAbstractDao<WidgetTypeDetailsEntity, Wi
.findAllTenantWidgetTypesByTenantId(
tenantId,
NULL_UUID,
Objects.toString(pageLink.getTextSearch(), ""),
pageLink.getTextSearch(),
fullSearch,
deprecatedFilterEnabled,
deprecatedFilterBool,
@ -129,7 +129,7 @@ public class JpaWidgetTypeDao extends JpaAbstractDao<WidgetTypeDetailsEntity, Wi
widgetTypeInfoRepository
.findTenantWidgetTypesByTenantId(
tenantId,
Objects.toString(pageLink.getTextSearch(), ""),
pageLink.getTextSearch(),
fullSearch,
deprecatedFilterEnabled,
deprecatedFilterBool,
@ -200,7 +200,7 @@ public class JpaWidgetTypeDao extends JpaAbstractDao<WidgetTypeDetailsEntity, Wi
widgetTypeRepository
.findTenantWidgetTypeDetailsByTenantId(
tenantId,
Objects.toString(pageLink.getTextSearch(), ""),
pageLink.getTextSearch(),
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
.findSystemWidgetsBundlesFullSearch(
NULL_UUID,
Objects.toString(pageLink.getTextSearch(), ""),
pageLink.getTextSearch(),
DaoUtil.toPageable(pageLink)));
} else {
return DaoUtil.toPageData(
widgetsBundleRepository
.findSystemWidgetsBundles(
NULL_UUID,
Objects.toString(pageLink.getTextSearch(), ""),
pageLink.getTextSearch(),
DaoUtil.toPageable(pageLink)));
}
}
@ -86,7 +86,7 @@ public class JpaWidgetsBundleDao extends JpaAbstractDao<WidgetsBundleEntity, Wid
widgetsBundleRepository
.findTenantWidgetsBundlesByTenantId(
tenantId,
Objects.toString(pageLink.getTextSearch(), ""),
pageLink.getTextSearch(),
DaoUtil.toPageable(pageLink)));
}
@ -98,7 +98,7 @@ public class JpaWidgetsBundleDao extends JpaAbstractDao<WidgetsBundleEntity, Wid
.findAllTenantWidgetsBundlesByTenantIdFullSearch(
tenantId,
NULL_UUID,
Objects.toString(pageLink.getTextSearch(), ""),
pageLink.getTextSearch(),
DaoUtil.toPageable(pageLink)));
} else {
return DaoUtil.toPageData(
@ -106,7 +106,7 @@ public class JpaWidgetsBundleDao extends JpaAbstractDao<WidgetsBundleEntity, Wid
.findAllTenantWidgetsBundlesByTenantId(
tenantId,
NULL_UUID,
Objects.toString(pageLink.getTextSearch(), ""),
pageLink.getTextSearch(),
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);
@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,
@Param("textSearch") String textSearch,
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);
@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,
@Param("textSearch") String textSearch,
Pageable pageable);
@ -61,13 +61,13 @@ public interface WidgetsBundleRepository extends JpaRepository<WidgetsBundleEnti
Pageable pageable);
@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,
@Param("textSearch") String textSearch,
Pageable pageable);
@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,
@Param("nullTenantId") UUID nullTenantId,
@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.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