Browse Source

Refactoring from UUIDs to Strings in SQL DAO to support ordering

pull/204/head
Andrew Shvayka 9 years ago
parent
commit
320aee18bf
  1. 2
      application/src/main/resources/thingsboard.yml
  2. 5
      common/data/pom.xml
  3. 49
      common/data/src/main/java/org/thingsboard/server/common/data/UUIDConverter.java
  4. 6
      common/data/src/main/java/org/thingsboard/server/common/data/asset/TenantAssetType.java
  5. 76
      common/data/src/test/java/org/thingsboard/server/common/data/UUIDConverterTest.java
  6. 1
      dao/src/main/java/org/thingsboard/server/dao/alarm/BaseAlarmService.java
  7. 4
      dao/src/main/java/org/thingsboard/server/dao/alarm/CassandraAlarmDao.java
  8. 1
      dao/src/main/java/org/thingsboard/server/dao/asset/AssetDao.java
  9. 2
      dao/src/main/java/org/thingsboard/server/dao/asset/AssetSearchQuery.java
  10. 2
      dao/src/main/java/org/thingsboard/server/dao/asset/BaseAssetService.java
  11. 4
      dao/src/main/java/org/thingsboard/server/dao/asset/CassandraAssetDao.java
  12. 2
      dao/src/main/java/org/thingsboard/server/dao/attributes/BaseAttributesService.java
  13. 4
      dao/src/main/java/org/thingsboard/server/dao/attributes/CassandraBaseAttributesDao.java
  14. 3
      dao/src/main/java/org/thingsboard/server/dao/cassandra/CassandraCluster.java
  15. 4
      dao/src/main/java/org/thingsboard/server/dao/component/CassandraBaseComponentDescriptorDao.java
  16. 4
      dao/src/main/java/org/thingsboard/server/dao/customer/CassandraCustomerDao.java
  17. 2
      dao/src/main/java/org/thingsboard/server/dao/customer/CustomerDao.java
  18. 12
      dao/src/main/java/org/thingsboard/server/dao/customer/CustomerServiceImpl.java
  19. 2
      dao/src/main/java/org/thingsboard/server/dao/dashboard/CassandraDashboardDao.java
  20. 4
      dao/src/main/java/org/thingsboard/server/dao/dashboard/CassandraDashboardInfoDao.java
  21. 4
      dao/src/main/java/org/thingsboard/server/dao/device/CassandraDeviceCredentialsDao.java
  22. 4
      dao/src/main/java/org/thingsboard/server/dao/device/CassandraDeviceDao.java
  23. 1
      dao/src/main/java/org/thingsboard/server/dao/device/DeviceDao.java
  24. 2
      dao/src/main/java/org/thingsboard/server/dao/entity/BaseEntityService.java
  25. 4
      dao/src/main/java/org/thingsboard/server/dao/event/CassandraBaseEventDao.java
  26. 57
      dao/src/main/java/org/thingsboard/server/dao/model/BaseSqlEntity.java
  27. 6
      dao/src/main/java/org/thingsboard/server/dao/model/ModelConstants.java
  28. 20
      dao/src/main/java/org/thingsboard/server/dao/model/nosql/AdminSettingsEntity.java
  29. 15
      dao/src/main/java/org/thingsboard/server/dao/model/nosql/CustomerEntity.java
  30. 15
      dao/src/main/java/org/thingsboard/server/dao/model/nosql/DashboardEntity.java
  31. 13
      dao/src/main/java/org/thingsboard/server/dao/model/nosql/DashboardInfoEntity.java
  32. 13
      dao/src/main/java/org/thingsboard/server/dao/model/nosql/DeviceCredentialsEntity.java
  33. 4
      dao/src/main/java/org/thingsboard/server/dao/model/nosql/DeviceEntity.java
  34. 4
      dao/src/main/java/org/thingsboard/server/dao/model/nosql/PluginMetaDataEntity.java
  35. 4
      dao/src/main/java/org/thingsboard/server/dao/model/nosql/RuleMetaDataEntity.java
  36. 14
      dao/src/main/java/org/thingsboard/server/dao/model/nosql/TenantEntity.java
  37. 12
      dao/src/main/java/org/thingsboard/server/dao/model/nosql/UserCredentialsEntity.java
  38. 16
      dao/src/main/java/org/thingsboard/server/dao/model/nosql/UserEntity.java
  39. 3
      dao/src/main/java/org/thingsboard/server/dao/model/nosql/WidgetTypeEntity.java
  40. 3
      dao/src/main/java/org/thingsboard/server/dao/model/nosql/WidgetsBundleEntity.java
  41. 32
      dao/src/main/java/org/thingsboard/server/dao/model/sql/AdminSettingsEntity.java
  42. 29
      dao/src/main/java/org/thingsboard/server/dao/model/sql/AlarmEntity.java
  43. 34
      dao/src/main/java/org/thingsboard/server/dao/model/sql/AssetEntity.java
  44. 3
      dao/src/main/java/org/thingsboard/server/dao/model/sql/AttributeKvCompositeKey.java
  45. 3
      dao/src/main/java/org/thingsboard/server/dao/model/sql/AttributeKvEntity.java
  46. 24
      dao/src/main/java/org/thingsboard/server/dao/model/sql/ComponentDescriptorEntity.java
  47. 38
      dao/src/main/java/org/thingsboard/server/dao/model/sql/CustomerEntity.java
  48. 33
      dao/src/main/java/org/thingsboard/server/dao/model/sql/DashboardEntity.java
  49. 33
      dao/src/main/java/org/thingsboard/server/dao/model/sql/DashboardInfoEntity.java
  50. 27
      dao/src/main/java/org/thingsboard/server/dao/model/sql/DeviceCredentialsEntity.java
  51. 37
      dao/src/main/java/org/thingsboard/server/dao/model/sql/DeviceEntity.java
  52. 57
      dao/src/main/java/org/thingsboard/server/dao/model/sql/EventEntity.java
  53. 34
      dao/src/main/java/org/thingsboard/server/dao/model/sql/PluginMetaDataEntity.java
  54. 10
      dao/src/main/java/org/thingsboard/server/dao/model/sql/RelationCompositeKey.java
  55. 14
      dao/src/main/java/org/thingsboard/server/dao/model/sql/RelationEntity.java
  56. 31
      dao/src/main/java/org/thingsboard/server/dao/model/sql/RuleMetaDataEntity.java
  57. 4
      dao/src/main/java/org/thingsboard/server/dao/model/sql/TenantDeviceTypeEntity.java
  58. 23
      dao/src/main/java/org/thingsboard/server/dao/model/sql/TenantEntity.java
  59. 5
      dao/src/main/java/org/thingsboard/server/dao/model/sql/TsKvCompositeKey.java
  60. 3
      dao/src/main/java/org/thingsboard/server/dao/model/sql/TsKvEntity.java
  61. 7
      dao/src/main/java/org/thingsboard/server/dao/model/sql/TsKvLatestCompositeKey.java
  62. 5
      dao/src/main/java/org/thingsboard/server/dao/model/sql/TsKvLatestEntity.java
  63. 36
      dao/src/main/java/org/thingsboard/server/dao/model/sql/UserCredentialsEntity.java
  64. 43
      dao/src/main/java/org/thingsboard/server/dao/model/sql/UserEntity.java
  65. 37
      dao/src/main/java/org/thingsboard/server/dao/model/sql/WidgetTypeEntity.java
  66. 38
      dao/src/main/java/org/thingsboard/server/dao/model/sql/WidgetsBundleEntity.java
  67. 2
      dao/src/main/java/org/thingsboard/server/dao/model/type/AlarmSeverityCodec.java
  68. 3
      dao/src/main/java/org/thingsboard/server/dao/model/type/AuthorityCodec.java
  69. 1
      dao/src/main/java/org/thingsboard/server/dao/model/type/ComponentLifecycleStateCodec.java
  70. 1
      dao/src/main/java/org/thingsboard/server/dao/model/type/ComponentScopeCodec.java
  71. 1
      dao/src/main/java/org/thingsboard/server/dao/model/type/ComponentTypeCodec.java
  72. 3
      dao/src/main/java/org/thingsboard/server/dao/model/type/DeviceCredentialsTypeCodec.java
  73. 1
      dao/src/main/java/org/thingsboard/server/dao/model/type/EntityTypeCodec.java
  74. 3
      dao/src/main/java/org/thingsboard/server/dao/model/type/RelationTypeGroupCodec.java
  75. 4
      dao/src/main/java/org/thingsboard/server/dao/plugin/CassandraBasePluginDao.java
  76. 4
      dao/src/main/java/org/thingsboard/server/dao/relation/BaseRelationDao.java
  77. 4
      dao/src/main/java/org/thingsboard/server/dao/rule/CassandraBaseRuleDao.java
  78. 4
      dao/src/main/java/org/thingsboard/server/dao/settings/CassandraAdminSettingsDao.java
  79. 11
      dao/src/main/java/org/thingsboard/server/dao/sql/JpaAbstractDao.java
  80. 14
      dao/src/main/java/org/thingsboard/server/dao/sql/JpaAbstractSearchTimeDao.java
  81. 9
      dao/src/main/java/org/thingsboard/server/dao/sql/alarm/AlarmRepository.java
  82. 12
      dao/src/main/java/org/thingsboard/server/dao/sql/alarm/JpaAlarmDao.java
  83. 29
      dao/src/main/java/org/thingsboard/server/dao/sql/asset/AssetRepository.java
  84. 34
      dao/src/main/java/org/thingsboard/server/dao/sql/asset/JpaAssetDao.java
  85. 5
      dao/src/main/java/org/thingsboard/server/dao/sql/attributes/AttributeKvRepository.java
  86. 31
      dao/src/main/java/org/thingsboard/server/dao/sql/attributes/JpaAttributeDao.java
  87. 8
      dao/src/main/java/org/thingsboard/server/dao/sql/component/ComponentDescriptorRepository.java
  88. 15
      dao/src/main/java/org/thingsboard/server/dao/sql/component/JpaBaseComponentDescriptorDao.java
  89. 11
      dao/src/main/java/org/thingsboard/server/dao/sql/customer/CustomerRepository.java
  90. 13
      dao/src/main/java/org/thingsboard/server/dao/sql/customer/JpaCustomerDao.java
  91. 14
      dao/src/main/java/org/thingsboard/server/dao/sql/dashboard/DashboardInfoRepository.java
  92. 6
      dao/src/main/java/org/thingsboard/server/dao/sql/dashboard/DashboardRepository.java
  93. 6
      dao/src/main/java/org/thingsboard/server/dao/sql/dashboard/JpaDashboardDao.java
  94. 15
      dao/src/main/java/org/thingsboard/server/dao/sql/dashboard/JpaDashboardInfoDao.java
  95. 8
      dao/src/main/java/org/thingsboard/server/dao/sql/device/DeviceCredentialsRepository.java
  96. 31
      dao/src/main/java/org/thingsboard/server/dao/sql/device/DeviceRepository.java
  97. 7
      dao/src/main/java/org/thingsboard/server/dao/sql/device/JpaDeviceCredentialsDao.java
  98. 37
      dao/src/main/java/org/thingsboard/server/dao/sql/device/JpaDeviceDao.java
  99. 12
      dao/src/main/java/org/thingsboard/server/dao/sql/event/EventRepository.java
  100. 13
      dao/src/main/java/org/thingsboard/server/dao/sql/event/JpaBaseEventDao.java

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

@ -106,7 +106,7 @@ coap:
timeout: "${COAP_TIMEOUT:10000}"
database:
type: "${DATABASE_TYPE:cassandra}" # cassandra OR sql
type: "${DATABASE_TYPE:sql}" # cassandra OR sql
# Cassandra driver configuration parameters
cassandra:

5
common/data/pom.xml

@ -66,6 +66,11 @@
<artifactId>mockito-all</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.datastax.cassandra</groupId>
<artifactId>cassandra-driver-core</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>

49
common/data/src/main/java/org/thingsboard/server/common/data/UUIDConverter.java

@ -0,0 +1,49 @@
/**
* Copyright © 2016-2017 The Thingsboard Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.thingsboard.server.common.data;
import java.util.List;
import java.util.UUID;
import java.util.stream.Collectors;
/**
* Created by ashvayka on 13.07.17.
*/
public class UUIDConverter {
public static UUID fromString(String src) {
return UUID.fromString(src.substring(7, 15) + "-" + src.substring(3, 7) + "-1"
+ src.substring(0, 3) + "-" + src.substring(15, 19) + "-" + src.substring(19));
}
public static String fromTimeUUID(UUID src) {
if (src.version() != 1) {
throw new IllegalArgumentException("Not a time UUID!");
}
String str = src.toString();
// 58e0a7d7-eebc-11d8-9669-0800200c9a66 => 1d8eebc58e0a7d796690800200c9a66. Note that [11d8] -> [1d8]
return str.substring(15, 18) + str.substring(9, 13) + str.substring(0, 8) + str.substring(19, 23) + str.substring(24);
}
public static List<String> fromTimeUUIDs(List<UUID> uuids) {
if (uuids == null) {
return null;
}
return uuids.stream().map(UUIDConverter::fromTimeUUID).collect(Collectors.toList());
}
}

6
common/data/src/main/java/org/thingsboard/server/common/data/asset/TenantAssetType.java

@ -15,6 +15,7 @@
*/
package org.thingsboard.server.common.data.asset;
import org.thingsboard.server.common.data.UUIDConverter;
import org.thingsboard.server.common.data.id.TenantId;
import java.util.UUID;
@ -40,6 +41,11 @@ public class TenantAssetType {
this.tenantId = new TenantId(tenantId);
}
public TenantAssetType(String type, String tenantId) {
this.type = type;
this.tenantId = new TenantId(UUIDConverter.fromString(tenantId));
}
public String getType() {
return type;
}

76
common/data/src/test/java/org/thingsboard/server/common/data/UUIDConverterTest.java

@ -0,0 +1,76 @@
/**
* Copyright © 2016-2017 The Thingsboard Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.thingsboard.server.common.data;
import com.datastax.driver.core.utils.UUIDs;
import org.junit.Assert;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.runners.MockitoJUnitRunner;
import java.util.Random;
import java.util.UUID;
/**
* Created by ashvayka on 14.07.17.
*/
@RunWith(MockitoJUnitRunner.class)
public class UUIDConverterTest {
@Test
public void basicUuidToStringTest() {
UUID original = UUID.fromString("58e0a7d7-eebc-11d8-9669-0800200c9a66");
String result = UUIDConverter.fromTimeUUID(original);
Assert.assertEquals("1d8eebc58e0a7d796690800200c9a66", result);
}
@Test
public void basicStringToUUIDTest() {
UUID result = UUIDConverter.fromString("1d8eebc58e0a7d796690800200c9a66");
Assert.assertEquals(UUID.fromString("58e0a7d7-eebc-11d8-9669-0800200c9a66"), result);
}
@Test(expected = IllegalArgumentException.class)
public void nonV1UuidToStringTest() {
UUIDConverter.fromTimeUUID(UUID.fromString("58e0a7d7-eebc-01d8-9669-0800200c9a66"));
}
@Test
public void basicUuidComperisonTest() {
Random r = new Random(System.currentTimeMillis());
for (int i = 0; i < 100000; i++) {
long ts = System.currentTimeMillis() + 1000 * 60 * 60 * 24 * 365 * 10;
long before = (long) (Math.random() * ts);
long after = (long) (Math.random() * ts);
if (before > after) {
long tmp = after;
after = before;
before = tmp;
}
String beforeStr = UUIDConverter.fromTimeUUID(UUIDs.startOf(before));
String afterStr = UUIDConverter.fromTimeUUID(UUIDs.startOf(after));
if (afterStr.compareTo(beforeStr) < 0) {
System.out.println("Before: " + before + " | " + beforeStr);
System.out.println("After: " + after + " | " + afterStr);
}
Assert.assertTrue(afterStr.compareTo(beforeStr) >= 0);
}
}
}

1
dao/src/main/java/org/thingsboard/server/dao/alarm/BaseAlarmService.java

@ -47,7 +47,6 @@ import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;
import java.util.ArrayList;
import java.util.List;
import java.util.UUID;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;

4
dao/src/main/java/org/thingsboard/server/dao/alarm/CassandraAlarmDao.java

@ -33,11 +33,11 @@ import org.thingsboard.server.common.data.id.EntityId;
import org.thingsboard.server.common.data.id.TenantId;
import org.thingsboard.server.common.data.relation.EntityRelation;
import org.thingsboard.server.common.data.relation.RelationTypeGroup;
import org.thingsboard.server.dao.nosql.CassandraAbstractModelDao;
import org.thingsboard.server.dao.util.NoSqlDao;
import org.thingsboard.server.dao.model.ModelConstants;
import org.thingsboard.server.dao.model.nosql.AlarmEntity;
import org.thingsboard.server.dao.nosql.CassandraAbstractModelDao;
import org.thingsboard.server.dao.relation.RelationDao;
import org.thingsboard.server.dao.util.NoSqlDao;
import java.util.ArrayList;
import java.util.List;

1
dao/src/main/java/org/thingsboard/server/dao/asset/AssetDao.java

@ -20,7 +20,6 @@ import org.thingsboard.server.common.data.asset.Asset;
import org.thingsboard.server.common.data.asset.TenantAssetType;
import org.thingsboard.server.common.data.page.TextPageLink;
import org.thingsboard.server.dao.Dao;
import org.thingsboard.server.dao.model.TenantAssetTypeEntity;
import java.util.List;
import java.util.Optional;

2
dao/src/main/java/org/thingsboard/server/dao/asset/AssetSearchQuery.java

@ -18,9 +18,9 @@ package org.thingsboard.server.dao.asset;
import lombok.Data;
import org.thingsboard.server.common.data.EntityType;
import org.thingsboard.server.common.data.relation.EntityRelation;
import org.thingsboard.server.dao.relation.RelationsSearchParameters;
import org.thingsboard.server.dao.relation.EntityRelationsQuery;
import org.thingsboard.server.dao.relation.EntityTypeFilter;
import org.thingsboard.server.dao.relation.RelationsSearchParameters;
import javax.annotation.Nullable;
import java.util.Collections;

2
dao/src/main/java/org/thingsboard/server/dao/asset/BaseAssetService.java

@ -51,7 +51,7 @@ import java.util.List;
import java.util.Optional;
import java.util.stream.Collectors;
import static org.thingsboard.server.dao.DaoUtil.*;
import static org.thingsboard.server.dao.DaoUtil.toUUIDs;
import static org.thingsboard.server.dao.model.ModelConstants.NULL_UUID;
import static org.thingsboard.server.dao.service.Validator.*;

4
dao/src/main/java/org/thingsboard/server/dao/asset/CassandraAssetDao.java

@ -27,11 +27,11 @@ import org.springframework.stereotype.Component;
import org.thingsboard.server.common.data.asset.Asset;
import org.thingsboard.server.common.data.asset.TenantAssetType;
import org.thingsboard.server.common.data.page.TextPageLink;
import org.thingsboard.server.dao.nosql.CassandraAbstractSearchTextDao;
import org.thingsboard.server.dao.DaoUtil;
import org.thingsboard.server.dao.util.NoSqlDao;
import org.thingsboard.server.dao.model.TenantAssetTypeEntity;
import org.thingsboard.server.dao.model.nosql.AssetEntity;
import org.thingsboard.server.dao.nosql.CassandraAbstractSearchTextDao;
import org.thingsboard.server.dao.util.NoSqlDao;
import javax.annotation.Nullable;
import java.util.*;

2
dao/src/main/java/org/thingsboard/server/dao/attributes/BaseAttributesService.java

@ -15,8 +15,6 @@
*/
package org.thingsboard.server.dao.attributes;
import com.datastax.driver.core.ResultSet;
import com.datastax.driver.core.ResultSetFuture;
import com.google.common.collect.Lists;
import com.google.common.util.concurrent.Futures;
import com.google.common.util.concurrent.ListenableFuture;

4
dao/src/main/java/org/thingsboard/server/dao/attributes/CassandraBaseAttributesDao.java

@ -26,10 +26,10 @@ import org.springframework.stereotype.Component;
import org.thingsboard.server.common.data.id.EntityId;
import org.thingsboard.server.common.data.kv.AttributeKvEntry;
import org.thingsboard.server.common.data.kv.BaseAttributeKvEntry;
import org.thingsboard.server.dao.nosql.CassandraAbstractAsyncDao;
import org.thingsboard.server.dao.util.NoSqlDao;
import org.thingsboard.server.dao.model.ModelConstants;
import org.thingsboard.server.dao.nosql.CassandraAbstractAsyncDao;
import org.thingsboard.server.dao.timeseries.CassandraBaseTimeseriesDao;
import org.thingsboard.server.dao.util.NoSqlDao;
import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;

3
dao/src/main/java/org/thingsboard/server/dao/cassandra/CassandraCluster.java

@ -17,9 +17,10 @@ package org.thingsboard.server.dao.cassandra;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import javax.annotation.PostConstruct;
import org.thingsboard.server.dao.util.NoSqlDao;
import javax.annotation.PostConstruct;
@Component
@NoSqlDao
public class CassandraCluster extends AbstractCassandraCluster {

4
dao/src/main/java/org/thingsboard/server/dao/component/CassandraBaseComponentDescriptorDao.java

@ -27,11 +27,11 @@ import org.thingsboard.server.common.data.page.TextPageLink;
import org.thingsboard.server.common.data.plugin.ComponentDescriptor;
import org.thingsboard.server.common.data.plugin.ComponentScope;
import org.thingsboard.server.common.data.plugin.ComponentType;
import org.thingsboard.server.dao.nosql.CassandraAbstractSearchTextDao;
import org.thingsboard.server.dao.DaoUtil;
import org.thingsboard.server.dao.util.NoSqlDao;
import org.thingsboard.server.dao.model.ModelConstants;
import org.thingsboard.server.dao.model.nosql.ComponentDescriptorEntity;
import org.thingsboard.server.dao.nosql.CassandraAbstractSearchTextDao;
import org.thingsboard.server.dao.util.NoSqlDao;
import java.util.Arrays;
import java.util.List;

4
dao/src/main/java/org/thingsboard/server/dao/customer/CassandraCustomerDao.java

@ -20,11 +20,11 @@ import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
import org.thingsboard.server.common.data.Customer;
import org.thingsboard.server.common.data.page.TextPageLink;
import org.thingsboard.server.dao.nosql.CassandraAbstractSearchTextDao;
import org.thingsboard.server.dao.DaoUtil;
import org.thingsboard.server.dao.util.NoSqlDao;
import org.thingsboard.server.dao.model.ModelConstants;
import org.thingsboard.server.dao.model.nosql.CustomerEntity;
import org.thingsboard.server.dao.nosql.CassandraAbstractSearchTextDao;
import org.thingsboard.server.dao.util.NoSqlDao;
import java.util.Arrays;
import java.util.List;

2
dao/src/main/java/org/thingsboard/server/dao/customer/CustomerDao.java

@ -15,12 +15,12 @@
*/
package org.thingsboard.server.dao.customer;
import java.util.Optional;
import org.thingsboard.server.common.data.Customer;
import org.thingsboard.server.common.data.page.TextPageLink;
import org.thingsboard.server.dao.Dao;
import java.util.List;
import java.util.Optional;
import java.util.UUID;
/**

12
dao/src/main/java/org/thingsboard/server/dao/customer/CustomerServiceImpl.java

@ -15,12 +15,6 @@
*/
package org.thingsboard.server.dao.customer;
import static org.thingsboard.server.dao.service.Validator.validateId;
import java.io.IOException;
import java.util.List;
import java.util.Optional;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.google.common.util.concurrent.ListenableFuture;
@ -45,6 +39,12 @@ import org.thingsboard.server.dao.service.Validator;
import org.thingsboard.server.dao.tenant.TenantDao;
import org.thingsboard.server.dao.user.UserService;
import java.io.IOException;
import java.util.List;
import java.util.Optional;
import static org.thingsboard.server.dao.service.Validator.validateId;
@Service
@Slf4j
public class CustomerServiceImpl extends AbstractEntityService implements CustomerService {

2
dao/src/main/java/org/thingsboard/server/dao/dashboard/CassandraDashboardDao.java

@ -17,9 +17,9 @@ package org.thingsboard.server.dao.dashboard;
import org.springframework.stereotype.Component;
import org.thingsboard.server.common.data.Dashboard;
import org.thingsboard.server.dao.model.nosql.DashboardEntity;
import org.thingsboard.server.dao.nosql.CassandraAbstractSearchTextDao;
import org.thingsboard.server.dao.util.NoSqlDao;
import org.thingsboard.server.dao.model.nosql.DashboardEntity;
import static org.thingsboard.server.dao.model.ModelConstants.DASHBOARD_COLUMN_FAMILY_NAME;

4
dao/src/main/java/org/thingsboard/server/dao/dashboard/CassandraDashboardInfoDao.java

@ -19,10 +19,10 @@ import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
import org.thingsboard.server.common.data.DashboardInfo;
import org.thingsboard.server.common.data.page.TextPageLink;
import org.thingsboard.server.dao.nosql.CassandraAbstractSearchTextDao;
import org.thingsboard.server.dao.DaoUtil;
import org.thingsboard.server.dao.util.NoSqlDao;
import org.thingsboard.server.dao.model.nosql.DashboardInfoEntity;
import org.thingsboard.server.dao.nosql.CassandraAbstractSearchTextDao;
import org.thingsboard.server.dao.util.NoSqlDao;
import java.util.Arrays;
import java.util.Collections;

4
dao/src/main/java/org/thingsboard/server/dao/device/CassandraDeviceCredentialsDao.java

@ -19,11 +19,11 @@ import com.datastax.driver.core.querybuilder.Select.Where;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
import org.thingsboard.server.common.data.security.DeviceCredentials;
import org.thingsboard.server.dao.nosql.CassandraAbstractModelDao;
import org.thingsboard.server.dao.DaoUtil;
import org.thingsboard.server.dao.util.NoSqlDao;
import org.thingsboard.server.dao.model.ModelConstants;
import org.thingsboard.server.dao.model.nosql.DeviceCredentialsEntity;
import org.thingsboard.server.dao.nosql.CassandraAbstractModelDao;
import org.thingsboard.server.dao.util.NoSqlDao;
import java.util.UUID;

4
dao/src/main/java/org/thingsboard/server/dao/device/CassandraDeviceDao.java

@ -27,11 +27,11 @@ import org.springframework.stereotype.Component;
import org.thingsboard.server.common.data.Device;
import org.thingsboard.server.common.data.TenantDeviceType;
import org.thingsboard.server.common.data.page.TextPageLink;
import org.thingsboard.server.dao.nosql.CassandraAbstractSearchTextDao;
import org.thingsboard.server.dao.DaoUtil;
import org.thingsboard.server.dao.util.NoSqlDao;
import org.thingsboard.server.dao.model.TenantDeviceTypeEntity;
import org.thingsboard.server.dao.model.nosql.DeviceEntity;
import org.thingsboard.server.dao.nosql.CassandraAbstractSearchTextDao;
import org.thingsboard.server.dao.util.NoSqlDao;
import javax.annotation.Nullable;
import java.util.*;

1
dao/src/main/java/org/thingsboard/server/dao/device/DeviceDao.java

@ -20,7 +20,6 @@ import org.thingsboard.server.common.data.Device;
import org.thingsboard.server.common.data.TenantDeviceType;
import org.thingsboard.server.common.data.page.TextPageLink;
import org.thingsboard.server.dao.Dao;
import org.thingsboard.server.dao.model.TenantDeviceTypeEntity;
import java.util.List;
import java.util.Optional;

2
dao/src/main/java/org/thingsboard/server/dao/entity/BaseEntityService.java

@ -21,7 +21,7 @@ import com.google.common.util.concurrent.ListenableFuture;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.thingsboard.server.common.data.*;
import org.thingsboard.server.common.data.HasName;
import org.thingsboard.server.common.data.alarm.AlarmId;
import org.thingsboard.server.common.data.id.*;
import org.thingsboard.server.dao.alarm.AlarmService;

4
dao/src/main/java/org/thingsboard/server/dao/event/CassandraBaseEventDao.java

@ -28,11 +28,11 @@ import org.thingsboard.server.common.data.id.EntityId;
import org.thingsboard.server.common.data.id.EventId;
import org.thingsboard.server.common.data.id.TenantId;
import org.thingsboard.server.common.data.page.TimePageLink;
import org.thingsboard.server.dao.nosql.CassandraAbstractSearchTimeDao;
import org.thingsboard.server.dao.DaoUtil;
import org.thingsboard.server.dao.util.NoSqlDao;
import org.thingsboard.server.dao.model.ModelConstants;
import org.thingsboard.server.dao.model.nosql.EventEntity;
import org.thingsboard.server.dao.nosql.CassandraAbstractSearchTimeDao;
import org.thingsboard.server.dao.util.NoSqlDao;
import java.util.Arrays;
import java.util.List;

57
dao/src/main/java/org/thingsboard/server/dao/model/BaseSqlEntity.java

@ -0,0 +1,57 @@
/**
* Copyright © 2016-2017 The Thingsboard Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.thingsboard.server.dao.model;
import lombok.Data;
import org.thingsboard.server.common.data.UUIDConverter;
import javax.persistence.Column;
import javax.persistence.Id;
import javax.persistence.MappedSuperclass;
import java.util.UUID;
/**
* Created by ashvayka on 13.07.17.
*/
@Data
@MappedSuperclass
public abstract class BaseSqlEntity<D> implements BaseEntity<D> {
@Id
@Column(name = ModelConstants.ID_PROPERTY)
protected String id;
@Override
public UUID getId() {
if (id == null) {
return null;
}
return UUIDConverter.fromString(id);
}
public void setId(UUID id) {
this.id = UUIDConverter.fromTimeUUID(id);
}
protected UUID toUUID(String src){
return UUIDConverter.fromString(src);
}
protected String toString(UUID timeUUID){
return UUIDConverter.fromTimeUUID(timeUUID);
}
}

6
dao/src/main/java/org/thingsboard/server/dao/model/ModelConstants.java

@ -15,18 +15,20 @@
*/
package org.thingsboard.server.dao.model;
import java.util.UUID;
import com.datastax.driver.core.utils.UUIDs;
import org.apache.commons.lang3.ArrayUtils;
import org.thingsboard.server.common.data.UUIDConverter;
import org.thingsboard.server.common.data.kv.Aggregation;
import java.util.UUID;
public class ModelConstants {
private ModelConstants() {
}
public static UUID NULL_UUID = UUIDs.startOf(0);
public static String NULL_UUID_STR = UUIDConverter.fromTimeUUID(NULL_UUID);
/**
* Generic constants.

20
dao/src/main/java/org/thingsboard/server/dao/model/nosql/AdminSettingsEntity.java

@ -15,24 +15,20 @@
*/
package org.thingsboard.server.dao.model.nosql;
import static org.thingsboard.server.dao.model.ModelConstants.ADMIN_SETTINGS_COLUMN_FAMILY_NAME;
import static org.thingsboard.server.dao.model.ModelConstants.ADMIN_SETTINGS_JSON_VALUE_PROPERTY;
import static org.thingsboard.server.dao.model.ModelConstants.ADMIN_SETTINGS_KEY_PROPERTY;
import static org.thingsboard.server.dao.model.ModelConstants.ID_PROPERTY;
import java.util.UUID;
import org.thingsboard.server.common.data.AdminSettings;
import org.thingsboard.server.common.data.id.AdminSettingsId;
import org.thingsboard.server.dao.model.BaseEntity;
import org.thingsboard.server.dao.model.type.JsonCodec;
import com.datastax.driver.core.utils.UUIDs;
import com.datastax.driver.mapping.annotations.Column;
import com.datastax.driver.mapping.annotations.PartitionKey;
import com.datastax.driver.mapping.annotations.Table;
import com.datastax.driver.mapping.annotations.Transient;
import com.fasterxml.jackson.databind.JsonNode;
import org.thingsboard.server.common.data.AdminSettings;
import org.thingsboard.server.common.data.id.AdminSettingsId;
import org.thingsboard.server.dao.model.BaseEntity;
import org.thingsboard.server.dao.model.type.JsonCodec;
import java.util.UUID;
import static org.thingsboard.server.dao.model.ModelConstants.*;
@Table(name = ADMIN_SETTINGS_COLUMN_FAMILY_NAME)
public final class AdminSettingsEntity implements BaseEntity<AdminSettings> {

15
dao/src/main/java/org/thingsboard/server/dao/model/nosql/CustomerEntity.java

@ -15,20 +15,19 @@
*/
package org.thingsboard.server.dao.model.nosql;
import java.util.UUID;
import org.thingsboard.server.common.data.Customer;
import org.thingsboard.server.common.data.id.CustomerId;
import org.thingsboard.server.common.data.id.TenantId;
import org.thingsboard.server.dao.model.SearchTextEntity;
import org.thingsboard.server.dao.model.type.JsonCodec;
import com.datastax.driver.core.utils.UUIDs;
import com.datastax.driver.mapping.annotations.Column;
import com.datastax.driver.mapping.annotations.PartitionKey;
import com.datastax.driver.mapping.annotations.Table;
import com.datastax.driver.mapping.annotations.Transient;
import com.fasterxml.jackson.databind.JsonNode;
import org.thingsboard.server.common.data.Customer;
import org.thingsboard.server.common.data.id.CustomerId;
import org.thingsboard.server.common.data.id.TenantId;
import org.thingsboard.server.dao.model.SearchTextEntity;
import org.thingsboard.server.dao.model.type.JsonCodec;
import java.util.UUID;
import static org.thingsboard.server.dao.model.ModelConstants.*;

15
dao/src/main/java/org/thingsboard/server/dao/model/nosql/DashboardEntity.java

@ -15,8 +15,12 @@
*/
package org.thingsboard.server.dao.model.nosql;
import java.util.UUID;
import com.datastax.driver.core.utils.UUIDs;
import com.datastax.driver.mapping.annotations.Column;
import com.datastax.driver.mapping.annotations.PartitionKey;
import com.datastax.driver.mapping.annotations.Table;
import com.datastax.driver.mapping.annotations.Transient;
import com.fasterxml.jackson.databind.JsonNode;
import org.thingsboard.server.common.data.Dashboard;
import org.thingsboard.server.common.data.id.CustomerId;
import org.thingsboard.server.common.data.id.DashboardId;
@ -24,12 +28,7 @@ import org.thingsboard.server.common.data.id.TenantId;
import org.thingsboard.server.dao.model.SearchTextEntity;
import org.thingsboard.server.dao.model.type.JsonCodec;
import com.datastax.driver.core.utils.UUIDs;
import com.datastax.driver.mapping.annotations.Column;
import com.datastax.driver.mapping.annotations.PartitionKey;
import com.datastax.driver.mapping.annotations.Table;
import com.datastax.driver.mapping.annotations.Transient;
import com.fasterxml.jackson.databind.JsonNode;
import java.util.UUID;
import static org.thingsboard.server.dao.model.ModelConstants.*;

13
dao/src/main/java/org/thingsboard/server/dao/model/nosql/DashboardInfoEntity.java

@ -15,19 +15,18 @@
*/
package org.thingsboard.server.dao.model.nosql;
import java.util.UUID;
import com.datastax.driver.core.utils.UUIDs;
import com.datastax.driver.mapping.annotations.Column;
import com.datastax.driver.mapping.annotations.PartitionKey;
import com.datastax.driver.mapping.annotations.Table;
import com.datastax.driver.mapping.annotations.Transient;
import org.thingsboard.server.common.data.DashboardInfo;
import org.thingsboard.server.common.data.id.CustomerId;
import org.thingsboard.server.common.data.id.DashboardId;
import org.thingsboard.server.common.data.id.TenantId;
import org.thingsboard.server.dao.model.SearchTextEntity;
import com.datastax.driver.core.utils.UUIDs;
import com.datastax.driver.mapping.annotations.Column;
import com.datastax.driver.mapping.annotations.PartitionKey;
import com.datastax.driver.mapping.annotations.Table;
import com.datastax.driver.mapping.annotations.Transient;
import java.util.UUID;
import static org.thingsboard.server.dao.model.ModelConstants.*;

13
dao/src/main/java/org/thingsboard/server/dao/model/nosql/DeviceCredentialsEntity.java

@ -15,8 +15,11 @@
*/
package org.thingsboard.server.dao.model.nosql;
import java.util.UUID;
import com.datastax.driver.core.utils.UUIDs;
import com.datastax.driver.mapping.annotations.Column;
import com.datastax.driver.mapping.annotations.PartitionKey;
import com.datastax.driver.mapping.annotations.Table;
import com.datastax.driver.mapping.annotations.Transient;
import org.thingsboard.server.common.data.id.DeviceCredentialsId;
import org.thingsboard.server.common.data.id.DeviceId;
import org.thingsboard.server.common.data.security.DeviceCredentials;
@ -24,11 +27,7 @@ import org.thingsboard.server.common.data.security.DeviceCredentialsType;
import org.thingsboard.server.dao.model.BaseEntity;
import org.thingsboard.server.dao.model.type.DeviceCredentialsTypeCodec;
import com.datastax.driver.core.utils.UUIDs;
import com.datastax.driver.mapping.annotations.Column;
import com.datastax.driver.mapping.annotations.PartitionKey;
import com.datastax.driver.mapping.annotations.Table;
import com.datastax.driver.mapping.annotations.Transient;
import java.util.UUID;
import static org.thingsboard.server.dao.model.ModelConstants.*;

4
dao/src/main/java/org/thingsboard/server/dao/model/nosql/DeviceEntity.java

@ -28,10 +28,10 @@ import org.thingsboard.server.common.data.id.TenantId;
import org.thingsboard.server.dao.model.SearchTextEntity;
import org.thingsboard.server.dao.model.type.JsonCodec;
import static org.thingsboard.server.dao.model.ModelConstants.*;
import java.util.UUID;
import static org.thingsboard.server.dao.model.ModelConstants.*;
@Table(name = DEVICE_COLUMN_FAMILY_NAME)
public final class DeviceEntity implements SearchTextEntity<Device> {

4
dao/src/main/java/org/thingsboard/server/dao/model/nosql/PluginMetaDataEntity.java

@ -26,11 +26,11 @@ import org.thingsboard.server.dao.model.SearchTextEntity;
import org.thingsboard.server.dao.model.type.ComponentLifecycleStateCodec;
import org.thingsboard.server.dao.model.type.JsonCodec;
import static org.thingsboard.server.dao.model.ModelConstants.*;
import java.util.Objects;
import java.util.UUID;
import static org.thingsboard.server.dao.model.ModelConstants.*;
@Table(name = PLUGIN_COLUMN_FAMILY_NAME)
public class PluginMetaDataEntity implements SearchTextEntity<PluginMetaData> {

4
dao/src/main/java/org/thingsboard/server/dao/model/nosql/RuleMetaDataEntity.java

@ -30,12 +30,12 @@ import org.thingsboard.server.dao.model.SearchTextEntity;
import org.thingsboard.server.dao.model.type.ComponentLifecycleStateCodec;
import org.thingsboard.server.dao.model.type.JsonCodec;
import static org.thingsboard.server.dao.model.ModelConstants.*;
import javax.persistence.Transient;
import java.util.Objects;
import java.util.UUID;
import static org.thingsboard.server.dao.model.ModelConstants.*;
@Table(name = RULE_COLUMN_FAMILY_NAME)
public class RuleMetaDataEntity implements SearchTextEntity<RuleMetaData> {

14
dao/src/main/java/org/thingsboard/server/dao/model/nosql/TenantEntity.java

@ -15,19 +15,19 @@
*/
package org.thingsboard.server.dao.model.nosql;
import java.util.UUID;
import org.thingsboard.server.common.data.Tenant;
import org.thingsboard.server.common.data.id.TenantId;
import org.thingsboard.server.dao.model.SearchTextEntity;
import org.thingsboard.server.dao.model.type.JsonCodec;
import com.datastax.driver.core.utils.UUIDs;
import com.datastax.driver.mapping.annotations.Column;
import com.datastax.driver.mapping.annotations.PartitionKey;
import com.datastax.driver.mapping.annotations.Table;
import com.datastax.driver.mapping.annotations.Transient;
import com.fasterxml.jackson.databind.JsonNode;
import org.thingsboard.server.common.data.Tenant;
import org.thingsboard.server.common.data.id.TenantId;
import org.thingsboard.server.dao.model.SearchTextEntity;
import org.thingsboard.server.dao.model.type.JsonCodec;
import java.util.UUID;
import static org.thingsboard.server.dao.model.ModelConstants.*;
@Table(name = TENANT_COLUMN_FAMILY_NAME)

12
dao/src/main/java/org/thingsboard/server/dao/model/nosql/UserCredentialsEntity.java

@ -15,18 +15,18 @@
*/
package org.thingsboard.server.dao.model.nosql;
import java.util.UUID;
import org.thingsboard.server.common.data.id.UserCredentialsId;
import org.thingsboard.server.common.data.id.UserId;
import org.thingsboard.server.common.data.security.UserCredentials;
import com.datastax.driver.core.utils.UUIDs;
import com.datastax.driver.mapping.annotations.Column;
import com.datastax.driver.mapping.annotations.PartitionKey;
import com.datastax.driver.mapping.annotations.Table;
import com.datastax.driver.mapping.annotations.Transient;
import org.thingsboard.server.common.data.id.UserCredentialsId;
import org.thingsboard.server.common.data.id.UserId;
import org.thingsboard.server.common.data.security.UserCredentials;
import org.thingsboard.server.dao.model.BaseEntity;
import java.util.UUID;
import static org.thingsboard.server.dao.model.ModelConstants.*;
@Table(name = USER_CREDENTIALS_COLUMN_FAMILY_NAME)

16
dao/src/main/java/org/thingsboard/server/dao/model/nosql/UserEntity.java

@ -15,8 +15,12 @@
*/
package org.thingsboard.server.dao.model.nosql;
import java.util.UUID;
import com.datastax.driver.core.utils.UUIDs;
import com.datastax.driver.mapping.annotations.Column;
import com.datastax.driver.mapping.annotations.PartitionKey;
import com.datastax.driver.mapping.annotations.Table;
import com.datastax.driver.mapping.annotations.Transient;
import com.fasterxml.jackson.databind.JsonNode;
import org.thingsboard.server.common.data.User;
import org.thingsboard.server.common.data.id.CustomerId;
import org.thingsboard.server.common.data.id.TenantId;
@ -26,12 +30,8 @@ import org.thingsboard.server.dao.model.SearchTextEntity;
import org.thingsboard.server.dao.model.type.AuthorityCodec;
import org.thingsboard.server.dao.model.type.JsonCodec;
import com.datastax.driver.core.utils.UUIDs;
import com.datastax.driver.mapping.annotations.Column;
import com.datastax.driver.mapping.annotations.PartitionKey;
import com.datastax.driver.mapping.annotations.Table;
import com.datastax.driver.mapping.annotations.Transient;
import com.fasterxml.jackson.databind.JsonNode;
import java.util.UUID;
import static org.thingsboard.server.dao.model.ModelConstants.*;
@Table(name = USER_COLUMN_FAMILY_NAME)

3
dao/src/main/java/org/thingsboard/server/dao/model/nosql/WidgetTypeEntity.java

@ -26,10 +26,11 @@ import org.thingsboard.server.common.data.id.WidgetTypeId;
import org.thingsboard.server.common.data.widget.WidgetType;
import org.thingsboard.server.dao.model.BaseEntity;
import org.thingsboard.server.dao.model.type.JsonCodec;
import static org.thingsboard.server.dao.model.ModelConstants.*;
import java.util.UUID;
import static org.thingsboard.server.dao.model.ModelConstants.*;
@Table(name = WIDGET_TYPE_COLUMN_FAMILY_NAME)
public final class WidgetTypeEntity implements BaseEntity<WidgetType> {

3
dao/src/main/java/org/thingsboard/server/dao/model/nosql/WidgetsBundleEntity.java

@ -25,11 +25,12 @@ import org.thingsboard.server.common.data.id.TenantId;
import org.thingsboard.server.common.data.id.WidgetsBundleId;
import org.thingsboard.server.common.data.widget.WidgetsBundle;
import org.thingsboard.server.dao.model.SearchTextEntity;
import static org.thingsboard.server.dao.model.ModelConstants.*;
import java.nio.ByteBuffer;
import java.util.UUID;
import static org.thingsboard.server.dao.model.ModelConstants.*;
@Table(name = WIDGETS_BUNDLE_COLUMN_FAMILY_NAME)
public final class WidgetsBundleEntity implements SearchTextEntity<WidgetsBundle> {

32
dao/src/main/java/org/thingsboard/server/dao/model/sql/AdminSettingsEntity.java

@ -18,31 +18,33 @@ package org.thingsboard.server.dao.model.sql;
import com.datastax.driver.core.utils.UUIDs;
import com.fasterxml.jackson.databind.JsonNode;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.hibernate.annotations.Type;
import org.hibernate.annotations.TypeDef;
import org.thingsboard.server.common.data.AdminSettings;
import org.thingsboard.server.common.data.UUIDConverter;
import org.thingsboard.server.common.data.id.AdminSettingsId;
import org.thingsboard.server.dao.model.BaseEntity;
import org.thingsboard.server.dao.model.BaseSqlEntity;
import org.thingsboard.server.dao.util.mapping.JsonStringType;
import javax.persistence.*;
import java.util.UUID;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Table;
import javax.persistence.Transient;
import static org.thingsboard.server.dao.model.ModelConstants.*;
@Data
@EqualsAndHashCode(callSuper = true)
@Entity
@TypeDef(name = "json", typeClass = JsonStringType.class)
@Table(name = ADMIN_SETTINGS_COLUMN_FAMILY_NAME)
public final class AdminSettingsEntity implements BaseEntity<AdminSettings> {
public final class AdminSettingsEntity extends BaseSqlEntity<AdminSettings> implements BaseEntity<AdminSettings> {
@Transient
private static final long serialVersionUID = 842759712850362147L;
@Id
@Column(name = ID_PROPERTY)
private UUID id;
@Column(name = ADMIN_SETTINGS_KEY_PROPERTY)
private String key;
@ -56,26 +58,16 @@ public final class AdminSettingsEntity implements BaseEntity<AdminSettings> {
public AdminSettingsEntity(AdminSettings adminSettings) {
if (adminSettings.getId() != null) {
this.id = adminSettings.getId().getId();
this.setId(adminSettings.getId().getId());
}
this.key = adminSettings.getKey();
this.jsonValue = adminSettings.getJsonValue();
}
@Override
public UUID getId() {
return id;
}
@Override
public void setId(UUID id) {
this.id = id;
}
@Override
public AdminSettings toData() {
AdminSettings adminSettings = new AdminSettings(new AdminSettingsId(id));
adminSettings.setCreatedTime(UUIDs.unixTimestamp(id));
AdminSettings adminSettings = new AdminSettings(new AdminSettingsId(UUIDConverter.fromString(id)));
adminSettings.setCreatedTime(UUIDs.unixTimestamp(UUIDConverter.fromString(id)));
adminSettings.setKey(key);
adminSettings.setJsonValue(jsonValue);
return adminSettings;

29
dao/src/main/java/org/thingsboard/server/dao/model/sql/AlarmEntity.java

@ -18,9 +18,11 @@ package org.thingsboard.server.dao.model.sql;
import com.datastax.driver.core.utils.UUIDs;
import com.fasterxml.jackson.databind.JsonNode;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.hibernate.annotations.Type;
import org.hibernate.annotations.TypeDef;
import org.thingsboard.server.common.data.EntityType;
import org.thingsboard.server.common.data.UUIDConverter;
import org.thingsboard.server.common.data.alarm.Alarm;
import org.thingsboard.server.common.data.alarm.AlarmId;
import org.thingsboard.server.common.data.alarm.AlarmSeverity;
@ -28,32 +30,29 @@ import org.thingsboard.server.common.data.alarm.AlarmStatus;
import org.thingsboard.server.common.data.id.EntityIdFactory;
import org.thingsboard.server.common.data.id.TenantId;
import org.thingsboard.server.dao.model.BaseEntity;
import org.thingsboard.server.dao.model.BaseSqlEntity;
import org.thingsboard.server.dao.model.ModelConstants;
import org.thingsboard.server.dao.util.mapping.JsonStringType;
import javax.persistence.*;
import java.util.UUID;
import static org.thingsboard.server.dao.model.ModelConstants.*;
@Data
@EqualsAndHashCode(callSuper = true)
@Entity
@TypeDef(name = "json", typeClass = JsonStringType.class)
@Table(name = ALARM_COLUMN_FAMILY_NAME)
public final class AlarmEntity implements BaseEntity<Alarm> {
public final class AlarmEntity extends BaseSqlEntity<Alarm> implements BaseEntity<Alarm> {
@Transient
private static final long serialVersionUID = -339979717281685984L;
@Id
@Column(name = ID_PROPERTY)
private UUID id;
@Column(name = ALARM_TENANT_ID_PROPERTY)
private UUID tenantId;
private String tenantId;
@Column(name = ALARM_ORIGINATOR_ID_PROPERTY)
private UUID originatorId;
private String originatorId;
@Column(name = ALARM_ORIGINATOR_TYPE_PROPERTY)
private EntityType originatorType;
@ -94,13 +93,13 @@ public final class AlarmEntity implements BaseEntity<Alarm> {
public AlarmEntity(Alarm alarm) {
if (alarm.getId() != null) {
this.id = alarm.getId().getId();
this.setId(alarm.getId().getId());
}
if (alarm.getTenantId() != null) {
this.tenantId = alarm.getTenantId().getId();
this.tenantId = UUIDConverter.fromTimeUUID(alarm.getTenantId().getId());
}
this.type = alarm.getType();
this.originatorId = alarm.getOriginator().getId();
this.originatorId = UUIDConverter.fromTimeUUID(alarm.getOriginator().getId());
this.originatorType = alarm.getOriginator().getEntityType();
this.type = alarm.getType();
this.severity = alarm.getSeverity();
@ -115,12 +114,12 @@ public final class AlarmEntity implements BaseEntity<Alarm> {
@Override
public Alarm toData() {
Alarm alarm = new Alarm(new AlarmId(id));
alarm.setCreatedTime(UUIDs.unixTimestamp(id));
Alarm alarm = new Alarm(new AlarmId(UUIDConverter.fromString(id)));
alarm.setCreatedTime(UUIDs.unixTimestamp(UUIDConverter.fromString(id)));
if (tenantId != null) {
alarm.setTenantId(new TenantId(tenantId));
alarm.setTenantId(new TenantId(UUIDConverter.fromString(tenantId)));
}
alarm.setOriginator(EntityIdFactory.getByTypeAndUuid(originatorType, originatorId));
alarm.setOriginator(EntityIdFactory.getByTypeAndUuid(originatorType, UUIDConverter.fromString(originatorId)));
alarm.setType(type);
alarm.setSeverity(severity);
alarm.setStatus(status);

34
dao/src/main/java/org/thingsboard/server/dao/model/sql/AssetEntity.java

@ -18,39 +18,41 @@ package org.thingsboard.server.dao.model.sql;
import com.datastax.driver.core.utils.UUIDs;
import com.fasterxml.jackson.databind.JsonNode;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.hibernate.annotations.Type;
import org.hibernate.annotations.TypeDef;
import org.thingsboard.server.common.data.UUIDConverter;
import org.thingsboard.server.common.data.asset.Asset;
import org.thingsboard.server.common.data.id.AssetId;
import org.thingsboard.server.common.data.id.CustomerId;
import org.thingsboard.server.common.data.id.TenantId;
import org.thingsboard.server.dao.model.BaseSqlEntity;
import org.thingsboard.server.dao.model.ModelConstants;
import org.thingsboard.server.dao.model.SearchTextEntity;
import org.thingsboard.server.dao.util.mapping.JsonStringType;
import javax.persistence.*;
import java.util.UUID;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Table;
import javax.persistence.Transient;
import static org.thingsboard.server.dao.model.ModelConstants.*;
@Data
@EqualsAndHashCode(callSuper = true)
@Entity
@TypeDef(name = "json", typeClass = JsonStringType.class)
@Table(name = ASSET_COLUMN_FAMILY_NAME)
public final class AssetEntity implements SearchTextEntity<Asset> {
public final class AssetEntity extends BaseSqlEntity<Asset> implements SearchTextEntity<Asset> {
@Transient
private static final long serialVersionUID = -4089175869616037592L;
@Id
@Column(name = ID_PROPERTY)
private UUID id;
@Column(name = ASSET_TENANT_ID_PROPERTY)
private UUID tenantId;
private String tenantId;
@Column(name = ASSET_CUSTOMER_ID_PROPERTY)
private UUID customerId;
private String customerId;
@Column(name = ASSET_NAME_PROPERTY)
private String name;
@ -71,13 +73,13 @@ public final class AssetEntity implements SearchTextEntity<Asset> {
public AssetEntity(Asset asset) {
if (asset.getId() != null) {
this.id = asset.getId().getId();
this.setId(asset.getId().getId());
}
if (asset.getTenantId() != null) {
this.tenantId = asset.getTenantId().getId();
this.tenantId = UUIDConverter.fromTimeUUID(asset.getTenantId().getId());
}
if (asset.getCustomerId() != null) {
this.customerId = asset.getCustomerId().getId();
this.customerId = UUIDConverter.fromTimeUUID(asset.getCustomerId().getId());
}
this.name = asset.getName();
this.type = asset.getType();
@ -100,13 +102,13 @@ public final class AssetEntity implements SearchTextEntity<Asset> {
@Override
public Asset toData() {
Asset asset = new Asset(new AssetId(id));
asset.setCreatedTime(UUIDs.unixTimestamp(id));
Asset asset = new Asset(new AssetId(UUIDConverter.fromString(id)));
asset.setCreatedTime(UUIDs.unixTimestamp(UUIDConverter.fromString(id)));
if (tenantId != null) {
asset.setTenantId(new TenantId(tenantId));
asset.setTenantId(new TenantId(UUIDConverter.fromString(tenantId)));
}
if (customerId != null) {
asset.setCustomerId(new CustomerId(customerId));
asset.setCustomerId(new CustomerId(UUIDConverter.fromString(customerId)));
}
asset.setName(name);
asset.setType(type);

3
dao/src/main/java/org/thingsboard/server/dao/model/sql/AttributeKvCompositeKey.java

@ -21,14 +21,13 @@ import lombok.NoArgsConstructor;
import org.thingsboard.server.common.data.EntityType;
import java.io.Serializable;
import java.util.UUID;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class AttributeKvCompositeKey implements Serializable {
private EntityType entityType;
private UUID entityId;
private String entityId;
private String attributeType;
private String attributeKey;
}

3
dao/src/main/java/org/thingsboard/server/dao/model/sql/AttributeKvEntity.java

@ -22,7 +22,6 @@ import org.thingsboard.server.dao.model.ToData;
import javax.persistence.*;
import java.io.Serializable;
import java.util.UUID;
import static org.thingsboard.server.dao.model.ModelConstants.*;
@ -39,7 +38,7 @@ public class AttributeKvEntity implements ToData<AttributeKvEntry>, Serializable
@Id
@Column(name = ENTITY_ID_COLUMN)
private UUID entityId;
private String entityId;
@Id
@Column(name = ATTRIBUTE_TYPE_COLUMN)

24
dao/src/main/java/org/thingsboard/server/dao/model/sql/ComponentDescriptorEntity.java

@ -17,32 +17,30 @@ package org.thingsboard.server.dao.model.sql;
import com.fasterxml.jackson.databind.JsonNode;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.hibernate.annotations.Type;
import org.hibernate.annotations.TypeDef;
import org.thingsboard.server.common.data.id.ComponentDescriptorId;
import org.thingsboard.server.common.data.plugin.ComponentDescriptor;
import org.thingsboard.server.common.data.plugin.ComponentScope;
import org.thingsboard.server.common.data.plugin.ComponentType;
import org.thingsboard.server.dao.model.BaseSqlEntity;
import org.thingsboard.server.dao.model.ModelConstants;
import org.thingsboard.server.dao.model.SearchTextEntity;
import org.thingsboard.server.dao.util.mapping.JsonStringType;
import javax.persistence.*;
import java.util.UUID;
@Data
@EqualsAndHashCode(callSuper = true)
@Entity
@TypeDef(name = "json", typeClass = JsonStringType.class)
@Table(name = ModelConstants.COMPONENT_DESCRIPTOR_COLUMN_FAMILY_NAME)
public class ComponentDescriptorEntity implements SearchTextEntity<ComponentDescriptor> {
public class ComponentDescriptorEntity extends BaseSqlEntity<ComponentDescriptor> implements SearchTextEntity<ComponentDescriptor> {
@Transient
private static final long serialVersionUID = 253590350877992402L;
@Id
@Column(name = ModelConstants.ID_PROPERTY)
private UUID id;
@Enumerated(EnumType.STRING)
@Column(name = ModelConstants.COMPONENT_DESCRIPTOR_TYPE_PROPERTY)
private ComponentType type;
@ -72,7 +70,7 @@ public class ComponentDescriptorEntity implements SearchTextEntity<ComponentDesc
public ComponentDescriptorEntity(ComponentDescriptor component) {
if (component.getId() != null) {
this.id = component.getId().getId();
this.setId(component.getId().getId());
}
this.actions = component.getActions();
this.type = component.getType();
@ -85,7 +83,7 @@ public class ComponentDescriptorEntity implements SearchTextEntity<ComponentDesc
@Override
public ComponentDescriptor toData() {
ComponentDescriptor data = new ComponentDescriptor(new ComponentDescriptorId(id));
ComponentDescriptor data = new ComponentDescriptor(new ComponentDescriptorId(this.getId()));
data.setType(type);
data.setScope(scope);
data.setName(this.getName());
@ -95,16 +93,6 @@ public class ComponentDescriptorEntity implements SearchTextEntity<ComponentDesc
return data;
}
@Override
public UUID getId() {
return id;
}
@Override
public void setId(UUID id) {
this.id = id;
}
public String getSearchText() {
return searchText;
}

38
dao/src/main/java/org/thingsboard/server/dao/model/sql/CustomerEntity.java

@ -18,33 +18,35 @@ package org.thingsboard.server.dao.model.sql;
import com.datastax.driver.core.utils.UUIDs;
import com.fasterxml.jackson.databind.JsonNode;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.hibernate.annotations.Type;
import org.hibernate.annotations.TypeDef;
import org.thingsboard.server.common.data.Customer;
import org.thingsboard.server.common.data.UUIDConverter;
import org.thingsboard.server.common.data.id.CustomerId;
import org.thingsboard.server.common.data.id.TenantId;
import org.thingsboard.server.dao.model.BaseSqlEntity;
import org.thingsboard.server.dao.model.ModelConstants;
import org.thingsboard.server.dao.model.SearchTextEntity;
import org.thingsboard.server.dao.util.mapping.JsonStringType;
import javax.persistence.*;
import java.util.UUID;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Table;
import javax.persistence.Transient;
@Data
@EqualsAndHashCode(callSuper = true)
@Entity
@TypeDef(name = "json", typeClass = JsonStringType.class)
@Table(name = ModelConstants.CUSTOMER_COLUMN_FAMILY_NAME)
public final class CustomerEntity implements SearchTextEntity<Customer> {
public final class CustomerEntity extends BaseSqlEntity<Customer> implements SearchTextEntity<Customer> {
@Transient
private static final long serialVersionUID = 8951342124082981556L;
@Id
@Column(name = ModelConstants.ID_PROPERTY)
private UUID id;
@Column(name = ModelConstants.CUSTOMER_TENANT_ID_PROPERTY)
private UUID tenantId;
private String tenantId;
@Column(name = ModelConstants.CUSTOMER_TITLE_PROPERTY)
private String title;
@ -86,9 +88,9 @@ public final class CustomerEntity implements SearchTextEntity<Customer> {
public CustomerEntity(Customer customer) {
if (customer.getId() != null) {
this.id = customer.getId().getId();
this.setId(customer.getId().getId());
}
this.tenantId = customer.getTenantId().getId();
this.tenantId = UUIDConverter.fromTimeUUID(customer.getTenantId().getId());
this.title = customer.getTitle();
this.country = customer.getCountry();
this.state = customer.getState();
@ -101,16 +103,6 @@ public final class CustomerEntity implements SearchTextEntity<Customer> {
this.additionalInfo = customer.getAdditionalInfo();
}
@Override
public UUID getId() {
return id;
}
@Override
public void setId(UUID id) {
this.id = id;
}
@Override
public String getSearchTextSource() {
return title;
@ -123,9 +115,9 @@ public final class CustomerEntity implements SearchTextEntity<Customer> {
@Override
public Customer toData() {
Customer customer = new Customer(new CustomerId(id));
customer.setCreatedTime(UUIDs.unixTimestamp(id));
customer.setTenantId(new TenantId(tenantId));
Customer customer = new Customer(new CustomerId(getId()));
customer.setCreatedTime(UUIDs.unixTimestamp(getId()));
customer.setTenantId(new TenantId(UUIDConverter.fromString(tenantId)));
customer.setTitle(title);
customer.setCountry(country);
customer.setState(state);

33
dao/src/main/java/org/thingsboard/server/dao/model/sql/DashboardEntity.java

@ -18,37 +18,38 @@ package org.thingsboard.server.dao.model.sql;
import com.datastax.driver.core.utils.UUIDs;
import com.fasterxml.jackson.databind.JsonNode;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.hibernate.annotations.Type;
import org.hibernate.annotations.TypeDef;
import org.thingsboard.server.common.data.Dashboard;
import org.thingsboard.server.common.data.id.CustomerId;
import org.thingsboard.server.common.data.id.DashboardId;
import org.thingsboard.server.common.data.id.TenantId;
import org.thingsboard.server.dao.model.BaseSqlEntity;
import org.thingsboard.server.dao.model.ModelConstants;
import org.thingsboard.server.dao.model.SearchTextEntity;
import org.thingsboard.server.dao.util.mapping.JsonStringType;
import javax.persistence.*;
import java.util.UUID;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Table;
import javax.persistence.Transient;
@Data
@EqualsAndHashCode(callSuper = true)
@Entity
@TypeDef(name = "json", typeClass = JsonStringType.class)
@Table(name = ModelConstants.DASHBOARD_COLUMN_FAMILY_NAME)
public final class DashboardEntity implements SearchTextEntity<Dashboard> {
public final class DashboardEntity extends BaseSqlEntity<Dashboard> implements SearchTextEntity<Dashboard> {
@Transient
private static final long serialVersionUID = -4838084363113078898L;
@Id
@Column(name = ModelConstants.ID_PROPERTY)
private UUID id;
@Column(name = ModelConstants.DASHBOARD_TENANT_ID_PROPERTY)
private UUID tenantId;
private String tenantId;
@Column(name = ModelConstants.DASHBOARD_CUSTOMER_ID_PROPERTY)
private UUID customerId;
private String customerId;
@Column(name = ModelConstants.DASHBOARD_TITLE_PROPERTY)
private String title;
@ -66,13 +67,13 @@ public final class DashboardEntity implements SearchTextEntity<Dashboard> {
public DashboardEntity(Dashboard dashboard) {
if (dashboard.getId() != null) {
this.id = dashboard.getId().getId();
this.setId(dashboard.getId().getId());
}
if (dashboard.getTenantId() != null) {
this.tenantId = dashboard.getTenantId().getId();
this.tenantId = toString(dashboard.getTenantId().getId());
}
if (dashboard.getCustomerId() != null) {
this.customerId = dashboard.getCustomerId().getId();
this.customerId = toString(dashboard.getCustomerId().getId());
}
this.title = dashboard.getTitle();
this.configuration = dashboard.getConfiguration();
@ -90,13 +91,13 @@ public final class DashboardEntity implements SearchTextEntity<Dashboard> {
@Override
public Dashboard toData() {
Dashboard dashboard = new Dashboard(new DashboardId(id));
dashboard.setCreatedTime(UUIDs.unixTimestamp(id));
Dashboard dashboard = new Dashboard(new DashboardId(this.getId()));
dashboard.setCreatedTime(UUIDs.unixTimestamp(this.getId()));
if (tenantId != null) {
dashboard.setTenantId(new TenantId(tenantId));
dashboard.setTenantId(new TenantId(toUUID(tenantId)));
}
if (customerId != null) {
dashboard.setCustomerId(new CustomerId(customerId));
dashboard.setCustomerId(new CustomerId(toUUID(customerId)));
}
dashboard.setTitle(title);
dashboard.setConfiguration(configuration);

33
dao/src/main/java/org/thingsboard/server/dao/model/sql/DashboardInfoEntity.java

@ -17,33 +17,34 @@ package org.thingsboard.server.dao.model.sql;
import com.datastax.driver.core.utils.UUIDs;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.thingsboard.server.common.data.DashboardInfo;
import org.thingsboard.server.common.data.id.CustomerId;
import org.thingsboard.server.common.data.id.DashboardId;
import org.thingsboard.server.common.data.id.TenantId;
import org.thingsboard.server.dao.model.BaseSqlEntity;
import org.thingsboard.server.dao.model.ModelConstants;
import org.thingsboard.server.dao.model.SearchTextEntity;
import javax.persistence.*;
import java.util.UUID;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Table;
import javax.persistence.Transient;
@Data
@EqualsAndHashCode(callSuper = true)
@Entity
@Table(name = ModelConstants.DASHBOARD_COLUMN_FAMILY_NAME)
public class DashboardInfoEntity implements SearchTextEntity<DashboardInfo> {
public class DashboardInfoEntity extends BaseSqlEntity<DashboardInfo> implements SearchTextEntity<DashboardInfo> {
@Transient
private static final long serialVersionUID = -5525675905528050250L;
@Id
@Column(name = ModelConstants.ID_PROPERTY)
private UUID id;
@Column(name = ModelConstants.DASHBOARD_TENANT_ID_PROPERTY)
private UUID tenantId;
private String tenantId;
@Column(name = ModelConstants.DASHBOARD_CUSTOMER_ID_PROPERTY)
private UUID customerId;
private String customerId;
@Column(name = ModelConstants.DASHBOARD_TITLE_PROPERTY)
private String title;
@ -57,13 +58,13 @@ public class DashboardInfoEntity implements SearchTextEntity<DashboardInfo> {
public DashboardInfoEntity(DashboardInfo dashboardInfo) {
if (dashboardInfo.getId() != null) {
this.id = dashboardInfo.getId().getId();
this.setId(dashboardInfo.getId().getId());
}
if (dashboardInfo.getTenantId() != null) {
this.tenantId = dashboardInfo.getTenantId().getId();
this.tenantId = toString(dashboardInfo.getTenantId().getId());
}
if (dashboardInfo.getCustomerId() != null) {
this.customerId = dashboardInfo.getCustomerId().getId();
this.customerId = toString(dashboardInfo.getCustomerId().getId());
}
this.title = dashboardInfo.getTitle();
}
@ -84,13 +85,13 @@ public class DashboardInfoEntity implements SearchTextEntity<DashboardInfo> {
@Override
public DashboardInfo toData() {
DashboardInfo dashboardInfo = new DashboardInfo(new DashboardId(id));
dashboardInfo.setCreatedTime(UUIDs.unixTimestamp(id));
DashboardInfo dashboardInfo = new DashboardInfo(new DashboardId(getId()));
dashboardInfo.setCreatedTime(UUIDs.unixTimestamp(getId()));
if (tenantId != null) {
dashboardInfo.setTenantId(new TenantId(tenantId));
dashboardInfo.setTenantId(new TenantId(toUUID(tenantId)));
}
if (customerId != null) {
dashboardInfo.setCustomerId(new CustomerId(customerId));
dashboardInfo.setCustomerId(new CustomerId(toUUID(customerId)));
}
dashboardInfo.setTitle(title);
return dashboardInfo;

27
dao/src/main/java/org/thingsboard/server/dao/model/sql/DeviceCredentialsEntity.java

@ -17,29 +17,28 @@ package org.thingsboard.server.dao.model.sql;
import com.datastax.driver.core.utils.UUIDs;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.thingsboard.server.common.data.id.DeviceCredentialsId;
import org.thingsboard.server.common.data.id.DeviceId;
import org.thingsboard.server.common.data.security.DeviceCredentials;
import org.thingsboard.server.common.data.security.DeviceCredentialsType;
import org.thingsboard.server.dao.model.BaseEntity;
import org.thingsboard.server.dao.model.BaseSqlEntity;
import org.thingsboard.server.dao.model.ModelConstants;
import javax.persistence.*;
import java.util.UUID;
@Data
@EqualsAndHashCode(callSuper = true)
@Entity
@Table(name = ModelConstants.DEVICE_CREDENTIALS_COLUMN_FAMILY_NAME)
public final class DeviceCredentialsEntity implements BaseEntity<DeviceCredentials> {
public final class DeviceCredentialsEntity extends BaseSqlEntity<DeviceCredentials> implements BaseEntity<DeviceCredentials> {
@Transient
private static final long serialVersionUID = -2512362753385470464L;
@Id
@Column(name = ModelConstants.ID_PROPERTY)
private UUID id;
@Column(name = ModelConstants.DEVICE_CREDENTIALS_DEVICE_ID_PROPERTY)
private UUID deviceId;
private String deviceId;
@Enumerated(EnumType.STRING)
@Column(name = ModelConstants.DEVICE_CREDENTIALS_CREDENTIALS_TYPE_PROPERTY)
@ -57,22 +56,22 @@ public final class DeviceCredentialsEntity implements BaseEntity<DeviceCredentia
public DeviceCredentialsEntity(DeviceCredentials deviceCredentials) {
if (deviceCredentials.getId() != null) {
this.id = deviceCredentials.getId().getId();
this.setId(deviceCredentials.getId().getId());
}
if (deviceCredentials.getDeviceId() != null) {
this.deviceId = deviceCredentials.getDeviceId().getId();
this.deviceId = toString(deviceCredentials.getDeviceId().getId());
}
this.credentialsType = deviceCredentials.getCredentialsType();
this.credentialsId = deviceCredentials.getCredentialsId();
this.credentialsValue = deviceCredentials.getCredentialsValue();
this.credentialsValue = deviceCredentials.getCredentialsValue();
}
@Override
public DeviceCredentials toData() {
DeviceCredentials deviceCredentials = new DeviceCredentials(new DeviceCredentialsId(id));
deviceCredentials.setCreatedTime(UUIDs.unixTimestamp(id));
DeviceCredentials deviceCredentials = new DeviceCredentials(new DeviceCredentialsId(getId()));
deviceCredentials.setCreatedTime(UUIDs.unixTimestamp(getId()));
if (deviceId != null) {
deviceCredentials.setDeviceId(new DeviceId(deviceId));
deviceCredentials.setDeviceId(new DeviceId(toUUID(deviceId)));
}
deviceCredentials.setCredentialsType(credentialsType);
deviceCredentials.setCredentialsId(credentialsId);

37
dao/src/main/java/org/thingsboard/server/dao/model/sql/DeviceEntity.java

@ -18,44 +18,45 @@ package org.thingsboard.server.dao.model.sql;
import com.datastax.driver.core.utils.UUIDs;
import com.fasterxml.jackson.databind.JsonNode;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.hibernate.annotations.Type;
import org.hibernate.annotations.TypeDef;
import org.thingsboard.server.common.data.Device;
import org.thingsboard.server.common.data.id.CustomerId;
import org.thingsboard.server.common.data.id.DeviceId;
import org.thingsboard.server.common.data.id.TenantId;
import org.thingsboard.server.dao.model.BaseSqlEntity;
import org.thingsboard.server.dao.model.ModelConstants;
import org.thingsboard.server.dao.model.SearchTextEntity;
import org.thingsboard.server.dao.util.mapping.JsonStringType;
import javax.persistence.*;
import java.util.UUID;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Table;
import javax.persistence.Transient;
@Data
@EqualsAndHashCode(callSuper = true)
@Entity
@TypeDef(name = "json", typeClass = JsonStringType.class)
@Table(name = ModelConstants.DEVICE_COLUMN_FAMILY_NAME)
public final class DeviceEntity implements SearchTextEntity<Device> {
public final class DeviceEntity extends BaseSqlEntity<Device> implements SearchTextEntity<Device> {
@Transient
private static final long serialVersionUID = 8050086401213322856L;
@Id
@Column(name = ModelConstants.ID_PROPERTY)
private UUID id;
@Column(name = ModelConstants.DEVICE_TENANT_ID_PROPERTY)
private UUID tenantId;
private String tenantId;
@Column(name = ModelConstants.DEVICE_CUSTOMER_ID_PROPERTY)
private UUID customerId;
private String customerId;
@Column(name = ModelConstants.DEVICE_TYPE_PROPERTY)
private String type;
@Column(name = ModelConstants.DEVICE_NAME_PROPERTY)
private String name;
@Column(name = ModelConstants.SEARCH_TEXT_PROPERTY)
private String searchText;
@ -69,13 +70,13 @@ public final class DeviceEntity implements SearchTextEntity<Device> {
public DeviceEntity(Device device) {
if (device.getId() != null) {
this.id = device.getId().getId();
this.setId(device.getId().getId());
}
if (device.getTenantId() != null) {
this.tenantId = device.getTenantId().getId();
this.tenantId = toString(device.getTenantId().getId());
}
if (device.getCustomerId() != null) {
this.customerId = device.getCustomerId().getId();
this.customerId = toString(device.getCustomerId().getId());
}
this.name = device.getName();
this.type = device.getType();
@ -91,16 +92,16 @@ public final class DeviceEntity implements SearchTextEntity<Device> {
public void setSearchText(String searchText) {
this.searchText = searchText;
}
@Override
public Device toData() {
Device device = new Device(new DeviceId(id));
device.setCreatedTime(UUIDs.unixTimestamp(id));
Device device = new Device(new DeviceId(getId()));
device.setCreatedTime(UUIDs.unixTimestamp(getId()));
if (tenantId != null) {
device.setTenantId(new TenantId(tenantId));
device.setTenantId(new TenantId(toUUID(tenantId)));
}
if (customerId != null) {
device.setCustomerId(new CustomerId(customerId));
device.setCustomerId(new CustomerId(toUUID(customerId)));
}
device.setName(name);
device.setType(type);

57
dao/src/main/java/org/thingsboard/server/dao/model/sql/EventEntity.java

@ -18,43 +18,43 @@ package org.thingsboard.server.dao.model.sql;
import com.datastax.driver.core.utils.UUIDs;
import com.fasterxml.jackson.databind.JsonNode;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import org.hibernate.annotations.Type;
import org.hibernate.annotations.TypeDef;
import org.thingsboard.server.common.data.EntityType;
import org.thingsboard.server.common.data.Event;
import org.thingsboard.server.common.data.id.*;
import org.thingsboard.server.common.data.id.EntityIdFactory;
import org.thingsboard.server.common.data.id.EventId;
import org.thingsboard.server.common.data.id.TenantId;
import org.thingsboard.server.dao.model.BaseEntity;
import org.thingsboard.server.dao.model.BaseSqlEntity;
import org.thingsboard.server.dao.util.mapping.JsonStringType;
import javax.persistence.*;
import java.util.UUID;
import static org.thingsboard.server.dao.model.ModelConstants.*;
@Data
@EqualsAndHashCode(callSuper = true)
@Entity
@TypeDef(name = "json", typeClass = JsonStringType.class)
@Table(name = EVENT_COLUMN_FAMILY_NAME)
@NoArgsConstructor
public class EventEntity implements BaseEntity<Event> {
public class EventEntity extends BaseSqlEntity<Event> implements BaseEntity<Event> {
@Transient
private static final long serialVersionUID = -5717830061727466727L;
@Id
@Column(name = ID_PROPERTY)
private UUID id;
@Column(name = EVENT_TENANT_ID_PROPERTY)
private UUID tenantId;
private String tenantId;
@Enumerated(EnumType.STRING)
@Column(name = EVENT_ENTITY_TYPE_PROPERTY)
private EntityType entityType;
@Column(name = EVENT_ENTITY_ID_PROPERTY)
private UUID entityId;
private String entityId;
@Column(name = EVENT_TYPE_PROPERTY)
private String eventType;
@ -68,52 +68,27 @@ public class EventEntity implements BaseEntity<Event> {
public EventEntity(Event event) {
if (event.getId() != null) {
this.id = event.getId().getId();
this.setId(event.getId().getId());
}
if (event.getTenantId() != null) {
this.tenantId = event.getTenantId().getId();
this.tenantId = toString(event.getTenantId().getId());
}
if (event.getEntityId() != null) {
this.entityType = event.getEntityId().getEntityType();
this.entityId = event.getEntityId().getId();
this.entityId = toString(event.getEntityId().getId());
}
this.eventType = event.getType();
this.eventUid = event.getUid();
this.body = event.getBody();
}
@Override
public UUID getId() {
return id;
}
@Override
public void setId(UUID id) {
this.id = id;
}
@Override
public Event toData() {
Event event = new Event(new EventId(id));
event.setCreatedTime(UUIDs.unixTimestamp(id));
event.setTenantId(new TenantId(tenantId));
switch (entityType) {
case TENANT:
event.setEntityId(new TenantId(entityId));
break;
case DEVICE:
event.setEntityId(new DeviceId(entityId));
break;
case CUSTOMER:
event.setEntityId(new CustomerId(entityId));
break;
case RULE:
event.setEntityId(new RuleId(entityId));
break;
case PLUGIN:
event.setEntityId(new PluginId(entityId));
break;
}
Event event = new Event(new EventId(getId()));
event.setCreatedTime(UUIDs.unixTimestamp(getId()));
event.setTenantId(new TenantId(toUUID(tenantId)));
event.setEntityId(EntityIdFactory.getByTypeAndUuid(entityType, toUUID(entityId)));
event.setBody(body);
event.setType(eventType);
event.setUid(eventUid);

34
dao/src/main/java/org/thingsboard/server/dao/model/sql/PluginMetaDataEntity.java

@ -18,36 +18,38 @@ package org.thingsboard.server.dao.model.sql;
import com.datastax.driver.core.utils.UUIDs;
import com.fasterxml.jackson.databind.JsonNode;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.hibernate.annotations.Type;
import org.hibernate.annotations.TypeDef;
import org.thingsboard.server.common.data.id.PluginId;
import org.thingsboard.server.common.data.id.TenantId;
import org.thingsboard.server.common.data.plugin.ComponentLifecycleState;
import org.thingsboard.server.common.data.plugin.PluginMetaData;
import org.thingsboard.server.dao.model.BaseSqlEntity;
import org.thingsboard.server.dao.model.ModelConstants;
import org.thingsboard.server.dao.model.SearchTextEntity;
import org.thingsboard.server.dao.util.mapping.JsonStringType;
import javax.persistence.*;
import java.util.UUID;
import static org.thingsboard.server.common.data.UUIDConverter.fromString;
import static org.thingsboard.server.common.data.UUIDConverter.fromTimeUUID;
@Data
@EqualsAndHashCode(callSuper = true)
@Entity
@TypeDef(name = "json", typeClass = JsonStringType.class)
@Table(name = ModelConstants.PLUGIN_COLUMN_FAMILY_NAME)
public class PluginMetaDataEntity implements SearchTextEntity<PluginMetaData> {
public class PluginMetaDataEntity extends BaseSqlEntity<PluginMetaData> implements SearchTextEntity<PluginMetaData> {
@Transient
private static final long serialVersionUID = -6164321050824823149L;
@Id
@Column(name = ModelConstants.ID_PROPERTY)
private UUID id;
@Column(name = ModelConstants.PLUGIN_API_TOKEN_PROPERTY)
private String apiToken;
@Column(name = ModelConstants.PLUGIN_TENANT_ID_PROPERTY)
private UUID tenantId;
private String tenantId;
@Column(name = ModelConstants.PLUGIN_NAME_PROPERTY)
private String name;
@ -78,9 +80,9 @@ public class PluginMetaDataEntity implements SearchTextEntity<PluginMetaData> {
public PluginMetaDataEntity(PluginMetaData pluginMetaData) {
if (pluginMetaData.getId() != null) {
this.id = pluginMetaData.getId().getId();
this.setId(pluginMetaData.getId().getId());
}
this.tenantId = pluginMetaData.getTenantId().getId();
this.tenantId = fromTimeUUID(pluginMetaData.getTenantId().getId());
this.apiToken = pluginMetaData.getApiToken();
this.clazz = pluginMetaData.getClazz();
this.name = pluginMetaData.getName();
@ -101,21 +103,11 @@ public class PluginMetaDataEntity implements SearchTextEntity<PluginMetaData> {
this.searchText = searchText;
}
@Override
public UUID getId() {
return id;
}
@Override
public void setId(UUID id) {
this.id = id;
}
@Override
public PluginMetaData toData() {
PluginMetaData data = new PluginMetaData(new PluginId(id));
data.setTenantId(new TenantId(tenantId));
data.setCreatedTime(UUIDs.unixTimestamp(id));
PluginMetaData data = new PluginMetaData(new PluginId(getId()));
data.setTenantId(new TenantId(fromString(tenantId)));
data.setCreatedTime(UUIDs.unixTimestamp(getId()));
data.setName(name);
data.setClazz(clazz);
data.setPublicAccess(publicAccess);

10
dao/src/main/java/org/thingsboard/server/dao/model/sql/RelationCompositeKey.java

@ -18,11 +18,11 @@ package org.thingsboard.server.dao.model.sql;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.thingsboard.server.common.data.UUIDConverter;
import org.thingsboard.server.common.data.relation.EntityRelation;
import javax.persistence.Transient;
import java.io.Serializable;
import java.util.UUID;
@NoArgsConstructor
@AllArgsConstructor
@ -32,17 +32,17 @@ public class RelationCompositeKey implements Serializable {
@Transient
private static final long serialVersionUID = -4089175869616037592L;
private UUID fromId;
private String fromId;
private String fromType;
private UUID toId;
private String toId;
private String toType;
private String relationType;
private String relationTypeGroup;
public RelationCompositeKey(EntityRelation relation) {
this.fromId = relation.getFrom().getId();
this.fromId = UUIDConverter.fromTimeUUID(relation.getFrom().getId());
this.fromType = relation.getFrom().getEntityType().name();
this.toId = relation.getTo().getId();
this.toId = UUIDConverter.fromTimeUUID(relation.getTo().getId());
this.toType = relation.getTo().getEntityType().name();
this.relationType = relation.getType();
this.relationTypeGroup = relation.getTypeGroup().name();

14
dao/src/main/java/org/thingsboard/server/dao/model/sql/RelationEntity.java

@ -19,6 +19,7 @@ import com.fasterxml.jackson.databind.JsonNode;
import lombok.Data;
import org.hibernate.annotations.Type;
import org.hibernate.annotations.TypeDef;
import org.thingsboard.server.common.data.UUIDConverter;
import org.thingsboard.server.common.data.id.EntityIdFactory;
import org.thingsboard.server.common.data.relation.EntityRelation;
import org.thingsboard.server.common.data.relation.RelationTypeGroup;
@ -26,7 +27,6 @@ import org.thingsboard.server.dao.model.ToData;
import org.thingsboard.server.dao.util.mapping.JsonStringType;
import javax.persistence.*;
import java.util.UUID;
import static org.thingsboard.server.dao.model.ModelConstants.*;
@ -39,7 +39,7 @@ public final class RelationEntity implements ToData<EntityRelation> {
@Id
@Column(name = RELATION_FROM_ID_PROPERTY)
private UUID fromId;
private String fromId;
@Id
@Column(name = RELATION_FROM_TYPE_PROPERTY)
@ -47,7 +47,7 @@ public final class RelationEntity implements ToData<EntityRelation> {
@Id
@Column(name = RELATION_TO_ID_PROPERTY)
private UUID toId;
private String toId;
@Id
@Column(name = RELATION_TO_TYPE_PROPERTY)
@ -71,11 +71,11 @@ public final class RelationEntity implements ToData<EntityRelation> {
public RelationEntity(EntityRelation relation) {
if (relation.getTo() != null) {
this.toId = relation.getTo().getId();
this.toId = UUIDConverter.fromTimeUUID(relation.getTo().getId());
this.toType = relation.getTo().getEntityType().name();
}
if (relation.getFrom() != null) {
this.fromId = relation.getFrom().getId();
this.fromId = UUIDConverter.fromTimeUUID(relation.getFrom().getId());
this.fromType = relation.getFrom().getEntityType().name();
}
this.relationType = relation.getType();
@ -87,10 +87,10 @@ public final class RelationEntity implements ToData<EntityRelation> {
public EntityRelation toData() {
EntityRelation relation = new EntityRelation();
if (toId != null && toType != null) {
relation.setTo(EntityIdFactory.getByTypeAndUuid(toType, toId));
relation.setTo(EntityIdFactory.getByTypeAndUuid(toType, UUIDConverter.fromString(toId)));
}
if (fromId != null && fromType != null) {
relation.setFrom(EntityIdFactory.getByTypeAndUuid(fromType, fromId));
relation.setFrom(EntityIdFactory.getByTypeAndUuid(fromType, UUIDConverter.fromString(fromId)));
}
relation.setType(relationType);
relation.setTypeGroup(RelationTypeGroup.valueOf(relationTypeGroup));

31
dao/src/main/java/org/thingsboard/server/dao/model/sql/RuleMetaDataEntity.java

@ -18,6 +18,7 @@ package org.thingsboard.server.dao.model.sql;
import com.datastax.driver.core.utils.UUIDs;
import com.fasterxml.jackson.databind.JsonNode;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.hibernate.annotations.Type;
import org.hibernate.annotations.TypeDef;
import org.thingsboard.server.common.data.id.RuleId;
@ -25,27 +26,25 @@ import org.thingsboard.server.common.data.id.TenantId;
import org.thingsboard.server.common.data.plugin.ComponentLifecycleState;
import org.thingsboard.server.common.data.rule.RuleMetaData;
import org.thingsboard.server.dao.DaoUtil;
import org.thingsboard.server.dao.model.BaseSqlEntity;
import org.thingsboard.server.dao.model.ModelConstants;
import org.thingsboard.server.dao.model.SearchTextEntity;
import org.thingsboard.server.dao.util.mapping.JsonStringType;
import javax.persistence.*;
import java.util.UUID;
@Data
@EqualsAndHashCode(callSuper = true)
@Entity
@TypeDef(name = "json", typeClass = JsonStringType.class)
@Table(name = ModelConstants.RULE_COLUMN_FAMILY_NAME)
public class RuleMetaDataEntity implements SearchTextEntity<RuleMetaData> {
public class RuleMetaDataEntity extends BaseSqlEntity<RuleMetaData> implements SearchTextEntity<RuleMetaData> {
@Transient
private static final long serialVersionUID = -1506905644259463884L;
@Id
@Column(name = ModelConstants.ID_PROPERTY)
private UUID id;
@Column(name = ModelConstants.RULE_TENANT_ID_PROPERTY)
private UUID tenantId;
private String tenantId;
@Column(name = ModelConstants.RULE_NAME_PROPERTY)
private String name;
@ -84,9 +83,9 @@ public class RuleMetaDataEntity implements SearchTextEntity<RuleMetaData> {
public RuleMetaDataEntity(RuleMetaData rule) {
if (rule.getId() != null) {
this.id = rule.getUuidId();
this.setId(rule.getUuidId());
}
this.tenantId = DaoUtil.getId(rule.getTenantId());
this.tenantId = toString(DaoUtil.getId(rule.getTenantId()));
this.name = rule.getName();
this.pluginToken = rule.getPluginToken();
this.state = rule.getState();
@ -108,24 +107,14 @@ public class RuleMetaDataEntity implements SearchTextEntity<RuleMetaData> {
this.searchText = searchText;
}
@Override
public UUID getId() {
return id;
}
@Override
public void setId(UUID id) {
this.id = id;
}
@Override
public RuleMetaData toData() {
RuleMetaData rule = new RuleMetaData(new RuleId(id));
rule.setTenantId(new TenantId(tenantId));
RuleMetaData rule = new RuleMetaData(new RuleId(getId()));
rule.setTenantId(new TenantId(toUUID(tenantId)));
rule.setName(name);
rule.setState(state);
rule.setWeight(weight);
rule.setCreatedTime(UUIDs.unixTimestamp(id));
rule.setCreatedTime(UUIDs.unixTimestamp(getId()));
rule.setPluginToken(pluginToken);
rule.setFilters(filters);
rule.setProcessor(processor);

4
dao/src/main/java/org/thingsboard/server/dao/model/sql/TenantDeviceTypeEntity.java

@ -18,11 +18,9 @@ package org.thingsboard.server.dao.model.sql;
import lombok.AllArgsConstructor;
import lombok.Data;
import java.util.UUID;
@AllArgsConstructor
@Data
public class TenantDeviceTypeEntity {
private UUID tenantId;
private String tenantId;
private String type;
}

23
dao/src/main/java/org/thingsboard/server/dao/model/sql/TenantEntity.java

@ -18,30 +18,31 @@ package org.thingsboard.server.dao.model.sql;
import com.datastax.driver.core.utils.UUIDs;
import com.fasterxml.jackson.databind.JsonNode;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.hibernate.annotations.Type;
import org.hibernate.annotations.TypeDef;
import org.thingsboard.server.common.data.Tenant;
import org.thingsboard.server.common.data.id.TenantId;
import org.thingsboard.server.dao.model.BaseSqlEntity;
import org.thingsboard.server.dao.model.ModelConstants;
import org.thingsboard.server.dao.model.SearchTextEntity;
import org.thingsboard.server.dao.util.mapping.JsonStringType;
import javax.persistence.*;
import java.util.UUID;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Table;
import javax.persistence.Transient;
@Data
@EqualsAndHashCode(callSuper = true)
@Entity
@TypeDef(name = "json", typeClass = JsonStringType.class)
@Table(name = ModelConstants.TENANT_COLUMN_FAMILY_NAME)
public final class TenantEntity implements SearchTextEntity<Tenant> {
public final class TenantEntity extends BaseSqlEntity<Tenant> implements SearchTextEntity<Tenant> {
@Transient
private static final long serialVersionUID = -4330655990232136337L;
@Id
@Column(name = ModelConstants.ID_PROPERTY)
private UUID id;
@Column(name = ModelConstants.TENANT_TITLE_PROPERTY)
private String title;
@ -75,7 +76,7 @@ public final class TenantEntity implements SearchTextEntity<Tenant> {
@Column(name = ModelConstants.EMAIL_PROPERTY)
private String email;
@Type(type="json")
@Type(type = "json")
@Column(name = ModelConstants.TENANT_ADDITIONAL_INFO_PROPERTY)
private JsonNode additionalInfo;
@ -85,7 +86,7 @@ public final class TenantEntity implements SearchTextEntity<Tenant> {
public TenantEntity(Tenant tenant) {
if (tenant.getId() != null) {
this.id = tenant.getId().getId();
this.setId(tenant.getId().getId());
}
this.title = tenant.getTitle();
this.region = tenant.getRegion();
@ -116,8 +117,8 @@ public final class TenantEntity implements SearchTextEntity<Tenant> {
@Override
public Tenant toData() {
Tenant tenant = new Tenant(new TenantId(id));
tenant.setCreatedTime(UUIDs.unixTimestamp(id));
Tenant tenant = new Tenant(new TenantId(getId()));
tenant.setCreatedTime(UUIDs.unixTimestamp(getId()));
tenant.setTitle(title);
tenant.setRegion(region);
tenant.setCountry(country);

5
dao/src/main/java/org/thingsboard/server/dao/model/sql/TsKvCompositeKey.java

@ -22,18 +22,17 @@ import org.thingsboard.server.common.data.EntityType;
import javax.persistence.Transient;
import java.io.Serializable;
import java.util.UUID;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class TsKvCompositeKey implements Serializable{
public class TsKvCompositeKey implements Serializable {
@Transient
private static final long serialVersionUID = -4089175869616037523L;
private EntityType entityType;
private UUID entityId;
private String entityId;
private String key;
private long ts;
}

3
dao/src/main/java/org/thingsboard/server/dao/model/sql/TsKvEntity.java

@ -21,7 +21,6 @@ import org.thingsboard.server.common.data.kv.*;
import org.thingsboard.server.dao.model.ToData;
import javax.persistence.*;
import java.util.UUID;
import static org.thingsboard.server.dao.model.ModelConstants.*;
@ -69,7 +68,7 @@ public final class TsKvEntity implements ToData<TsKvEntry> {
@Id
@Column(name = ENTITY_ID_COLUMN)
private UUID entityId;
private String entityId;
@Id
@Column(name = KEY_COLUMN)

7
dao/src/main/java/org/thingsboard/server/dao/model/sql/TsKvLatestCompositeKey.java

@ -15,12 +15,13 @@
*/
package org.thingsboard.server.dao.model.sql;
import lombok.*;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.thingsboard.server.common.data.EntityType;
import javax.persistence.Transient;
import java.io.Serializable;
import java.util.UUID;
@Data
@NoArgsConstructor
@ -31,6 +32,6 @@ public class TsKvLatestCompositeKey implements Serializable{
private static final long serialVersionUID = -4089175869616037523L;
private EntityType entityType;
private UUID entityId;
private String entityId;
private String key;
}

5
dao/src/main/java/org/thingsboard/server/dao/model/sql/TsKvLatestEntity.java

@ -21,7 +21,6 @@ import org.thingsboard.server.common.data.kv.*;
import org.thingsboard.server.dao.model.ToData;
import javax.persistence.*;
import java.util.UUID;
import static org.thingsboard.server.dao.model.ModelConstants.*;
@ -31,6 +30,8 @@ import static org.thingsboard.server.dao.model.ModelConstants.*;
@IdClass(TsKvLatestCompositeKey.class)
public final class TsKvLatestEntity implements ToData<TsKvEntry> {
//TODO: reafctor this and TsKvEntity to avoid code duplicates
@Id
@Enumerated(EnumType.STRING)
@Column(name = ENTITY_TYPE_COLUMN)
@ -38,7 +39,7 @@ public final class TsKvLatestEntity implements ToData<TsKvEntry> {
@Id
@Column(name = ENTITY_ID_COLUMN)
private UUID entityId;
private String entityId;
@Id
@Column(name = KEY_COLUMN)

36
dao/src/main/java/org/thingsboard/server/dao/model/sql/UserCredentialsEntity.java

@ -17,29 +17,30 @@ package org.thingsboard.server.dao.model.sql;
import com.datastax.driver.core.utils.UUIDs;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.thingsboard.server.common.data.id.UserCredentialsId;
import org.thingsboard.server.common.data.id.UserId;
import org.thingsboard.server.common.data.security.UserCredentials;
import org.thingsboard.server.dao.model.BaseEntity;
import org.thingsboard.server.dao.model.BaseSqlEntity;
import org.thingsboard.server.dao.model.ModelConstants;
import javax.persistence.*;
import java.util.UUID;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Table;
import javax.persistence.Transient;
@Data
@EqualsAndHashCode(callSuper = true)
@Entity
@Table(name = ModelConstants.USER_CREDENTIALS_COLUMN_FAMILY_NAME)
public final class UserCredentialsEntity implements BaseEntity<UserCredentials> {
public final class UserCredentialsEntity extends BaseSqlEntity<UserCredentials> implements BaseEntity<UserCredentials> {
@Transient
private static final long serialVersionUID = -3989724854149114846L;
@Id
@Column(name = ModelConstants.ID_PROPERTY)
private UUID id;
@Column(name = ModelConstants.USER_CREDENTIALS_USER_ID_PROPERTY, unique = true)
private UUID userId;
private String userId;
@Column(name = ModelConstants.USER_CREDENTIALS_ENABLED_PROPERTY)
private boolean enabled;
@ -59,10 +60,10 @@ public final class UserCredentialsEntity implements BaseEntity<UserCredentials>
public UserCredentialsEntity(UserCredentials userCredentials) {
if (userCredentials.getId() != null) {
this.id = userCredentials.getId().getId();
this.setId(userCredentials.getId().getId());
}
if (userCredentials.getUserId() != null) {
this.userId = userCredentials.getUserId().getId();
this.userId = toString(userCredentials.getUserId().getId());
}
this.enabled = userCredentials.isEnabled();
this.password = userCredentials.getPassword();
@ -72,10 +73,10 @@ public final class UserCredentialsEntity implements BaseEntity<UserCredentials>
@Override
public UserCredentials toData() {
UserCredentials userCredentials = new UserCredentials(new UserCredentialsId(id));
userCredentials.setCreatedTime(UUIDs.unixTimestamp(id));
UserCredentials userCredentials = new UserCredentials(new UserCredentialsId(getId()));
userCredentials.setCreatedTime(UUIDs.unixTimestamp(getId()));
if (userId != null) {
userCredentials.setUserId(new UserId(userId));
userCredentials.setUserId(new UserId(toUUID(userId)));
}
userCredentials.setEnabled(enabled);
userCredentials.setPassword(password);
@ -84,13 +85,4 @@ public final class UserCredentialsEntity implements BaseEntity<UserCredentials>
return userCredentials;
}
@Override
public UUID getId() {
return id;
}
@Override
public void setId(UUID id) {
this.id = id;
}
}

43
dao/src/main/java/org/thingsboard/server/dao/model/sql/UserEntity.java

@ -18,6 +18,7 @@ package org.thingsboard.server.dao.model.sql;
import com.datastax.driver.core.utils.UUIDs;
import com.fasterxml.jackson.databind.JsonNode;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.hibernate.annotations.Type;
import org.hibernate.annotations.TypeDef;
import org.thingsboard.server.common.data.User;
@ -25,33 +26,33 @@ import org.thingsboard.server.common.data.id.CustomerId;
import org.thingsboard.server.common.data.id.TenantId;
import org.thingsboard.server.common.data.id.UserId;
import org.thingsboard.server.common.data.security.Authority;
import org.thingsboard.server.dao.model.BaseSqlEntity;
import org.thingsboard.server.dao.model.ModelConstants;
import org.thingsboard.server.dao.model.SearchTextEntity;
import org.thingsboard.server.dao.util.mapping.JsonStringType;
import javax.persistence.*;
import java.util.UUID;
import static org.thingsboard.server.common.data.UUIDConverter.fromString;
import static org.thingsboard.server.common.data.UUIDConverter.fromTimeUUID;
/**
* Created by Valerii Sosliuk on 4/21/2017.
*/
@Data
@EqualsAndHashCode(callSuper = true)
@Entity
@TypeDef(name = "json", typeClass = JsonStringType.class)
@Table(name = ModelConstants.USER_PG_HIBERNATE_COLUMN_FAMILY_NAME)
public class UserEntity implements SearchTextEntity<User> {
public class UserEntity extends BaseSqlEntity<User> implements SearchTextEntity<User> {
@Transient
private static final long serialVersionUID = -271106508790582977L;
@Id
@Column(name = ModelConstants.ID_PROPERTY)
private UUID id;
@Column(name = ModelConstants.USER_TENANT_ID_PROPERTY)
private UUID tenantId;
private String tenantId;
@Column(name = ModelConstants.USER_CUSTOMER_ID_PROPERTY)
private UUID customerId;
private String customerId;
@Enumerated(EnumType.STRING)
@Column(name = ModelConstants.USER_AUTHORITY_PROPERTY)
@ -69,7 +70,7 @@ public class UserEntity implements SearchTextEntity<User> {
@Column(name = ModelConstants.USER_LAST_NAME_PROPERTY)
private String lastName;
@Type(type="json")
@Type(type = "json")
@Column(name = ModelConstants.USER_ADDITIONAL_INFO_PROPERTY)
private JsonNode additionalInfo;
@ -78,14 +79,14 @@ public class UserEntity implements SearchTextEntity<User> {
public UserEntity(User user) {
if (user.getId() != null) {
this.id = user.getId().getId();
this.setId(user.getId().getId());
}
this.authority = user.getAuthority();
if (user.getTenantId() != null) {
this.tenantId = user.getTenantId().getId();
this.tenantId = fromTimeUUID(user.getTenantId().getId());
}
if (user.getCustomerId() != null) {
this.customerId = user.getCustomerId().getId();
this.customerId = fromTimeUUID(user.getCustomerId().getId());
}
this.email = user.getEmail();
this.firstName = user.getFirstName();
@ -103,26 +104,16 @@ public class UserEntity implements SearchTextEntity<User> {
this.searchText = searchText;
}
@Override
public UUID getId() {
return id;
}
@Override
public void setId(UUID id) {
this.id = id;
}
@Override
public User toData() {
User user = new User(new UserId(id));
user.setCreatedTime(UUIDs.unixTimestamp(id));
User user = new User(new UserId(getId()));
user.setCreatedTime(UUIDs.unixTimestamp(getId()));
user.setAuthority(authority);
if (tenantId != null) {
user.setTenantId(new TenantId(tenantId));
user.setTenantId(new TenantId(fromString(tenantId)));
}
if (customerId != null) {
user.setCustomerId(new CustomerId(customerId));
user.setCustomerId(new CustomerId(fromString(customerId)));
}
user.setEmail(email);
user.setFirstName(firstName);

37
dao/src/main/java/org/thingsboard/server/dao/model/sql/WidgetTypeEntity.java

@ -18,33 +18,34 @@ package org.thingsboard.server.dao.model.sql;
import com.datastax.driver.core.utils.UUIDs;
import com.fasterxml.jackson.databind.JsonNode;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.hibernate.annotations.Type;
import org.hibernate.annotations.TypeDef;
import org.thingsboard.server.common.data.id.TenantId;
import org.thingsboard.server.common.data.id.WidgetTypeId;
import org.thingsboard.server.common.data.widget.WidgetType;
import org.thingsboard.server.dao.model.BaseEntity;
import org.thingsboard.server.dao.model.BaseSqlEntity;
import org.thingsboard.server.dao.model.ModelConstants;
import org.thingsboard.server.dao.util.mapping.JsonStringType;
import javax.persistence.*;
import java.util.UUID;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Table;
import javax.persistence.Transient;
@Data
@EqualsAndHashCode(callSuper = true)
@Entity
@TypeDef(name = "json", typeClass = JsonStringType.class)
@Table(name = ModelConstants.WIDGET_TYPE_COLUMN_FAMILY_NAME)
public final class WidgetTypeEntity implements BaseEntity<WidgetType> {
public final class WidgetTypeEntity extends BaseSqlEntity<WidgetType> implements BaseEntity<WidgetType> {
@Transient
private static final long serialVersionUID = -5436279069884988630L;
@Id
@Column(name = ModelConstants.ID_PROPERTY)
private UUID id;
@Column(name = ModelConstants.WIDGET_TYPE_TENANT_ID_PROPERTY)
private UUID tenantId;
private String tenantId;
@Column(name = ModelConstants.WIDGET_TYPE_BUNDLE_ALIAS_PROPERTY)
private String bundleAlias;
@ -65,10 +66,10 @@ public final class WidgetTypeEntity implements BaseEntity<WidgetType> {
public WidgetTypeEntity(WidgetType widgetType) {
if (widgetType.getId() != null) {
this.id = widgetType.getId().getId();
this.setId(widgetType.getId().getId());
}
if (widgetType.getTenantId() != null) {
this.tenantId = widgetType.getTenantId().getId();
this.tenantId = toString(widgetType.getTenantId().getId());
}
this.bundleAlias = widgetType.getBundleAlias();
this.alias = widgetType.getAlias();
@ -76,22 +77,12 @@ public final class WidgetTypeEntity implements BaseEntity<WidgetType> {
this.descriptor = widgetType.getDescriptor();
}
@Override
public UUID getId() {
return id;
}
@Override
public void setId(UUID id) {
this.id = id;
}
@Override
public WidgetType toData() {
WidgetType widgetType = new WidgetType(new WidgetTypeId(id));
widgetType.setCreatedTime(UUIDs.unixTimestamp(id));
WidgetType widgetType = new WidgetType(new WidgetTypeId(getId()));
widgetType.setCreatedTime(UUIDs.unixTimestamp(getId()));
if (tenantId != null) {
widgetType.setTenantId(new TenantId(tenantId));
widgetType.setTenantId(new TenantId(toUUID(tenantId)));
}
widgetType.setBundleAlias(bundleAlias);
widgetType.setAlias(alias);

38
dao/src/main/java/org/thingsboard/server/dao/model/sql/WidgetsBundleEntity.java

@ -18,29 +18,31 @@ package org.thingsboard.server.dao.model.sql;
import com.datastax.driver.core.utils.UUIDs;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.thingsboard.server.common.data.UUIDConverter;
import org.thingsboard.server.common.data.id.TenantId;
import org.thingsboard.server.common.data.id.WidgetsBundleId;
import org.thingsboard.server.common.data.widget.WidgetsBundle;
import org.thingsboard.server.dao.model.BaseSqlEntity;
import org.thingsboard.server.dao.model.ModelConstants;
import org.thingsboard.server.dao.model.SearchTextEntity;
import javax.persistence.*;
import java.util.UUID;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Table;
import javax.persistence.Transient;
@Data
@EqualsAndHashCode(callSuper = true)
@Entity
@Table(name = ModelConstants.WIDGETS_BUNDLE_COLUMN_FAMILY_NAME)
public final class WidgetsBundleEntity implements SearchTextEntity<WidgetsBundle> {
public final class WidgetsBundleEntity extends BaseSqlEntity<WidgetsBundle> implements SearchTextEntity<WidgetsBundle> {
@Transient
private static final long serialVersionUID = 6897035686422298096L;
@Id
@Column(name = ModelConstants.ID_PROPERTY)
private UUID id;
@Column(name = ModelConstants.WIDGETS_BUNDLE_TENANT_ID_PROPERTY)
private UUID tenantId;
private String tenantId;
@Column(name = ModelConstants.WIDGETS_BUNDLE_ALIAS_PROPERTY)
private String alias;
@ -57,25 +59,15 @@ public final class WidgetsBundleEntity implements SearchTextEntity<WidgetsBundle
public WidgetsBundleEntity(WidgetsBundle widgetsBundle) {
if (widgetsBundle.getId() != null) {
this.id = widgetsBundle.getId().getId();
this.setId(widgetsBundle.getId().getId());
}
if (widgetsBundle.getTenantId() != null) {
this.tenantId = widgetsBundle.getTenantId().getId();
this.tenantId = UUIDConverter.fromTimeUUID(widgetsBundle.getTenantId().getId());
}
this.alias = widgetsBundle.getAlias();
this.title = widgetsBundle.getTitle();
}
@Override
public UUID getId() {
return id;
}
@Override
public void setId(UUID id) {
this.id = id;
}
@Override
public String getSearchTextSource() {
return title;
@ -88,10 +80,10 @@ public final class WidgetsBundleEntity implements SearchTextEntity<WidgetsBundle
@Override
public WidgetsBundle toData() {
WidgetsBundle widgetsBundle = new WidgetsBundle(new WidgetsBundleId(id));
widgetsBundle.setCreatedTime(UUIDs.unixTimestamp(id));
WidgetsBundle widgetsBundle = new WidgetsBundle(new WidgetsBundleId(UUIDConverter.fromString(id)));
widgetsBundle.setCreatedTime(UUIDs.unixTimestamp(UUIDConverter.fromString(id)));
if (tenantId != null) {
widgetsBundle.setTenantId(new TenantId(tenantId));
widgetsBundle.setTenantId(new TenantId(UUIDConverter.fromString(tenantId)));
}
widgetsBundle.setAlias(alias);
widgetsBundle.setTitle(title);

2
dao/src/main/java/org/thingsboard/server/dao/model/type/AlarmSeverityCodec.java

@ -17,8 +17,6 @@ package org.thingsboard.server.dao.model.type;
import com.datastax.driver.extras.codecs.enums.EnumNameCodec;
import org.thingsboard.server.common.data.alarm.AlarmSeverity;
import org.thingsboard.server.common.data.alarm.AlarmStatus;
import org.thingsboard.server.dao.alarm.AlarmService;
public class AlarmSeverityCodec extends EnumNameCodec<AlarmSeverity> {

3
dao/src/main/java/org/thingsboard/server/dao/model/type/AuthorityCodec.java

@ -15,9 +15,8 @@
*/
package org.thingsboard.server.dao.model.type;
import org.thingsboard.server.common.data.security.Authority;
import com.datastax.driver.extras.codecs.enums.EnumNameCodec;
import org.thingsboard.server.common.data.security.Authority;
public class AuthorityCodec extends EnumNameCodec<Authority> {

1
dao/src/main/java/org/thingsboard/server/dao/model/type/ComponentLifecycleStateCodec.java

@ -17,7 +17,6 @@ package org.thingsboard.server.dao.model.type;
import com.datastax.driver.extras.codecs.enums.EnumNameCodec;
import org.thingsboard.server.common.data.plugin.ComponentLifecycleState;
import org.thingsboard.server.common.data.security.Authority;
public class ComponentLifecycleStateCodec extends EnumNameCodec<ComponentLifecycleState> {

1
dao/src/main/java/org/thingsboard/server/dao/model/type/ComponentScopeCodec.java

@ -17,7 +17,6 @@ package org.thingsboard.server.dao.model.type;
import com.datastax.driver.extras.codecs.enums.EnumNameCodec;
import org.thingsboard.server.common.data.plugin.ComponentScope;
import org.thingsboard.server.common.data.plugin.ComponentType;
public class ComponentScopeCodec extends EnumNameCodec<ComponentScope> {

1
dao/src/main/java/org/thingsboard/server/dao/model/type/ComponentTypeCodec.java

@ -16,7 +16,6 @@
package org.thingsboard.server.dao.model.type;
import com.datastax.driver.extras.codecs.enums.EnumNameCodec;
import org.thingsboard.server.common.data.plugin.ComponentLifecycleState;
import org.thingsboard.server.common.data.plugin.ComponentType;
public class ComponentTypeCodec extends EnumNameCodec<ComponentType> {

3
dao/src/main/java/org/thingsboard/server/dao/model/type/DeviceCredentialsTypeCodec.java

@ -15,9 +15,8 @@
*/
package org.thingsboard.server.dao.model.type;
import org.thingsboard.server.common.data.security.DeviceCredentialsType;
import com.datastax.driver.extras.codecs.enums.EnumNameCodec;
import org.thingsboard.server.common.data.security.DeviceCredentialsType;
public class DeviceCredentialsTypeCodec extends EnumNameCodec<DeviceCredentialsType> {

1
dao/src/main/java/org/thingsboard/server/dao/model/type/EntityTypeCodec.java

@ -17,7 +17,6 @@ package org.thingsboard.server.dao.model.type;
import com.datastax.driver.extras.codecs.enums.EnumNameCodec;
import org.thingsboard.server.common.data.EntityType;
import org.thingsboard.server.common.data.plugin.ComponentType;
public class EntityTypeCodec extends EnumNameCodec<EntityType> {

3
dao/src/main/java/org/thingsboard/server/dao/model/type/RelationTypeGroupCodec.java

@ -15,9 +15,8 @@
*/
package org.thingsboard.server.dao.model.type;
import org.thingsboard.server.common.data.relation.RelationTypeGroup;
import com.datastax.driver.extras.codecs.enums.EnumNameCodec;
import org.thingsboard.server.common.data.relation.RelationTypeGroup;
public class RelationTypeGroupCodec extends EnumNameCodec<RelationTypeGroup> {

4
dao/src/main/java/org/thingsboard/server/dao/plugin/CassandraBasePluginDao.java

@ -22,11 +22,11 @@ import org.thingsboard.server.common.data.id.PluginId;
import org.thingsboard.server.common.data.id.TenantId;
import org.thingsboard.server.common.data.page.TextPageLink;
import org.thingsboard.server.common.data.plugin.PluginMetaData;
import org.thingsboard.server.dao.nosql.CassandraAbstractSearchTextDao;
import org.thingsboard.server.dao.DaoUtil;
import org.thingsboard.server.dao.util.NoSqlDao;
import org.thingsboard.server.dao.model.ModelConstants;
import org.thingsboard.server.dao.model.nosql.PluginMetaDataEntity;
import org.thingsboard.server.dao.nosql.CassandraAbstractSearchTextDao;
import org.thingsboard.server.dao.util.NoSqlDao;
import java.util.Arrays;
import java.util.List;

4
dao/src/main/java/org/thingsboard/server/dao/relation/BaseRelationDao.java

@ -28,11 +28,11 @@ import org.thingsboard.server.common.data.id.EntityIdFactory;
import org.thingsboard.server.common.data.page.TimePageLink;
import org.thingsboard.server.common.data.relation.EntityRelation;
import org.thingsboard.server.common.data.relation.RelationTypeGroup;
import org.thingsboard.server.dao.model.ModelConstants;
import org.thingsboard.server.dao.model.type.RelationTypeGroupCodec;
import org.thingsboard.server.dao.nosql.CassandraAbstractAsyncDao;
import org.thingsboard.server.dao.nosql.CassandraAbstractSearchTimeDao;
import org.thingsboard.server.dao.util.NoSqlDao;
import org.thingsboard.server.dao.model.ModelConstants;
import org.thingsboard.server.dao.model.type.RelationTypeGroupCodec;
import javax.annotation.PostConstruct;
import java.util.ArrayList;

4
dao/src/main/java/org/thingsboard/server/dao/rule/CassandraBaseRuleDao.java

@ -22,11 +22,11 @@ import org.thingsboard.server.common.data.id.RuleId;
import org.thingsboard.server.common.data.id.TenantId;
import org.thingsboard.server.common.data.page.TextPageLink;
import org.thingsboard.server.common.data.rule.RuleMetaData;
import org.thingsboard.server.dao.nosql.CassandraAbstractSearchTextDao;
import org.thingsboard.server.dao.DaoUtil;
import org.thingsboard.server.dao.util.NoSqlDao;
import org.thingsboard.server.dao.model.ModelConstants;
import org.thingsboard.server.dao.model.nosql.RuleMetaDataEntity;
import org.thingsboard.server.dao.nosql.CassandraAbstractSearchTextDao;
import org.thingsboard.server.dao.util.NoSqlDao;
import java.util.Arrays;
import java.util.List;

4
dao/src/main/java/org/thingsboard/server/dao/settings/CassandraAdminSettingsDao.java

@ -19,10 +19,10 @@ import com.datastax.driver.core.querybuilder.Select.Where;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
import org.thingsboard.server.common.data.AdminSettings;
import org.thingsboard.server.dao.nosql.CassandraAbstractModelDao;
import org.thingsboard.server.dao.DaoUtil;
import org.thingsboard.server.dao.util.NoSqlDao;
import org.thingsboard.server.dao.model.nosql.AdminSettingsEntity;
import org.thingsboard.server.dao.nosql.CassandraAbstractModelDao;
import org.thingsboard.server.dao.util.NoSqlDao;
import static com.datastax.driver.core.querybuilder.QueryBuilder.eq;
import static com.datastax.driver.core.querybuilder.QueryBuilder.select;

11
dao/src/main/java/org/thingsboard/server/dao/sql/JpaAbstractDao.java

@ -28,6 +28,8 @@ import org.thingsboard.server.dao.model.BaseEntity;
import java.util.List;
import java.util.UUID;
import static org.thingsboard.server.common.data.UUIDConverter.fromTimeUUID;
/**
* @author Valerii Sosliuk
*/
@ -38,7 +40,7 @@ public abstract class JpaAbstractDao<E extends BaseEntity<D>, D>
protected abstract Class<E> getEntityClass();
protected abstract CrudRepository<E, UUID> getCrudRepository();
protected abstract CrudRepository<E, String> getCrudRepository();
protected void setSearchText(E entity) {}
@ -64,19 +66,20 @@ public abstract class JpaAbstractDao<E extends BaseEntity<D>, D>
@Override
public D findById(UUID key) {
log.debug("Get entity by key {}", key);
E entity = getCrudRepository().findOne(key);
E entity = getCrudRepository().findOne(fromTimeUUID(key));
return DaoUtil.getData(entity);
}
@Override
public ListenableFuture<D> findByIdAsync(UUID key) {
log.debug("Get entity by key async {}", key);
return service.submit(() -> DaoUtil.getData(getCrudRepository().findOne(key)));
return service.submit(() -> DaoUtil.getData(getCrudRepository().findOne(fromTimeUUID(key))));
}
@Override
@Transactional
public boolean removeById(UUID key) {
public boolean removeById(UUID id) {
String key = fromTimeUUID(id);
getCrudRepository().delete(key);
log.debug("Remove request: {}", key);
return getCrudRepository().findOne(key) == null;

14
dao/src/main/java/org/thingsboard/server/dao/sql/JpaAbstractSearchTimeDao.java

@ -17,9 +17,9 @@ package org.thingsboard.server.dao.sql;
import com.datastax.driver.core.utils.UUIDs;
import org.springframework.data.jpa.domain.Specification;
import org.thingsboard.server.common.data.UUIDConverter;
import org.thingsboard.server.common.data.page.TimePageLink;
import org.thingsboard.server.dao.model.BaseEntity;
import static org.thingsboard.server.dao.model.ModelConstants.*;
import javax.persistence.criteria.CriteriaBuilder;
import javax.persistence.criteria.CriteriaQuery;
@ -41,30 +41,30 @@ public abstract class JpaAbstractSearchTimeDao<E extends BaseEntity<D>, D> exten
List<Predicate> predicates = new ArrayList<>();
if (pageLink.isAscOrder()) {
if (pageLink.getIdOffset() != null) {
Predicate lowerBound = criteriaBuilder.greaterThan(root.get(idColumn), pageLink.getIdOffset());
Predicate lowerBound = criteriaBuilder.greaterThan(root.get(idColumn), UUIDConverter.fromTimeUUID(pageLink.getIdOffset()));
predicates.add(lowerBound);
} else if (pageLink.getStartTime() != null) {
UUID startOf = UUIDs.startOf(pageLink.getStartTime());
Predicate lowerBound = criteriaBuilder.greaterThanOrEqualTo(root.get(idColumn), startOf);
Predicate lowerBound = criteriaBuilder.greaterThanOrEqualTo(root.get(idColumn), UUIDConverter.fromTimeUUID(startOf));
predicates.add(lowerBound);
}
if (pageLink.getEndTime() != null) {
UUID endOf = UUIDs.endOf(pageLink.getEndTime());
Predicate upperBound = criteriaBuilder.lessThanOrEqualTo(root.get(idColumn), endOf);
Predicate upperBound = criteriaBuilder.lessThanOrEqualTo(root.get(idColumn), UUIDConverter.fromTimeUUID(endOf));
predicates.add(upperBound);
}
} else {
if (pageLink.getIdOffset() != null) {
Predicate lowerBound = criteriaBuilder.lessThan(root.get(idColumn), pageLink.getIdOffset());
Predicate lowerBound = criteriaBuilder.lessThan(root.get(idColumn), UUIDConverter.fromTimeUUID(pageLink.getIdOffset()));
predicates.add(lowerBound);
} else if (pageLink.getEndTime() != null) {
UUID endOf = UUIDs.endOf(pageLink.getEndTime());
Predicate lowerBound = criteriaBuilder.lessThanOrEqualTo(root.get(idColumn), endOf);
Predicate lowerBound = criteriaBuilder.lessThanOrEqualTo(root.get(idColumn), UUIDConverter.fromTimeUUID(endOf));
predicates.add(lowerBound);
}
if (pageLink.getStartTime() != null) {
UUID startOf = UUIDs.startOf(pageLink.getStartTime());
Predicate upperBound = criteriaBuilder.greaterThanOrEqualTo(root.get(idColumn), startOf);
Predicate upperBound = criteriaBuilder.greaterThanOrEqualTo(root.get(idColumn), UUIDConverter.fromTimeUUID(startOf));
predicates.add(upperBound);
}
}

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

@ -20,22 +20,21 @@ import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.CrudRepository;
import org.springframework.data.repository.query.Param;
import org.thingsboard.server.common.data.EntityType;
import org.thingsboard.server.dao.util.SqlDao;
import org.thingsboard.server.dao.model.sql.AlarmEntity;
import org.thingsboard.server.dao.util.SqlDao;
import java.util.List;
import java.util.UUID;
/**
* Created by Valerii Sosliuk on 5/21/2017.
*/
@SqlDao
public interface AlarmRepository extends CrudRepository<AlarmEntity, UUID> {
public interface AlarmRepository extends CrudRepository<AlarmEntity, String> {
@Query("SELECT a FROM AlarmEntity a WHERE a.tenantId = :tenantId AND a.originatorId = :originatorId " +
"AND a.originatorType = :entityType AND a.type = :alarmType ORDER BY a.type ASC, a.id DESC")
List<AlarmEntity> findLatestByOriginatorAndType(@Param("tenantId") UUID tenantId,
@Param("originatorId") UUID originatorId,
List<AlarmEntity> findLatestByOriginatorAndType(@Param("tenantId") String tenantId,
@Param("originatorId") String originatorId,
@Param("entityType") EntityType entityType,
@Param("alarmType") String alarmType,
Pageable pageable);

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

@ -24,8 +24,8 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.repository.CrudRepository;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
import org.thingsboard.server.common.data.EntityType;
import org.thingsboard.server.common.data.UUIDConverter;
import org.thingsboard.server.common.data.alarm.Alarm;
import org.thingsboard.server.common.data.alarm.AlarmInfo;
import org.thingsboard.server.common.data.alarm.AlarmQuery;
@ -37,17 +37,15 @@ import org.thingsboard.server.common.data.relation.RelationTypeGroup;
import org.thingsboard.server.dao.DaoUtil;
import org.thingsboard.server.dao.alarm.AlarmDao;
import org.thingsboard.server.dao.alarm.BaseAlarmService;
import org.thingsboard.server.dao.util.SqlDao;
import org.thingsboard.server.dao.model.sql.AlarmEntity;
import org.thingsboard.server.dao.relation.RelationDao;
import org.thingsboard.server.dao.sql.JpaAbstractDao;
import org.thingsboard.server.dao.util.SqlDao;
import java.util.ArrayList;
import java.util.List;
import java.util.UUID;
import static org.springframework.transaction.annotation.Propagation.REQUIRES_NEW;
/**
* Created by Valerii Sosliuk on 5/19/2017.
*/
@ -68,7 +66,7 @@ public class JpaAlarmDao extends JpaAbstractDao<AlarmEntity, Alarm> implements A
}
@Override
protected CrudRepository<AlarmEntity, UUID> getCrudRepository() {
protected CrudRepository<AlarmEntity, String> getCrudRepository() {
return alarmRepository;
}
@ -76,8 +74,8 @@ public class JpaAlarmDao extends JpaAbstractDao<AlarmEntity, Alarm> implements A
public ListenableFuture<Alarm> findLatestByOriginatorAndType(TenantId tenantId, EntityId originator, String type) {
return service.submit(() -> {
List<AlarmEntity> latest = alarmRepository.findLatestByOriginatorAndType(
tenantId.getId(),
originator.getId(),
UUIDConverter.fromTimeUUID(tenantId.getId()),
UUIDConverter.fromTimeUUID(originator.getId()),
originator.getEntityType(),
type,
new PageRequest(0, 1));

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

@ -24,57 +24,56 @@ import org.thingsboard.server.dao.model.sql.AssetEntity;
import org.thingsboard.server.dao.util.SqlDao;
import java.util.List;
import java.util.UUID;
/**
* Created by Valerii Sosliuk on 5/21/2017.
*/
@SqlDao
public interface AssetRepository extends CrudRepository<AssetEntity, UUID> {
public interface AssetRepository extends CrudRepository<AssetEntity, String> {
@Query("SELECT a FROM AssetEntity a WHERE a.tenantId = :tenantId " +
"AND LOWER(a.searchText) LIKE LOWER(CONCAT(:textSearch, '%')) " +
"AND a.id > :idOffset ORDER BY a.id")
List<AssetEntity> findByTenantId(@Param("tenantId") UUID tenantId,
List<AssetEntity> findByTenantId(@Param("tenantId") String tenantId,
@Param("textSearch") String textSearch,
@Param("idOffset") UUID idOffset,
@Param("idOffset") String idOffset,
Pageable pageable);
@Query("SELECT a FROM AssetEntity a WHERE a.tenantId = :tenantId " +
"AND a.customerId = :customerId " +
"AND LOWER(a.searchText) LIKE LOWER(CONCAT(:textSearch, '%')) " +
"AND a.id > :idOffset ORDER BY a.id")
List<AssetEntity> findByTenantIdAndCustomerId(@Param("tenantId") UUID tenantId,
@Param("customerId") UUID customerId,
List<AssetEntity> findByTenantIdAndCustomerId(@Param("tenantId") String tenantId,
@Param("customerId") String customerId,
@Param("textSearch") String textSearch,
@Param("idOffset") UUID idOffset,
@Param("idOffset") String idOffset,
Pageable pageable);
List<AssetEntity> findByTenantIdAndIdIn(UUID tenantId, List<UUID> assetIds);
List<AssetEntity> findByTenantIdAndIdIn(String tenantId, List<String> assetIds);
List<AssetEntity> findByTenantIdAndCustomerIdAndIdIn(UUID tenantId, UUID customerId, List<UUID> assetIds);
List<AssetEntity> findByTenantIdAndCustomerIdAndIdIn(String tenantId, String customerId, List<String> assetIds);
AssetEntity findByTenantIdAndName(UUID tenantId, String name);
AssetEntity findByTenantIdAndName(String tenantId, String name);
@Query("SELECT a FROM AssetEntity a WHERE a.tenantId = :tenantId " +
"AND a.type = :type " +
"AND LOWER(a.searchText) LIKE LOWER(CONCAT(:textSearch, '%')) " +
"AND a.id > :idOffset ORDER BY a.id")
List<AssetEntity> findByTenantIdAndType(@Param("tenantId") UUID tenantId,
List<AssetEntity> findByTenantIdAndType(@Param("tenantId") String tenantId,
@Param("type") String type,
@Param("textSearch") String textSearch,
@Param("idOffset") UUID idOffset,
@Param("idOffset") String idOffset,
Pageable pageable);
@Query("SELECT a FROM AssetEntity a WHERE a.tenantId = :tenantId " +
"AND a.customerId = :customerId AND a.type = :type " +
"AND LOWER(a.searchText) LIKE LOWER(CONCAT(:textSearch, '%')) " +
"AND a.id > :idOffset ORDER BY a.id")
List<AssetEntity> findByTenantIdAndCustomerIdAndType(@Param("tenantId") UUID tenantId,
@Param("customerId") UUID customerId,
List<AssetEntity> findByTenantIdAndCustomerIdAndType(@Param("tenantId") String tenantId,
@Param("customerId") String customerId,
@Param("type") String type,
@Param("textSearch") String textSearch,
@Param("idOffset") UUID idOffset,
@Param("idOffset") String idOffset,
Pageable pageable);
@Query("SELECT NEW org.thingsboard.server.common.data.asset.TenantAssetType(a.type, a.tenantId) FROM AssetEntity a GROUP BY a.tenantId, a.type")

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

@ -24,17 +24,19 @@ import org.thingsboard.server.common.data.asset.Asset;
import org.thingsboard.server.common.data.asset.TenantAssetType;
import org.thingsboard.server.common.data.page.TextPageLink;
import org.thingsboard.server.dao.DaoUtil;
import org.thingsboard.server.dao.util.SqlDao;
import org.thingsboard.server.dao.asset.AssetDao;
import org.thingsboard.server.dao.model.sql.AssetEntity;
import org.thingsboard.server.dao.sql.JpaAbstractSearchTextDao;
import org.thingsboard.server.dao.util.SqlDao;
import java.util.List;
import java.util.Objects;
import java.util.Optional;
import java.util.UUID;
import static org.thingsboard.server.dao.model.ModelConstants.NULL_UUID;
import static org.thingsboard.server.common.data.UUIDConverter.fromTimeUUID;
import static org.thingsboard.server.common.data.UUIDConverter.fromTimeUUIDs;
import static org.thingsboard.server.dao.model.ModelConstants.NULL_UUID_STR;
/**
* Created by Valerii Sosliuk on 5/19/2017.
@ -52,7 +54,7 @@ public class JpaAssetDao extends JpaAbstractSearchTextDao<AssetEntity, Asset> im
}
@Override
protected CrudRepository<AssetEntity, UUID> getCrudRepository() {
protected CrudRepository<AssetEntity, String> getCrudRepository() {
return assetRepository;
}
@ -60,38 +62,38 @@ public class JpaAssetDao extends JpaAbstractSearchTextDao<AssetEntity, Asset> im
public List<Asset> findAssetsByTenantId(UUID tenantId, TextPageLink pageLink) {
return DaoUtil.convertDataList(assetRepository
.findByTenantId(
tenantId,
fromTimeUUID(tenantId),
Objects.toString(pageLink.getTextSearch(), ""),
pageLink.getIdOffset() == null ? NULL_UUID : pageLink.getIdOffset(),
pageLink.getIdOffset() == null ? NULL_UUID_STR : fromTimeUUID(pageLink.getIdOffset()),
new PageRequest(0, pageLink.getLimit())));
}
@Override
public ListenableFuture<List<Asset>> findAssetsByTenantIdAndIdsAsync(UUID tenantId, List<UUID> assetIds) {
return service.submit(() ->
DaoUtil.convertDataList(assetRepository.findByTenantIdAndIdIn(tenantId, assetIds)));
DaoUtil.convertDataList(assetRepository.findByTenantIdAndIdIn(fromTimeUUID(tenantId), fromTimeUUIDs(assetIds))));
}
@Override
public List<Asset> findAssetsByTenantIdAndCustomerId(UUID tenantId, UUID customerId, TextPageLink pageLink) {
return DaoUtil.convertDataList(assetRepository
.findByTenantIdAndCustomerId(
tenantId,
customerId,
fromTimeUUID(tenantId),
fromTimeUUID(customerId),
Objects.toString(pageLink.getTextSearch(), ""),
pageLink.getIdOffset() == null ? NULL_UUID : pageLink.getIdOffset(),
pageLink.getIdOffset() == null ? NULL_UUID_STR : fromTimeUUID(pageLink.getIdOffset()),
new PageRequest(0, pageLink.getLimit())));
}
@Override
public ListenableFuture<List<Asset>> findAssetsByTenantIdAndCustomerIdAndIdsAsync(UUID tenantId, UUID customerId, List<UUID> assetIds) {
return service.submit(() ->
DaoUtil.convertDataList(assetRepository.findByTenantIdAndCustomerIdAndIdIn(tenantId, customerId, assetIds)));
DaoUtil.convertDataList(assetRepository.findByTenantIdAndCustomerIdAndIdIn(fromTimeUUID(tenantId), fromTimeUUID(customerId), fromTimeUUIDs(assetIds))));
}
@Override
public Optional<Asset> findAssetsByTenantIdAndName(UUID tenantId, String name) {
Asset asset = DaoUtil.getData(assetRepository.findByTenantIdAndName(tenantId, name));
Asset asset = DaoUtil.getData(assetRepository.findByTenantIdAndName(fromTimeUUID(tenantId), name));
return Optional.ofNullable(asset);
}
@ -99,10 +101,10 @@ public class JpaAssetDao extends JpaAbstractSearchTextDao<AssetEntity, Asset> im
public List<Asset> findAssetsByTenantIdAndType(UUID tenantId, String type, TextPageLink pageLink) {
return DaoUtil.convertDataList(assetRepository
.findByTenantIdAndType(
tenantId,
fromTimeUUID(tenantId),
type,
Objects.toString(pageLink.getTextSearch(), ""),
pageLink.getIdOffset() == null ? NULL_UUID : pageLink.getIdOffset(),
pageLink.getIdOffset() == null ? NULL_UUID_STR : fromTimeUUID(pageLink.getIdOffset()),
new PageRequest(0, pageLink.getLimit())));
}
@ -110,11 +112,11 @@ public class JpaAssetDao extends JpaAbstractSearchTextDao<AssetEntity, Asset> im
public List<Asset> findAssetsByTenantIdAndCustomerIdAndType(UUID tenantId, UUID customerId, String type, TextPageLink pageLink) {
return DaoUtil.convertDataList(assetRepository
.findByTenantIdAndCustomerIdAndType(
tenantId,
customerId,
fromTimeUUID(tenantId),
fromTimeUUID(customerId),
type,
Objects.toString(pageLink.getTextSearch(), ""),
pageLink.getIdOffset() == null ? NULL_UUID : pageLink.getIdOffset(),
pageLink.getIdOffset() == null ? NULL_UUID_STR : fromTimeUUID(pageLink.getIdOffset()),
new PageRequest(0, pageLink.getLimit())));
}

5
dao/src/main/java/org/thingsboard/server/dao/sql/attributes/AttributeKvRepository.java

@ -17,18 +17,17 @@ package org.thingsboard.server.dao.sql.attributes;
import org.springframework.data.repository.CrudRepository;
import org.thingsboard.server.common.data.EntityType;
import org.thingsboard.server.dao.util.SqlDao;
import org.thingsboard.server.dao.model.sql.AttributeKvCompositeKey;
import org.thingsboard.server.dao.model.sql.AttributeKvEntity;
import org.thingsboard.server.dao.util.SqlDao;
import java.util.List;
import java.util.UUID;
@SqlDao
public interface AttributeKvRepository extends CrudRepository<AttributeKvEntity, AttributeKvCompositeKey> {
List<AttributeKvEntity> findAllByEntityTypeAndEntityIdAndAttributeType(EntityType entityType,
UUID entityId,
String entityId,
String attributeType);
}

31
dao/src/main/java/org/thingsboard/server/dao/sql/attributes/JpaAttributeDao.java

@ -20,20 +20,23 @@ import com.google.common.util.concurrent.ListenableFuture;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.thingsboard.server.common.data.UUIDConverter;
import org.thingsboard.server.common.data.id.EntityId;
import org.thingsboard.server.common.data.kv.AttributeKvEntry;
import org.thingsboard.server.dao.DaoUtil;
import org.thingsboard.server.dao.util.SqlDao;
import org.thingsboard.server.dao.attributes.AttributesDao;
import org.thingsboard.server.dao.model.sql.AttributeKvCompositeKey;
import org.thingsboard.server.dao.model.sql.AttributeKvEntity;
import org.thingsboard.server.dao.sql.JpaAbstractDaoListeningExecutorService;
import org.thingsboard.server.dao.util.SqlDao;
import java.util.Collection;
import java.util.List;
import java.util.Optional;
import java.util.stream.Collectors;
import static org.thingsboard.server.common.data.UUIDConverter.fromTimeUUID;
@Component
@Slf4j
@SqlDao
@ -45,11 +48,7 @@ public class JpaAttributeDao extends JpaAbstractDaoListeningExecutorService impl
@Override
public ListenableFuture<Optional<AttributeKvEntry>> find(EntityId entityId, String attributeType, String attributeKey) {
AttributeKvCompositeKey compositeKey =
new AttributeKvCompositeKey(
entityId.getEntityType(),
entityId.getId(),
attributeType,
attributeKey);
getAttributeKvCompositeKey(entityId, attributeType, attributeKey);
return service.submit(() ->
Optional.of(DaoUtil.getData(attributeKvRepository.findOne(compositeKey))));
}
@ -60,11 +59,7 @@ public class JpaAttributeDao extends JpaAbstractDaoListeningExecutorService impl
attributeKeys
.stream()
.map(attributeKey ->
new AttributeKvCompositeKey(
entityId.getEntityType(),
entityId.getId(),
attributeType,
attributeKey))
getAttributeKvCompositeKey(entityId, attributeType, attributeKey))
.collect(Collectors.toList());
return service.submit(() ->
DaoUtil.convertDataList(Lists.newArrayList(attributeKvRepository.findAll(compositeKeys))));
@ -76,7 +71,7 @@ public class JpaAttributeDao extends JpaAbstractDaoListeningExecutorService impl
DaoUtil.convertDataList(Lists.newArrayList(
attributeKvRepository.findAllByEntityTypeAndEntityIdAndAttributeType(
entityId.getEntityType(),
entityId.getId(),
UUIDConverter.fromTimeUUID(entityId.getId()),
attributeType))));
}
@ -84,7 +79,7 @@ public class JpaAttributeDao extends JpaAbstractDaoListeningExecutorService impl
public ListenableFuture<Void> save(EntityId entityId, String attributeType, AttributeKvEntry attribute) {
AttributeKvEntity entity = new AttributeKvEntity();
entity.setEntityType(entityId.getEntityType());
entity.setEntityId(entityId.getId());
entity.setEntityId(fromTimeUUID(entityId.getId()));
entity.setAttributeType(attributeType);
entity.setAttributeKey(attribute.getKey());
entity.setLastUpdateTs(attribute.getLastUpdateTs());
@ -105,7 +100,7 @@ public class JpaAttributeDao extends JpaAbstractDaoListeningExecutorService impl
.map(key -> {
AttributeKvEntity entityToDelete = new AttributeKvEntity();
entityToDelete.setEntityType(entityId.getEntityType());
entityToDelete.setEntityId(entityId.getId());
entityToDelete.setEntityId(fromTimeUUID(entityId.getId()));
entityToDelete.setAttributeType(attributeType);
entityToDelete.setAttributeKey(key);
return entityToDelete;
@ -116,4 +111,12 @@ public class JpaAttributeDao extends JpaAbstractDaoListeningExecutorService impl
return null;
});
}
private AttributeKvCompositeKey getAttributeKvCompositeKey(EntityId entityId, String attributeType, String attributeKey) {
return new AttributeKvCompositeKey(
entityId.getEntityType(),
fromTimeUUID(entityId.getId()),
attributeType,
attributeKey);
}
}

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

@ -21,8 +21,8 @@ import org.springframework.data.repository.CrudRepository;
import org.springframework.data.repository.query.Param;
import org.thingsboard.server.common.data.plugin.ComponentScope;
import org.thingsboard.server.common.data.plugin.ComponentType;
import org.thingsboard.server.dao.util.SqlDao;
import org.thingsboard.server.dao.model.sql.ComponentDescriptorEntity;
import org.thingsboard.server.dao.util.SqlDao;
import java.util.List;
import java.util.UUID;
@ -31,7 +31,7 @@ import java.util.UUID;
* Created by Valerii Sosliuk on 5/6/2017.
*/
@SqlDao
public interface ComponentDescriptorRepository extends CrudRepository<ComponentDescriptorEntity, UUID> {
public interface ComponentDescriptorRepository extends CrudRepository<ComponentDescriptorEntity, String> {
ComponentDescriptorEntity findByClazz(String clazz);
@ -40,7 +40,7 @@ public interface ComponentDescriptorRepository extends CrudRepository<ComponentD
"AND cd.id > :idOffset ORDER BY cd.id")
List<ComponentDescriptorEntity> findByType(@Param("type") ComponentType type,
@Param("textSearch") String textSearch,
@Param("idOffset") UUID idOffset,
@Param("idOffset") String idOffset,
Pageable pageable);
@Query("SELECT cd FROM ComponentDescriptorEntity cd WHERE cd.type = :type " +
@ -49,7 +49,7 @@ public interface ComponentDescriptorRepository extends CrudRepository<ComponentD
List<ComponentDescriptorEntity> findByScopeAndType(@Param("type") ComponentType type,
@Param("scope") ComponentScope scope,
@Param("textSearch") String textSearch,
@Param("idOffset") UUID idOffset,
@Param("idOffset") String idOffset,
Pageable pageable);
void deleteByClazz(String clazz);

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

@ -20,23 +20,23 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.repository.CrudRepository;
import org.springframework.stereotype.Component;
import org.thingsboard.server.common.data.UUIDConverter;
import org.thingsboard.server.common.data.id.ComponentDescriptorId;
import org.thingsboard.server.common.data.page.TextPageLink;
import org.thingsboard.server.common.data.plugin.ComponentDescriptor;
import org.thingsboard.server.common.data.plugin.ComponentScope;
import org.thingsboard.server.common.data.plugin.ComponentType;
import org.thingsboard.server.dao.DaoUtil;
import org.thingsboard.server.dao.util.SqlDao;
import org.thingsboard.server.dao.component.ComponentDescriptorDao;
import org.thingsboard.server.dao.model.sql.ComponentDescriptorEntity;
import org.thingsboard.server.dao.sql.JpaAbstractSearchTextDao;
import org.thingsboard.server.dao.util.SqlDao;
import java.util.List;
import java.util.Objects;
import java.util.Optional;
import java.util.UUID;
import static org.thingsboard.server.dao.model.ModelConstants.NULL_UUID;
import static org.thingsboard.server.dao.model.ModelConstants.NULL_UUID_STR;
/**
* Created by Valerii Sosliuk on 5/6/2017.
@ -55,7 +55,7 @@ public class JpaBaseComponentDescriptorDao extends JpaAbstractSearchTextDao<Comp
}
@Override
protected CrudRepository<ComponentDescriptorEntity, UUID> getCrudRepository() {
protected CrudRepository<ComponentDescriptorEntity, String> getCrudRepository() {
return componentDescriptorRepository;
}
@ -64,8 +64,7 @@ public class JpaBaseComponentDescriptorDao extends JpaAbstractSearchTextDao<Comp
if (component.getId() == null) {
component.setId(new ComponentDescriptorId(UUIDs.timeBased()));
}
boolean exists = componentDescriptorRepository.findOne(component.getId().getId()) != null;
if (!exists) {
if (componentDescriptorRepository.findOne(UUIDConverter.fromTimeUUID(component.getId().getId())) == null) {
return Optional.of(save(component));
}
return Optional.empty();
@ -87,7 +86,7 @@ public class JpaBaseComponentDescriptorDao extends JpaAbstractSearchTextDao<Comp
.findByType(
type,
Objects.toString(pageLink.getTextSearch(), ""),
pageLink.getIdOffset() == null ? NULL_UUID : pageLink.getIdOffset(),
pageLink.getIdOffset() == null ? NULL_UUID_STR : UUIDConverter.fromTimeUUID(pageLink.getIdOffset()),
new PageRequest(0, pageLink.getLimit())));
}
@ -98,7 +97,7 @@ public class JpaBaseComponentDescriptorDao extends JpaAbstractSearchTextDao<Comp
type,
scope,
Objects.toString(pageLink.getTextSearch(), ""),
pageLink.getIdOffset() == null ? NULL_UUID : pageLink.getIdOffset(),
pageLink.getIdOffset() == null ? NULL_UUID_STR : UUIDConverter.fromTimeUUID(pageLink.getIdOffset()),
new PageRequest(0, pageLink.getLimit())));
}

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

@ -19,26 +19,25 @@ import org.springframework.data.domain.Pageable;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.CrudRepository;
import org.springframework.data.repository.query.Param;
import org.thingsboard.server.dao.util.SqlDao;
import org.thingsboard.server.dao.model.sql.CustomerEntity;
import org.thingsboard.server.dao.util.SqlDao;
import java.util.List;
import java.util.UUID;
/**
* Created by Valerii Sosliuk on 5/6/2017.
*/
@SqlDao
public interface CustomerRepository extends CrudRepository<CustomerEntity, UUID> {
public interface CustomerRepository extends CrudRepository<CustomerEntity, String> {
@Query("SELECT c FROM CustomerEntity c WHERE c.tenantId = :tenantId " +
"AND LOWER(c.searchText) LIKE LOWER(CONCAT(:textSearch, '%')) " +
"AND c.id > :idOffset ORDER BY c.id")
List<CustomerEntity> findByTenantId(@Param("tenantId") UUID tenantId,
List<CustomerEntity> findByTenantId(@Param("tenantId") String tenantId,
@Param("textSearch") String textSearch,
@Param("idOffset") UUID idOffset,
@Param("idOffset") String idOffset,
Pageable pageable);
CustomerEntity findByTenantIdAndTitle(UUID tenantId, String title);
CustomerEntity findByTenantIdAndTitle(String tenantId, String title);
}

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

@ -20,19 +20,20 @@ import org.springframework.data.domain.PageRequest;
import org.springframework.data.repository.CrudRepository;
import org.springframework.stereotype.Component;
import org.thingsboard.server.common.data.Customer;
import org.thingsboard.server.common.data.UUIDConverter;
import org.thingsboard.server.common.data.page.TextPageLink;
import org.thingsboard.server.dao.DaoUtil;
import org.thingsboard.server.dao.util.SqlDao;
import org.thingsboard.server.dao.customer.CustomerDao;
import org.thingsboard.server.dao.model.sql.CustomerEntity;
import org.thingsboard.server.dao.sql.JpaAbstractSearchTextDao;
import org.thingsboard.server.dao.util.SqlDao;
import java.util.List;
import java.util.Objects;
import java.util.Optional;
import java.util.UUID;
import static org.thingsboard.server.dao.model.ModelConstants.NULL_UUID;
import static org.thingsboard.server.dao.model.ModelConstants.NULL_UUID_STR;
/**
* Created by Valerii Sosliuk on 5/6/2017.
@ -50,22 +51,22 @@ public class JpaCustomerDao extends JpaAbstractSearchTextDao<CustomerEntity, Cus
}
@Override
protected CrudRepository<CustomerEntity, UUID> getCrudRepository() {
protected CrudRepository<CustomerEntity, String> getCrudRepository() {
return customerRepository;
}
@Override
public List<Customer> findCustomersByTenantId(UUID tenantId, TextPageLink pageLink) {
return DaoUtil.convertDataList(customerRepository.findByTenantId(
tenantId,
UUIDConverter.fromTimeUUID(tenantId),
Objects.toString(pageLink.getTextSearch(), ""),
pageLink.getIdOffset() == null ? NULL_UUID : pageLink.getIdOffset(),
pageLink.getIdOffset() == null ? NULL_UUID_STR : UUIDConverter.fromTimeUUID(pageLink.getIdOffset()),
new PageRequest(0, pageLink.getLimit())));
}
@Override
public Optional<Customer> findCustomersByTenantIdAndTitle(UUID tenantId, String title) {
Customer customer = DaoUtil.getData(customerRepository.findByTenantIdAndTitle(tenantId, title));
Customer customer = DaoUtil.getData(customerRepository.findByTenantIdAndTitle(UUIDConverter.fromTimeUUID(tenantId), title));
return Optional.ofNullable(customer);
}
}

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

@ -19,8 +19,8 @@ import org.springframework.data.domain.Pageable;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.CrudRepository;
import org.springframework.data.repository.query.Param;
import org.thingsboard.server.dao.util.SqlDao;
import org.thingsboard.server.dao.model.sql.DashboardInfoEntity;
import org.thingsboard.server.dao.util.SqlDao;
import java.util.List;
import java.util.UUID;
@ -29,22 +29,22 @@ import java.util.UUID;
* Created by Valerii Sosliuk on 5/6/2017.
*/
@SqlDao
public interface DashboardInfoRepository extends CrudRepository<DashboardInfoEntity, UUID> {
public interface DashboardInfoRepository extends CrudRepository<DashboardInfoEntity, String> {
@Query("SELECT di FROM DashboardInfoEntity di WHERE di.tenantId = :tenantId " +
"AND LOWER(di.searchText) LIKE LOWER(CONCAT(:searchText, '%')) " +
"AND di.id > :idOffset ORDER BY di.id")
List<DashboardInfoEntity> findByTenantId(@Param("tenantId") UUID tenantId,
List<DashboardInfoEntity> findByTenantId(@Param("tenantId") String tenantId,
@Param("searchText") String searchText,
@Param("idOffset") UUID idOffset,
@Param("idOffset") String idOffset,
Pageable pageable);
@Query("SELECT di FROM DashboardInfoEntity di WHERE di.tenantId = :tenantId " +
"AND di.customerId = :customerId AND LOWER(di.searchText) LIKE LOWER(CONCAT(:searchText, '%')) " +
"AND di.id > :idOffset ORDER BY di.id")
List<DashboardInfoEntity> findByTenantIdAndCustomerId(@Param("tenantId") UUID tenantId,
@Param("customerId") UUID customerId,
List<DashboardInfoEntity> findByTenantIdAndCustomerId(@Param("tenantId") String tenantId,
@Param("customerId") String customerId,
@Param("searchText") String searchText,
@Param("idOffset") UUID idOffset,
@Param("idOffset") String idOffset,
Pageable pageable);
}

6
dao/src/main/java/org/thingsboard/server/dao/sql/dashboard/DashboardRepository.java

@ -16,14 +16,12 @@
package org.thingsboard.server.dao.sql.dashboard;
import org.springframework.data.repository.CrudRepository;
import org.thingsboard.server.dao.util.SqlDao;
import org.thingsboard.server.dao.model.sql.DashboardEntity;
import java.util.UUID;
import org.thingsboard.server.dao.util.SqlDao;
/**
* Created by Valerii Sosliuk on 5/6/2017.
*/
@SqlDao
public interface DashboardRepository extends CrudRepository<DashboardEntity, UUID> {
public interface DashboardRepository extends CrudRepository<DashboardEntity, String> {
}

6
dao/src/main/java/org/thingsboard/server/dao/sql/dashboard/JpaDashboardDao.java

@ -19,12 +19,10 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.repository.CrudRepository;
import org.springframework.stereotype.Component;
import org.thingsboard.server.common.data.Dashboard;
import org.thingsboard.server.dao.util.SqlDao;
import org.thingsboard.server.dao.dashboard.DashboardDao;
import org.thingsboard.server.dao.model.sql.DashboardEntity;
import org.thingsboard.server.dao.sql.JpaAbstractSearchTextDao;
import java.util.UUID;
import org.thingsboard.server.dao.util.SqlDao;
/**
* Created by Valerii Sosliuk on 5/6/2017.
@ -42,7 +40,7 @@ public class JpaDashboardDao extends JpaAbstractSearchTextDao<DashboardEntity, D
}
@Override
protected CrudRepository<DashboardEntity, UUID> getCrudRepository() {
protected CrudRepository<DashboardEntity, String> getCrudRepository() {
return dashboardRepository;
}
}

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

@ -20,18 +20,19 @@ import org.springframework.data.domain.PageRequest;
import org.springframework.data.repository.CrudRepository;
import org.springframework.stereotype.Component;
import org.thingsboard.server.common.data.DashboardInfo;
import org.thingsboard.server.common.data.UUIDConverter;
import org.thingsboard.server.common.data.page.TextPageLink;
import org.thingsboard.server.dao.DaoUtil;
import org.thingsboard.server.dao.util.SqlDao;
import org.thingsboard.server.dao.dashboard.DashboardInfoDao;
import org.thingsboard.server.dao.model.sql.DashboardInfoEntity;
import org.thingsboard.server.dao.sql.JpaAbstractSearchTextDao;
import org.thingsboard.server.dao.util.SqlDao;
import java.util.List;
import java.util.Objects;
import java.util.UUID;
import static org.thingsboard.server.dao.model.ModelConstants.NULL_UUID;
import static org.thingsboard.server.dao.model.ModelConstants.NULL_UUID_STR;
/**
* Created by Valerii Sosliuk on 5/6/2017.
@ -57,9 +58,9 @@ public class JpaDashboardInfoDao extends JpaAbstractSearchTextDao<DashboardInfoE
public List<DashboardInfo> findDashboardsByTenantId(UUID tenantId, TextPageLink pageLink) {
return DaoUtil.convertDataList(dashboardInfoRepository
.findByTenantId(
tenantId,
UUIDConverter.fromTimeUUID(tenantId),
Objects.toString(pageLink.getTextSearch(), ""),
pageLink.getIdOffset() == null ? NULL_UUID : pageLink.getIdOffset(),
pageLink.getIdOffset() == null ? NULL_UUID_STR : UUIDConverter.fromTimeUUID(pageLink.getIdOffset()),
new PageRequest(0, pageLink.getLimit())));
}
@ -67,10 +68,10 @@ public class JpaDashboardInfoDao extends JpaAbstractSearchTextDao<DashboardInfoE
public List<DashboardInfo> findDashboardsByTenantIdAndCustomerId(UUID tenantId, UUID customerId, TextPageLink pageLink) {
return DaoUtil.convertDataList(dashboardInfoRepository
.findByTenantIdAndCustomerId(
tenantId,
customerId,
UUIDConverter.fromTimeUUID(tenantId),
UUIDConverter.fromTimeUUID(customerId),
Objects.toString(pageLink.getTextSearch(), ""),
pageLink.getIdOffset() == null ? NULL_UUID : pageLink.getIdOffset(),
pageLink.getIdOffset() == null ? NULL_UUID_STR : UUIDConverter.fromTimeUUID(pageLink.getIdOffset()),
new PageRequest(0, pageLink.getLimit())));
}
}

8
dao/src/main/java/org/thingsboard/server/dao/sql/device/DeviceCredentialsRepository.java

@ -16,18 +16,16 @@
package org.thingsboard.server.dao.sql.device;
import org.springframework.data.repository.CrudRepository;
import org.thingsboard.server.dao.util.SqlDao;
import org.thingsboard.server.dao.model.sql.DeviceCredentialsEntity;
import java.util.UUID;
import org.thingsboard.server.dao.util.SqlDao;
/**
* Created by Valerii Sosliuk on 5/6/2017.
*/
@SqlDao
public interface DeviceCredentialsRepository extends CrudRepository<DeviceCredentialsEntity, UUID> {
public interface DeviceCredentialsRepository extends CrudRepository<DeviceCredentialsEntity, String> {
DeviceCredentialsEntity findByDeviceId(UUID deviceId);
DeviceCredentialsEntity findByDeviceId(String deviceId);
DeviceCredentialsEntity findByCredentialsId(String credentialsId);
}

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

@ -19,46 +19,45 @@ import org.springframework.data.domain.Pageable;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.CrudRepository;
import org.springframework.data.repository.query.Param;
import org.thingsboard.server.dao.util.SqlDao;
import org.thingsboard.server.dao.model.sql.DeviceEntity;
import org.thingsboard.server.dao.model.sql.TenantDeviceTypeEntity;
import org.thingsboard.server.dao.util.SqlDao;
import java.util.List;
import java.util.UUID;
/**
* Created by Valerii Sosliuk on 5/6/2017.
*/
@SqlDao
public interface DeviceRepository extends CrudRepository<DeviceEntity, UUID> {
public interface DeviceRepository extends CrudRepository<DeviceEntity, String> {
@Query("SELECT d FROM DeviceEntity d WHERE d.tenantId = :tenantId " +
"AND d.customerId = :customerId " +
"AND LOWER(d.searchText) LIKE LOWER(CONCAT(:searchText, '%')) " +
"AND d.id > :idOffset ORDER BY d.id")
List<DeviceEntity> findByTenantIdAndCustomerId(@Param("tenantId") UUID tenantId,
@Param("customerId") UUID customerId,
List<DeviceEntity> findByTenantIdAndCustomerId(@Param("tenantId") String tenantId,
@Param("customerId") String customerId,
@Param("searchText") String searchText,
@Param("idOffset") UUID idOffset,
@Param("idOffset") String idOffset,
Pageable pageable);
@Query("SELECT d FROM DeviceEntity d WHERE d.tenantId = :tenantId " +
"AND LOWER(d.searchText) LIKE LOWER(CONCAT(:textSearch, '%')) " +
"AND d.id > :idOffset ORDER BY d.id")
List<DeviceEntity> findByTenantId(@Param("tenantId") UUID tenantId,
List<DeviceEntity> findByTenantId(@Param("tenantId") String tenantId,
@Param("textSearch") String textSearch,
@Param("idOffset") UUID idOffset,
@Param("idOffset") String idOffset,
Pageable pageable);
@Query("SELECT d FROM DeviceEntity d WHERE d.tenantId = :tenantId " +
"AND d.type = :type " +
"AND LOWER(d.searchText) LIKE LOWER(CONCAT(:textSearch, '%')) " +
"AND d.id > :idOffset ORDER BY d.id")
List<DeviceEntity> findByTenantIdAndType(@Param("tenantId") UUID tenantId,
List<DeviceEntity> findByTenantIdAndType(@Param("tenantId") String tenantId,
@Param("type") String type,
@Param("textSearch") String textSearch,
@Param("idOffset") UUID idOffset,
@Param("idOffset") String idOffset,
Pageable pageable);
@Query("SELECT d FROM DeviceEntity d WHERE d.tenantId = :tenantId " +
@ -66,19 +65,19 @@ public interface DeviceRepository extends CrudRepository<DeviceEntity, UUID> {
"AND d.type = :type " +
"AND LOWER(d.searchText) LIKE LOWER(CONCAT(:textSearch, '%')) " +
"AND d.id > :idOffset ORDER BY d.id")
List<DeviceEntity> findByTenantIdAndCustomerIdAndType(@Param("tenantId") UUID tenantId,
@Param("customerId") UUID customerId,
List<DeviceEntity> findByTenantIdAndCustomerIdAndType(@Param("tenantId") String tenantId,
@Param("customerId") String customerId,
@Param("type") String type,
@Param("textSearch") String textSearch,
@Param("idOffset") UUID idOffset,
@Param("idOffset") String idOffset,
Pageable pageable);
@Query("SELECT DISTINCT NEW org.thingsboard.server.dao.model.sql.TenantDeviceTypeEntity(d.tenantId, d.type) FROM DeviceEntity d")
List<TenantDeviceTypeEntity> findTenantDeviceTypes();
DeviceEntity findByTenantIdAndName(UUID tenantId, String name);
DeviceEntity findByTenantIdAndName(String tenantId, String name);
List<DeviceEntity> findDevicesByTenantIdAndCustomerIdAndIdIn(UUID tenantId, UUID customerId, List<UUID> deviceIds);
List<DeviceEntity> findDevicesByTenantIdAndCustomerIdAndIdIn(String tenantId, String customerId, List<String> deviceIds);
List<DeviceEntity> findDevicesByTenantIdAndIdIn(UUID tenantId, List<UUID> deviceIds);
List<DeviceEntity> findDevicesByTenantIdAndIdIn(String tenantId, List<String> deviceIds);
}

7
dao/src/main/java/org/thingsboard/server/dao/sql/device/JpaDeviceCredentialsDao.java

@ -18,12 +18,13 @@ package org.thingsboard.server.dao.sql.device;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.repository.CrudRepository;
import org.springframework.stereotype.Component;
import org.thingsboard.server.common.data.UUIDConverter;
import org.thingsboard.server.common.data.security.DeviceCredentials;
import org.thingsboard.server.dao.DaoUtil;
import org.thingsboard.server.dao.util.SqlDao;
import org.thingsboard.server.dao.device.DeviceCredentialsDao;
import org.thingsboard.server.dao.model.sql.DeviceCredentialsEntity;
import org.thingsboard.server.dao.sql.JpaAbstractDao;
import org.thingsboard.server.dao.util.SqlDao;
import java.util.UUID;
@ -43,13 +44,13 @@ public class JpaDeviceCredentialsDao extends JpaAbstractDao<DeviceCredentialsEnt
}
@Override
protected CrudRepository<DeviceCredentialsEntity, UUID> getCrudRepository() {
protected CrudRepository<DeviceCredentialsEntity, String> getCrudRepository() {
return deviceCredentialsRepository;
}
@Override
public DeviceCredentials findByDeviceId(UUID deviceId) {
return DaoUtil.getData(deviceCredentialsRepository.findByDeviceId(deviceId));
return DaoUtil.getData(deviceCredentialsRepository.findByDeviceId(UUIDConverter.fromTimeUUID(deviceId)));
}
@Override

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

@ -22,18 +22,21 @@ import org.springframework.data.repository.CrudRepository;
import org.springframework.stereotype.Component;
import org.thingsboard.server.common.data.Device;
import org.thingsboard.server.common.data.TenantDeviceType;
import org.thingsboard.server.common.data.UUIDConverter;
import org.thingsboard.server.common.data.id.TenantId;
import org.thingsboard.server.common.data.page.TextPageLink;
import org.thingsboard.server.dao.DaoUtil;
import org.thingsboard.server.dao.util.SqlDao;
import org.thingsboard.server.dao.device.DeviceDao;
import org.thingsboard.server.dao.model.sql.DeviceEntity;
import org.thingsboard.server.dao.model.sql.TenantDeviceTypeEntity;
import org.thingsboard.server.dao.sql.JpaAbstractSearchTextDao;
import org.thingsboard.server.dao.util.SqlDao;
import java.util.*;
import static org.thingsboard.server.dao.model.ModelConstants.NULL_UUID;
import static org.thingsboard.server.common.data.UUIDConverter.fromTimeUUID;
import static org.thingsboard.server.common.data.UUIDConverter.fromTimeUUIDs;
import static org.thingsboard.server.dao.model.ModelConstants.NULL_UUID_STR;
/**
* Created by Valerii Sosliuk on 5/6/2017.
@ -51,7 +54,7 @@ public class JpaDeviceDao extends JpaAbstractSearchTextDao<DeviceEntity, Device>
}
@Override
protected CrudRepository<DeviceEntity, UUID> getCrudRepository() {
protected CrudRepository<DeviceEntity, String> getCrudRepository() {
return deviceRepository;
}
@ -59,37 +62,37 @@ public class JpaDeviceDao extends JpaAbstractSearchTextDao<DeviceEntity, Device>
public List<Device> findDevicesByTenantId(UUID tenantId, TextPageLink pageLink) {
return DaoUtil.convertDataList(
deviceRepository.findByTenantId(
tenantId,
fromTimeUUID(tenantId),
Objects.toString(pageLink.getTextSearch(), ""),
pageLink.getIdOffset() == null ? NULL_UUID : pageLink.getIdOffset(),
pageLink.getIdOffset() == null ? NULL_UUID_STR : fromTimeUUID(pageLink.getIdOffset()),
new PageRequest(0, pageLink.getLimit())));
}
@Override
public ListenableFuture<List<Device>> findDevicesByTenantIdAndIdsAsync(UUID tenantId, List<UUID> deviceIds) {
return service.submit(() -> DaoUtil.convertDataList(deviceRepository.findDevicesByTenantIdAndIdIn(tenantId, deviceIds)));
return service.submit(() -> DaoUtil.convertDataList(deviceRepository.findDevicesByTenantIdAndIdIn(UUIDConverter.fromTimeUUID(tenantId), fromTimeUUIDs(deviceIds))));
}
@Override
public List<Device> findDevicesByTenantIdAndCustomerId(UUID tenantId, UUID customerId, TextPageLink pageLink) {
return DaoUtil.convertDataList(
deviceRepository.findByTenantIdAndCustomerId(
tenantId,
customerId,
fromTimeUUID(tenantId),
fromTimeUUID(customerId),
Objects.toString(pageLink.getTextSearch(), ""),
pageLink.getIdOffset() == null ? NULL_UUID : pageLink.getIdOffset(),
pageLink.getIdOffset() == null ? NULL_UUID_STR : fromTimeUUID(pageLink.getIdOffset()),
new PageRequest(0, pageLink.getLimit())));
}
@Override
public ListenableFuture<List<Device>> findDevicesByTenantIdCustomerIdAndIdsAsync(UUID tenantId, UUID customerId, List<UUID> deviceIds) {
return service.submit(() -> DaoUtil.convertDataList(
deviceRepository.findDevicesByTenantIdAndCustomerIdAndIdIn(tenantId, customerId, deviceIds)));
deviceRepository.findDevicesByTenantIdAndCustomerIdAndIdIn(fromTimeUUID(tenantId), fromTimeUUID(customerId), fromTimeUUIDs(deviceIds))));
}
@Override
public Optional<Device> findDeviceByTenantIdAndName(UUID tenantId, String name) {
Device device = DaoUtil.getData(deviceRepository.findByTenantIdAndName(tenantId, name));
Device device = DaoUtil.getData(deviceRepository.findByTenantIdAndName(fromTimeUUID(tenantId), name));
return Optional.ofNullable(device);
}
@ -97,10 +100,10 @@ public class JpaDeviceDao extends JpaAbstractSearchTextDao<DeviceEntity, Device>
public List<Device> findDevicesByTenantIdAndType(UUID tenantId, String type, TextPageLink pageLink) {
return DaoUtil.convertDataList(
deviceRepository.findByTenantIdAndType(
tenantId,
fromTimeUUID(tenantId),
type,
Objects.toString(pageLink.getTextSearch(), ""),
pageLink.getIdOffset() == null ? NULL_UUID : pageLink.getIdOffset(),
pageLink.getIdOffset() == null ? NULL_UUID_STR : fromTimeUUID(pageLink.getIdOffset()),
new PageRequest(0, pageLink.getLimit())));
}
@ -108,11 +111,11 @@ public class JpaDeviceDao extends JpaAbstractSearchTextDao<DeviceEntity, Device>
public List<Device> findDevicesByTenantIdAndCustomerIdAndType(UUID tenantId, UUID customerId, String type, TextPageLink pageLink) {
return DaoUtil.convertDataList(
deviceRepository.findByTenantIdAndCustomerIdAndType(
tenantId,
customerId,
fromTimeUUID(tenantId),
fromTimeUUID(customerId),
type,
Objects.toString(pageLink.getTextSearch(), ""),
pageLink.getIdOffset() == null ? NULL_UUID : pageLink.getIdOffset(),
pageLink.getIdOffset() == null ? NULL_UUID_STR : fromTimeUUID(pageLink.getIdOffset()),
new PageRequest(0, pageLink.getLimit())));
}
@ -126,7 +129,7 @@ public class JpaDeviceDao extends JpaAbstractSearchTextDao<DeviceEntity, Device>
if (entities != null && !entities.isEmpty()) {
list = new ArrayList<>();
for (TenantDeviceTypeEntity entity : entities) {
list.add(new TenantDeviceType(entity.getType(), new TenantId(entity.getTenantId())));
list.add(new TenantDeviceType(entity.getType(), new TenantId(UUIDConverter.fromString(entity.getTenantId()))));
}
}
return list;

12
dao/src/main/java/org/thingsboard/server/dao/sql/event/EventRepository.java

@ -21,21 +21,19 @@ import org.thingsboard.server.common.data.EntityType;
import org.thingsboard.server.dao.model.sql.EventEntity;
import org.thingsboard.server.dao.util.SqlDao;
import java.util.UUID;
/**
* Created by Valerii Sosliuk on 5/3/2017.
*/
@SqlDao
public interface EventRepository extends CrudRepository<EventEntity, UUID>, JpaSpecificationExecutor<EventEntity> {
public interface EventRepository extends CrudRepository<EventEntity, String>, JpaSpecificationExecutor<EventEntity> {
EventEntity findByTenantIdAndEntityTypeAndEntityIdAndEventTypeAndEventUid(UUID tenantId,
EventEntity findByTenantIdAndEntityTypeAndEntityIdAndEventTypeAndEventUid(String tenantId,
EntityType entityType,
UUID entityId,
String entityId,
String eventType,
String eventUid);
EventEntity findByTenantIdAndEntityTypeAndEntityId(UUID tenantId,
EventEntity findByTenantIdAndEntityTypeAndEntityId(String tenantId,
EntityType entityType,
UUID entityId);
String entityId);
}

13
dao/src/main/java/org/thingsboard/server/dao/sql/event/JpaBaseEventDao.java

@ -26,14 +26,15 @@ import org.springframework.data.jpa.domain.Specification;
import org.springframework.data.repository.CrudRepository;
import org.springframework.stereotype.Component;
import org.thingsboard.server.common.data.Event;
import org.thingsboard.server.common.data.UUIDConverter;
import org.thingsboard.server.common.data.id.EntityId;
import org.thingsboard.server.common.data.id.EventId;
import org.thingsboard.server.common.data.page.TimePageLink;
import org.thingsboard.server.dao.DaoUtil;
import org.thingsboard.server.dao.util.SqlDao;
import org.thingsboard.server.dao.event.EventDao;
import org.thingsboard.server.dao.model.sql.EventEntity;
import org.thingsboard.server.dao.sql.JpaAbstractSearchTimeDao;
import org.thingsboard.server.dao.util.SqlDao;
import javax.persistence.criteria.CriteriaBuilder;
import javax.persistence.criteria.CriteriaQuery;
@ -67,7 +68,7 @@ public class JpaBaseEventDao extends JpaAbstractSearchTimeDao<EventEntity, Event
}
@Override
protected CrudRepository<EventEntity, UUID> getCrudRepository() {
protected CrudRepository<EventEntity, String> getCrudRepository() {
return eventRepository;
}
@ -91,7 +92,7 @@ public class JpaBaseEventDao extends JpaAbstractSearchTimeDao<EventEntity, Event
@Override
public Event findEvent(UUID tenantId, EntityId entityId, String eventType, String eventUid) {
return DaoUtil.getData(eventRepository.findByTenantIdAndEntityTypeAndEntityIdAndEventTypeAndEventUid(
tenantId, entityId.getEntityType(), entityId.getId(), eventType, eventUid));
UUIDConverter.fromTimeUUID(tenantId), entityId.getEntityType(), UUIDConverter.fromTimeUUID(entityId.getId()), eventType, eventUid));
}
@Override
@ -112,7 +113,7 @@ public class JpaBaseEventDao extends JpaAbstractSearchTimeDao<EventEntity, Event
log.debug("Save event [{}] ", entity);
if (entity.getTenantId() == null) {
log.trace("Save system event with predefined id {}", systemTenantId);
entity.setTenantId(systemTenantId);
entity.setTenantId(UUIDConverter.fromTimeUUID(systemTenantId));
}
if (entity.getId() == null) {
entity.setId(UUIDs.timeBased());
@ -133,13 +134,13 @@ public class JpaBaseEventDao extends JpaAbstractSearchTimeDao<EventEntity, Event
public Predicate toPredicate(Root<EventEntity> root, CriteriaQuery<?> criteriaQuery, CriteriaBuilder criteriaBuilder) {
List<Predicate> predicates = new ArrayList<Predicate>();
if (tenantId != null) {
Predicate tenantIdPredicate = criteriaBuilder.equal(root.get("tenantId"), tenantId);
Predicate tenantIdPredicate = criteriaBuilder.equal(root.get("tenantId"), UUIDConverter.fromTimeUUID(tenantId));
predicates.add(tenantIdPredicate);
}
if (entityId != null) {
Predicate entityTypePredicate = criteriaBuilder.equal(root.get("entityType"), entityId.getEntityType());
predicates.add(entityTypePredicate);
Predicate entityIdPredicate = criteriaBuilder.equal(root.get("entityId"), entityId.getId());
Predicate entityIdPredicate = criteriaBuilder.equal(root.get("entityId"), UUIDConverter.fromTimeUUID(entityId.getId()));
predicates.add(entityIdPredicate);
}
if (eventType != null) {

Some files were not shown because too many files changed in this diff

Loading…
Cancel
Save