Commit 320aee18bf4fa4fd8dca6f0b0b6906faf5eba8ff
1 parent
2af9ba49
Refactoring from UUIDs to Strings in SQL DAO to support ordering
Showing
100 changed files
with
742 additions
and
673 deletions
Too many changes to show.
To preserve performance only 100 of 134 files are displayed.
... | ... | @@ -106,7 +106,7 @@ coap: |
106 | 106 | timeout: "${COAP_TIMEOUT:10000}" |
107 | 107 | |
108 | 108 | database: |
109 | - type: "${DATABASE_TYPE:cassandra}" # cassandra OR sql | |
109 | + type: "${DATABASE_TYPE:sql}" # cassandra OR sql | |
110 | 110 | |
111 | 111 | # Cassandra driver configuration parameters |
112 | 112 | cassandra: | ... | ... |
... | ... | @@ -66,6 +66,11 @@ |
66 | 66 | <artifactId>mockito-all</artifactId> |
67 | 67 | <scope>test</scope> |
68 | 68 | </dependency> |
69 | + <dependency> | |
70 | + <groupId>com.datastax.cassandra</groupId> | |
71 | + <artifactId>cassandra-driver-core</artifactId> | |
72 | + <scope>test</scope> | |
73 | + </dependency> | |
69 | 74 | </dependencies> |
70 | 75 | |
71 | 76 | <build> | ... | ... |
1 | +/** | |
2 | + * Copyright © 2016-2017 The Thingsboard Authors | |
3 | + * | |
4 | + * Licensed under the Apache License, Version 2.0 (the "License"); | |
5 | + * you may not use this file except in compliance with the License. | |
6 | + * You may obtain a copy of the License at | |
7 | + * | |
8 | + * http://www.apache.org/licenses/LICENSE-2.0 | |
9 | + * | |
10 | + * Unless required by applicable law or agreed to in writing, software | |
11 | + * distributed under the License is distributed on an "AS IS" BASIS, | |
12 | + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
13 | + * See the License for the specific language governing permissions and | |
14 | + * limitations under the License. | |
15 | + */ | |
16 | +package org.thingsboard.server.common.data; | |
17 | + | |
18 | +import java.util.List; | |
19 | +import java.util.UUID; | |
20 | +import java.util.stream.Collectors; | |
21 | + | |
22 | +/** | |
23 | + * Created by ashvayka on 13.07.17. | |
24 | + */ | |
25 | +public class UUIDConverter { | |
26 | + | |
27 | + public static UUID fromString(String src) { | |
28 | + return UUID.fromString(src.substring(7, 15) + "-" + src.substring(3, 7) + "-1" | |
29 | + + src.substring(0, 3) + "-" + src.substring(15, 19) + "-" + src.substring(19)); | |
30 | + } | |
31 | + | |
32 | + public static String fromTimeUUID(UUID src) { | |
33 | + if (src.version() != 1) { | |
34 | + throw new IllegalArgumentException("Not a time UUID!"); | |
35 | + } | |
36 | + String str = src.toString(); | |
37 | + // 58e0a7d7-eebc-11d8-9669-0800200c9a66 => 1d8eebc58e0a7d796690800200c9a66. Note that [11d8] -> [1d8] | |
38 | + return str.substring(15, 18) + str.substring(9, 13) + str.substring(0, 8) + str.substring(19, 23) + str.substring(24); | |
39 | + } | |
40 | + | |
41 | + public static List<String> fromTimeUUIDs(List<UUID> uuids) { | |
42 | + if (uuids == null) { | |
43 | + return null; | |
44 | + } | |
45 | + return uuids.stream().map(UUIDConverter::fromTimeUUID).collect(Collectors.toList()); | |
46 | + } | |
47 | + | |
48 | +} | |
49 | + | ... | ... |
... | ... | @@ -15,6 +15,7 @@ |
15 | 15 | */ |
16 | 16 | package org.thingsboard.server.common.data.asset; |
17 | 17 | |
18 | +import org.thingsboard.server.common.data.UUIDConverter; | |
18 | 19 | import org.thingsboard.server.common.data.id.TenantId; |
19 | 20 | |
20 | 21 | import java.util.UUID; |
... | ... | @@ -40,6 +41,11 @@ public class TenantAssetType { |
40 | 41 | this.tenantId = new TenantId(tenantId); |
41 | 42 | } |
42 | 43 | |
44 | + public TenantAssetType(String type, String tenantId) { | |
45 | + this.type = type; | |
46 | + this.tenantId = new TenantId(UUIDConverter.fromString(tenantId)); | |
47 | + } | |
48 | + | |
43 | 49 | public String getType() { |
44 | 50 | return type; |
45 | 51 | } | ... | ... |
1 | +/** | |
2 | + * Copyright © 2016-2017 The Thingsboard Authors | |
3 | + * | |
4 | + * Licensed under the Apache License, Version 2.0 (the "License"); | |
5 | + * you may not use this file except in compliance with the License. | |
6 | + * You may obtain a copy of the License at | |
7 | + * | |
8 | + * http://www.apache.org/licenses/LICENSE-2.0 | |
9 | + * | |
10 | + * Unless required by applicable law or agreed to in writing, software | |
11 | + * distributed under the License is distributed on an "AS IS" BASIS, | |
12 | + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
13 | + * See the License for the specific language governing permissions and | |
14 | + * limitations under the License. | |
15 | + */ | |
16 | +package org.thingsboard.server.common.data; | |
17 | + | |
18 | +import com.datastax.driver.core.utils.UUIDs; | |
19 | +import org.junit.Assert; | |
20 | +import org.junit.Test; | |
21 | +import org.junit.runner.RunWith; | |
22 | +import org.mockito.runners.MockitoJUnitRunner; | |
23 | + | |
24 | +import java.util.Random; | |
25 | +import java.util.UUID; | |
26 | + | |
27 | +/** | |
28 | + * Created by ashvayka on 14.07.17. | |
29 | + */ | |
30 | +@RunWith(MockitoJUnitRunner.class) | |
31 | +public class UUIDConverterTest { | |
32 | + | |
33 | + @Test | |
34 | + public void basicUuidToStringTest() { | |
35 | + UUID original = UUID.fromString("58e0a7d7-eebc-11d8-9669-0800200c9a66"); | |
36 | + String result = UUIDConverter.fromTimeUUID(original); | |
37 | + Assert.assertEquals("1d8eebc58e0a7d796690800200c9a66", result); | |
38 | + } | |
39 | + | |
40 | + @Test | |
41 | + public void basicStringToUUIDTest() { | |
42 | + UUID result = UUIDConverter.fromString("1d8eebc58e0a7d796690800200c9a66"); | |
43 | + Assert.assertEquals(UUID.fromString("58e0a7d7-eebc-11d8-9669-0800200c9a66"), result); | |
44 | + } | |
45 | + | |
46 | + @Test(expected = IllegalArgumentException.class) | |
47 | + public void nonV1UuidToStringTest() { | |
48 | + UUIDConverter.fromTimeUUID(UUID.fromString("58e0a7d7-eebc-01d8-9669-0800200c9a66")); | |
49 | + } | |
50 | + | |
51 | + @Test | |
52 | + public void basicUuidComperisonTest() { | |
53 | + Random r = new Random(System.currentTimeMillis()); | |
54 | + for (int i = 0; i < 100000; i++) { | |
55 | + long ts = System.currentTimeMillis() + 1000 * 60 * 60 * 24 * 365 * 10; | |
56 | + long before = (long) (Math.random() * ts); | |
57 | + long after = (long) (Math.random() * ts); | |
58 | + if (before > after) { | |
59 | + long tmp = after; | |
60 | + after = before; | |
61 | + before = tmp; | |
62 | + } | |
63 | + | |
64 | + String beforeStr = UUIDConverter.fromTimeUUID(UUIDs.startOf(before)); | |
65 | + String afterStr = UUIDConverter.fromTimeUUID(UUIDs.startOf(after)); | |
66 | + | |
67 | + if (afterStr.compareTo(beforeStr) < 0) { | |
68 | + System.out.println("Before: " + before + " | " + beforeStr); | |
69 | + System.out.println("After: " + after + " | " + afterStr); | |
70 | + } | |
71 | + Assert.assertTrue(afterStr.compareTo(beforeStr) >= 0); | |
72 | + } | |
73 | + } | |
74 | + | |
75 | + | |
76 | +} | ... | ... |
... | ... | @@ -47,7 +47,6 @@ import javax.annotation.PostConstruct; |
47 | 47 | import javax.annotation.PreDestroy; |
48 | 48 | import java.util.ArrayList; |
49 | 49 | import java.util.List; |
50 | -import java.util.UUID; | |
51 | 50 | import java.util.concurrent.ExecutionException; |
52 | 51 | import java.util.concurrent.ExecutorService; |
53 | 52 | import java.util.concurrent.Executors; | ... | ... |
... | ... | @@ -33,11 +33,11 @@ import org.thingsboard.server.common.data.id.EntityId; |
33 | 33 | import org.thingsboard.server.common.data.id.TenantId; |
34 | 34 | import org.thingsboard.server.common.data.relation.EntityRelation; |
35 | 35 | import org.thingsboard.server.common.data.relation.RelationTypeGroup; |
36 | -import org.thingsboard.server.dao.nosql.CassandraAbstractModelDao; | |
37 | -import org.thingsboard.server.dao.util.NoSqlDao; | |
38 | 36 | import org.thingsboard.server.dao.model.ModelConstants; |
39 | 37 | import org.thingsboard.server.dao.model.nosql.AlarmEntity; |
38 | +import org.thingsboard.server.dao.nosql.CassandraAbstractModelDao; | |
40 | 39 | import org.thingsboard.server.dao.relation.RelationDao; |
40 | +import org.thingsboard.server.dao.util.NoSqlDao; | |
41 | 41 | |
42 | 42 | import java.util.ArrayList; |
43 | 43 | import java.util.List; | ... | ... |
... | ... | @@ -20,7 +20,6 @@ import org.thingsboard.server.common.data.asset.Asset; |
20 | 20 | import org.thingsboard.server.common.data.asset.TenantAssetType; |
21 | 21 | import org.thingsboard.server.common.data.page.TextPageLink; |
22 | 22 | import org.thingsboard.server.dao.Dao; |
23 | -import org.thingsboard.server.dao.model.TenantAssetTypeEntity; | |
24 | 23 | |
25 | 24 | import java.util.List; |
26 | 25 | import java.util.Optional; | ... | ... |
... | ... | @@ -18,9 +18,9 @@ package org.thingsboard.server.dao.asset; |
18 | 18 | import lombok.Data; |
19 | 19 | import org.thingsboard.server.common.data.EntityType; |
20 | 20 | import org.thingsboard.server.common.data.relation.EntityRelation; |
21 | -import org.thingsboard.server.dao.relation.RelationsSearchParameters; | |
22 | 21 | import org.thingsboard.server.dao.relation.EntityRelationsQuery; |
23 | 22 | import org.thingsboard.server.dao.relation.EntityTypeFilter; |
23 | +import org.thingsboard.server.dao.relation.RelationsSearchParameters; | |
24 | 24 | |
25 | 25 | import javax.annotation.Nullable; |
26 | 26 | import java.util.Collections; | ... | ... |
... | ... | @@ -51,7 +51,7 @@ import java.util.List; |
51 | 51 | import java.util.Optional; |
52 | 52 | import java.util.stream.Collectors; |
53 | 53 | |
54 | -import static org.thingsboard.server.dao.DaoUtil.*; | |
54 | +import static org.thingsboard.server.dao.DaoUtil.toUUIDs; | |
55 | 55 | import static org.thingsboard.server.dao.model.ModelConstants.NULL_UUID; |
56 | 56 | import static org.thingsboard.server.dao.service.Validator.*; |
57 | 57 | ... | ... |
... | ... | @@ -27,11 +27,11 @@ import org.springframework.stereotype.Component; |
27 | 27 | import org.thingsboard.server.common.data.asset.Asset; |
28 | 28 | import org.thingsboard.server.common.data.asset.TenantAssetType; |
29 | 29 | import org.thingsboard.server.common.data.page.TextPageLink; |
30 | -import org.thingsboard.server.dao.nosql.CassandraAbstractSearchTextDao; | |
31 | 30 | import org.thingsboard.server.dao.DaoUtil; |
32 | -import org.thingsboard.server.dao.util.NoSqlDao; | |
33 | 31 | import org.thingsboard.server.dao.model.TenantAssetTypeEntity; |
34 | 32 | import org.thingsboard.server.dao.model.nosql.AssetEntity; |
33 | +import org.thingsboard.server.dao.nosql.CassandraAbstractSearchTextDao; | |
34 | +import org.thingsboard.server.dao.util.NoSqlDao; | |
35 | 35 | |
36 | 36 | import javax.annotation.Nullable; |
37 | 37 | import java.util.*; | ... | ... |
... | ... | @@ -15,8 +15,6 @@ |
15 | 15 | */ |
16 | 16 | package org.thingsboard.server.dao.attributes; |
17 | 17 | |
18 | -import com.datastax.driver.core.ResultSet; | |
19 | -import com.datastax.driver.core.ResultSetFuture; | |
20 | 18 | import com.google.common.collect.Lists; |
21 | 19 | import com.google.common.util.concurrent.Futures; |
22 | 20 | import com.google.common.util.concurrent.ListenableFuture; | ... | ... |
... | ... | @@ -26,10 +26,10 @@ import org.springframework.stereotype.Component; |
26 | 26 | import org.thingsboard.server.common.data.id.EntityId; |
27 | 27 | import org.thingsboard.server.common.data.kv.AttributeKvEntry; |
28 | 28 | import org.thingsboard.server.common.data.kv.BaseAttributeKvEntry; |
29 | -import org.thingsboard.server.dao.nosql.CassandraAbstractAsyncDao; | |
30 | -import org.thingsboard.server.dao.util.NoSqlDao; | |
31 | 29 | import org.thingsboard.server.dao.model.ModelConstants; |
30 | +import org.thingsboard.server.dao.nosql.CassandraAbstractAsyncDao; | |
32 | 31 | import org.thingsboard.server.dao.timeseries.CassandraBaseTimeseriesDao; |
32 | +import org.thingsboard.server.dao.util.NoSqlDao; | |
33 | 33 | |
34 | 34 | import javax.annotation.PostConstruct; |
35 | 35 | import javax.annotation.PreDestroy; | ... | ... |
... | ... | @@ -17,9 +17,10 @@ package org.thingsboard.server.dao.cassandra; |
17 | 17 | |
18 | 18 | import org.springframework.beans.factory.annotation.Value; |
19 | 19 | import org.springframework.stereotype.Component; |
20 | -import javax.annotation.PostConstruct; | |
21 | 20 | import org.thingsboard.server.dao.util.NoSqlDao; |
22 | 21 | |
22 | +import javax.annotation.PostConstruct; | |
23 | + | |
23 | 24 | @Component |
24 | 25 | @NoSqlDao |
25 | 26 | public class CassandraCluster extends AbstractCassandraCluster { | ... | ... |
... | ... | @@ -27,11 +27,11 @@ import org.thingsboard.server.common.data.page.TextPageLink; |
27 | 27 | import org.thingsboard.server.common.data.plugin.ComponentDescriptor; |
28 | 28 | import org.thingsboard.server.common.data.plugin.ComponentScope; |
29 | 29 | import org.thingsboard.server.common.data.plugin.ComponentType; |
30 | -import org.thingsboard.server.dao.nosql.CassandraAbstractSearchTextDao; | |
31 | 30 | import org.thingsboard.server.dao.DaoUtil; |
32 | -import org.thingsboard.server.dao.util.NoSqlDao; | |
33 | 31 | import org.thingsboard.server.dao.model.ModelConstants; |
34 | 32 | import org.thingsboard.server.dao.model.nosql.ComponentDescriptorEntity; |
33 | +import org.thingsboard.server.dao.nosql.CassandraAbstractSearchTextDao; | |
34 | +import org.thingsboard.server.dao.util.NoSqlDao; | |
35 | 35 | |
36 | 36 | import java.util.Arrays; |
37 | 37 | import java.util.List; | ... | ... |
... | ... | @@ -20,11 +20,11 @@ import lombok.extern.slf4j.Slf4j; |
20 | 20 | import org.springframework.stereotype.Component; |
21 | 21 | import org.thingsboard.server.common.data.Customer; |
22 | 22 | import org.thingsboard.server.common.data.page.TextPageLink; |
23 | -import org.thingsboard.server.dao.nosql.CassandraAbstractSearchTextDao; | |
24 | 23 | import org.thingsboard.server.dao.DaoUtil; |
25 | -import org.thingsboard.server.dao.util.NoSqlDao; | |
26 | 24 | import org.thingsboard.server.dao.model.ModelConstants; |
27 | 25 | import org.thingsboard.server.dao.model.nosql.CustomerEntity; |
26 | +import org.thingsboard.server.dao.nosql.CassandraAbstractSearchTextDao; | |
27 | +import org.thingsboard.server.dao.util.NoSqlDao; | |
28 | 28 | |
29 | 29 | import java.util.Arrays; |
30 | 30 | import java.util.List; | ... | ... |
... | ... | @@ -15,12 +15,12 @@ |
15 | 15 | */ |
16 | 16 | package org.thingsboard.server.dao.customer; |
17 | 17 | |
18 | -import java.util.Optional; | |
19 | 18 | import org.thingsboard.server.common.data.Customer; |
20 | 19 | import org.thingsboard.server.common.data.page.TextPageLink; |
21 | 20 | import org.thingsboard.server.dao.Dao; |
22 | 21 | |
23 | 22 | import java.util.List; |
23 | +import java.util.Optional; | |
24 | 24 | import java.util.UUID; |
25 | 25 | |
26 | 26 | /** | ... | ... |
... | ... | @@ -15,12 +15,6 @@ |
15 | 15 | */ |
16 | 16 | package org.thingsboard.server.dao.customer; |
17 | 17 | |
18 | -import static org.thingsboard.server.dao.service.Validator.validateId; | |
19 | - | |
20 | -import java.io.IOException; | |
21 | -import java.util.List; | |
22 | -import java.util.Optional; | |
23 | - | |
24 | 18 | import com.fasterxml.jackson.databind.JsonNode; |
25 | 19 | import com.fasterxml.jackson.databind.ObjectMapper; |
26 | 20 | import com.google.common.util.concurrent.ListenableFuture; |
... | ... | @@ -45,6 +39,12 @@ import org.thingsboard.server.dao.service.Validator; |
45 | 39 | import org.thingsboard.server.dao.tenant.TenantDao; |
46 | 40 | import org.thingsboard.server.dao.user.UserService; |
47 | 41 | |
42 | +import java.io.IOException; | |
43 | +import java.util.List; | |
44 | +import java.util.Optional; | |
45 | + | |
46 | +import static org.thingsboard.server.dao.service.Validator.validateId; | |
47 | + | |
48 | 48 | @Service |
49 | 49 | @Slf4j |
50 | 50 | public class CustomerServiceImpl extends AbstractEntityService implements CustomerService { | ... | ... |
... | ... | @@ -17,9 +17,9 @@ package org.thingsboard.server.dao.dashboard; |
17 | 17 | |
18 | 18 | import org.springframework.stereotype.Component; |
19 | 19 | import org.thingsboard.server.common.data.Dashboard; |
20 | +import org.thingsboard.server.dao.model.nosql.DashboardEntity; | |
20 | 21 | import org.thingsboard.server.dao.nosql.CassandraAbstractSearchTextDao; |
21 | 22 | import org.thingsboard.server.dao.util.NoSqlDao; |
22 | -import org.thingsboard.server.dao.model.nosql.DashboardEntity; | |
23 | 23 | |
24 | 24 | import static org.thingsboard.server.dao.model.ModelConstants.DASHBOARD_COLUMN_FAMILY_NAME; |
25 | 25 | ... | ... |
... | ... | @@ -19,10 +19,10 @@ import lombok.extern.slf4j.Slf4j; |
19 | 19 | import org.springframework.stereotype.Component; |
20 | 20 | import org.thingsboard.server.common.data.DashboardInfo; |
21 | 21 | import org.thingsboard.server.common.data.page.TextPageLink; |
22 | -import org.thingsboard.server.dao.nosql.CassandraAbstractSearchTextDao; | |
23 | 22 | import org.thingsboard.server.dao.DaoUtil; |
24 | -import org.thingsboard.server.dao.util.NoSqlDao; | |
25 | 23 | import org.thingsboard.server.dao.model.nosql.DashboardInfoEntity; |
24 | +import org.thingsboard.server.dao.nosql.CassandraAbstractSearchTextDao; | |
25 | +import org.thingsboard.server.dao.util.NoSqlDao; | |
26 | 26 | |
27 | 27 | import java.util.Arrays; |
28 | 28 | import java.util.Collections; | ... | ... |
... | ... | @@ -19,11 +19,11 @@ import com.datastax.driver.core.querybuilder.Select.Where; |
19 | 19 | import lombok.extern.slf4j.Slf4j; |
20 | 20 | import org.springframework.stereotype.Component; |
21 | 21 | import org.thingsboard.server.common.data.security.DeviceCredentials; |
22 | -import org.thingsboard.server.dao.nosql.CassandraAbstractModelDao; | |
23 | 22 | import org.thingsboard.server.dao.DaoUtil; |
24 | -import org.thingsboard.server.dao.util.NoSqlDao; | |
25 | 23 | import org.thingsboard.server.dao.model.ModelConstants; |
26 | 24 | import org.thingsboard.server.dao.model.nosql.DeviceCredentialsEntity; |
25 | +import org.thingsboard.server.dao.nosql.CassandraAbstractModelDao; | |
26 | +import org.thingsboard.server.dao.util.NoSqlDao; | |
27 | 27 | |
28 | 28 | import java.util.UUID; |
29 | 29 | ... | ... |
... | ... | @@ -27,11 +27,11 @@ import org.springframework.stereotype.Component; |
27 | 27 | import org.thingsboard.server.common.data.Device; |
28 | 28 | import org.thingsboard.server.common.data.TenantDeviceType; |
29 | 29 | import org.thingsboard.server.common.data.page.TextPageLink; |
30 | -import org.thingsboard.server.dao.nosql.CassandraAbstractSearchTextDao; | |
31 | 30 | import org.thingsboard.server.dao.DaoUtil; |
32 | -import org.thingsboard.server.dao.util.NoSqlDao; | |
33 | 31 | import org.thingsboard.server.dao.model.TenantDeviceTypeEntity; |
34 | 32 | import org.thingsboard.server.dao.model.nosql.DeviceEntity; |
33 | +import org.thingsboard.server.dao.nosql.CassandraAbstractSearchTextDao; | |
34 | +import org.thingsboard.server.dao.util.NoSqlDao; | |
35 | 35 | |
36 | 36 | import javax.annotation.Nullable; |
37 | 37 | import java.util.*; | ... | ... |
... | ... | @@ -20,7 +20,6 @@ import org.thingsboard.server.common.data.Device; |
20 | 20 | import org.thingsboard.server.common.data.TenantDeviceType; |
21 | 21 | import org.thingsboard.server.common.data.page.TextPageLink; |
22 | 22 | import org.thingsboard.server.dao.Dao; |
23 | -import org.thingsboard.server.dao.model.TenantDeviceTypeEntity; | |
24 | 23 | |
25 | 24 | import java.util.List; |
26 | 25 | import java.util.Optional; | ... | ... |
... | ... | @@ -21,7 +21,7 @@ import com.google.common.util.concurrent.ListenableFuture; |
21 | 21 | import lombok.extern.slf4j.Slf4j; |
22 | 22 | import org.springframework.beans.factory.annotation.Autowired; |
23 | 23 | import org.springframework.stereotype.Service; |
24 | -import org.thingsboard.server.common.data.*; | |
24 | +import org.thingsboard.server.common.data.HasName; | |
25 | 25 | import org.thingsboard.server.common.data.alarm.AlarmId; |
26 | 26 | import org.thingsboard.server.common.data.id.*; |
27 | 27 | import org.thingsboard.server.dao.alarm.AlarmService; | ... | ... |
... | ... | @@ -28,11 +28,11 @@ import org.thingsboard.server.common.data.id.EntityId; |
28 | 28 | import org.thingsboard.server.common.data.id.EventId; |
29 | 29 | import org.thingsboard.server.common.data.id.TenantId; |
30 | 30 | import org.thingsboard.server.common.data.page.TimePageLink; |
31 | -import org.thingsboard.server.dao.nosql.CassandraAbstractSearchTimeDao; | |
32 | 31 | import org.thingsboard.server.dao.DaoUtil; |
33 | -import org.thingsboard.server.dao.util.NoSqlDao; | |
34 | 32 | import org.thingsboard.server.dao.model.ModelConstants; |
35 | 33 | import org.thingsboard.server.dao.model.nosql.EventEntity; |
34 | +import org.thingsboard.server.dao.nosql.CassandraAbstractSearchTimeDao; | |
35 | +import org.thingsboard.server.dao.util.NoSqlDao; | |
36 | 36 | |
37 | 37 | import java.util.Arrays; |
38 | 38 | import java.util.List; | ... | ... |
1 | +/** | |
2 | + * Copyright © 2016-2017 The Thingsboard Authors | |
3 | + * | |
4 | + * Licensed under the Apache License, Version 2.0 (the "License"); | |
5 | + * you may not use this file except in compliance with the License. | |
6 | + * You may obtain a copy of the License at | |
7 | + * | |
8 | + * http://www.apache.org/licenses/LICENSE-2.0 | |
9 | + * | |
10 | + * Unless required by applicable law or agreed to in writing, software | |
11 | + * distributed under the License is distributed on an "AS IS" BASIS, | |
12 | + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
13 | + * See the License for the specific language governing permissions and | |
14 | + * limitations under the License. | |
15 | + */ | |
16 | +package org.thingsboard.server.dao.model; | |
17 | + | |
18 | +import lombok.Data; | |
19 | +import org.thingsboard.server.common.data.UUIDConverter; | |
20 | + | |
21 | +import javax.persistence.Column; | |
22 | +import javax.persistence.Id; | |
23 | +import javax.persistence.MappedSuperclass; | |
24 | +import java.util.UUID; | |
25 | + | |
26 | +/** | |
27 | + * Created by ashvayka on 13.07.17. | |
28 | + */ | |
29 | +@Data | |
30 | +@MappedSuperclass | |
31 | +public abstract class BaseSqlEntity<D> implements BaseEntity<D> { | |
32 | + | |
33 | + @Id | |
34 | + @Column(name = ModelConstants.ID_PROPERTY) | |
35 | + protected String id; | |
36 | + | |
37 | + @Override | |
38 | + public UUID getId() { | |
39 | + if (id == null) { | |
40 | + return null; | |
41 | + } | |
42 | + return UUIDConverter.fromString(id); | |
43 | + } | |
44 | + | |
45 | + public void setId(UUID id) { | |
46 | + this.id = UUIDConverter.fromTimeUUID(id); | |
47 | + } | |
48 | + | |
49 | + protected UUID toUUID(String src){ | |
50 | + return UUIDConverter.fromString(src); | |
51 | + } | |
52 | + | |
53 | + protected String toString(UUID timeUUID){ | |
54 | + return UUIDConverter.fromTimeUUID(timeUUID); | |
55 | + } | |
56 | + | |
57 | +} | ... | ... |
... | ... | @@ -15,18 +15,20 @@ |
15 | 15 | */ |
16 | 16 | package org.thingsboard.server.dao.model; |
17 | 17 | |
18 | -import java.util.UUID; | |
19 | - | |
20 | 18 | import com.datastax.driver.core.utils.UUIDs; |
21 | 19 | import org.apache.commons.lang3.ArrayUtils; |
20 | +import org.thingsboard.server.common.data.UUIDConverter; | |
22 | 21 | import org.thingsboard.server.common.data.kv.Aggregation; |
23 | 22 | |
23 | +import java.util.UUID; | |
24 | + | |
24 | 25 | public class ModelConstants { |
25 | 26 | |
26 | 27 | private ModelConstants() { |
27 | 28 | } |
28 | 29 | |
29 | 30 | public static UUID NULL_UUID = UUIDs.startOf(0); |
31 | + public static String NULL_UUID_STR = UUIDConverter.fromTimeUUID(NULL_UUID); | |
30 | 32 | |
31 | 33 | /** |
32 | 34 | * Generic constants. | ... | ... |
... | ... | @@ -15,24 +15,20 @@ |
15 | 15 | */ |
16 | 16 | package org.thingsboard.server.dao.model.nosql; |
17 | 17 | |
18 | -import static org.thingsboard.server.dao.model.ModelConstants.ADMIN_SETTINGS_COLUMN_FAMILY_NAME; | |
19 | -import static org.thingsboard.server.dao.model.ModelConstants.ADMIN_SETTINGS_JSON_VALUE_PROPERTY; | |
20 | -import static org.thingsboard.server.dao.model.ModelConstants.ADMIN_SETTINGS_KEY_PROPERTY; | |
21 | -import static org.thingsboard.server.dao.model.ModelConstants.ID_PROPERTY; | |
22 | - | |
23 | -import java.util.UUID; | |
24 | - | |
25 | -import org.thingsboard.server.common.data.AdminSettings; | |
26 | -import org.thingsboard.server.common.data.id.AdminSettingsId; | |
27 | -import org.thingsboard.server.dao.model.BaseEntity; | |
28 | -import org.thingsboard.server.dao.model.type.JsonCodec; | |
29 | - | |
30 | 18 | import com.datastax.driver.core.utils.UUIDs; |
31 | 19 | import com.datastax.driver.mapping.annotations.Column; |
32 | 20 | import com.datastax.driver.mapping.annotations.PartitionKey; |
33 | 21 | import com.datastax.driver.mapping.annotations.Table; |
34 | 22 | import com.datastax.driver.mapping.annotations.Transient; |
35 | 23 | import com.fasterxml.jackson.databind.JsonNode; |
24 | +import org.thingsboard.server.common.data.AdminSettings; | |
25 | +import org.thingsboard.server.common.data.id.AdminSettingsId; | |
26 | +import org.thingsboard.server.dao.model.BaseEntity; | |
27 | +import org.thingsboard.server.dao.model.type.JsonCodec; | |
28 | + | |
29 | +import java.util.UUID; | |
30 | + | |
31 | +import static org.thingsboard.server.dao.model.ModelConstants.*; | |
36 | 32 | |
37 | 33 | @Table(name = ADMIN_SETTINGS_COLUMN_FAMILY_NAME) |
38 | 34 | public final class AdminSettingsEntity implements BaseEntity<AdminSettings> { | ... | ... |
... | ... | @@ -15,20 +15,19 @@ |
15 | 15 | */ |
16 | 16 | package org.thingsboard.server.dao.model.nosql; |
17 | 17 | |
18 | -import java.util.UUID; | |
19 | - | |
20 | -import org.thingsboard.server.common.data.Customer; | |
21 | -import org.thingsboard.server.common.data.id.CustomerId; | |
22 | -import org.thingsboard.server.common.data.id.TenantId; | |
23 | -import org.thingsboard.server.dao.model.SearchTextEntity; | |
24 | -import org.thingsboard.server.dao.model.type.JsonCodec; | |
25 | - | |
26 | 18 | import com.datastax.driver.core.utils.UUIDs; |
27 | 19 | import com.datastax.driver.mapping.annotations.Column; |
28 | 20 | import com.datastax.driver.mapping.annotations.PartitionKey; |
29 | 21 | import com.datastax.driver.mapping.annotations.Table; |
30 | 22 | import com.datastax.driver.mapping.annotations.Transient; |
31 | 23 | import com.fasterxml.jackson.databind.JsonNode; |
24 | +import org.thingsboard.server.common.data.Customer; | |
25 | +import org.thingsboard.server.common.data.id.CustomerId; | |
26 | +import org.thingsboard.server.common.data.id.TenantId; | |
27 | +import org.thingsboard.server.dao.model.SearchTextEntity; | |
28 | +import org.thingsboard.server.dao.model.type.JsonCodec; | |
29 | + | |
30 | +import java.util.UUID; | |
32 | 31 | |
33 | 32 | import static org.thingsboard.server.dao.model.ModelConstants.*; |
34 | 33 | ... | ... |
... | ... | @@ -15,8 +15,12 @@ |
15 | 15 | */ |
16 | 16 | package org.thingsboard.server.dao.model.nosql; |
17 | 17 | |
18 | -import java.util.UUID; | |
19 | - | |
18 | +import com.datastax.driver.core.utils.UUIDs; | |
19 | +import com.datastax.driver.mapping.annotations.Column; | |
20 | +import com.datastax.driver.mapping.annotations.PartitionKey; | |
21 | +import com.datastax.driver.mapping.annotations.Table; | |
22 | +import com.datastax.driver.mapping.annotations.Transient; | |
23 | +import com.fasterxml.jackson.databind.JsonNode; | |
20 | 24 | import org.thingsboard.server.common.data.Dashboard; |
21 | 25 | import org.thingsboard.server.common.data.id.CustomerId; |
22 | 26 | import org.thingsboard.server.common.data.id.DashboardId; |
... | ... | @@ -24,12 +28,7 @@ import org.thingsboard.server.common.data.id.TenantId; |
24 | 28 | import org.thingsboard.server.dao.model.SearchTextEntity; |
25 | 29 | import org.thingsboard.server.dao.model.type.JsonCodec; |
26 | 30 | |
27 | -import com.datastax.driver.core.utils.UUIDs; | |
28 | -import com.datastax.driver.mapping.annotations.Column; | |
29 | -import com.datastax.driver.mapping.annotations.PartitionKey; | |
30 | -import com.datastax.driver.mapping.annotations.Table; | |
31 | -import com.datastax.driver.mapping.annotations.Transient; | |
32 | -import com.fasterxml.jackson.databind.JsonNode; | |
31 | +import java.util.UUID; | |
33 | 32 | |
34 | 33 | import static org.thingsboard.server.dao.model.ModelConstants.*; |
35 | 34 | ... | ... |
... | ... | @@ -15,19 +15,18 @@ |
15 | 15 | */ |
16 | 16 | package org.thingsboard.server.dao.model.nosql; |
17 | 17 | |
18 | -import java.util.UUID; | |
19 | - | |
18 | +import com.datastax.driver.core.utils.UUIDs; | |
19 | +import com.datastax.driver.mapping.annotations.Column; | |
20 | +import com.datastax.driver.mapping.annotations.PartitionKey; | |
21 | +import com.datastax.driver.mapping.annotations.Table; | |
22 | +import com.datastax.driver.mapping.annotations.Transient; | |
20 | 23 | import org.thingsboard.server.common.data.DashboardInfo; |
21 | 24 | import org.thingsboard.server.common.data.id.CustomerId; |
22 | 25 | import org.thingsboard.server.common.data.id.DashboardId; |
23 | 26 | import org.thingsboard.server.common.data.id.TenantId; |
24 | 27 | import org.thingsboard.server.dao.model.SearchTextEntity; |
25 | 28 | |
26 | -import com.datastax.driver.core.utils.UUIDs; | |
27 | -import com.datastax.driver.mapping.annotations.Column; | |
28 | -import com.datastax.driver.mapping.annotations.PartitionKey; | |
29 | -import com.datastax.driver.mapping.annotations.Table; | |
30 | -import com.datastax.driver.mapping.annotations.Transient; | |
29 | +import java.util.UUID; | |
31 | 30 | |
32 | 31 | import static org.thingsboard.server.dao.model.ModelConstants.*; |
33 | 32 | ... | ... |
... | ... | @@ -15,8 +15,11 @@ |
15 | 15 | */ |
16 | 16 | package org.thingsboard.server.dao.model.nosql; |
17 | 17 | |
18 | -import java.util.UUID; | |
19 | - | |
18 | +import com.datastax.driver.core.utils.UUIDs; | |
19 | +import com.datastax.driver.mapping.annotations.Column; | |
20 | +import com.datastax.driver.mapping.annotations.PartitionKey; | |
21 | +import com.datastax.driver.mapping.annotations.Table; | |
22 | +import com.datastax.driver.mapping.annotations.Transient; | |
20 | 23 | import org.thingsboard.server.common.data.id.DeviceCredentialsId; |
21 | 24 | import org.thingsboard.server.common.data.id.DeviceId; |
22 | 25 | import org.thingsboard.server.common.data.security.DeviceCredentials; |
... | ... | @@ -24,11 +27,7 @@ import org.thingsboard.server.common.data.security.DeviceCredentialsType; |
24 | 27 | import org.thingsboard.server.dao.model.BaseEntity; |
25 | 28 | import org.thingsboard.server.dao.model.type.DeviceCredentialsTypeCodec; |
26 | 29 | |
27 | -import com.datastax.driver.core.utils.UUIDs; | |
28 | -import com.datastax.driver.mapping.annotations.Column; | |
29 | -import com.datastax.driver.mapping.annotations.PartitionKey; | |
30 | -import com.datastax.driver.mapping.annotations.Table; | |
31 | -import com.datastax.driver.mapping.annotations.Transient; | |
30 | +import java.util.UUID; | |
32 | 31 | |
33 | 32 | import static org.thingsboard.server.dao.model.ModelConstants.*; |
34 | 33 | ... | ... |
... | ... | @@ -28,10 +28,10 @@ import org.thingsboard.server.common.data.id.TenantId; |
28 | 28 | import org.thingsboard.server.dao.model.SearchTextEntity; |
29 | 29 | import org.thingsboard.server.dao.model.type.JsonCodec; |
30 | 30 | |
31 | -import static org.thingsboard.server.dao.model.ModelConstants.*; | |
32 | - | |
33 | 31 | import java.util.UUID; |
34 | 32 | |
33 | +import static org.thingsboard.server.dao.model.ModelConstants.*; | |
34 | + | |
35 | 35 | @Table(name = DEVICE_COLUMN_FAMILY_NAME) |
36 | 36 | public final class DeviceEntity implements SearchTextEntity<Device> { |
37 | 37 | ... | ... |
... | ... | @@ -26,11 +26,11 @@ import org.thingsboard.server.dao.model.SearchTextEntity; |
26 | 26 | import org.thingsboard.server.dao.model.type.ComponentLifecycleStateCodec; |
27 | 27 | import org.thingsboard.server.dao.model.type.JsonCodec; |
28 | 28 | |
29 | -import static org.thingsboard.server.dao.model.ModelConstants.*; | |
30 | - | |
31 | 29 | import java.util.Objects; |
32 | 30 | import java.util.UUID; |
33 | 31 | |
32 | +import static org.thingsboard.server.dao.model.ModelConstants.*; | |
33 | + | |
34 | 34 | @Table(name = PLUGIN_COLUMN_FAMILY_NAME) |
35 | 35 | public class PluginMetaDataEntity implements SearchTextEntity<PluginMetaData> { |
36 | 36 | ... | ... |
... | ... | @@ -30,12 +30,12 @@ import org.thingsboard.server.dao.model.SearchTextEntity; |
30 | 30 | import org.thingsboard.server.dao.model.type.ComponentLifecycleStateCodec; |
31 | 31 | import org.thingsboard.server.dao.model.type.JsonCodec; |
32 | 32 | |
33 | -import static org.thingsboard.server.dao.model.ModelConstants.*; | |
34 | - | |
35 | 33 | import javax.persistence.Transient; |
36 | 34 | import java.util.Objects; |
37 | 35 | import java.util.UUID; |
38 | 36 | |
37 | +import static org.thingsboard.server.dao.model.ModelConstants.*; | |
38 | + | |
39 | 39 | @Table(name = RULE_COLUMN_FAMILY_NAME) |
40 | 40 | public class RuleMetaDataEntity implements SearchTextEntity<RuleMetaData> { |
41 | 41 | ... | ... |
... | ... | @@ -15,19 +15,19 @@ |
15 | 15 | */ |
16 | 16 | package org.thingsboard.server.dao.model.nosql; |
17 | 17 | |
18 | -import java.util.UUID; | |
19 | - | |
20 | -import org.thingsboard.server.common.data.Tenant; | |
21 | -import org.thingsboard.server.common.data.id.TenantId; | |
22 | -import org.thingsboard.server.dao.model.SearchTextEntity; | |
23 | -import org.thingsboard.server.dao.model.type.JsonCodec; | |
24 | - | |
25 | 18 | import com.datastax.driver.core.utils.UUIDs; |
26 | 19 | import com.datastax.driver.mapping.annotations.Column; |
27 | 20 | import com.datastax.driver.mapping.annotations.PartitionKey; |
28 | 21 | import com.datastax.driver.mapping.annotations.Table; |
29 | 22 | import com.datastax.driver.mapping.annotations.Transient; |
30 | 23 | import com.fasterxml.jackson.databind.JsonNode; |
24 | +import org.thingsboard.server.common.data.Tenant; | |
25 | +import org.thingsboard.server.common.data.id.TenantId; | |
26 | +import org.thingsboard.server.dao.model.SearchTextEntity; | |
27 | +import org.thingsboard.server.dao.model.type.JsonCodec; | |
28 | + | |
29 | +import java.util.UUID; | |
30 | + | |
31 | 31 | import static org.thingsboard.server.dao.model.ModelConstants.*; |
32 | 32 | |
33 | 33 | @Table(name = TENANT_COLUMN_FAMILY_NAME) | ... | ... |
... | ... | @@ -15,18 +15,18 @@ |
15 | 15 | */ |
16 | 16 | package org.thingsboard.server.dao.model.nosql; |
17 | 17 | |
18 | -import java.util.UUID; | |
19 | - | |
20 | -import org.thingsboard.server.common.data.id.UserCredentialsId; | |
21 | -import org.thingsboard.server.common.data.id.UserId; | |
22 | -import org.thingsboard.server.common.data.security.UserCredentials; | |
23 | - | |
24 | 18 | import com.datastax.driver.core.utils.UUIDs; |
25 | 19 | import com.datastax.driver.mapping.annotations.Column; |
26 | 20 | import com.datastax.driver.mapping.annotations.PartitionKey; |
27 | 21 | import com.datastax.driver.mapping.annotations.Table; |
28 | 22 | import com.datastax.driver.mapping.annotations.Transient; |
23 | +import org.thingsboard.server.common.data.id.UserCredentialsId; | |
24 | +import org.thingsboard.server.common.data.id.UserId; | |
25 | +import org.thingsboard.server.common.data.security.UserCredentials; | |
29 | 26 | import org.thingsboard.server.dao.model.BaseEntity; |
27 | + | |
28 | +import java.util.UUID; | |
29 | + | |
30 | 30 | import static org.thingsboard.server.dao.model.ModelConstants.*; |
31 | 31 | |
32 | 32 | @Table(name = USER_CREDENTIALS_COLUMN_FAMILY_NAME) | ... | ... |
... | ... | @@ -15,8 +15,12 @@ |
15 | 15 | */ |
16 | 16 | package org.thingsboard.server.dao.model.nosql; |
17 | 17 | |
18 | -import java.util.UUID; | |
19 | - | |
18 | +import com.datastax.driver.core.utils.UUIDs; | |
19 | +import com.datastax.driver.mapping.annotations.Column; | |
20 | +import com.datastax.driver.mapping.annotations.PartitionKey; | |
21 | +import com.datastax.driver.mapping.annotations.Table; | |
22 | +import com.datastax.driver.mapping.annotations.Transient; | |
23 | +import com.fasterxml.jackson.databind.JsonNode; | |
20 | 24 | import org.thingsboard.server.common.data.User; |
21 | 25 | import org.thingsboard.server.common.data.id.CustomerId; |
22 | 26 | import org.thingsboard.server.common.data.id.TenantId; |
... | ... | @@ -26,12 +30,8 @@ import org.thingsboard.server.dao.model.SearchTextEntity; |
26 | 30 | import org.thingsboard.server.dao.model.type.AuthorityCodec; |
27 | 31 | import org.thingsboard.server.dao.model.type.JsonCodec; |
28 | 32 | |
29 | -import com.datastax.driver.core.utils.UUIDs; | |
30 | -import com.datastax.driver.mapping.annotations.Column; | |
31 | -import com.datastax.driver.mapping.annotations.PartitionKey; | |
32 | -import com.datastax.driver.mapping.annotations.Table; | |
33 | -import com.datastax.driver.mapping.annotations.Transient; | |
34 | -import com.fasterxml.jackson.databind.JsonNode; | |
33 | +import java.util.UUID; | |
34 | + | |
35 | 35 | import static org.thingsboard.server.dao.model.ModelConstants.*; |
36 | 36 | |
37 | 37 | @Table(name = USER_COLUMN_FAMILY_NAME) | ... | ... |
... | ... | @@ -26,10 +26,11 @@ import org.thingsboard.server.common.data.id.WidgetTypeId; |
26 | 26 | import org.thingsboard.server.common.data.widget.WidgetType; |
27 | 27 | import org.thingsboard.server.dao.model.BaseEntity; |
28 | 28 | import org.thingsboard.server.dao.model.type.JsonCodec; |
29 | -import static org.thingsboard.server.dao.model.ModelConstants.*; | |
30 | 29 | |
31 | 30 | import java.util.UUID; |
32 | 31 | |
32 | +import static org.thingsboard.server.dao.model.ModelConstants.*; | |
33 | + | |
33 | 34 | @Table(name = WIDGET_TYPE_COLUMN_FAMILY_NAME) |
34 | 35 | public final class WidgetTypeEntity implements BaseEntity<WidgetType> { |
35 | 36 | ... | ... |
... | ... | @@ -25,11 +25,12 @@ import org.thingsboard.server.common.data.id.TenantId; |
25 | 25 | import org.thingsboard.server.common.data.id.WidgetsBundleId; |
26 | 26 | import org.thingsboard.server.common.data.widget.WidgetsBundle; |
27 | 27 | import org.thingsboard.server.dao.model.SearchTextEntity; |
28 | -import static org.thingsboard.server.dao.model.ModelConstants.*; | |
29 | 28 | |
30 | 29 | import java.nio.ByteBuffer; |
31 | 30 | import java.util.UUID; |
32 | 31 | |
32 | +import static org.thingsboard.server.dao.model.ModelConstants.*; | |
33 | + | |
33 | 34 | @Table(name = WIDGETS_BUNDLE_COLUMN_FAMILY_NAME) |
34 | 35 | public final class WidgetsBundleEntity implements SearchTextEntity<WidgetsBundle> { |
35 | 36 | ... | ... |
... | ... | @@ -18,31 +18,33 @@ package org.thingsboard.server.dao.model.sql; |
18 | 18 | import com.datastax.driver.core.utils.UUIDs; |
19 | 19 | import com.fasterxml.jackson.databind.JsonNode; |
20 | 20 | import lombok.Data; |
21 | +import lombok.EqualsAndHashCode; | |
21 | 22 | import org.hibernate.annotations.Type; |
22 | 23 | import org.hibernate.annotations.TypeDef; |
23 | 24 | import org.thingsboard.server.common.data.AdminSettings; |
25 | +import org.thingsboard.server.common.data.UUIDConverter; | |
24 | 26 | import org.thingsboard.server.common.data.id.AdminSettingsId; |
25 | 27 | import org.thingsboard.server.dao.model.BaseEntity; |
28 | +import org.thingsboard.server.dao.model.BaseSqlEntity; | |
26 | 29 | import org.thingsboard.server.dao.util.mapping.JsonStringType; |
27 | 30 | |
28 | -import javax.persistence.*; | |
29 | -import java.util.UUID; | |
31 | +import javax.persistence.Column; | |
32 | +import javax.persistence.Entity; | |
33 | +import javax.persistence.Table; | |
34 | +import javax.persistence.Transient; | |
30 | 35 | |
31 | 36 | import static org.thingsboard.server.dao.model.ModelConstants.*; |
32 | 37 | |
33 | 38 | @Data |
39 | +@EqualsAndHashCode(callSuper = true) | |
34 | 40 | @Entity |
35 | 41 | @TypeDef(name = "json", typeClass = JsonStringType.class) |
36 | 42 | @Table(name = ADMIN_SETTINGS_COLUMN_FAMILY_NAME) |
37 | -public final class AdminSettingsEntity implements BaseEntity<AdminSettings> { | |
43 | +public final class AdminSettingsEntity extends BaseSqlEntity<AdminSettings> implements BaseEntity<AdminSettings> { | |
38 | 44 | |
39 | 45 | @Transient |
40 | 46 | private static final long serialVersionUID = 842759712850362147L; |
41 | 47 | |
42 | - @Id | |
43 | - @Column(name = ID_PROPERTY) | |
44 | - private UUID id; | |
45 | - | |
46 | 48 | @Column(name = ADMIN_SETTINGS_KEY_PROPERTY) |
47 | 49 | private String key; |
48 | 50 | |
... | ... | @@ -56,26 +58,16 @@ public final class AdminSettingsEntity implements BaseEntity<AdminSettings> { |
56 | 58 | |
57 | 59 | public AdminSettingsEntity(AdminSettings adminSettings) { |
58 | 60 | if (adminSettings.getId() != null) { |
59 | - this.id = adminSettings.getId().getId(); | |
61 | + this.setId(adminSettings.getId().getId()); | |
60 | 62 | } |
61 | 63 | this.key = adminSettings.getKey(); |
62 | 64 | this.jsonValue = adminSettings.getJsonValue(); |
63 | 65 | } |
64 | 66 | |
65 | 67 | @Override |
66 | - public UUID getId() { | |
67 | - return id; | |
68 | - } | |
69 | - | |
70 | - @Override | |
71 | - public void setId(UUID id) { | |
72 | - this.id = id; | |
73 | - } | |
74 | - | |
75 | - @Override | |
76 | 68 | public AdminSettings toData() { |
77 | - AdminSettings adminSettings = new AdminSettings(new AdminSettingsId(id)); | |
78 | - adminSettings.setCreatedTime(UUIDs.unixTimestamp(id)); | |
69 | + AdminSettings adminSettings = new AdminSettings(new AdminSettingsId(UUIDConverter.fromString(id))); | |
70 | + adminSettings.setCreatedTime(UUIDs.unixTimestamp(UUIDConverter.fromString(id))); | |
79 | 71 | adminSettings.setKey(key); |
80 | 72 | adminSettings.setJsonValue(jsonValue); |
81 | 73 | return adminSettings; | ... | ... |
... | ... | @@ -18,9 +18,11 @@ package org.thingsboard.server.dao.model.sql; |
18 | 18 | import com.datastax.driver.core.utils.UUIDs; |
19 | 19 | import com.fasterxml.jackson.databind.JsonNode; |
20 | 20 | import lombok.Data; |
21 | +import lombok.EqualsAndHashCode; | |
21 | 22 | import org.hibernate.annotations.Type; |
22 | 23 | import org.hibernate.annotations.TypeDef; |
23 | 24 | import org.thingsboard.server.common.data.EntityType; |
25 | +import org.thingsboard.server.common.data.UUIDConverter; | |
24 | 26 | import org.thingsboard.server.common.data.alarm.Alarm; |
25 | 27 | import org.thingsboard.server.common.data.alarm.AlarmId; |
26 | 28 | import org.thingsboard.server.common.data.alarm.AlarmSeverity; |
... | ... | @@ -28,32 +30,29 @@ import org.thingsboard.server.common.data.alarm.AlarmStatus; |
28 | 30 | import org.thingsboard.server.common.data.id.EntityIdFactory; |
29 | 31 | import org.thingsboard.server.common.data.id.TenantId; |
30 | 32 | import org.thingsboard.server.dao.model.BaseEntity; |
33 | +import org.thingsboard.server.dao.model.BaseSqlEntity; | |
31 | 34 | import org.thingsboard.server.dao.model.ModelConstants; |
32 | 35 | import org.thingsboard.server.dao.util.mapping.JsonStringType; |
33 | 36 | |
34 | 37 | import javax.persistence.*; |
35 | -import java.util.UUID; | |
36 | 38 | |
37 | 39 | import static org.thingsboard.server.dao.model.ModelConstants.*; |
38 | 40 | |
39 | 41 | @Data |
42 | +@EqualsAndHashCode(callSuper = true) | |
40 | 43 | @Entity |
41 | 44 | @TypeDef(name = "json", typeClass = JsonStringType.class) |
42 | 45 | @Table(name = ALARM_COLUMN_FAMILY_NAME) |
43 | -public final class AlarmEntity implements BaseEntity<Alarm> { | |
46 | +public final class AlarmEntity extends BaseSqlEntity<Alarm> implements BaseEntity<Alarm> { | |
44 | 47 | |
45 | 48 | @Transient |
46 | 49 | private static final long serialVersionUID = -339979717281685984L; |
47 | 50 | |
48 | - @Id | |
49 | - @Column(name = ID_PROPERTY) | |
50 | - private UUID id; | |
51 | - | |
52 | 51 | @Column(name = ALARM_TENANT_ID_PROPERTY) |
53 | - private UUID tenantId; | |
52 | + private String tenantId; | |
54 | 53 | |
55 | 54 | @Column(name = ALARM_ORIGINATOR_ID_PROPERTY) |
56 | - private UUID originatorId; | |
55 | + private String originatorId; | |
57 | 56 | |
58 | 57 | @Column(name = ALARM_ORIGINATOR_TYPE_PROPERTY) |
59 | 58 | private EntityType originatorType; |
... | ... | @@ -94,13 +93,13 @@ public final class AlarmEntity implements BaseEntity<Alarm> { |
94 | 93 | |
95 | 94 | public AlarmEntity(Alarm alarm) { |
96 | 95 | if (alarm.getId() != null) { |
97 | - this.id = alarm.getId().getId(); | |
96 | + this.setId(alarm.getId().getId()); | |
98 | 97 | } |
99 | 98 | if (alarm.getTenantId() != null) { |
100 | - this.tenantId = alarm.getTenantId().getId(); | |
99 | + this.tenantId = UUIDConverter.fromTimeUUID(alarm.getTenantId().getId()); | |
101 | 100 | } |
102 | 101 | this.type = alarm.getType(); |
103 | - this.originatorId = alarm.getOriginator().getId(); | |
102 | + this.originatorId = UUIDConverter.fromTimeUUID(alarm.getOriginator().getId()); | |
104 | 103 | this.originatorType = alarm.getOriginator().getEntityType(); |
105 | 104 | this.type = alarm.getType(); |
106 | 105 | this.severity = alarm.getSeverity(); |
... | ... | @@ -115,12 +114,12 @@ public final class AlarmEntity implements BaseEntity<Alarm> { |
115 | 114 | |
116 | 115 | @Override |
117 | 116 | public Alarm toData() { |
118 | - Alarm alarm = new Alarm(new AlarmId(id)); | |
119 | - alarm.setCreatedTime(UUIDs.unixTimestamp(id)); | |
117 | + Alarm alarm = new Alarm(new AlarmId(UUIDConverter.fromString(id))); | |
118 | + alarm.setCreatedTime(UUIDs.unixTimestamp(UUIDConverter.fromString(id))); | |
120 | 119 | if (tenantId != null) { |
121 | - alarm.setTenantId(new TenantId(tenantId)); | |
120 | + alarm.setTenantId(new TenantId(UUIDConverter.fromString(tenantId))); | |
122 | 121 | } |
123 | - alarm.setOriginator(EntityIdFactory.getByTypeAndUuid(originatorType, originatorId)); | |
122 | + alarm.setOriginator(EntityIdFactory.getByTypeAndUuid(originatorType, UUIDConverter.fromString(originatorId))); | |
124 | 123 | alarm.setType(type); |
125 | 124 | alarm.setSeverity(severity); |
126 | 125 | alarm.setStatus(status); | ... | ... |
... | ... | @@ -18,39 +18,41 @@ package org.thingsboard.server.dao.model.sql; |
18 | 18 | import com.datastax.driver.core.utils.UUIDs; |
19 | 19 | import com.fasterxml.jackson.databind.JsonNode; |
20 | 20 | import lombok.Data; |
21 | +import lombok.EqualsAndHashCode; | |
21 | 22 | import org.hibernate.annotations.Type; |
22 | 23 | import org.hibernate.annotations.TypeDef; |
24 | +import org.thingsboard.server.common.data.UUIDConverter; | |
23 | 25 | import org.thingsboard.server.common.data.asset.Asset; |
24 | 26 | import org.thingsboard.server.common.data.id.AssetId; |
25 | 27 | import org.thingsboard.server.common.data.id.CustomerId; |
26 | 28 | import org.thingsboard.server.common.data.id.TenantId; |
29 | +import org.thingsboard.server.dao.model.BaseSqlEntity; | |
27 | 30 | import org.thingsboard.server.dao.model.ModelConstants; |
28 | 31 | import org.thingsboard.server.dao.model.SearchTextEntity; |
29 | 32 | import org.thingsboard.server.dao.util.mapping.JsonStringType; |
30 | 33 | |
31 | -import javax.persistence.*; | |
32 | -import java.util.UUID; | |
34 | +import javax.persistence.Column; | |
35 | +import javax.persistence.Entity; | |
36 | +import javax.persistence.Table; | |
37 | +import javax.persistence.Transient; | |
33 | 38 | |
34 | 39 | import static org.thingsboard.server.dao.model.ModelConstants.*; |
35 | 40 | |
36 | 41 | @Data |
42 | +@EqualsAndHashCode(callSuper = true) | |
37 | 43 | @Entity |
38 | 44 | @TypeDef(name = "json", typeClass = JsonStringType.class) |
39 | 45 | @Table(name = ASSET_COLUMN_FAMILY_NAME) |
40 | -public final class AssetEntity implements SearchTextEntity<Asset> { | |
46 | +public final class AssetEntity extends BaseSqlEntity<Asset> implements SearchTextEntity<Asset> { | |
41 | 47 | |
42 | 48 | @Transient |
43 | 49 | private static final long serialVersionUID = -4089175869616037592L; |
44 | 50 | |
45 | - @Id | |
46 | - @Column(name = ID_PROPERTY) | |
47 | - private UUID id; | |
48 | - | |
49 | 51 | @Column(name = ASSET_TENANT_ID_PROPERTY) |
50 | - private UUID tenantId; | |
52 | + private String tenantId; | |
51 | 53 | |
52 | 54 | @Column(name = ASSET_CUSTOMER_ID_PROPERTY) |
53 | - private UUID customerId; | |
55 | + private String customerId; | |
54 | 56 | |
55 | 57 | @Column(name = ASSET_NAME_PROPERTY) |
56 | 58 | private String name; |
... | ... | @@ -71,13 +73,13 @@ public final class AssetEntity implements SearchTextEntity<Asset> { |
71 | 73 | |
72 | 74 | public AssetEntity(Asset asset) { |
73 | 75 | if (asset.getId() != null) { |
74 | - this.id = asset.getId().getId(); | |
76 | + this.setId(asset.getId().getId()); | |
75 | 77 | } |
76 | 78 | if (asset.getTenantId() != null) { |
77 | - this.tenantId = asset.getTenantId().getId(); | |
79 | + this.tenantId = UUIDConverter.fromTimeUUID(asset.getTenantId().getId()); | |
78 | 80 | } |
79 | 81 | if (asset.getCustomerId() != null) { |
80 | - this.customerId = asset.getCustomerId().getId(); | |
82 | + this.customerId = UUIDConverter.fromTimeUUID(asset.getCustomerId().getId()); | |
81 | 83 | } |
82 | 84 | this.name = asset.getName(); |
83 | 85 | this.type = asset.getType(); |
... | ... | @@ -100,13 +102,13 @@ public final class AssetEntity implements SearchTextEntity<Asset> { |
100 | 102 | |
101 | 103 | @Override |
102 | 104 | public Asset toData() { |
103 | - Asset asset = new Asset(new AssetId(id)); | |
104 | - asset.setCreatedTime(UUIDs.unixTimestamp(id)); | |
105 | + Asset asset = new Asset(new AssetId(UUIDConverter.fromString(id))); | |
106 | + asset.setCreatedTime(UUIDs.unixTimestamp(UUIDConverter.fromString(id))); | |
105 | 107 | if (tenantId != null) { |
106 | - asset.setTenantId(new TenantId(tenantId)); | |
108 | + asset.setTenantId(new TenantId(UUIDConverter.fromString(tenantId))); | |
107 | 109 | } |
108 | 110 | if (customerId != null) { |
109 | - asset.setCustomerId(new CustomerId(customerId)); | |
111 | + asset.setCustomerId(new CustomerId(UUIDConverter.fromString(customerId))); | |
110 | 112 | } |
111 | 113 | asset.setName(name); |
112 | 114 | asset.setType(type); | ... | ... |
... | ... | @@ -21,14 +21,13 @@ import lombok.NoArgsConstructor; |
21 | 21 | import org.thingsboard.server.common.data.EntityType; |
22 | 22 | |
23 | 23 | import java.io.Serializable; |
24 | -import java.util.UUID; | |
25 | 24 | |
26 | 25 | @Data |
27 | 26 | @AllArgsConstructor |
28 | 27 | @NoArgsConstructor |
29 | 28 | public class AttributeKvCompositeKey implements Serializable { |
30 | 29 | private EntityType entityType; |
31 | - private UUID entityId; | |
30 | + private String entityId; | |
32 | 31 | private String attributeType; |
33 | 32 | private String attributeKey; |
34 | 33 | } | ... | ... |
... | ... | @@ -22,7 +22,6 @@ import org.thingsboard.server.dao.model.ToData; |
22 | 22 | |
23 | 23 | import javax.persistence.*; |
24 | 24 | import java.io.Serializable; |
25 | -import java.util.UUID; | |
26 | 25 | |
27 | 26 | import static org.thingsboard.server.dao.model.ModelConstants.*; |
28 | 27 | |
... | ... | @@ -39,7 +38,7 @@ public class AttributeKvEntity implements ToData<AttributeKvEntry>, Serializable |
39 | 38 | |
40 | 39 | @Id |
41 | 40 | @Column(name = ENTITY_ID_COLUMN) |
42 | - private UUID entityId; | |
41 | + private String entityId; | |
43 | 42 | |
44 | 43 | @Id |
45 | 44 | @Column(name = ATTRIBUTE_TYPE_COLUMN) | ... | ... |
... | ... | @@ -17,32 +17,30 @@ package org.thingsboard.server.dao.model.sql; |
17 | 17 | |
18 | 18 | import com.fasterxml.jackson.databind.JsonNode; |
19 | 19 | import lombok.Data; |
20 | +import lombok.EqualsAndHashCode; | |
20 | 21 | import org.hibernate.annotations.Type; |
21 | 22 | import org.hibernate.annotations.TypeDef; |
22 | 23 | import org.thingsboard.server.common.data.id.ComponentDescriptorId; |
23 | 24 | import org.thingsboard.server.common.data.plugin.ComponentDescriptor; |
24 | 25 | import org.thingsboard.server.common.data.plugin.ComponentScope; |
25 | 26 | import org.thingsboard.server.common.data.plugin.ComponentType; |
27 | +import org.thingsboard.server.dao.model.BaseSqlEntity; | |
26 | 28 | import org.thingsboard.server.dao.model.ModelConstants; |
27 | 29 | import org.thingsboard.server.dao.model.SearchTextEntity; |
28 | 30 | import org.thingsboard.server.dao.util.mapping.JsonStringType; |
29 | 31 | |
30 | 32 | import javax.persistence.*; |
31 | -import java.util.UUID; | |
32 | 33 | |
33 | 34 | @Data |
35 | +@EqualsAndHashCode(callSuper = true) | |
34 | 36 | @Entity |
35 | 37 | @TypeDef(name = "json", typeClass = JsonStringType.class) |
36 | 38 | @Table(name = ModelConstants.COMPONENT_DESCRIPTOR_COLUMN_FAMILY_NAME) |
37 | -public class ComponentDescriptorEntity implements SearchTextEntity<ComponentDescriptor> { | |
39 | +public class ComponentDescriptorEntity extends BaseSqlEntity<ComponentDescriptor> implements SearchTextEntity<ComponentDescriptor> { | |
38 | 40 | |
39 | 41 | @Transient |
40 | 42 | private static final long serialVersionUID = 253590350877992402L; |
41 | 43 | |
42 | - @Id | |
43 | - @Column(name = ModelConstants.ID_PROPERTY) | |
44 | - private UUID id; | |
45 | - | |
46 | 44 | @Enumerated(EnumType.STRING) |
47 | 45 | @Column(name = ModelConstants.COMPONENT_DESCRIPTOR_TYPE_PROPERTY) |
48 | 46 | private ComponentType type; |
... | ... | @@ -72,7 +70,7 @@ public class ComponentDescriptorEntity implements SearchTextEntity<ComponentDesc |
72 | 70 | |
73 | 71 | public ComponentDescriptorEntity(ComponentDescriptor component) { |
74 | 72 | if (component.getId() != null) { |
75 | - this.id = component.getId().getId(); | |
73 | + this.setId(component.getId().getId()); | |
76 | 74 | } |
77 | 75 | this.actions = component.getActions(); |
78 | 76 | this.type = component.getType(); |
... | ... | @@ -85,7 +83,7 @@ public class ComponentDescriptorEntity implements SearchTextEntity<ComponentDesc |
85 | 83 | |
86 | 84 | @Override |
87 | 85 | public ComponentDescriptor toData() { |
88 | - ComponentDescriptor data = new ComponentDescriptor(new ComponentDescriptorId(id)); | |
86 | + ComponentDescriptor data = new ComponentDescriptor(new ComponentDescriptorId(this.getId())); | |
89 | 87 | data.setType(type); |
90 | 88 | data.setScope(scope); |
91 | 89 | data.setName(this.getName()); |
... | ... | @@ -95,16 +93,6 @@ public class ComponentDescriptorEntity implements SearchTextEntity<ComponentDesc |
95 | 93 | return data; |
96 | 94 | } |
97 | 95 | |
98 | - @Override | |
99 | - public UUID getId() { | |
100 | - return id; | |
101 | - } | |
102 | - | |
103 | - @Override | |
104 | - public void setId(UUID id) { | |
105 | - this.id = id; | |
106 | - } | |
107 | - | |
108 | 96 | public String getSearchText() { |
109 | 97 | return searchText; |
110 | 98 | } | ... | ... |
... | ... | @@ -18,33 +18,35 @@ package org.thingsboard.server.dao.model.sql; |
18 | 18 | import com.datastax.driver.core.utils.UUIDs; |
19 | 19 | import com.fasterxml.jackson.databind.JsonNode; |
20 | 20 | import lombok.Data; |
21 | +import lombok.EqualsAndHashCode; | |
21 | 22 | import org.hibernate.annotations.Type; |
22 | 23 | import org.hibernate.annotations.TypeDef; |
23 | 24 | import org.thingsboard.server.common.data.Customer; |
25 | +import org.thingsboard.server.common.data.UUIDConverter; | |
24 | 26 | import org.thingsboard.server.common.data.id.CustomerId; |
25 | 27 | import org.thingsboard.server.common.data.id.TenantId; |
28 | +import org.thingsboard.server.dao.model.BaseSqlEntity; | |
26 | 29 | import org.thingsboard.server.dao.model.ModelConstants; |
27 | 30 | import org.thingsboard.server.dao.model.SearchTextEntity; |
28 | 31 | import org.thingsboard.server.dao.util.mapping.JsonStringType; |
29 | 32 | |
30 | -import javax.persistence.*; | |
31 | -import java.util.UUID; | |
33 | +import javax.persistence.Column; | |
34 | +import javax.persistence.Entity; | |
35 | +import javax.persistence.Table; | |
36 | +import javax.persistence.Transient; | |
32 | 37 | |
33 | 38 | @Data |
39 | +@EqualsAndHashCode(callSuper = true) | |
34 | 40 | @Entity |
35 | 41 | @TypeDef(name = "json", typeClass = JsonStringType.class) |
36 | 42 | @Table(name = ModelConstants.CUSTOMER_COLUMN_FAMILY_NAME) |
37 | -public final class CustomerEntity implements SearchTextEntity<Customer> { | |
43 | +public final class CustomerEntity extends BaseSqlEntity<Customer> implements SearchTextEntity<Customer> { | |
38 | 44 | |
39 | 45 | @Transient |
40 | 46 | private static final long serialVersionUID = 8951342124082981556L; |
41 | 47 | |
42 | - @Id | |
43 | - @Column(name = ModelConstants.ID_PROPERTY) | |
44 | - private UUID id; | |
45 | - | |
46 | 48 | @Column(name = ModelConstants.CUSTOMER_TENANT_ID_PROPERTY) |
47 | - private UUID tenantId; | |
49 | + private String tenantId; | |
48 | 50 | |
49 | 51 | @Column(name = ModelConstants.CUSTOMER_TITLE_PROPERTY) |
50 | 52 | private String title; |
... | ... | @@ -86,9 +88,9 @@ public final class CustomerEntity implements SearchTextEntity<Customer> { |
86 | 88 | |
87 | 89 | public CustomerEntity(Customer customer) { |
88 | 90 | if (customer.getId() != null) { |
89 | - this.id = customer.getId().getId(); | |
91 | + this.setId(customer.getId().getId()); | |
90 | 92 | } |
91 | - this.tenantId = customer.getTenantId().getId(); | |
93 | + this.tenantId = UUIDConverter.fromTimeUUID(customer.getTenantId().getId()); | |
92 | 94 | this.title = customer.getTitle(); |
93 | 95 | this.country = customer.getCountry(); |
94 | 96 | this.state = customer.getState(); |
... | ... | @@ -102,16 +104,6 @@ public final class CustomerEntity implements SearchTextEntity<Customer> { |
102 | 104 | } |
103 | 105 | |
104 | 106 | @Override |
105 | - public UUID getId() { | |
106 | - return id; | |
107 | - } | |
108 | - | |
109 | - @Override | |
110 | - public void setId(UUID id) { | |
111 | - this.id = id; | |
112 | - } | |
113 | - | |
114 | - @Override | |
115 | 107 | public String getSearchTextSource() { |
116 | 108 | return title; |
117 | 109 | } |
... | ... | @@ -123,9 +115,9 @@ public final class CustomerEntity implements SearchTextEntity<Customer> { |
123 | 115 | |
124 | 116 | @Override |
125 | 117 | public Customer toData() { |
126 | - Customer customer = new Customer(new CustomerId(id)); | |
127 | - customer.setCreatedTime(UUIDs.unixTimestamp(id)); | |
128 | - customer.setTenantId(new TenantId(tenantId)); | |
118 | + Customer customer = new Customer(new CustomerId(getId())); | |
119 | + customer.setCreatedTime(UUIDs.unixTimestamp(getId())); | |
120 | + customer.setTenantId(new TenantId(UUIDConverter.fromString(tenantId))); | |
129 | 121 | customer.setTitle(title); |
130 | 122 | customer.setCountry(country); |
131 | 123 | customer.setState(state); | ... | ... |
... | ... | @@ -18,37 +18,38 @@ package org.thingsboard.server.dao.model.sql; |
18 | 18 | import com.datastax.driver.core.utils.UUIDs; |
19 | 19 | import com.fasterxml.jackson.databind.JsonNode; |
20 | 20 | import lombok.Data; |
21 | +import lombok.EqualsAndHashCode; | |
21 | 22 | import org.hibernate.annotations.Type; |
22 | 23 | import org.hibernate.annotations.TypeDef; |
23 | 24 | import org.thingsboard.server.common.data.Dashboard; |
24 | 25 | import org.thingsboard.server.common.data.id.CustomerId; |
25 | 26 | import org.thingsboard.server.common.data.id.DashboardId; |
26 | 27 | import org.thingsboard.server.common.data.id.TenantId; |
28 | +import org.thingsboard.server.dao.model.BaseSqlEntity; | |
27 | 29 | import org.thingsboard.server.dao.model.ModelConstants; |
28 | 30 | import org.thingsboard.server.dao.model.SearchTextEntity; |
29 | 31 | import org.thingsboard.server.dao.util.mapping.JsonStringType; |
30 | 32 | |
31 | -import javax.persistence.*; | |
32 | -import java.util.UUID; | |
33 | +import javax.persistence.Column; | |
34 | +import javax.persistence.Entity; | |
35 | +import javax.persistence.Table; | |
36 | +import javax.persistence.Transient; | |
33 | 37 | |
34 | 38 | @Data |
39 | +@EqualsAndHashCode(callSuper = true) | |
35 | 40 | @Entity |
36 | 41 | @TypeDef(name = "json", typeClass = JsonStringType.class) |
37 | 42 | @Table(name = ModelConstants.DASHBOARD_COLUMN_FAMILY_NAME) |
38 | -public final class DashboardEntity implements SearchTextEntity<Dashboard> { | |
43 | +public final class DashboardEntity extends BaseSqlEntity<Dashboard> implements SearchTextEntity<Dashboard> { | |
39 | 44 | |
40 | 45 | @Transient |
41 | 46 | private static final long serialVersionUID = -4838084363113078898L; |
42 | 47 | |
43 | - @Id | |
44 | - @Column(name = ModelConstants.ID_PROPERTY) | |
45 | - private UUID id; | |
46 | - | |
47 | 48 | @Column(name = ModelConstants.DASHBOARD_TENANT_ID_PROPERTY) |
48 | - private UUID tenantId; | |
49 | + private String tenantId; | |
49 | 50 | |
50 | 51 | @Column(name = ModelConstants.DASHBOARD_CUSTOMER_ID_PROPERTY) |
51 | - private UUID customerId; | |
52 | + private String customerId; | |
52 | 53 | |
53 | 54 | @Column(name = ModelConstants.DASHBOARD_TITLE_PROPERTY) |
54 | 55 | private String title; |
... | ... | @@ -66,13 +67,13 @@ public final class DashboardEntity implements SearchTextEntity<Dashboard> { |
66 | 67 | |
67 | 68 | public DashboardEntity(Dashboard dashboard) { |
68 | 69 | if (dashboard.getId() != null) { |
69 | - this.id = dashboard.getId().getId(); | |
70 | + this.setId(dashboard.getId().getId()); | |
70 | 71 | } |
71 | 72 | if (dashboard.getTenantId() != null) { |
72 | - this.tenantId = dashboard.getTenantId().getId(); | |
73 | + this.tenantId = toString(dashboard.getTenantId().getId()); | |
73 | 74 | } |
74 | 75 | if (dashboard.getCustomerId() != null) { |
75 | - this.customerId = dashboard.getCustomerId().getId(); | |
76 | + this.customerId = toString(dashboard.getCustomerId().getId()); | |
76 | 77 | } |
77 | 78 | this.title = dashboard.getTitle(); |
78 | 79 | this.configuration = dashboard.getConfiguration(); |
... | ... | @@ -90,13 +91,13 @@ public final class DashboardEntity implements SearchTextEntity<Dashboard> { |
90 | 91 | |
91 | 92 | @Override |
92 | 93 | public Dashboard toData() { |
93 | - Dashboard dashboard = new Dashboard(new DashboardId(id)); | |
94 | - dashboard.setCreatedTime(UUIDs.unixTimestamp(id)); | |
94 | + Dashboard dashboard = new Dashboard(new DashboardId(this.getId())); | |
95 | + dashboard.setCreatedTime(UUIDs.unixTimestamp(this.getId())); | |
95 | 96 | if (tenantId != null) { |
96 | - dashboard.setTenantId(new TenantId(tenantId)); | |
97 | + dashboard.setTenantId(new TenantId(toUUID(tenantId))); | |
97 | 98 | } |
98 | 99 | if (customerId != null) { |
99 | - dashboard.setCustomerId(new CustomerId(customerId)); | |
100 | + dashboard.setCustomerId(new CustomerId(toUUID(customerId))); | |
100 | 101 | } |
101 | 102 | dashboard.setTitle(title); |
102 | 103 | dashboard.setConfiguration(configuration); | ... | ... |
... | ... | @@ -17,33 +17,34 @@ package org.thingsboard.server.dao.model.sql; |
17 | 17 | |
18 | 18 | import com.datastax.driver.core.utils.UUIDs; |
19 | 19 | import lombok.Data; |
20 | +import lombok.EqualsAndHashCode; | |
20 | 21 | import org.thingsboard.server.common.data.DashboardInfo; |
21 | 22 | import org.thingsboard.server.common.data.id.CustomerId; |
22 | 23 | import org.thingsboard.server.common.data.id.DashboardId; |
23 | 24 | import org.thingsboard.server.common.data.id.TenantId; |
25 | +import org.thingsboard.server.dao.model.BaseSqlEntity; | |
24 | 26 | import org.thingsboard.server.dao.model.ModelConstants; |
25 | 27 | import org.thingsboard.server.dao.model.SearchTextEntity; |
26 | 28 | |
27 | -import javax.persistence.*; | |
28 | -import java.util.UUID; | |
29 | +import javax.persistence.Column; | |
30 | +import javax.persistence.Entity; | |
31 | +import javax.persistence.Table; | |
32 | +import javax.persistence.Transient; | |
29 | 33 | |
30 | 34 | @Data |
35 | +@EqualsAndHashCode(callSuper = true) | |
31 | 36 | @Entity |
32 | 37 | @Table(name = ModelConstants.DASHBOARD_COLUMN_FAMILY_NAME) |
33 | -public class DashboardInfoEntity implements SearchTextEntity<DashboardInfo> { | |
38 | +public class DashboardInfoEntity extends BaseSqlEntity<DashboardInfo> implements SearchTextEntity<DashboardInfo> { | |
34 | 39 | |
35 | 40 | @Transient |
36 | 41 | private static final long serialVersionUID = -5525675905528050250L; |
37 | 42 | |
38 | - @Id | |
39 | - @Column(name = ModelConstants.ID_PROPERTY) | |
40 | - private UUID id; | |
41 | - | |
42 | 43 | @Column(name = ModelConstants.DASHBOARD_TENANT_ID_PROPERTY) |
43 | - private UUID tenantId; | |
44 | + private String tenantId; | |
44 | 45 | |
45 | 46 | @Column(name = ModelConstants.DASHBOARD_CUSTOMER_ID_PROPERTY) |
46 | - private UUID customerId; | |
47 | + private String customerId; | |
47 | 48 | |
48 | 49 | @Column(name = ModelConstants.DASHBOARD_TITLE_PROPERTY) |
49 | 50 | private String title; |
... | ... | @@ -57,13 +58,13 @@ public class DashboardInfoEntity implements SearchTextEntity<DashboardInfo> { |
57 | 58 | |
58 | 59 | public DashboardInfoEntity(DashboardInfo dashboardInfo) { |
59 | 60 | if (dashboardInfo.getId() != null) { |
60 | - this.id = dashboardInfo.getId().getId(); | |
61 | + this.setId(dashboardInfo.getId().getId()); | |
61 | 62 | } |
62 | 63 | if (dashboardInfo.getTenantId() != null) { |
63 | - this.tenantId = dashboardInfo.getTenantId().getId(); | |
64 | + this.tenantId = toString(dashboardInfo.getTenantId().getId()); | |
64 | 65 | } |
65 | 66 | if (dashboardInfo.getCustomerId() != null) { |
66 | - this.customerId = dashboardInfo.getCustomerId().getId(); | |
67 | + this.customerId = toString(dashboardInfo.getCustomerId().getId()); | |
67 | 68 | } |
68 | 69 | this.title = dashboardInfo.getTitle(); |
69 | 70 | } |
... | ... | @@ -84,13 +85,13 @@ public class DashboardInfoEntity implements SearchTextEntity<DashboardInfo> { |
84 | 85 | |
85 | 86 | @Override |
86 | 87 | public DashboardInfo toData() { |
87 | - DashboardInfo dashboardInfo = new DashboardInfo(new DashboardId(id)); | |
88 | - dashboardInfo.setCreatedTime(UUIDs.unixTimestamp(id)); | |
88 | + DashboardInfo dashboardInfo = new DashboardInfo(new DashboardId(getId())); | |
89 | + dashboardInfo.setCreatedTime(UUIDs.unixTimestamp(getId())); | |
89 | 90 | if (tenantId != null) { |
90 | - dashboardInfo.setTenantId(new TenantId(tenantId)); | |
91 | + dashboardInfo.setTenantId(new TenantId(toUUID(tenantId))); | |
91 | 92 | } |
92 | 93 | if (customerId != null) { |
93 | - dashboardInfo.setCustomerId(new CustomerId(customerId)); | |
94 | + dashboardInfo.setCustomerId(new CustomerId(toUUID(customerId))); | |
94 | 95 | } |
95 | 96 | dashboardInfo.setTitle(title); |
96 | 97 | return dashboardInfo; | ... | ... |
... | ... | @@ -17,29 +17,28 @@ package org.thingsboard.server.dao.model.sql; |
17 | 17 | |
18 | 18 | import com.datastax.driver.core.utils.UUIDs; |
19 | 19 | import lombok.Data; |
20 | +import lombok.EqualsAndHashCode; | |
20 | 21 | import org.thingsboard.server.common.data.id.DeviceCredentialsId; |
21 | 22 | import org.thingsboard.server.common.data.id.DeviceId; |
22 | 23 | import org.thingsboard.server.common.data.security.DeviceCredentials; |
23 | 24 | import org.thingsboard.server.common.data.security.DeviceCredentialsType; |
24 | 25 | import org.thingsboard.server.dao.model.BaseEntity; |
26 | +import org.thingsboard.server.dao.model.BaseSqlEntity; | |
25 | 27 | import org.thingsboard.server.dao.model.ModelConstants; |
26 | 28 | |
27 | 29 | import javax.persistence.*; |
28 | -import java.util.UUID; | |
29 | 30 | |
30 | 31 | @Data |
32 | +@EqualsAndHashCode(callSuper = true) | |
31 | 33 | @Entity |
32 | 34 | @Table(name = ModelConstants.DEVICE_CREDENTIALS_COLUMN_FAMILY_NAME) |
33 | -public final class DeviceCredentialsEntity implements BaseEntity<DeviceCredentials> { | |
35 | +public final class DeviceCredentialsEntity extends BaseSqlEntity<DeviceCredentials> implements BaseEntity<DeviceCredentials> { | |
34 | 36 | |
35 | 37 | @Transient |
36 | 38 | private static final long serialVersionUID = -2512362753385470464L; |
37 | - @Id | |
38 | - @Column(name = ModelConstants.ID_PROPERTY) | |
39 | - private UUID id; | |
40 | - | |
39 | + | |
41 | 40 | @Column(name = ModelConstants.DEVICE_CREDENTIALS_DEVICE_ID_PROPERTY) |
42 | - private UUID deviceId; | |
41 | + private String deviceId; | |
43 | 42 | |
44 | 43 | @Enumerated(EnumType.STRING) |
45 | 44 | @Column(name = ModelConstants.DEVICE_CREDENTIALS_CREDENTIALS_TYPE_PROPERTY) |
... | ... | @@ -57,22 +56,22 @@ public final class DeviceCredentialsEntity implements BaseEntity<DeviceCredentia |
57 | 56 | |
58 | 57 | public DeviceCredentialsEntity(DeviceCredentials deviceCredentials) { |
59 | 58 | if (deviceCredentials.getId() != null) { |
60 | - this.id = deviceCredentials.getId().getId(); | |
59 | + this.setId(deviceCredentials.getId().getId()); | |
61 | 60 | } |
62 | 61 | if (deviceCredentials.getDeviceId() != null) { |
63 | - this.deviceId = deviceCredentials.getDeviceId().getId(); | |
62 | + this.deviceId = toString(deviceCredentials.getDeviceId().getId()); | |
64 | 63 | } |
65 | 64 | this.credentialsType = deviceCredentials.getCredentialsType(); |
66 | 65 | this.credentialsId = deviceCredentials.getCredentialsId(); |
67 | - this.credentialsValue = deviceCredentials.getCredentialsValue(); | |
66 | + this.credentialsValue = deviceCredentials.getCredentialsValue(); | |
68 | 67 | } |
69 | - | |
68 | + | |
70 | 69 | @Override |
71 | 70 | public DeviceCredentials toData() { |
72 | - DeviceCredentials deviceCredentials = new DeviceCredentials(new DeviceCredentialsId(id)); | |
73 | - deviceCredentials.setCreatedTime(UUIDs.unixTimestamp(id)); | |
71 | + DeviceCredentials deviceCredentials = new DeviceCredentials(new DeviceCredentialsId(getId())); | |
72 | + deviceCredentials.setCreatedTime(UUIDs.unixTimestamp(getId())); | |
74 | 73 | if (deviceId != null) { |
75 | - deviceCredentials.setDeviceId(new DeviceId(deviceId)); | |
74 | + deviceCredentials.setDeviceId(new DeviceId(toUUID(deviceId))); | |
76 | 75 | } |
77 | 76 | deviceCredentials.setCredentialsType(credentialsType); |
78 | 77 | deviceCredentials.setCredentialsId(credentialsId); | ... | ... |
... | ... | @@ -18,44 +18,45 @@ package org.thingsboard.server.dao.model.sql; |
18 | 18 | import com.datastax.driver.core.utils.UUIDs; |
19 | 19 | import com.fasterxml.jackson.databind.JsonNode; |
20 | 20 | import lombok.Data; |
21 | +import lombok.EqualsAndHashCode; | |
21 | 22 | import org.hibernate.annotations.Type; |
22 | 23 | import org.hibernate.annotations.TypeDef; |
23 | 24 | import org.thingsboard.server.common.data.Device; |
24 | 25 | import org.thingsboard.server.common.data.id.CustomerId; |
25 | 26 | import org.thingsboard.server.common.data.id.DeviceId; |
26 | 27 | import org.thingsboard.server.common.data.id.TenantId; |
28 | +import org.thingsboard.server.dao.model.BaseSqlEntity; | |
27 | 29 | import org.thingsboard.server.dao.model.ModelConstants; |
28 | 30 | import org.thingsboard.server.dao.model.SearchTextEntity; |
29 | 31 | import org.thingsboard.server.dao.util.mapping.JsonStringType; |
30 | 32 | |
31 | -import javax.persistence.*; | |
32 | -import java.util.UUID; | |
33 | +import javax.persistence.Column; | |
34 | +import javax.persistence.Entity; | |
35 | +import javax.persistence.Table; | |
36 | +import javax.persistence.Transient; | |
33 | 37 | |
34 | 38 | @Data |
39 | +@EqualsAndHashCode(callSuper = true) | |
35 | 40 | @Entity |
36 | 41 | @TypeDef(name = "json", typeClass = JsonStringType.class) |
37 | 42 | @Table(name = ModelConstants.DEVICE_COLUMN_FAMILY_NAME) |
38 | -public final class DeviceEntity implements SearchTextEntity<Device> { | |
43 | +public final class DeviceEntity extends BaseSqlEntity<Device> implements SearchTextEntity<Device> { | |
39 | 44 | |
40 | 45 | @Transient |
41 | 46 | private static final long serialVersionUID = 8050086401213322856L; |
42 | 47 | |
43 | - @Id | |
44 | - @Column(name = ModelConstants.ID_PROPERTY) | |
45 | - private UUID id; | |
46 | - | |
47 | 48 | @Column(name = ModelConstants.DEVICE_TENANT_ID_PROPERTY) |
48 | - private UUID tenantId; | |
49 | + private String tenantId; | |
49 | 50 | |
50 | 51 | @Column(name = ModelConstants.DEVICE_CUSTOMER_ID_PROPERTY) |
51 | - private UUID customerId; | |
52 | + private String customerId; | |
52 | 53 | |
53 | 54 | @Column(name = ModelConstants.DEVICE_TYPE_PROPERTY) |
54 | 55 | private String type; |
55 | 56 | |
56 | 57 | @Column(name = ModelConstants.DEVICE_NAME_PROPERTY) |
57 | 58 | private String name; |
58 | - | |
59 | + | |
59 | 60 | @Column(name = ModelConstants.SEARCH_TEXT_PROPERTY) |
60 | 61 | private String searchText; |
61 | 62 | |
... | ... | @@ -69,13 +70,13 @@ public final class DeviceEntity implements SearchTextEntity<Device> { |
69 | 70 | |
70 | 71 | public DeviceEntity(Device device) { |
71 | 72 | if (device.getId() != null) { |
72 | - this.id = device.getId().getId(); | |
73 | + this.setId(device.getId().getId()); | |
73 | 74 | } |
74 | 75 | if (device.getTenantId() != null) { |
75 | - this.tenantId = device.getTenantId().getId(); | |
76 | + this.tenantId = toString(device.getTenantId().getId()); | |
76 | 77 | } |
77 | 78 | if (device.getCustomerId() != null) { |
78 | - this.customerId = device.getCustomerId().getId(); | |
79 | + this.customerId = toString(device.getCustomerId().getId()); | |
79 | 80 | } |
80 | 81 | this.name = device.getName(); |
81 | 82 | this.type = device.getType(); |
... | ... | @@ -91,16 +92,16 @@ public final class DeviceEntity implements SearchTextEntity<Device> { |
91 | 92 | public void setSearchText(String searchText) { |
92 | 93 | this.searchText = searchText; |
93 | 94 | } |
94 | - | |
95 | + | |
95 | 96 | @Override |
96 | 97 | public Device toData() { |
97 | - Device device = new Device(new DeviceId(id)); | |
98 | - device.setCreatedTime(UUIDs.unixTimestamp(id)); | |
98 | + Device device = new Device(new DeviceId(getId())); | |
99 | + device.setCreatedTime(UUIDs.unixTimestamp(getId())); | |
99 | 100 | if (tenantId != null) { |
100 | - device.setTenantId(new TenantId(tenantId)); | |
101 | + device.setTenantId(new TenantId(toUUID(tenantId))); | |
101 | 102 | } |
102 | 103 | if (customerId != null) { |
103 | - device.setCustomerId(new CustomerId(customerId)); | |
104 | + device.setCustomerId(new CustomerId(toUUID(customerId))); | |
104 | 105 | } |
105 | 106 | device.setName(name); |
106 | 107 | device.setType(type); | ... | ... |
... | ... | @@ -18,43 +18,43 @@ package org.thingsboard.server.dao.model.sql; |
18 | 18 | import com.datastax.driver.core.utils.UUIDs; |
19 | 19 | import com.fasterxml.jackson.databind.JsonNode; |
20 | 20 | import lombok.Data; |
21 | +import lombok.EqualsAndHashCode; | |
21 | 22 | import lombok.NoArgsConstructor; |
22 | 23 | import org.hibernate.annotations.Type; |
23 | 24 | import org.hibernate.annotations.TypeDef; |
24 | 25 | import org.thingsboard.server.common.data.EntityType; |
25 | 26 | import org.thingsboard.server.common.data.Event; |
26 | -import org.thingsboard.server.common.data.id.*; | |
27 | +import org.thingsboard.server.common.data.id.EntityIdFactory; | |
28 | +import org.thingsboard.server.common.data.id.EventId; | |
29 | +import org.thingsboard.server.common.data.id.TenantId; | |
27 | 30 | import org.thingsboard.server.dao.model.BaseEntity; |
31 | +import org.thingsboard.server.dao.model.BaseSqlEntity; | |
28 | 32 | import org.thingsboard.server.dao.util.mapping.JsonStringType; |
29 | 33 | |
30 | 34 | import javax.persistence.*; |
31 | -import java.util.UUID; | |
32 | 35 | |
33 | 36 | import static org.thingsboard.server.dao.model.ModelConstants.*; |
34 | 37 | |
35 | 38 | @Data |
39 | +@EqualsAndHashCode(callSuper = true) | |
36 | 40 | @Entity |
37 | 41 | @TypeDef(name = "json", typeClass = JsonStringType.class) |
38 | 42 | @Table(name = EVENT_COLUMN_FAMILY_NAME) |
39 | 43 | @NoArgsConstructor |
40 | -public class EventEntity implements BaseEntity<Event> { | |
44 | +public class EventEntity extends BaseSqlEntity<Event> implements BaseEntity<Event> { | |
41 | 45 | |
42 | 46 | @Transient |
43 | 47 | private static final long serialVersionUID = -5717830061727466727L; |
44 | 48 | |
45 | - @Id | |
46 | - @Column(name = ID_PROPERTY) | |
47 | - private UUID id; | |
48 | - | |
49 | 49 | @Column(name = EVENT_TENANT_ID_PROPERTY) |
50 | - private UUID tenantId; | |
50 | + private String tenantId; | |
51 | 51 | |
52 | 52 | @Enumerated(EnumType.STRING) |
53 | 53 | @Column(name = EVENT_ENTITY_TYPE_PROPERTY) |
54 | 54 | private EntityType entityType; |
55 | 55 | |
56 | 56 | @Column(name = EVENT_ENTITY_ID_PROPERTY) |
57 | - private UUID entityId; | |
57 | + private String entityId; | |
58 | 58 | |
59 | 59 | @Column(name = EVENT_TYPE_PROPERTY) |
60 | 60 | private String eventType; |
... | ... | @@ -68,52 +68,27 @@ public class EventEntity implements BaseEntity<Event> { |
68 | 68 | |
69 | 69 | public EventEntity(Event event) { |
70 | 70 | if (event.getId() != null) { |
71 | - this.id = event.getId().getId(); | |
71 | + this.setId(event.getId().getId()); | |
72 | 72 | } |
73 | 73 | if (event.getTenantId() != null) { |
74 | - this.tenantId = event.getTenantId().getId(); | |
74 | + this.tenantId = toString(event.getTenantId().getId()); | |
75 | 75 | } |
76 | 76 | if (event.getEntityId() != null) { |
77 | 77 | this.entityType = event.getEntityId().getEntityType(); |
78 | - this.entityId = event.getEntityId().getId(); | |
78 | + this.entityId = toString(event.getEntityId().getId()); | |
79 | 79 | } |
80 | 80 | this.eventType = event.getType(); |
81 | 81 | this.eventUid = event.getUid(); |
82 | 82 | this.body = event.getBody(); |
83 | 83 | } |
84 | 84 | |
85 | - @Override | |
86 | - public UUID getId() { | |
87 | - return id; | |
88 | - } | |
89 | - | |
90 | - @Override | |
91 | - public void setId(UUID id) { | |
92 | - this.id = id; | |
93 | - } | |
94 | 85 | |
95 | 86 | @Override |
96 | 87 | public Event toData() { |
97 | - Event event = new Event(new EventId(id)); | |
98 | - event.setCreatedTime(UUIDs.unixTimestamp(id)); | |
99 | - event.setTenantId(new TenantId(tenantId)); | |
100 | - switch (entityType) { | |
101 | - case TENANT: | |
102 | - event.setEntityId(new TenantId(entityId)); | |
103 | - break; | |
104 | - case DEVICE: | |
105 | - event.setEntityId(new DeviceId(entityId)); | |
106 | - break; | |
107 | - case CUSTOMER: | |
108 | - event.setEntityId(new CustomerId(entityId)); | |
109 | - break; | |
110 | - case RULE: | |
111 | - event.setEntityId(new RuleId(entityId)); | |
112 | - break; | |
113 | - case PLUGIN: | |
114 | - event.setEntityId(new PluginId(entityId)); | |
115 | - break; | |
116 | - } | |
88 | + Event event = new Event(new EventId(getId())); | |
89 | + event.setCreatedTime(UUIDs.unixTimestamp(getId())); | |
90 | + event.setTenantId(new TenantId(toUUID(tenantId))); | |
91 | + event.setEntityId(EntityIdFactory.getByTypeAndUuid(entityType, toUUID(entityId))); | |
117 | 92 | event.setBody(body); |
118 | 93 | event.setType(eventType); |
119 | 94 | event.setUid(eventUid); | ... | ... |
... | ... | @@ -18,36 +18,38 @@ package org.thingsboard.server.dao.model.sql; |
18 | 18 | import com.datastax.driver.core.utils.UUIDs; |
19 | 19 | import com.fasterxml.jackson.databind.JsonNode; |
20 | 20 | import lombok.Data; |
21 | +import lombok.EqualsAndHashCode; | |
21 | 22 | import org.hibernate.annotations.Type; |
22 | 23 | import org.hibernate.annotations.TypeDef; |
23 | 24 | import org.thingsboard.server.common.data.id.PluginId; |
24 | 25 | import org.thingsboard.server.common.data.id.TenantId; |
25 | 26 | import org.thingsboard.server.common.data.plugin.ComponentLifecycleState; |
26 | 27 | import org.thingsboard.server.common.data.plugin.PluginMetaData; |
28 | +import org.thingsboard.server.dao.model.BaseSqlEntity; | |
27 | 29 | import org.thingsboard.server.dao.model.ModelConstants; |
28 | 30 | import org.thingsboard.server.dao.model.SearchTextEntity; |
29 | 31 | import org.thingsboard.server.dao.util.mapping.JsonStringType; |
30 | 32 | |
31 | 33 | import javax.persistence.*; |
32 | -import java.util.UUID; | |
34 | + | |
35 | +import static org.thingsboard.server.common.data.UUIDConverter.fromString; | |
36 | +import static org.thingsboard.server.common.data.UUIDConverter.fromTimeUUID; | |
33 | 37 | |
34 | 38 | @Data |
39 | +@EqualsAndHashCode(callSuper = true) | |
35 | 40 | @Entity |
36 | 41 | @TypeDef(name = "json", typeClass = JsonStringType.class) |
37 | 42 | @Table(name = ModelConstants.PLUGIN_COLUMN_FAMILY_NAME) |
38 | -public class PluginMetaDataEntity implements SearchTextEntity<PluginMetaData> { | |
43 | +public class PluginMetaDataEntity extends BaseSqlEntity<PluginMetaData> implements SearchTextEntity<PluginMetaData> { | |
39 | 44 | |
40 | 45 | @Transient |
41 | 46 | private static final long serialVersionUID = -6164321050824823149L; |
42 | - @Id | |
43 | - @Column(name = ModelConstants.ID_PROPERTY) | |
44 | - private UUID id; | |
45 | 47 | |
46 | 48 | @Column(name = ModelConstants.PLUGIN_API_TOKEN_PROPERTY) |
47 | 49 | private String apiToken; |
48 | 50 | |
49 | 51 | @Column(name = ModelConstants.PLUGIN_TENANT_ID_PROPERTY) |
50 | - private UUID tenantId; | |
52 | + private String tenantId; | |
51 | 53 | |
52 | 54 | @Column(name = ModelConstants.PLUGIN_NAME_PROPERTY) |
53 | 55 | private String name; |
... | ... | @@ -78,9 +80,9 @@ public class PluginMetaDataEntity implements SearchTextEntity<PluginMetaData> { |
78 | 80 | |
79 | 81 | public PluginMetaDataEntity(PluginMetaData pluginMetaData) { |
80 | 82 | if (pluginMetaData.getId() != null) { |
81 | - this.id = pluginMetaData.getId().getId(); | |
83 | + this.setId(pluginMetaData.getId().getId()); | |
82 | 84 | } |
83 | - this.tenantId = pluginMetaData.getTenantId().getId(); | |
85 | + this.tenantId = fromTimeUUID(pluginMetaData.getTenantId().getId()); | |
84 | 86 | this.apiToken = pluginMetaData.getApiToken(); |
85 | 87 | this.clazz = pluginMetaData.getClazz(); |
86 | 88 | this.name = pluginMetaData.getName(); |
... | ... | @@ -102,20 +104,10 @@ public class PluginMetaDataEntity implements SearchTextEntity<PluginMetaData> { |
102 | 104 | } |
103 | 105 | |
104 | 106 | @Override |
105 | - public UUID getId() { | |
106 | - return id; | |
107 | - } | |
108 | - | |
109 | - @Override | |
110 | - public void setId(UUID id) { | |
111 | - this.id = id; | |
112 | - } | |
113 | - | |
114 | - @Override | |
115 | 107 | public PluginMetaData toData() { |
116 | - PluginMetaData data = new PluginMetaData(new PluginId(id)); | |
117 | - data.setTenantId(new TenantId(tenantId)); | |
118 | - data.setCreatedTime(UUIDs.unixTimestamp(id)); | |
108 | + PluginMetaData data = new PluginMetaData(new PluginId(getId())); | |
109 | + data.setTenantId(new TenantId(fromString(tenantId))); | |
110 | + data.setCreatedTime(UUIDs.unixTimestamp(getId())); | |
119 | 111 | data.setName(name); |
120 | 112 | data.setClazz(clazz); |
121 | 113 | data.setPublicAccess(publicAccess); | ... | ... |
... | ... | @@ -18,11 +18,11 @@ package org.thingsboard.server.dao.model.sql; |
18 | 18 | import lombok.AllArgsConstructor; |
19 | 19 | import lombok.Data; |
20 | 20 | import lombok.NoArgsConstructor; |
21 | +import org.thingsboard.server.common.data.UUIDConverter; | |
21 | 22 | import org.thingsboard.server.common.data.relation.EntityRelation; |
22 | 23 | |
23 | 24 | import javax.persistence.Transient; |
24 | 25 | import java.io.Serializable; |
25 | -import java.util.UUID; | |
26 | 26 | |
27 | 27 | @NoArgsConstructor |
28 | 28 | @AllArgsConstructor |
... | ... | @@ -32,17 +32,17 @@ public class RelationCompositeKey implements Serializable { |
32 | 32 | @Transient |
33 | 33 | private static final long serialVersionUID = -4089175869616037592L; |
34 | 34 | |
35 | - private UUID fromId; | |
35 | + private String fromId; | |
36 | 36 | private String fromType; |
37 | - private UUID toId; | |
37 | + private String toId; | |
38 | 38 | private String toType; |
39 | 39 | private String relationType; |
40 | 40 | private String relationTypeGroup; |
41 | 41 | |
42 | 42 | public RelationCompositeKey(EntityRelation relation) { |
43 | - this.fromId = relation.getFrom().getId(); | |
43 | + this.fromId = UUIDConverter.fromTimeUUID(relation.getFrom().getId()); | |
44 | 44 | this.fromType = relation.getFrom().getEntityType().name(); |
45 | - this.toId = relation.getTo().getId(); | |
45 | + this.toId = UUIDConverter.fromTimeUUID(relation.getTo().getId()); | |
46 | 46 | this.toType = relation.getTo().getEntityType().name(); |
47 | 47 | this.relationType = relation.getType(); |
48 | 48 | this.relationTypeGroup = relation.getTypeGroup().name(); | ... | ... |
... | ... | @@ -19,6 +19,7 @@ import com.fasterxml.jackson.databind.JsonNode; |
19 | 19 | import lombok.Data; |
20 | 20 | import org.hibernate.annotations.Type; |
21 | 21 | import org.hibernate.annotations.TypeDef; |
22 | +import org.thingsboard.server.common.data.UUIDConverter; | |
22 | 23 | import org.thingsboard.server.common.data.id.EntityIdFactory; |
23 | 24 | import org.thingsboard.server.common.data.relation.EntityRelation; |
24 | 25 | import org.thingsboard.server.common.data.relation.RelationTypeGroup; |
... | ... | @@ -26,7 +27,6 @@ import org.thingsboard.server.dao.model.ToData; |
26 | 27 | import org.thingsboard.server.dao.util.mapping.JsonStringType; |
27 | 28 | |
28 | 29 | import javax.persistence.*; |
29 | -import java.util.UUID; | |
30 | 30 | |
31 | 31 | import static org.thingsboard.server.dao.model.ModelConstants.*; |
32 | 32 | |
... | ... | @@ -39,7 +39,7 @@ public final class RelationEntity implements ToData<EntityRelation> { |
39 | 39 | |
40 | 40 | @Id |
41 | 41 | @Column(name = RELATION_FROM_ID_PROPERTY) |
42 | - private UUID fromId; | |
42 | + private String fromId; | |
43 | 43 | |
44 | 44 | @Id |
45 | 45 | @Column(name = RELATION_FROM_TYPE_PROPERTY) |
... | ... | @@ -47,7 +47,7 @@ public final class RelationEntity implements ToData<EntityRelation> { |
47 | 47 | |
48 | 48 | @Id |
49 | 49 | @Column(name = RELATION_TO_ID_PROPERTY) |
50 | - private UUID toId; | |
50 | + private String toId; | |
51 | 51 | |
52 | 52 | @Id |
53 | 53 | @Column(name = RELATION_TO_TYPE_PROPERTY) |
... | ... | @@ -71,11 +71,11 @@ public final class RelationEntity implements ToData<EntityRelation> { |
71 | 71 | |
72 | 72 | public RelationEntity(EntityRelation relation) { |
73 | 73 | if (relation.getTo() != null) { |
74 | - this.toId = relation.getTo().getId(); | |
74 | + this.toId = UUIDConverter.fromTimeUUID(relation.getTo().getId()); | |
75 | 75 | this.toType = relation.getTo().getEntityType().name(); |
76 | 76 | } |
77 | 77 | if (relation.getFrom() != null) { |
78 | - this.fromId = relation.getFrom().getId(); | |
78 | + this.fromId = UUIDConverter.fromTimeUUID(relation.getFrom().getId()); | |
79 | 79 | this.fromType = relation.getFrom().getEntityType().name(); |
80 | 80 | } |
81 | 81 | this.relationType = relation.getType(); |
... | ... | @@ -87,10 +87,10 @@ public final class RelationEntity implements ToData<EntityRelation> { |
87 | 87 | public EntityRelation toData() { |
88 | 88 | EntityRelation relation = new EntityRelation(); |
89 | 89 | if (toId != null && toType != null) { |
90 | - relation.setTo(EntityIdFactory.getByTypeAndUuid(toType, toId)); | |
90 | + relation.setTo(EntityIdFactory.getByTypeAndUuid(toType, UUIDConverter.fromString(toId))); | |
91 | 91 | } |
92 | 92 | if (fromId != null && fromType != null) { |
93 | - relation.setFrom(EntityIdFactory.getByTypeAndUuid(fromType, fromId)); | |
93 | + relation.setFrom(EntityIdFactory.getByTypeAndUuid(fromType, UUIDConverter.fromString(fromId))); | |
94 | 94 | } |
95 | 95 | relation.setType(relationType); |
96 | 96 | relation.setTypeGroup(RelationTypeGroup.valueOf(relationTypeGroup)); | ... | ... |
... | ... | @@ -18,6 +18,7 @@ package org.thingsboard.server.dao.model.sql; |
18 | 18 | import com.datastax.driver.core.utils.UUIDs; |
19 | 19 | import com.fasterxml.jackson.databind.JsonNode; |
20 | 20 | import lombok.Data; |
21 | +import lombok.EqualsAndHashCode; | |
21 | 22 | import org.hibernate.annotations.Type; |
22 | 23 | import org.hibernate.annotations.TypeDef; |
23 | 24 | import org.thingsboard.server.common.data.id.RuleId; |
... | ... | @@ -25,27 +26,25 @@ import org.thingsboard.server.common.data.id.TenantId; |
25 | 26 | import org.thingsboard.server.common.data.plugin.ComponentLifecycleState; |
26 | 27 | import org.thingsboard.server.common.data.rule.RuleMetaData; |
27 | 28 | import org.thingsboard.server.dao.DaoUtil; |
29 | +import org.thingsboard.server.dao.model.BaseSqlEntity; | |
28 | 30 | import org.thingsboard.server.dao.model.ModelConstants; |
29 | 31 | import org.thingsboard.server.dao.model.SearchTextEntity; |
30 | 32 | import org.thingsboard.server.dao.util.mapping.JsonStringType; |
31 | 33 | |
32 | 34 | import javax.persistence.*; |
33 | -import java.util.UUID; | |
34 | 35 | |
35 | 36 | @Data |
37 | +@EqualsAndHashCode(callSuper = true) | |
36 | 38 | @Entity |
37 | 39 | @TypeDef(name = "json", typeClass = JsonStringType.class) |
38 | 40 | @Table(name = ModelConstants.RULE_COLUMN_FAMILY_NAME) |
39 | -public class RuleMetaDataEntity implements SearchTextEntity<RuleMetaData> { | |
41 | +public class RuleMetaDataEntity extends BaseSqlEntity<RuleMetaData> implements SearchTextEntity<RuleMetaData> { | |
40 | 42 | |
41 | 43 | @Transient |
42 | 44 | private static final long serialVersionUID = -1506905644259463884L; |
43 | - @Id | |
44 | - @Column(name = ModelConstants.ID_PROPERTY) | |
45 | - private UUID id; | |
46 | 45 | |
47 | 46 | @Column(name = ModelConstants.RULE_TENANT_ID_PROPERTY) |
48 | - private UUID tenantId; | |
47 | + private String tenantId; | |
49 | 48 | |
50 | 49 | @Column(name = ModelConstants.RULE_NAME_PROPERTY) |
51 | 50 | private String name; |
... | ... | @@ -84,9 +83,9 @@ public class RuleMetaDataEntity implements SearchTextEntity<RuleMetaData> { |
84 | 83 | |
85 | 84 | public RuleMetaDataEntity(RuleMetaData rule) { |
86 | 85 | if (rule.getId() != null) { |
87 | - this.id = rule.getUuidId(); | |
86 | + this.setId(rule.getUuidId()); | |
88 | 87 | } |
89 | - this.tenantId = DaoUtil.getId(rule.getTenantId()); | |
88 | + this.tenantId = toString(DaoUtil.getId(rule.getTenantId())); | |
90 | 89 | this.name = rule.getName(); |
91 | 90 | this.pluginToken = rule.getPluginToken(); |
92 | 91 | this.state = rule.getState(); |
... | ... | @@ -109,23 +108,13 @@ public class RuleMetaDataEntity implements SearchTextEntity<RuleMetaData> { |
109 | 108 | } |
110 | 109 | |
111 | 110 | @Override |
112 | - public UUID getId() { | |
113 | - return id; | |
114 | - } | |
115 | - | |
116 | - @Override | |
117 | - public void setId(UUID id) { | |
118 | - this.id = id; | |
119 | - } | |
120 | - | |
121 | - @Override | |
122 | 111 | public RuleMetaData toData() { |
123 | - RuleMetaData rule = new RuleMetaData(new RuleId(id)); | |
124 | - rule.setTenantId(new TenantId(tenantId)); | |
112 | + RuleMetaData rule = new RuleMetaData(new RuleId(getId())); | |
113 | + rule.setTenantId(new TenantId(toUUID(tenantId))); | |
125 | 114 | rule.setName(name); |
126 | 115 | rule.setState(state); |
127 | 116 | rule.setWeight(weight); |
128 | - rule.setCreatedTime(UUIDs.unixTimestamp(id)); | |
117 | + rule.setCreatedTime(UUIDs.unixTimestamp(getId())); | |
129 | 118 | rule.setPluginToken(pluginToken); |
130 | 119 | rule.setFilters(filters); |
131 | 120 | rule.setProcessor(processor); | ... | ... |
... | ... | @@ -18,11 +18,9 @@ package org.thingsboard.server.dao.model.sql; |
18 | 18 | import lombok.AllArgsConstructor; |
19 | 19 | import lombok.Data; |
20 | 20 | |
21 | -import java.util.UUID; | |
22 | - | |
23 | 21 | @AllArgsConstructor |
24 | 22 | @Data |
25 | 23 | public class TenantDeviceTypeEntity { |
26 | - private UUID tenantId; | |
24 | + private String tenantId; | |
27 | 25 | private String type; |
28 | 26 | } | ... | ... |
... | ... | @@ -18,30 +18,31 @@ package org.thingsboard.server.dao.model.sql; |
18 | 18 | import com.datastax.driver.core.utils.UUIDs; |
19 | 19 | import com.fasterxml.jackson.databind.JsonNode; |
20 | 20 | import lombok.Data; |
21 | +import lombok.EqualsAndHashCode; | |
21 | 22 | import org.hibernate.annotations.Type; |
22 | 23 | import org.hibernate.annotations.TypeDef; |
23 | 24 | import org.thingsboard.server.common.data.Tenant; |
24 | 25 | import org.thingsboard.server.common.data.id.TenantId; |
26 | +import org.thingsboard.server.dao.model.BaseSqlEntity; | |
25 | 27 | import org.thingsboard.server.dao.model.ModelConstants; |
26 | 28 | import org.thingsboard.server.dao.model.SearchTextEntity; |
27 | 29 | import org.thingsboard.server.dao.util.mapping.JsonStringType; |
28 | 30 | |
29 | -import javax.persistence.*; | |
30 | -import java.util.UUID; | |
31 | +import javax.persistence.Column; | |
32 | +import javax.persistence.Entity; | |
33 | +import javax.persistence.Table; | |
34 | +import javax.persistence.Transient; | |
31 | 35 | |
32 | 36 | @Data |
37 | +@EqualsAndHashCode(callSuper = true) | |
33 | 38 | @Entity |
34 | 39 | @TypeDef(name = "json", typeClass = JsonStringType.class) |
35 | 40 | @Table(name = ModelConstants.TENANT_COLUMN_FAMILY_NAME) |
36 | -public final class TenantEntity implements SearchTextEntity<Tenant> { | |
41 | +public final class TenantEntity extends BaseSqlEntity<Tenant> implements SearchTextEntity<Tenant> { | |
37 | 42 | |
38 | 43 | @Transient |
39 | 44 | private static final long serialVersionUID = -4330655990232136337L; |
40 | 45 | |
41 | - @Id | |
42 | - @Column(name = ModelConstants.ID_PROPERTY) | |
43 | - private UUID id; | |
44 | - | |
45 | 46 | @Column(name = ModelConstants.TENANT_TITLE_PROPERTY) |
46 | 47 | private String title; |
47 | 48 | |
... | ... | @@ -75,7 +76,7 @@ public final class TenantEntity implements SearchTextEntity<Tenant> { |
75 | 76 | @Column(name = ModelConstants.EMAIL_PROPERTY) |
76 | 77 | private String email; |
77 | 78 | |
78 | - @Type(type="json") | |
79 | + @Type(type = "json") | |
79 | 80 | @Column(name = ModelConstants.TENANT_ADDITIONAL_INFO_PROPERTY) |
80 | 81 | private JsonNode additionalInfo; |
81 | 82 | |
... | ... | @@ -85,7 +86,7 @@ public final class TenantEntity implements SearchTextEntity<Tenant> { |
85 | 86 | |
86 | 87 | public TenantEntity(Tenant tenant) { |
87 | 88 | if (tenant.getId() != null) { |
88 | - this.id = tenant.getId().getId(); | |
89 | + this.setId(tenant.getId().getId()); | |
89 | 90 | } |
90 | 91 | this.title = tenant.getTitle(); |
91 | 92 | this.region = tenant.getRegion(); |
... | ... | @@ -116,8 +117,8 @@ public final class TenantEntity implements SearchTextEntity<Tenant> { |
116 | 117 | |
117 | 118 | @Override |
118 | 119 | public Tenant toData() { |
119 | - Tenant tenant = new Tenant(new TenantId(id)); | |
120 | - tenant.setCreatedTime(UUIDs.unixTimestamp(id)); | |
120 | + Tenant tenant = new Tenant(new TenantId(getId())); | |
121 | + tenant.setCreatedTime(UUIDs.unixTimestamp(getId())); | |
121 | 122 | tenant.setTitle(title); |
122 | 123 | tenant.setRegion(region); |
123 | 124 | tenant.setCountry(country); | ... | ... |
... | ... | @@ -22,18 +22,17 @@ import org.thingsboard.server.common.data.EntityType; |
22 | 22 | |
23 | 23 | import javax.persistence.Transient; |
24 | 24 | import java.io.Serializable; |
25 | -import java.util.UUID; | |
26 | 25 | |
27 | 26 | @Data |
28 | 27 | @AllArgsConstructor |
29 | 28 | @NoArgsConstructor |
30 | -public class TsKvCompositeKey implements Serializable{ | |
29 | +public class TsKvCompositeKey implements Serializable { | |
31 | 30 | |
32 | 31 | @Transient |
33 | 32 | private static final long serialVersionUID = -4089175869616037523L; |
34 | 33 | |
35 | 34 | private EntityType entityType; |
36 | - private UUID entityId; | |
35 | + private String entityId; | |
37 | 36 | private String key; |
38 | 37 | private long ts; |
39 | 38 | } |
\ No newline at end of file | ... | ... |
... | ... | @@ -21,7 +21,6 @@ import org.thingsboard.server.common.data.kv.*; |
21 | 21 | import org.thingsboard.server.dao.model.ToData; |
22 | 22 | |
23 | 23 | import javax.persistence.*; |
24 | -import java.util.UUID; | |
25 | 24 | |
26 | 25 | import static org.thingsboard.server.dao.model.ModelConstants.*; |
27 | 26 | |
... | ... | @@ -69,7 +68,7 @@ public final class TsKvEntity implements ToData<TsKvEntry> { |
69 | 68 | |
70 | 69 | @Id |
71 | 70 | @Column(name = ENTITY_ID_COLUMN) |
72 | - private UUID entityId; | |
71 | + private String entityId; | |
73 | 72 | |
74 | 73 | @Id |
75 | 74 | @Column(name = KEY_COLUMN) | ... | ... |
... | ... | @@ -15,12 +15,13 @@ |
15 | 15 | */ |
16 | 16 | package org.thingsboard.server.dao.model.sql; |
17 | 17 | |
18 | -import lombok.*; | |
18 | +import lombok.AllArgsConstructor; | |
19 | +import lombok.Data; | |
20 | +import lombok.NoArgsConstructor; | |
19 | 21 | import org.thingsboard.server.common.data.EntityType; |
20 | 22 | |
21 | 23 | import javax.persistence.Transient; |
22 | 24 | import java.io.Serializable; |
23 | -import java.util.UUID; | |
24 | 25 | |
25 | 26 | @Data |
26 | 27 | @NoArgsConstructor |
... | ... | @@ -31,6 +32,6 @@ public class TsKvLatestCompositeKey implements Serializable{ |
31 | 32 | private static final long serialVersionUID = -4089175869616037523L; |
32 | 33 | |
33 | 34 | private EntityType entityType; |
34 | - private UUID entityId; | |
35 | + private String entityId; | |
35 | 36 | private String key; |
36 | 37 | } |
\ No newline at end of file | ... | ... |
... | ... | @@ -21,7 +21,6 @@ import org.thingsboard.server.common.data.kv.*; |
21 | 21 | import org.thingsboard.server.dao.model.ToData; |
22 | 22 | |
23 | 23 | import javax.persistence.*; |
24 | -import java.util.UUID; | |
25 | 24 | |
26 | 25 | import static org.thingsboard.server.dao.model.ModelConstants.*; |
27 | 26 | |
... | ... | @@ -31,6 +30,8 @@ import static org.thingsboard.server.dao.model.ModelConstants.*; |
31 | 30 | @IdClass(TsKvLatestCompositeKey.class) |
32 | 31 | public final class TsKvLatestEntity implements ToData<TsKvEntry> { |
33 | 32 | |
33 | + | |
34 | + //TODO: reafctor this and TsKvEntity to avoid code duplicates | |
34 | 35 | @Id |
35 | 36 | @Enumerated(EnumType.STRING) |
36 | 37 | @Column(name = ENTITY_TYPE_COLUMN) |
... | ... | @@ -38,7 +39,7 @@ public final class TsKvLatestEntity implements ToData<TsKvEntry> { |
38 | 39 | |
39 | 40 | @Id |
40 | 41 | @Column(name = ENTITY_ID_COLUMN) |
41 | - private UUID entityId; | |
42 | + private String entityId; | |
42 | 43 | |
43 | 44 | @Id |
44 | 45 | @Column(name = KEY_COLUMN) | ... | ... |
... | ... | @@ -17,29 +17,30 @@ package org.thingsboard.server.dao.model.sql; |
17 | 17 | |
18 | 18 | import com.datastax.driver.core.utils.UUIDs; |
19 | 19 | import lombok.Data; |
20 | +import lombok.EqualsAndHashCode; | |
20 | 21 | import org.thingsboard.server.common.data.id.UserCredentialsId; |
21 | 22 | import org.thingsboard.server.common.data.id.UserId; |
22 | 23 | import org.thingsboard.server.common.data.security.UserCredentials; |
23 | 24 | import org.thingsboard.server.dao.model.BaseEntity; |
25 | +import org.thingsboard.server.dao.model.BaseSqlEntity; | |
24 | 26 | import org.thingsboard.server.dao.model.ModelConstants; |
25 | 27 | |
26 | -import javax.persistence.*; | |
27 | -import java.util.UUID; | |
28 | +import javax.persistence.Column; | |
29 | +import javax.persistence.Entity; | |
30 | +import javax.persistence.Table; | |
31 | +import javax.persistence.Transient; | |
28 | 32 | |
29 | 33 | @Data |
34 | +@EqualsAndHashCode(callSuper = true) | |
30 | 35 | @Entity |
31 | 36 | @Table(name = ModelConstants.USER_CREDENTIALS_COLUMN_FAMILY_NAME) |
32 | -public final class UserCredentialsEntity implements BaseEntity<UserCredentials> { | |
37 | +public final class UserCredentialsEntity extends BaseSqlEntity<UserCredentials> implements BaseEntity<UserCredentials> { | |
33 | 38 | |
34 | 39 | @Transient |
35 | 40 | private static final long serialVersionUID = -3989724854149114846L; |
36 | 41 | |
37 | - @Id | |
38 | - @Column(name = ModelConstants.ID_PROPERTY) | |
39 | - private UUID id; | |
40 | - | |
41 | 42 | @Column(name = ModelConstants.USER_CREDENTIALS_USER_ID_PROPERTY, unique = true) |
42 | - private UUID userId; | |
43 | + private String userId; | |
43 | 44 | |
44 | 45 | @Column(name = ModelConstants.USER_CREDENTIALS_ENABLED_PROPERTY) |
45 | 46 | private boolean enabled; |
... | ... | @@ -59,10 +60,10 @@ public final class UserCredentialsEntity implements BaseEntity<UserCredentials> |
59 | 60 | |
60 | 61 | public UserCredentialsEntity(UserCredentials userCredentials) { |
61 | 62 | if (userCredentials.getId() != null) { |
62 | - this.id = userCredentials.getId().getId(); | |
63 | + this.setId(userCredentials.getId().getId()); | |
63 | 64 | } |
64 | 65 | if (userCredentials.getUserId() != null) { |
65 | - this.userId = userCredentials.getUserId().getId(); | |
66 | + this.userId = toString(userCredentials.getUserId().getId()); | |
66 | 67 | } |
67 | 68 | this.enabled = userCredentials.isEnabled(); |
68 | 69 | this.password = userCredentials.getPassword(); |
... | ... | @@ -72,10 +73,10 @@ public final class UserCredentialsEntity implements BaseEntity<UserCredentials> |
72 | 73 | |
73 | 74 | @Override |
74 | 75 | public UserCredentials toData() { |
75 | - UserCredentials userCredentials = new UserCredentials(new UserCredentialsId(id)); | |
76 | - userCredentials.setCreatedTime(UUIDs.unixTimestamp(id)); | |
76 | + UserCredentials userCredentials = new UserCredentials(new UserCredentialsId(getId())); | |
77 | + userCredentials.setCreatedTime(UUIDs.unixTimestamp(getId())); | |
77 | 78 | if (userId != null) { |
78 | - userCredentials.setUserId(new UserId(userId)); | |
79 | + userCredentials.setUserId(new UserId(toUUID(userId))); | |
79 | 80 | } |
80 | 81 | userCredentials.setEnabled(enabled); |
81 | 82 | userCredentials.setPassword(password); |
... | ... | @@ -84,13 +85,4 @@ public final class UserCredentialsEntity implements BaseEntity<UserCredentials> |
84 | 85 | return userCredentials; |
85 | 86 | } |
86 | 87 | |
87 | - @Override | |
88 | - public UUID getId() { | |
89 | - return id; | |
90 | - } | |
91 | - | |
92 | - @Override | |
93 | - public void setId(UUID id) { | |
94 | - this.id = id; | |
95 | - } | |
96 | 88 | } |
\ No newline at end of file | ... | ... |
... | ... | @@ -18,6 +18,7 @@ package org.thingsboard.server.dao.model.sql; |
18 | 18 | import com.datastax.driver.core.utils.UUIDs; |
19 | 19 | import com.fasterxml.jackson.databind.JsonNode; |
20 | 20 | import lombok.Data; |
21 | +import lombok.EqualsAndHashCode; | |
21 | 22 | import org.hibernate.annotations.Type; |
22 | 23 | import org.hibernate.annotations.TypeDef; |
23 | 24 | import org.thingsboard.server.common.data.User; |
... | ... | @@ -25,33 +26,33 @@ import org.thingsboard.server.common.data.id.CustomerId; |
25 | 26 | import org.thingsboard.server.common.data.id.TenantId; |
26 | 27 | import org.thingsboard.server.common.data.id.UserId; |
27 | 28 | import org.thingsboard.server.common.data.security.Authority; |
29 | +import org.thingsboard.server.dao.model.BaseSqlEntity; | |
28 | 30 | import org.thingsboard.server.dao.model.ModelConstants; |
29 | 31 | import org.thingsboard.server.dao.model.SearchTextEntity; |
30 | 32 | import org.thingsboard.server.dao.util.mapping.JsonStringType; |
31 | 33 | |
32 | 34 | import javax.persistence.*; |
33 | -import java.util.UUID; | |
35 | + | |
36 | +import static org.thingsboard.server.common.data.UUIDConverter.fromString; | |
37 | +import static org.thingsboard.server.common.data.UUIDConverter.fromTimeUUID; | |
34 | 38 | |
35 | 39 | /** |
36 | 40 | * Created by Valerii Sosliuk on 4/21/2017. |
37 | 41 | */ |
38 | 42 | @Data |
43 | +@EqualsAndHashCode(callSuper = true) | |
39 | 44 | @Entity |
40 | 45 | @TypeDef(name = "json", typeClass = JsonStringType.class) |
41 | 46 | @Table(name = ModelConstants.USER_PG_HIBERNATE_COLUMN_FAMILY_NAME) |
42 | -public class UserEntity implements SearchTextEntity<User> { | |
47 | +public class UserEntity extends BaseSqlEntity<User> implements SearchTextEntity<User> { | |
43 | 48 | @Transient |
44 | 49 | private static final long serialVersionUID = -271106508790582977L; |
45 | 50 | |
46 | - @Id | |
47 | - @Column(name = ModelConstants.ID_PROPERTY) | |
48 | - private UUID id; | |
49 | - | |
50 | 51 | @Column(name = ModelConstants.USER_TENANT_ID_PROPERTY) |
51 | - private UUID tenantId; | |
52 | + private String tenantId; | |
52 | 53 | |
53 | 54 | @Column(name = ModelConstants.USER_CUSTOMER_ID_PROPERTY) |
54 | - private UUID customerId; | |
55 | + private String customerId; | |
55 | 56 | |
56 | 57 | @Enumerated(EnumType.STRING) |
57 | 58 | @Column(name = ModelConstants.USER_AUTHORITY_PROPERTY) |
... | ... | @@ -69,7 +70,7 @@ public class UserEntity implements SearchTextEntity<User> { |
69 | 70 | @Column(name = ModelConstants.USER_LAST_NAME_PROPERTY) |
70 | 71 | private String lastName; |
71 | 72 | |
72 | - @Type(type="json") | |
73 | + @Type(type = "json") | |
73 | 74 | @Column(name = ModelConstants.USER_ADDITIONAL_INFO_PROPERTY) |
74 | 75 | private JsonNode additionalInfo; |
75 | 76 | |
... | ... | @@ -78,14 +79,14 @@ public class UserEntity implements SearchTextEntity<User> { |
78 | 79 | |
79 | 80 | public UserEntity(User user) { |
80 | 81 | if (user.getId() != null) { |
81 | - this.id = user.getId().getId(); | |
82 | + this.setId(user.getId().getId()); | |
82 | 83 | } |
83 | 84 | this.authority = user.getAuthority(); |
84 | 85 | if (user.getTenantId() != null) { |
85 | - this.tenantId = user.getTenantId().getId(); | |
86 | + this.tenantId = fromTimeUUID(user.getTenantId().getId()); | |
86 | 87 | } |
87 | 88 | if (user.getCustomerId() != null) { |
88 | - this.customerId = user.getCustomerId().getId(); | |
89 | + this.customerId = fromTimeUUID(user.getCustomerId().getId()); | |
89 | 90 | } |
90 | 91 | this.email = user.getEmail(); |
91 | 92 | this.firstName = user.getFirstName(); |
... | ... | @@ -104,25 +105,15 @@ public class UserEntity implements SearchTextEntity<User> { |
104 | 105 | } |
105 | 106 | |
106 | 107 | @Override |
107 | - public UUID getId() { | |
108 | - return id; | |
109 | - } | |
110 | - | |
111 | - @Override | |
112 | - public void setId(UUID id) { | |
113 | - this.id = id; | |
114 | - } | |
115 | - | |
116 | - @Override | |
117 | 108 | public User toData() { |
118 | - User user = new User(new UserId(id)); | |
119 | - user.setCreatedTime(UUIDs.unixTimestamp(id)); | |
109 | + User user = new User(new UserId(getId())); | |
110 | + user.setCreatedTime(UUIDs.unixTimestamp(getId())); | |
120 | 111 | user.setAuthority(authority); |
121 | 112 | if (tenantId != null) { |
122 | - user.setTenantId(new TenantId(tenantId)); | |
113 | + user.setTenantId(new TenantId(fromString(tenantId))); | |
123 | 114 | } |
124 | 115 | if (customerId != null) { |
125 | - user.setCustomerId(new CustomerId(customerId)); | |
116 | + user.setCustomerId(new CustomerId(fromString(customerId))); | |
126 | 117 | } |
127 | 118 | user.setEmail(email); |
128 | 119 | user.setFirstName(firstName); | ... | ... |
... | ... | @@ -18,33 +18,34 @@ package org.thingsboard.server.dao.model.sql; |
18 | 18 | import com.datastax.driver.core.utils.UUIDs; |
19 | 19 | import com.fasterxml.jackson.databind.JsonNode; |
20 | 20 | import lombok.Data; |
21 | +import lombok.EqualsAndHashCode; | |
21 | 22 | import org.hibernate.annotations.Type; |
22 | 23 | import org.hibernate.annotations.TypeDef; |
23 | 24 | import org.thingsboard.server.common.data.id.TenantId; |
24 | 25 | import org.thingsboard.server.common.data.id.WidgetTypeId; |
25 | 26 | import org.thingsboard.server.common.data.widget.WidgetType; |
26 | 27 | import org.thingsboard.server.dao.model.BaseEntity; |
28 | +import org.thingsboard.server.dao.model.BaseSqlEntity; | |
27 | 29 | import org.thingsboard.server.dao.model.ModelConstants; |
28 | 30 | import org.thingsboard.server.dao.util.mapping.JsonStringType; |
29 | 31 | |
30 | -import javax.persistence.*; | |
31 | -import java.util.UUID; | |
32 | +import javax.persistence.Column; | |
33 | +import javax.persistence.Entity; | |
34 | +import javax.persistence.Table; | |
35 | +import javax.persistence.Transient; | |
32 | 36 | |
33 | 37 | @Data |
38 | +@EqualsAndHashCode(callSuper = true) | |
34 | 39 | @Entity |
35 | 40 | @TypeDef(name = "json", typeClass = JsonStringType.class) |
36 | 41 | @Table(name = ModelConstants.WIDGET_TYPE_COLUMN_FAMILY_NAME) |
37 | -public final class WidgetTypeEntity implements BaseEntity<WidgetType> { | |
42 | +public final class WidgetTypeEntity extends BaseSqlEntity<WidgetType> implements BaseEntity<WidgetType> { | |
38 | 43 | |
39 | 44 | @Transient |
40 | 45 | private static final long serialVersionUID = -5436279069884988630L; |
41 | 46 | |
42 | - @Id | |
43 | - @Column(name = ModelConstants.ID_PROPERTY) | |
44 | - private UUID id; | |
45 | - | |
46 | 47 | @Column(name = ModelConstants.WIDGET_TYPE_TENANT_ID_PROPERTY) |
47 | - private UUID tenantId; | |
48 | + private String tenantId; | |
48 | 49 | |
49 | 50 | @Column(name = ModelConstants.WIDGET_TYPE_BUNDLE_ALIAS_PROPERTY) |
50 | 51 | private String bundleAlias; |
... | ... | @@ -65,10 +66,10 @@ public final class WidgetTypeEntity implements BaseEntity<WidgetType> { |
65 | 66 | |
66 | 67 | public WidgetTypeEntity(WidgetType widgetType) { |
67 | 68 | if (widgetType.getId() != null) { |
68 | - this.id = widgetType.getId().getId(); | |
69 | + this.setId(widgetType.getId().getId()); | |
69 | 70 | } |
70 | 71 | if (widgetType.getTenantId() != null) { |
71 | - this.tenantId = widgetType.getTenantId().getId(); | |
72 | + this.tenantId = toString(widgetType.getTenantId().getId()); | |
72 | 73 | } |
73 | 74 | this.bundleAlias = widgetType.getBundleAlias(); |
74 | 75 | this.alias = widgetType.getAlias(); |
... | ... | @@ -77,21 +78,11 @@ public final class WidgetTypeEntity implements BaseEntity<WidgetType> { |
77 | 78 | } |
78 | 79 | |
79 | 80 | @Override |
80 | - public UUID getId() { | |
81 | - return id; | |
82 | - } | |
83 | - | |
84 | - @Override | |
85 | - public void setId(UUID id) { | |
86 | - this.id = id; | |
87 | - } | |
88 | - | |
89 | - @Override | |
90 | 81 | public WidgetType toData() { |
91 | - WidgetType widgetType = new WidgetType(new WidgetTypeId(id)); | |
92 | - widgetType.setCreatedTime(UUIDs.unixTimestamp(id)); | |
82 | + WidgetType widgetType = new WidgetType(new WidgetTypeId(getId())); | |
83 | + widgetType.setCreatedTime(UUIDs.unixTimestamp(getId())); | |
93 | 84 | if (tenantId != null) { |
94 | - widgetType.setTenantId(new TenantId(tenantId)); | |
85 | + widgetType.setTenantId(new TenantId(toUUID(tenantId))); | |
95 | 86 | } |
96 | 87 | widgetType.setBundleAlias(bundleAlias); |
97 | 88 | widgetType.setAlias(alias); | ... | ... |
... | ... | @@ -18,29 +18,31 @@ package org.thingsboard.server.dao.model.sql; |
18 | 18 | |
19 | 19 | import com.datastax.driver.core.utils.UUIDs; |
20 | 20 | import lombok.Data; |
21 | +import lombok.EqualsAndHashCode; | |
22 | +import org.thingsboard.server.common.data.UUIDConverter; | |
21 | 23 | import org.thingsboard.server.common.data.id.TenantId; |
22 | 24 | import org.thingsboard.server.common.data.id.WidgetsBundleId; |
23 | 25 | import org.thingsboard.server.common.data.widget.WidgetsBundle; |
26 | +import org.thingsboard.server.dao.model.BaseSqlEntity; | |
24 | 27 | import org.thingsboard.server.dao.model.ModelConstants; |
25 | 28 | import org.thingsboard.server.dao.model.SearchTextEntity; |
26 | 29 | |
27 | -import javax.persistence.*; | |
28 | -import java.util.UUID; | |
30 | +import javax.persistence.Column; | |
31 | +import javax.persistence.Entity; | |
32 | +import javax.persistence.Table; | |
33 | +import javax.persistence.Transient; | |
29 | 34 | |
30 | 35 | @Data |
36 | +@EqualsAndHashCode(callSuper = true) | |
31 | 37 | @Entity |
32 | 38 | @Table(name = ModelConstants.WIDGETS_BUNDLE_COLUMN_FAMILY_NAME) |
33 | -public final class WidgetsBundleEntity implements SearchTextEntity<WidgetsBundle> { | |
39 | +public final class WidgetsBundleEntity extends BaseSqlEntity<WidgetsBundle> implements SearchTextEntity<WidgetsBundle> { | |
34 | 40 | |
35 | 41 | @Transient |
36 | 42 | private static final long serialVersionUID = 6897035686422298096L; |
37 | 43 | |
38 | - @Id | |
39 | - @Column(name = ModelConstants.ID_PROPERTY) | |
40 | - private UUID id; | |
41 | - | |
42 | 44 | @Column(name = ModelConstants.WIDGETS_BUNDLE_TENANT_ID_PROPERTY) |
43 | - private UUID tenantId; | |
45 | + private String tenantId; | |
44 | 46 | |
45 | 47 | @Column(name = ModelConstants.WIDGETS_BUNDLE_ALIAS_PROPERTY) |
46 | 48 | private String alias; |
... | ... | @@ -57,26 +59,16 @@ public final class WidgetsBundleEntity implements SearchTextEntity<WidgetsBundle |
57 | 59 | |
58 | 60 | public WidgetsBundleEntity(WidgetsBundle widgetsBundle) { |
59 | 61 | if (widgetsBundle.getId() != null) { |
60 | - this.id = widgetsBundle.getId().getId(); | |
62 | + this.setId(widgetsBundle.getId().getId()); | |
61 | 63 | } |
62 | 64 | if (widgetsBundle.getTenantId() != null) { |
63 | - this.tenantId = widgetsBundle.getTenantId().getId(); | |
65 | + this.tenantId = UUIDConverter.fromTimeUUID(widgetsBundle.getTenantId().getId()); | |
64 | 66 | } |
65 | 67 | this.alias = widgetsBundle.getAlias(); |
66 | 68 | this.title = widgetsBundle.getTitle(); |
67 | 69 | } |
68 | 70 | |
69 | 71 | @Override |
70 | - public UUID getId() { | |
71 | - return id; | |
72 | - } | |
73 | - | |
74 | - @Override | |
75 | - public void setId(UUID id) { | |
76 | - this.id = id; | |
77 | - } | |
78 | - | |
79 | - @Override | |
80 | 72 | public String getSearchTextSource() { |
81 | 73 | return title; |
82 | 74 | } |
... | ... | @@ -88,10 +80,10 @@ public final class WidgetsBundleEntity implements SearchTextEntity<WidgetsBundle |
88 | 80 | |
89 | 81 | @Override |
90 | 82 | public WidgetsBundle toData() { |
91 | - WidgetsBundle widgetsBundle = new WidgetsBundle(new WidgetsBundleId(id)); | |
92 | - widgetsBundle.setCreatedTime(UUIDs.unixTimestamp(id)); | |
83 | + WidgetsBundle widgetsBundle = new WidgetsBundle(new WidgetsBundleId(UUIDConverter.fromString(id))); | |
84 | + widgetsBundle.setCreatedTime(UUIDs.unixTimestamp(UUIDConverter.fromString(id))); | |
93 | 85 | if (tenantId != null) { |
94 | - widgetsBundle.setTenantId(new TenantId(tenantId)); | |
86 | + widgetsBundle.setTenantId(new TenantId(UUIDConverter.fromString(tenantId))); | |
95 | 87 | } |
96 | 88 | widgetsBundle.setAlias(alias); |
97 | 89 | widgetsBundle.setTitle(title); | ... | ... |
... | ... | @@ -17,8 +17,6 @@ package org.thingsboard.server.dao.model.type; |
17 | 17 | |
18 | 18 | import com.datastax.driver.extras.codecs.enums.EnumNameCodec; |
19 | 19 | import org.thingsboard.server.common.data.alarm.AlarmSeverity; |
20 | -import org.thingsboard.server.common.data.alarm.AlarmStatus; | |
21 | -import org.thingsboard.server.dao.alarm.AlarmService; | |
22 | 20 | |
23 | 21 | public class AlarmSeverityCodec extends EnumNameCodec<AlarmSeverity> { |
24 | 22 | ... | ... |
... | ... | @@ -15,9 +15,8 @@ |
15 | 15 | */ |
16 | 16 | package org.thingsboard.server.dao.model.type; |
17 | 17 | |
18 | -import org.thingsboard.server.common.data.security.Authority; | |
19 | - | |
20 | 18 | import com.datastax.driver.extras.codecs.enums.EnumNameCodec; |
19 | +import org.thingsboard.server.common.data.security.Authority; | |
21 | 20 | |
22 | 21 | public class AuthorityCodec extends EnumNameCodec<Authority> { |
23 | 22 | ... | ... |
... | ... | @@ -17,7 +17,6 @@ package org.thingsboard.server.dao.model.type; |
17 | 17 | |
18 | 18 | import com.datastax.driver.extras.codecs.enums.EnumNameCodec; |
19 | 19 | import org.thingsboard.server.common.data.plugin.ComponentLifecycleState; |
20 | -import org.thingsboard.server.common.data.security.Authority; | |
21 | 20 | |
22 | 21 | public class ComponentLifecycleStateCodec extends EnumNameCodec<ComponentLifecycleState> { |
23 | 22 | ... | ... |
... | ... | @@ -17,7 +17,6 @@ package org.thingsboard.server.dao.model.type; |
17 | 17 | |
18 | 18 | import com.datastax.driver.extras.codecs.enums.EnumNameCodec; |
19 | 19 | import org.thingsboard.server.common.data.plugin.ComponentScope; |
20 | -import org.thingsboard.server.common.data.plugin.ComponentType; | |
21 | 20 | |
22 | 21 | public class ComponentScopeCodec extends EnumNameCodec<ComponentScope> { |
23 | 22 | ... | ... |
... | ... | @@ -16,7 +16,6 @@ |
16 | 16 | package org.thingsboard.server.dao.model.type; |
17 | 17 | |
18 | 18 | import com.datastax.driver.extras.codecs.enums.EnumNameCodec; |
19 | -import org.thingsboard.server.common.data.plugin.ComponentLifecycleState; | |
20 | 19 | import org.thingsboard.server.common.data.plugin.ComponentType; |
21 | 20 | |
22 | 21 | public class ComponentTypeCodec extends EnumNameCodec<ComponentType> { | ... | ... |
... | ... | @@ -15,9 +15,8 @@ |
15 | 15 | */ |
16 | 16 | package org.thingsboard.server.dao.model.type; |
17 | 17 | |
18 | -import org.thingsboard.server.common.data.security.DeviceCredentialsType; | |
19 | - | |
20 | 18 | import com.datastax.driver.extras.codecs.enums.EnumNameCodec; |
19 | +import org.thingsboard.server.common.data.security.DeviceCredentialsType; | |
21 | 20 | |
22 | 21 | public class DeviceCredentialsTypeCodec extends EnumNameCodec<DeviceCredentialsType> { |
23 | 22 | ... | ... |
... | ... | @@ -17,7 +17,6 @@ package org.thingsboard.server.dao.model.type; |
17 | 17 | |
18 | 18 | import com.datastax.driver.extras.codecs.enums.EnumNameCodec; |
19 | 19 | import org.thingsboard.server.common.data.EntityType; |
20 | -import org.thingsboard.server.common.data.plugin.ComponentType; | |
21 | 20 | |
22 | 21 | public class EntityTypeCodec extends EnumNameCodec<EntityType> { |
23 | 22 | ... | ... |
... | ... | @@ -15,9 +15,8 @@ |
15 | 15 | */ |
16 | 16 | package org.thingsboard.server.dao.model.type; |
17 | 17 | |
18 | -import org.thingsboard.server.common.data.relation.RelationTypeGroup; | |
19 | - | |
20 | 18 | import com.datastax.driver.extras.codecs.enums.EnumNameCodec; |
19 | +import org.thingsboard.server.common.data.relation.RelationTypeGroup; | |
21 | 20 | |
22 | 21 | public class RelationTypeGroupCodec extends EnumNameCodec<RelationTypeGroup> { |
23 | 22 | ... | ... |
... | ... | @@ -22,11 +22,11 @@ import org.thingsboard.server.common.data.id.PluginId; |
22 | 22 | import org.thingsboard.server.common.data.id.TenantId; |
23 | 23 | import org.thingsboard.server.common.data.page.TextPageLink; |
24 | 24 | import org.thingsboard.server.common.data.plugin.PluginMetaData; |
25 | -import org.thingsboard.server.dao.nosql.CassandraAbstractSearchTextDao; | |
26 | 25 | import org.thingsboard.server.dao.DaoUtil; |
27 | -import org.thingsboard.server.dao.util.NoSqlDao; | |
28 | 26 | import org.thingsboard.server.dao.model.ModelConstants; |
29 | 27 | import org.thingsboard.server.dao.model.nosql.PluginMetaDataEntity; |
28 | +import org.thingsboard.server.dao.nosql.CassandraAbstractSearchTextDao; | |
29 | +import org.thingsboard.server.dao.util.NoSqlDao; | |
30 | 30 | |
31 | 31 | import java.util.Arrays; |
32 | 32 | import java.util.List; | ... | ... |
... | ... | @@ -28,11 +28,11 @@ import org.thingsboard.server.common.data.id.EntityIdFactory; |
28 | 28 | import org.thingsboard.server.common.data.page.TimePageLink; |
29 | 29 | import org.thingsboard.server.common.data.relation.EntityRelation; |
30 | 30 | import org.thingsboard.server.common.data.relation.RelationTypeGroup; |
31 | +import org.thingsboard.server.dao.model.ModelConstants; | |
32 | +import org.thingsboard.server.dao.model.type.RelationTypeGroupCodec; | |
31 | 33 | import org.thingsboard.server.dao.nosql.CassandraAbstractAsyncDao; |
32 | 34 | import org.thingsboard.server.dao.nosql.CassandraAbstractSearchTimeDao; |
33 | 35 | import org.thingsboard.server.dao.util.NoSqlDao; |
34 | -import org.thingsboard.server.dao.model.ModelConstants; | |
35 | -import org.thingsboard.server.dao.model.type.RelationTypeGroupCodec; | |
36 | 36 | |
37 | 37 | import javax.annotation.PostConstruct; |
38 | 38 | import java.util.ArrayList; | ... | ... |
... | ... | @@ -22,11 +22,11 @@ import org.thingsboard.server.common.data.id.RuleId; |
22 | 22 | import org.thingsboard.server.common.data.id.TenantId; |
23 | 23 | import org.thingsboard.server.common.data.page.TextPageLink; |
24 | 24 | import org.thingsboard.server.common.data.rule.RuleMetaData; |
25 | -import org.thingsboard.server.dao.nosql.CassandraAbstractSearchTextDao; | |
26 | 25 | import org.thingsboard.server.dao.DaoUtil; |
27 | -import org.thingsboard.server.dao.util.NoSqlDao; | |
28 | 26 | import org.thingsboard.server.dao.model.ModelConstants; |
29 | 27 | import org.thingsboard.server.dao.model.nosql.RuleMetaDataEntity; |
28 | +import org.thingsboard.server.dao.nosql.CassandraAbstractSearchTextDao; | |
29 | +import org.thingsboard.server.dao.util.NoSqlDao; | |
30 | 30 | |
31 | 31 | import java.util.Arrays; |
32 | 32 | import java.util.List; | ... | ... |
... | ... | @@ -19,10 +19,10 @@ import com.datastax.driver.core.querybuilder.Select.Where; |
19 | 19 | import lombok.extern.slf4j.Slf4j; |
20 | 20 | import org.springframework.stereotype.Component; |
21 | 21 | import org.thingsboard.server.common.data.AdminSettings; |
22 | -import org.thingsboard.server.dao.nosql.CassandraAbstractModelDao; | |
23 | 22 | import org.thingsboard.server.dao.DaoUtil; |
24 | -import org.thingsboard.server.dao.util.NoSqlDao; | |
25 | 23 | import org.thingsboard.server.dao.model.nosql.AdminSettingsEntity; |
24 | +import org.thingsboard.server.dao.nosql.CassandraAbstractModelDao; | |
25 | +import org.thingsboard.server.dao.util.NoSqlDao; | |
26 | 26 | |
27 | 27 | import static com.datastax.driver.core.querybuilder.QueryBuilder.eq; |
28 | 28 | import static com.datastax.driver.core.querybuilder.QueryBuilder.select; | ... | ... |
... | ... | @@ -28,6 +28,8 @@ import org.thingsboard.server.dao.model.BaseEntity; |
28 | 28 | import java.util.List; |
29 | 29 | import java.util.UUID; |
30 | 30 | |
31 | +import static org.thingsboard.server.common.data.UUIDConverter.fromTimeUUID; | |
32 | + | |
31 | 33 | /** |
32 | 34 | * @author Valerii Sosliuk |
33 | 35 | */ |
... | ... | @@ -38,7 +40,7 @@ public abstract class JpaAbstractDao<E extends BaseEntity<D>, D> |
38 | 40 | |
39 | 41 | protected abstract Class<E> getEntityClass(); |
40 | 42 | |
41 | - protected abstract CrudRepository<E, UUID> getCrudRepository(); | |
43 | + protected abstract CrudRepository<E, String> getCrudRepository(); | |
42 | 44 | |
43 | 45 | protected void setSearchText(E entity) {} |
44 | 46 | |
... | ... | @@ -64,19 +66,20 @@ public abstract class JpaAbstractDao<E extends BaseEntity<D>, D> |
64 | 66 | @Override |
65 | 67 | public D findById(UUID key) { |
66 | 68 | log.debug("Get entity by key {}", key); |
67 | - E entity = getCrudRepository().findOne(key); | |
69 | + E entity = getCrudRepository().findOne(fromTimeUUID(key)); | |
68 | 70 | return DaoUtil.getData(entity); |
69 | 71 | } |
70 | 72 | |
71 | 73 | @Override |
72 | 74 | public ListenableFuture<D> findByIdAsync(UUID key) { |
73 | 75 | log.debug("Get entity by key async {}", key); |
74 | - return service.submit(() -> DaoUtil.getData(getCrudRepository().findOne(key))); | |
76 | + return service.submit(() -> DaoUtil.getData(getCrudRepository().findOne(fromTimeUUID(key)))); | |
75 | 77 | } |
76 | 78 | |
77 | 79 | @Override |
78 | 80 | @Transactional |
79 | - public boolean removeById(UUID key) { | |
81 | + public boolean removeById(UUID id) { | |
82 | + String key = fromTimeUUID(id); | |
80 | 83 | getCrudRepository().delete(key); |
81 | 84 | log.debug("Remove request: {}", key); |
82 | 85 | return getCrudRepository().findOne(key) == null; | ... | ... |
... | ... | @@ -17,9 +17,9 @@ package org.thingsboard.server.dao.sql; |
17 | 17 | |
18 | 18 | import com.datastax.driver.core.utils.UUIDs; |
19 | 19 | import org.springframework.data.jpa.domain.Specification; |
20 | +import org.thingsboard.server.common.data.UUIDConverter; | |
20 | 21 | import org.thingsboard.server.common.data.page.TimePageLink; |
21 | 22 | import org.thingsboard.server.dao.model.BaseEntity; |
22 | -import static org.thingsboard.server.dao.model.ModelConstants.*; | |
23 | 23 | |
24 | 24 | import javax.persistence.criteria.CriteriaBuilder; |
25 | 25 | import javax.persistence.criteria.CriteriaQuery; |
... | ... | @@ -41,30 +41,30 @@ public abstract class JpaAbstractSearchTimeDao<E extends BaseEntity<D>, D> exten |
41 | 41 | List<Predicate> predicates = new ArrayList<>(); |
42 | 42 | if (pageLink.isAscOrder()) { |
43 | 43 | if (pageLink.getIdOffset() != null) { |
44 | - Predicate lowerBound = criteriaBuilder.greaterThan(root.get(idColumn), pageLink.getIdOffset()); | |
44 | + Predicate lowerBound = criteriaBuilder.greaterThan(root.get(idColumn), UUIDConverter.fromTimeUUID(pageLink.getIdOffset())); | |
45 | 45 | predicates.add(lowerBound); |
46 | 46 | } else if (pageLink.getStartTime() != null) { |
47 | 47 | UUID startOf = UUIDs.startOf(pageLink.getStartTime()); |
48 | - Predicate lowerBound = criteriaBuilder.greaterThanOrEqualTo(root.get(idColumn), startOf); | |
48 | + Predicate lowerBound = criteriaBuilder.greaterThanOrEqualTo(root.get(idColumn), UUIDConverter.fromTimeUUID(startOf)); | |
49 | 49 | predicates.add(lowerBound); |
50 | 50 | } |
51 | 51 | if (pageLink.getEndTime() != null) { |
52 | 52 | UUID endOf = UUIDs.endOf(pageLink.getEndTime()); |
53 | - Predicate upperBound = criteriaBuilder.lessThanOrEqualTo(root.get(idColumn), endOf); | |
53 | + Predicate upperBound = criteriaBuilder.lessThanOrEqualTo(root.get(idColumn), UUIDConverter.fromTimeUUID(endOf)); | |
54 | 54 | predicates.add(upperBound); |
55 | 55 | } |
56 | 56 | } else { |
57 | 57 | if (pageLink.getIdOffset() != null) { |
58 | - Predicate lowerBound = criteriaBuilder.lessThan(root.get(idColumn), pageLink.getIdOffset()); | |
58 | + Predicate lowerBound = criteriaBuilder.lessThan(root.get(idColumn), UUIDConverter.fromTimeUUID(pageLink.getIdOffset())); | |
59 | 59 | predicates.add(lowerBound); |
60 | 60 | } else if (pageLink.getEndTime() != null) { |
61 | 61 | UUID endOf = UUIDs.endOf(pageLink.getEndTime()); |
62 | - Predicate lowerBound = criteriaBuilder.lessThanOrEqualTo(root.get(idColumn), endOf); | |
62 | + Predicate lowerBound = criteriaBuilder.lessThanOrEqualTo(root.get(idColumn), UUIDConverter.fromTimeUUID(endOf)); | |
63 | 63 | predicates.add(lowerBound); |
64 | 64 | } |
65 | 65 | if (pageLink.getStartTime() != null) { |
66 | 66 | UUID startOf = UUIDs.startOf(pageLink.getStartTime()); |
67 | - Predicate upperBound = criteriaBuilder.greaterThanOrEqualTo(root.get(idColumn), startOf); | |
67 | + Predicate upperBound = criteriaBuilder.greaterThanOrEqualTo(root.get(idColumn), UUIDConverter.fromTimeUUID(startOf)); | |
68 | 68 | predicates.add(upperBound); |
69 | 69 | } |
70 | 70 | } | ... | ... |
... | ... | @@ -20,22 +20,21 @@ import org.springframework.data.jpa.repository.Query; |
20 | 20 | import org.springframework.data.repository.CrudRepository; |
21 | 21 | import org.springframework.data.repository.query.Param; |
22 | 22 | import org.thingsboard.server.common.data.EntityType; |
23 | -import org.thingsboard.server.dao.util.SqlDao; | |
24 | 23 | import org.thingsboard.server.dao.model.sql.AlarmEntity; |
24 | +import org.thingsboard.server.dao.util.SqlDao; | |
25 | 25 | |
26 | 26 | import java.util.List; |
27 | -import java.util.UUID; | |
28 | 27 | |
29 | 28 | /** |
30 | 29 | * Created by Valerii Sosliuk on 5/21/2017. |
31 | 30 | */ |
32 | 31 | @SqlDao |
33 | -public interface AlarmRepository extends CrudRepository<AlarmEntity, UUID> { | |
32 | +public interface AlarmRepository extends CrudRepository<AlarmEntity, String> { | |
34 | 33 | |
35 | 34 | @Query("SELECT a FROM AlarmEntity a WHERE a.tenantId = :tenantId AND a.originatorId = :originatorId " + |
36 | 35 | "AND a.originatorType = :entityType AND a.type = :alarmType ORDER BY a.type ASC, a.id DESC") |
37 | - List<AlarmEntity> findLatestByOriginatorAndType(@Param("tenantId") UUID tenantId, | |
38 | - @Param("originatorId") UUID originatorId, | |
36 | + List<AlarmEntity> findLatestByOriginatorAndType(@Param("tenantId") String tenantId, | |
37 | + @Param("originatorId") String originatorId, | |
39 | 38 | @Param("entityType") EntityType entityType, |
40 | 39 | @Param("alarmType") String alarmType, |
41 | 40 | Pageable pageable); | ... | ... |
... | ... | @@ -24,8 +24,8 @@ import org.springframework.beans.factory.annotation.Autowired; |
24 | 24 | import org.springframework.data.domain.PageRequest; |
25 | 25 | import org.springframework.data.repository.CrudRepository; |
26 | 26 | import org.springframework.stereotype.Component; |
27 | -import org.springframework.transaction.annotation.Transactional; | |
28 | 27 | import org.thingsboard.server.common.data.EntityType; |
28 | +import org.thingsboard.server.common.data.UUIDConverter; | |
29 | 29 | import org.thingsboard.server.common.data.alarm.Alarm; |
30 | 30 | import org.thingsboard.server.common.data.alarm.AlarmInfo; |
31 | 31 | import org.thingsboard.server.common.data.alarm.AlarmQuery; |
... | ... | @@ -37,17 +37,15 @@ import org.thingsboard.server.common.data.relation.RelationTypeGroup; |
37 | 37 | import org.thingsboard.server.dao.DaoUtil; |
38 | 38 | import org.thingsboard.server.dao.alarm.AlarmDao; |
39 | 39 | import org.thingsboard.server.dao.alarm.BaseAlarmService; |
40 | -import org.thingsboard.server.dao.util.SqlDao; | |
41 | 40 | import org.thingsboard.server.dao.model.sql.AlarmEntity; |
42 | 41 | import org.thingsboard.server.dao.relation.RelationDao; |
43 | 42 | import org.thingsboard.server.dao.sql.JpaAbstractDao; |
43 | +import org.thingsboard.server.dao.util.SqlDao; | |
44 | 44 | |
45 | 45 | import java.util.ArrayList; |
46 | 46 | import java.util.List; |
47 | 47 | import java.util.UUID; |
48 | 48 | |
49 | -import static org.springframework.transaction.annotation.Propagation.REQUIRES_NEW; | |
50 | - | |
51 | 49 | /** |
52 | 50 | * Created by Valerii Sosliuk on 5/19/2017. |
53 | 51 | */ |
... | ... | @@ -68,7 +66,7 @@ public class JpaAlarmDao extends JpaAbstractDao<AlarmEntity, Alarm> implements A |
68 | 66 | } |
69 | 67 | |
70 | 68 | @Override |
71 | - protected CrudRepository<AlarmEntity, UUID> getCrudRepository() { | |
69 | + protected CrudRepository<AlarmEntity, String> getCrudRepository() { | |
72 | 70 | return alarmRepository; |
73 | 71 | } |
74 | 72 | |
... | ... | @@ -76,8 +74,8 @@ public class JpaAlarmDao extends JpaAbstractDao<AlarmEntity, Alarm> implements A |
76 | 74 | public ListenableFuture<Alarm> findLatestByOriginatorAndType(TenantId tenantId, EntityId originator, String type) { |
77 | 75 | return service.submit(() -> { |
78 | 76 | List<AlarmEntity> latest = alarmRepository.findLatestByOriginatorAndType( |
79 | - tenantId.getId(), | |
80 | - originator.getId(), | |
77 | + UUIDConverter.fromTimeUUID(tenantId.getId()), | |
78 | + UUIDConverter.fromTimeUUID(originator.getId()), | |
81 | 79 | originator.getEntityType(), |
82 | 80 | type, |
83 | 81 | new PageRequest(0, 1)); | ... | ... |
... | ... | @@ -24,57 +24,56 @@ import org.thingsboard.server.dao.model.sql.AssetEntity; |
24 | 24 | import org.thingsboard.server.dao.util.SqlDao; |
25 | 25 | |
26 | 26 | import java.util.List; |
27 | -import java.util.UUID; | |
28 | 27 | |
29 | 28 | /** |
30 | 29 | * Created by Valerii Sosliuk on 5/21/2017. |
31 | 30 | */ |
32 | 31 | @SqlDao |
33 | -public interface AssetRepository extends CrudRepository<AssetEntity, UUID> { | |
32 | +public interface AssetRepository extends CrudRepository<AssetEntity, String> { | |
34 | 33 | |
35 | 34 | @Query("SELECT a FROM AssetEntity a WHERE a.tenantId = :tenantId " + |
36 | 35 | "AND LOWER(a.searchText) LIKE LOWER(CONCAT(:textSearch, '%')) " + |
37 | 36 | "AND a.id > :idOffset ORDER BY a.id") |
38 | - List<AssetEntity> findByTenantId(@Param("tenantId") UUID tenantId, | |
37 | + List<AssetEntity> findByTenantId(@Param("tenantId") String tenantId, | |
39 | 38 | @Param("textSearch") String textSearch, |
40 | - @Param("idOffset") UUID idOffset, | |
39 | + @Param("idOffset") String idOffset, | |
41 | 40 | Pageable pageable); |
42 | 41 | |
43 | 42 | @Query("SELECT a FROM AssetEntity a WHERE a.tenantId = :tenantId " + |
44 | 43 | "AND a.customerId = :customerId " + |
45 | 44 | "AND LOWER(a.searchText) LIKE LOWER(CONCAT(:textSearch, '%')) " + |
46 | 45 | "AND a.id > :idOffset ORDER BY a.id") |
47 | - List<AssetEntity> findByTenantIdAndCustomerId(@Param("tenantId") UUID tenantId, | |
48 | - @Param("customerId") UUID customerId, | |
46 | + List<AssetEntity> findByTenantIdAndCustomerId(@Param("tenantId") String tenantId, | |
47 | + @Param("customerId") String customerId, | |
49 | 48 | @Param("textSearch") String textSearch, |
50 | - @Param("idOffset") UUID idOffset, | |
49 | + @Param("idOffset") String idOffset, | |
51 | 50 | Pageable pageable); |
52 | 51 | |
53 | - List<AssetEntity> findByTenantIdAndIdIn(UUID tenantId, List<UUID> assetIds); | |
52 | + List<AssetEntity> findByTenantIdAndIdIn(String tenantId, List<String> assetIds); | |
54 | 53 | |
55 | - List<AssetEntity> findByTenantIdAndCustomerIdAndIdIn(UUID tenantId, UUID customerId, List<UUID> assetIds); | |
54 | + List<AssetEntity> findByTenantIdAndCustomerIdAndIdIn(String tenantId, String customerId, List<String> assetIds); | |
56 | 55 | |
57 | - AssetEntity findByTenantIdAndName(UUID tenantId, String name); | |
56 | + AssetEntity findByTenantIdAndName(String tenantId, String name); | |
58 | 57 | |
59 | 58 | @Query("SELECT a FROM AssetEntity a WHERE a.tenantId = :tenantId " + |
60 | 59 | "AND a.type = :type " + |
61 | 60 | "AND LOWER(a.searchText) LIKE LOWER(CONCAT(:textSearch, '%')) " + |
62 | 61 | "AND a.id > :idOffset ORDER BY a.id") |
63 | - List<AssetEntity> findByTenantIdAndType(@Param("tenantId") UUID tenantId, | |
62 | + List<AssetEntity> findByTenantIdAndType(@Param("tenantId") String tenantId, | |
64 | 63 | @Param("type") String type, |
65 | 64 | @Param("textSearch") String textSearch, |
66 | - @Param("idOffset") UUID idOffset, | |
65 | + @Param("idOffset") String idOffset, | |
67 | 66 | Pageable pageable); |
68 | 67 | |
69 | 68 | @Query("SELECT a FROM AssetEntity a WHERE a.tenantId = :tenantId " + |
70 | 69 | "AND a.customerId = :customerId AND a.type = :type " + |
71 | 70 | "AND LOWER(a.searchText) LIKE LOWER(CONCAT(:textSearch, '%')) " + |
72 | 71 | "AND a.id > :idOffset ORDER BY a.id") |
73 | - List<AssetEntity> findByTenantIdAndCustomerIdAndType(@Param("tenantId") UUID tenantId, | |
74 | - @Param("customerId") UUID customerId, | |
72 | + List<AssetEntity> findByTenantIdAndCustomerIdAndType(@Param("tenantId") String tenantId, | |
73 | + @Param("customerId") String customerId, | |
75 | 74 | @Param("type") String type, |
76 | 75 | @Param("textSearch") String textSearch, |
77 | - @Param("idOffset") UUID idOffset, | |
76 | + @Param("idOffset") String idOffset, | |
78 | 77 | Pageable pageable); |
79 | 78 | |
80 | 79 | @Query("SELECT NEW org.thingsboard.server.common.data.asset.TenantAssetType(a.type, a.tenantId) FROM AssetEntity a GROUP BY a.tenantId, a.type") | ... | ... |
... | ... | @@ -24,17 +24,19 @@ import org.thingsboard.server.common.data.asset.Asset; |
24 | 24 | import org.thingsboard.server.common.data.asset.TenantAssetType; |
25 | 25 | import org.thingsboard.server.common.data.page.TextPageLink; |
26 | 26 | import org.thingsboard.server.dao.DaoUtil; |
27 | -import org.thingsboard.server.dao.util.SqlDao; | |
28 | 27 | import org.thingsboard.server.dao.asset.AssetDao; |
29 | 28 | import org.thingsboard.server.dao.model.sql.AssetEntity; |
30 | 29 | import org.thingsboard.server.dao.sql.JpaAbstractSearchTextDao; |
30 | +import org.thingsboard.server.dao.util.SqlDao; | |
31 | 31 | |
32 | 32 | import java.util.List; |
33 | 33 | import java.util.Objects; |
34 | 34 | import java.util.Optional; |
35 | 35 | import java.util.UUID; |
36 | 36 | |
37 | -import static org.thingsboard.server.dao.model.ModelConstants.NULL_UUID; | |
37 | +import static org.thingsboard.server.common.data.UUIDConverter.fromTimeUUID; | |
38 | +import static org.thingsboard.server.common.data.UUIDConverter.fromTimeUUIDs; | |
39 | +import static org.thingsboard.server.dao.model.ModelConstants.NULL_UUID_STR; | |
38 | 40 | |
39 | 41 | /** |
40 | 42 | * Created by Valerii Sosliuk on 5/19/2017. |
... | ... | @@ -52,7 +54,7 @@ public class JpaAssetDao extends JpaAbstractSearchTextDao<AssetEntity, Asset> im |
52 | 54 | } |
53 | 55 | |
54 | 56 | @Override |
55 | - protected CrudRepository<AssetEntity, UUID> getCrudRepository() { | |
57 | + protected CrudRepository<AssetEntity, String> getCrudRepository() { | |
56 | 58 | return assetRepository; |
57 | 59 | } |
58 | 60 | |
... | ... | @@ -60,38 +62,38 @@ public class JpaAssetDao extends JpaAbstractSearchTextDao<AssetEntity, Asset> im |
60 | 62 | public List<Asset> findAssetsByTenantId(UUID tenantId, TextPageLink pageLink) { |
61 | 63 | return DaoUtil.convertDataList(assetRepository |
62 | 64 | .findByTenantId( |
63 | - tenantId, | |
65 | + fromTimeUUID(tenantId), | |
64 | 66 | Objects.toString(pageLink.getTextSearch(), ""), |
65 | - pageLink.getIdOffset() == null ? NULL_UUID : pageLink.getIdOffset(), | |
67 | + pageLink.getIdOffset() == null ? NULL_UUID_STR : fromTimeUUID(pageLink.getIdOffset()), | |
66 | 68 | new PageRequest(0, pageLink.getLimit()))); |
67 | 69 | } |
68 | 70 | |
69 | 71 | @Override |
70 | 72 | public ListenableFuture<List<Asset>> findAssetsByTenantIdAndIdsAsync(UUID tenantId, List<UUID> assetIds) { |
71 | 73 | return service.submit(() -> |
72 | - DaoUtil.convertDataList(assetRepository.findByTenantIdAndIdIn(tenantId, assetIds))); | |
74 | + DaoUtil.convertDataList(assetRepository.findByTenantIdAndIdIn(fromTimeUUID(tenantId), fromTimeUUIDs(assetIds)))); | |
73 | 75 | } |
74 | 76 | |
75 | 77 | @Override |
76 | 78 | public List<Asset> findAssetsByTenantIdAndCustomerId(UUID tenantId, UUID customerId, TextPageLink pageLink) { |
77 | 79 | return DaoUtil.convertDataList(assetRepository |
78 | 80 | .findByTenantIdAndCustomerId( |
79 | - tenantId, | |
80 | - customerId, | |
81 | + fromTimeUUID(tenantId), | |
82 | + fromTimeUUID(customerId), | |
81 | 83 | Objects.toString(pageLink.getTextSearch(), ""), |
82 | - pageLink.getIdOffset() == null ? NULL_UUID : pageLink.getIdOffset(), | |
84 | + pageLink.getIdOffset() == null ? NULL_UUID_STR : fromTimeUUID(pageLink.getIdOffset()), | |
83 | 85 | new PageRequest(0, pageLink.getLimit()))); |
84 | 86 | } |
85 | 87 | |
86 | 88 | @Override |
87 | 89 | public ListenableFuture<List<Asset>> findAssetsByTenantIdAndCustomerIdAndIdsAsync(UUID tenantId, UUID customerId, List<UUID> assetIds) { |
88 | 90 | return service.submit(() -> |
89 | - DaoUtil.convertDataList(assetRepository.findByTenantIdAndCustomerIdAndIdIn(tenantId, customerId, assetIds))); | |
91 | + DaoUtil.convertDataList(assetRepository.findByTenantIdAndCustomerIdAndIdIn(fromTimeUUID(tenantId), fromTimeUUID(customerId), fromTimeUUIDs(assetIds)))); | |
90 | 92 | } |
91 | 93 | |
92 | 94 | @Override |
93 | 95 | public Optional<Asset> findAssetsByTenantIdAndName(UUID tenantId, String name) { |
94 | - Asset asset = DaoUtil.getData(assetRepository.findByTenantIdAndName(tenantId, name)); | |
96 | + Asset asset = DaoUtil.getData(assetRepository.findByTenantIdAndName(fromTimeUUID(tenantId), name)); | |
95 | 97 | return Optional.ofNullable(asset); |
96 | 98 | } |
97 | 99 | |
... | ... | @@ -99,10 +101,10 @@ public class JpaAssetDao extends JpaAbstractSearchTextDao<AssetEntity, Asset> im |
99 | 101 | public List<Asset> findAssetsByTenantIdAndType(UUID tenantId, String type, TextPageLink pageLink) { |
100 | 102 | return DaoUtil.convertDataList(assetRepository |
101 | 103 | .findByTenantIdAndType( |
102 | - tenantId, | |
104 | + fromTimeUUID(tenantId), | |
103 | 105 | type, |
104 | 106 | Objects.toString(pageLink.getTextSearch(), ""), |
105 | - pageLink.getIdOffset() == null ? NULL_UUID : pageLink.getIdOffset(), | |
107 | + pageLink.getIdOffset() == null ? NULL_UUID_STR : fromTimeUUID(pageLink.getIdOffset()), | |
106 | 108 | new PageRequest(0, pageLink.getLimit()))); |
107 | 109 | } |
108 | 110 | |
... | ... | @@ -110,11 +112,11 @@ public class JpaAssetDao extends JpaAbstractSearchTextDao<AssetEntity, Asset> im |
110 | 112 | public List<Asset> findAssetsByTenantIdAndCustomerIdAndType(UUID tenantId, UUID customerId, String type, TextPageLink pageLink) { |
111 | 113 | return DaoUtil.convertDataList(assetRepository |
112 | 114 | .findByTenantIdAndCustomerIdAndType( |
113 | - tenantId, | |
114 | - customerId, | |
115 | + fromTimeUUID(tenantId), | |
116 | + fromTimeUUID(customerId), | |
115 | 117 | type, |
116 | 118 | Objects.toString(pageLink.getTextSearch(), ""), |
117 | - pageLink.getIdOffset() == null ? NULL_UUID : pageLink.getIdOffset(), | |
119 | + pageLink.getIdOffset() == null ? NULL_UUID_STR : fromTimeUUID(pageLink.getIdOffset()), | |
118 | 120 | new PageRequest(0, pageLink.getLimit()))); |
119 | 121 | } |
120 | 122 | ... | ... |
... | ... | @@ -17,18 +17,17 @@ package org.thingsboard.server.dao.sql.attributes; |
17 | 17 | |
18 | 18 | import org.springframework.data.repository.CrudRepository; |
19 | 19 | import org.thingsboard.server.common.data.EntityType; |
20 | -import org.thingsboard.server.dao.util.SqlDao; | |
21 | 20 | import org.thingsboard.server.dao.model.sql.AttributeKvCompositeKey; |
22 | 21 | import org.thingsboard.server.dao.model.sql.AttributeKvEntity; |
22 | +import org.thingsboard.server.dao.util.SqlDao; | |
23 | 23 | |
24 | 24 | import java.util.List; |
25 | -import java.util.UUID; | |
26 | 25 | |
27 | 26 | @SqlDao |
28 | 27 | public interface AttributeKvRepository extends CrudRepository<AttributeKvEntity, AttributeKvCompositeKey> { |
29 | 28 | |
30 | 29 | List<AttributeKvEntity> findAllByEntityTypeAndEntityIdAndAttributeType(EntityType entityType, |
31 | - UUID entityId, | |
30 | + String entityId, | |
32 | 31 | String attributeType); |
33 | 32 | } |
34 | 33 | ... | ... |
... | ... | @@ -20,20 +20,23 @@ import com.google.common.util.concurrent.ListenableFuture; |
20 | 20 | import lombok.extern.slf4j.Slf4j; |
21 | 21 | import org.springframework.beans.factory.annotation.Autowired; |
22 | 22 | import org.springframework.stereotype.Component; |
23 | +import org.thingsboard.server.common.data.UUIDConverter; | |
23 | 24 | import org.thingsboard.server.common.data.id.EntityId; |
24 | 25 | import org.thingsboard.server.common.data.kv.AttributeKvEntry; |
25 | 26 | import org.thingsboard.server.dao.DaoUtil; |
26 | -import org.thingsboard.server.dao.util.SqlDao; | |
27 | 27 | import org.thingsboard.server.dao.attributes.AttributesDao; |
28 | 28 | import org.thingsboard.server.dao.model.sql.AttributeKvCompositeKey; |
29 | 29 | import org.thingsboard.server.dao.model.sql.AttributeKvEntity; |
30 | 30 | import org.thingsboard.server.dao.sql.JpaAbstractDaoListeningExecutorService; |
31 | +import org.thingsboard.server.dao.util.SqlDao; | |
31 | 32 | |
32 | 33 | import java.util.Collection; |
33 | 34 | import java.util.List; |
34 | 35 | import java.util.Optional; |
35 | 36 | import java.util.stream.Collectors; |
36 | 37 | |
38 | +import static org.thingsboard.server.common.data.UUIDConverter.fromTimeUUID; | |
39 | + | |
37 | 40 | @Component |
38 | 41 | @Slf4j |
39 | 42 | @SqlDao |
... | ... | @@ -45,11 +48,7 @@ public class JpaAttributeDao extends JpaAbstractDaoListeningExecutorService impl |
45 | 48 | @Override |
46 | 49 | public ListenableFuture<Optional<AttributeKvEntry>> find(EntityId entityId, String attributeType, String attributeKey) { |
47 | 50 | AttributeKvCompositeKey compositeKey = |
48 | - new AttributeKvCompositeKey( | |
49 | - entityId.getEntityType(), | |
50 | - entityId.getId(), | |
51 | - attributeType, | |
52 | - attributeKey); | |
51 | + getAttributeKvCompositeKey(entityId, attributeType, attributeKey); | |
53 | 52 | return service.submit(() -> |
54 | 53 | Optional.of(DaoUtil.getData(attributeKvRepository.findOne(compositeKey)))); |
55 | 54 | } |
... | ... | @@ -60,11 +59,7 @@ public class JpaAttributeDao extends JpaAbstractDaoListeningExecutorService impl |
60 | 59 | attributeKeys |
61 | 60 | .stream() |
62 | 61 | .map(attributeKey -> |
63 | - new AttributeKvCompositeKey( | |
64 | - entityId.getEntityType(), | |
65 | - entityId.getId(), | |
66 | - attributeType, | |
67 | - attributeKey)) | |
62 | + getAttributeKvCompositeKey(entityId, attributeType, attributeKey)) | |
68 | 63 | .collect(Collectors.toList()); |
69 | 64 | return service.submit(() -> |
70 | 65 | DaoUtil.convertDataList(Lists.newArrayList(attributeKvRepository.findAll(compositeKeys)))); |
... | ... | @@ -76,7 +71,7 @@ public class JpaAttributeDao extends JpaAbstractDaoListeningExecutorService impl |
76 | 71 | DaoUtil.convertDataList(Lists.newArrayList( |
77 | 72 | attributeKvRepository.findAllByEntityTypeAndEntityIdAndAttributeType( |
78 | 73 | entityId.getEntityType(), |
79 | - entityId.getId(), | |
74 | + UUIDConverter.fromTimeUUID(entityId.getId()), | |
80 | 75 | attributeType)))); |
81 | 76 | } |
82 | 77 | |
... | ... | @@ -84,7 +79,7 @@ public class JpaAttributeDao extends JpaAbstractDaoListeningExecutorService impl |
84 | 79 | public ListenableFuture<Void> save(EntityId entityId, String attributeType, AttributeKvEntry attribute) { |
85 | 80 | AttributeKvEntity entity = new AttributeKvEntity(); |
86 | 81 | entity.setEntityType(entityId.getEntityType()); |
87 | - entity.setEntityId(entityId.getId()); | |
82 | + entity.setEntityId(fromTimeUUID(entityId.getId())); | |
88 | 83 | entity.setAttributeType(attributeType); |
89 | 84 | entity.setAttributeKey(attribute.getKey()); |
90 | 85 | entity.setLastUpdateTs(attribute.getLastUpdateTs()); |
... | ... | @@ -105,7 +100,7 @@ public class JpaAttributeDao extends JpaAbstractDaoListeningExecutorService impl |
105 | 100 | .map(key -> { |
106 | 101 | AttributeKvEntity entityToDelete = new AttributeKvEntity(); |
107 | 102 | entityToDelete.setEntityType(entityId.getEntityType()); |
108 | - entityToDelete.setEntityId(entityId.getId()); | |
103 | + entityToDelete.setEntityId(fromTimeUUID(entityId.getId())); | |
109 | 104 | entityToDelete.setAttributeType(attributeType); |
110 | 105 | entityToDelete.setAttributeKey(key); |
111 | 106 | return entityToDelete; |
... | ... | @@ -116,4 +111,12 @@ public class JpaAttributeDao extends JpaAbstractDaoListeningExecutorService impl |
116 | 111 | return null; |
117 | 112 | }); |
118 | 113 | } |
114 | + | |
115 | + private AttributeKvCompositeKey getAttributeKvCompositeKey(EntityId entityId, String attributeType, String attributeKey) { | |
116 | + return new AttributeKvCompositeKey( | |
117 | + entityId.getEntityType(), | |
118 | + fromTimeUUID(entityId.getId()), | |
119 | + attributeType, | |
120 | + attributeKey); | |
121 | + } | |
119 | 122 | } | ... | ... |
... | ... | @@ -21,8 +21,8 @@ import org.springframework.data.repository.CrudRepository; |
21 | 21 | import org.springframework.data.repository.query.Param; |
22 | 22 | import org.thingsboard.server.common.data.plugin.ComponentScope; |
23 | 23 | import org.thingsboard.server.common.data.plugin.ComponentType; |
24 | -import org.thingsboard.server.dao.util.SqlDao; | |
25 | 24 | import org.thingsboard.server.dao.model.sql.ComponentDescriptorEntity; |
25 | +import org.thingsboard.server.dao.util.SqlDao; | |
26 | 26 | |
27 | 27 | import java.util.List; |
28 | 28 | import java.util.UUID; |
... | ... | @@ -31,7 +31,7 @@ import java.util.UUID; |
31 | 31 | * Created by Valerii Sosliuk on 5/6/2017. |
32 | 32 | */ |
33 | 33 | @SqlDao |
34 | -public interface ComponentDescriptorRepository extends CrudRepository<ComponentDescriptorEntity, UUID> { | |
34 | +public interface ComponentDescriptorRepository extends CrudRepository<ComponentDescriptorEntity, String> { | |
35 | 35 | |
36 | 36 | ComponentDescriptorEntity findByClazz(String clazz); |
37 | 37 | |
... | ... | @@ -40,7 +40,7 @@ public interface ComponentDescriptorRepository extends CrudRepository<ComponentD |
40 | 40 | "AND cd.id > :idOffset ORDER BY cd.id") |
41 | 41 | List<ComponentDescriptorEntity> findByType(@Param("type") ComponentType type, |
42 | 42 | @Param("textSearch") String textSearch, |
43 | - @Param("idOffset") UUID idOffset, | |
43 | + @Param("idOffset") String idOffset, | |
44 | 44 | Pageable pageable); |
45 | 45 | |
46 | 46 | @Query("SELECT cd FROM ComponentDescriptorEntity cd WHERE cd.type = :type " + |
... | ... | @@ -49,7 +49,7 @@ public interface ComponentDescriptorRepository extends CrudRepository<ComponentD |
49 | 49 | List<ComponentDescriptorEntity> findByScopeAndType(@Param("type") ComponentType type, |
50 | 50 | @Param("scope") ComponentScope scope, |
51 | 51 | @Param("textSearch") String textSearch, |
52 | - @Param("idOffset") UUID idOffset, | |
52 | + @Param("idOffset") String idOffset, | |
53 | 53 | Pageable pageable); |
54 | 54 | |
55 | 55 | void deleteByClazz(String clazz); | ... | ... |
... | ... | @@ -20,23 +20,23 @@ import org.springframework.beans.factory.annotation.Autowired; |
20 | 20 | import org.springframework.data.domain.PageRequest; |
21 | 21 | import org.springframework.data.repository.CrudRepository; |
22 | 22 | import org.springframework.stereotype.Component; |
23 | +import org.thingsboard.server.common.data.UUIDConverter; | |
23 | 24 | import org.thingsboard.server.common.data.id.ComponentDescriptorId; |
24 | 25 | import org.thingsboard.server.common.data.page.TextPageLink; |
25 | 26 | import org.thingsboard.server.common.data.plugin.ComponentDescriptor; |
26 | 27 | import org.thingsboard.server.common.data.plugin.ComponentScope; |
27 | 28 | import org.thingsboard.server.common.data.plugin.ComponentType; |
28 | 29 | import org.thingsboard.server.dao.DaoUtil; |
29 | -import org.thingsboard.server.dao.util.SqlDao; | |
30 | 30 | import org.thingsboard.server.dao.component.ComponentDescriptorDao; |
31 | 31 | import org.thingsboard.server.dao.model.sql.ComponentDescriptorEntity; |
32 | 32 | import org.thingsboard.server.dao.sql.JpaAbstractSearchTextDao; |
33 | +import org.thingsboard.server.dao.util.SqlDao; | |
33 | 34 | |
34 | 35 | import java.util.List; |
35 | 36 | import java.util.Objects; |
36 | 37 | import java.util.Optional; |
37 | -import java.util.UUID; | |
38 | 38 | |
39 | -import static org.thingsboard.server.dao.model.ModelConstants.NULL_UUID; | |
39 | +import static org.thingsboard.server.dao.model.ModelConstants.NULL_UUID_STR; | |
40 | 40 | |
41 | 41 | /** |
42 | 42 | * Created by Valerii Sosliuk on 5/6/2017. |
... | ... | @@ -55,7 +55,7 @@ public class JpaBaseComponentDescriptorDao extends JpaAbstractSearchTextDao<Comp |
55 | 55 | } |
56 | 56 | |
57 | 57 | @Override |
58 | - protected CrudRepository<ComponentDescriptorEntity, UUID> getCrudRepository() { | |
58 | + protected CrudRepository<ComponentDescriptorEntity, String> getCrudRepository() { | |
59 | 59 | return componentDescriptorRepository; |
60 | 60 | } |
61 | 61 | |
... | ... | @@ -64,8 +64,7 @@ public class JpaBaseComponentDescriptorDao extends JpaAbstractSearchTextDao<Comp |
64 | 64 | if (component.getId() == null) { |
65 | 65 | component.setId(new ComponentDescriptorId(UUIDs.timeBased())); |
66 | 66 | } |
67 | - boolean exists = componentDescriptorRepository.findOne(component.getId().getId()) != null; | |
68 | - if (!exists) { | |
67 | + if (componentDescriptorRepository.findOne(UUIDConverter.fromTimeUUID(component.getId().getId())) == null) { | |
69 | 68 | return Optional.of(save(component)); |
70 | 69 | } |
71 | 70 | return Optional.empty(); |
... | ... | @@ -87,7 +86,7 @@ public class JpaBaseComponentDescriptorDao extends JpaAbstractSearchTextDao<Comp |
87 | 86 | .findByType( |
88 | 87 | type, |
89 | 88 | Objects.toString(pageLink.getTextSearch(), ""), |
90 | - pageLink.getIdOffset() == null ? NULL_UUID : pageLink.getIdOffset(), | |
89 | + pageLink.getIdOffset() == null ? NULL_UUID_STR : UUIDConverter.fromTimeUUID(pageLink.getIdOffset()), | |
91 | 90 | new PageRequest(0, pageLink.getLimit()))); |
92 | 91 | } |
93 | 92 | |
... | ... | @@ -98,7 +97,7 @@ public class JpaBaseComponentDescriptorDao extends JpaAbstractSearchTextDao<Comp |
98 | 97 | type, |
99 | 98 | scope, |
100 | 99 | Objects.toString(pageLink.getTextSearch(), ""), |
101 | - pageLink.getIdOffset() == null ? NULL_UUID : pageLink.getIdOffset(), | |
100 | + pageLink.getIdOffset() == null ? NULL_UUID_STR : UUIDConverter.fromTimeUUID(pageLink.getIdOffset()), | |
102 | 101 | new PageRequest(0, pageLink.getLimit()))); |
103 | 102 | } |
104 | 103 | ... | ... |
... | ... | @@ -19,26 +19,25 @@ import org.springframework.data.domain.Pageable; |
19 | 19 | import org.springframework.data.jpa.repository.Query; |
20 | 20 | import org.springframework.data.repository.CrudRepository; |
21 | 21 | import org.springframework.data.repository.query.Param; |
22 | -import org.thingsboard.server.dao.util.SqlDao; | |
23 | 22 | import org.thingsboard.server.dao.model.sql.CustomerEntity; |
23 | +import org.thingsboard.server.dao.util.SqlDao; | |
24 | 24 | |
25 | 25 | import java.util.List; |
26 | -import java.util.UUID; | |
27 | 26 | |
28 | 27 | /** |
29 | 28 | * Created by Valerii Sosliuk on 5/6/2017. |
30 | 29 | */ |
31 | 30 | @SqlDao |
32 | -public interface CustomerRepository extends CrudRepository<CustomerEntity, UUID> { | |
31 | +public interface CustomerRepository extends CrudRepository<CustomerEntity, String> { | |
33 | 32 | |
34 | 33 | @Query("SELECT c FROM CustomerEntity c WHERE c.tenantId = :tenantId " + |
35 | 34 | "AND LOWER(c.searchText) LIKE LOWER(CONCAT(:textSearch, '%')) " + |
36 | 35 | "AND c.id > :idOffset ORDER BY c.id") |
37 | - List<CustomerEntity> findByTenantId(@Param("tenantId") UUID tenantId, | |
36 | + List<CustomerEntity> findByTenantId(@Param("tenantId") String tenantId, | |
38 | 37 | @Param("textSearch") String textSearch, |
39 | - @Param("idOffset") UUID idOffset, | |
38 | + @Param("idOffset") String idOffset, | |
40 | 39 | Pageable pageable); |
41 | 40 | |
42 | - CustomerEntity findByTenantIdAndTitle(UUID tenantId, String title); | |
41 | + CustomerEntity findByTenantIdAndTitle(String tenantId, String title); | |
43 | 42 | |
44 | 43 | } | ... | ... |
... | ... | @@ -20,19 +20,20 @@ import org.springframework.data.domain.PageRequest; |
20 | 20 | import org.springframework.data.repository.CrudRepository; |
21 | 21 | import org.springframework.stereotype.Component; |
22 | 22 | import org.thingsboard.server.common.data.Customer; |
23 | +import org.thingsboard.server.common.data.UUIDConverter; | |
23 | 24 | import org.thingsboard.server.common.data.page.TextPageLink; |
24 | 25 | import org.thingsboard.server.dao.DaoUtil; |
25 | -import org.thingsboard.server.dao.util.SqlDao; | |
26 | 26 | import org.thingsboard.server.dao.customer.CustomerDao; |
27 | 27 | import org.thingsboard.server.dao.model.sql.CustomerEntity; |
28 | 28 | import org.thingsboard.server.dao.sql.JpaAbstractSearchTextDao; |
29 | +import org.thingsboard.server.dao.util.SqlDao; | |
29 | 30 | |
30 | 31 | import java.util.List; |
31 | 32 | import java.util.Objects; |
32 | 33 | import java.util.Optional; |
33 | 34 | import java.util.UUID; |
34 | 35 | |
35 | -import static org.thingsboard.server.dao.model.ModelConstants.NULL_UUID; | |
36 | +import static org.thingsboard.server.dao.model.ModelConstants.NULL_UUID_STR; | |
36 | 37 | |
37 | 38 | /** |
38 | 39 | * Created by Valerii Sosliuk on 5/6/2017. |
... | ... | @@ -50,22 +51,22 @@ public class JpaCustomerDao extends JpaAbstractSearchTextDao<CustomerEntity, Cus |
50 | 51 | } |
51 | 52 | |
52 | 53 | @Override |
53 | - protected CrudRepository<CustomerEntity, UUID> getCrudRepository() { | |
54 | + protected CrudRepository<CustomerEntity, String> getCrudRepository() { | |
54 | 55 | return customerRepository; |
55 | 56 | } |
56 | 57 | |
57 | 58 | @Override |
58 | 59 | public List<Customer> findCustomersByTenantId(UUID tenantId, TextPageLink pageLink) { |
59 | 60 | return DaoUtil.convertDataList(customerRepository.findByTenantId( |
60 | - tenantId, | |
61 | + UUIDConverter.fromTimeUUID(tenantId), | |
61 | 62 | Objects.toString(pageLink.getTextSearch(), ""), |
62 | - pageLink.getIdOffset() == null ? NULL_UUID : pageLink.getIdOffset(), | |
63 | + pageLink.getIdOffset() == null ? NULL_UUID_STR : UUIDConverter.fromTimeUUID(pageLink.getIdOffset()), | |
63 | 64 | new PageRequest(0, pageLink.getLimit()))); |
64 | 65 | } |
65 | 66 | |
66 | 67 | @Override |
67 | 68 | public Optional<Customer> findCustomersByTenantIdAndTitle(UUID tenantId, String title) { |
68 | - Customer customer = DaoUtil.getData(customerRepository.findByTenantIdAndTitle(tenantId, title)); | |
69 | + Customer customer = DaoUtil.getData(customerRepository.findByTenantIdAndTitle(UUIDConverter.fromTimeUUID(tenantId), title)); | |
69 | 70 | return Optional.ofNullable(customer); |
70 | 71 | } |
71 | 72 | } | ... | ... |
... | ... | @@ -19,8 +19,8 @@ import org.springframework.data.domain.Pageable; |
19 | 19 | import org.springframework.data.jpa.repository.Query; |
20 | 20 | import org.springframework.data.repository.CrudRepository; |
21 | 21 | import org.springframework.data.repository.query.Param; |
22 | -import org.thingsboard.server.dao.util.SqlDao; | |
23 | 22 | import org.thingsboard.server.dao.model.sql.DashboardInfoEntity; |
23 | +import org.thingsboard.server.dao.util.SqlDao; | |
24 | 24 | |
25 | 25 | import java.util.List; |
26 | 26 | import java.util.UUID; |
... | ... | @@ -29,22 +29,22 @@ import java.util.UUID; |
29 | 29 | * Created by Valerii Sosliuk on 5/6/2017. |
30 | 30 | */ |
31 | 31 | @SqlDao |
32 | -public interface DashboardInfoRepository extends CrudRepository<DashboardInfoEntity, UUID> { | |
32 | +public interface DashboardInfoRepository extends CrudRepository<DashboardInfoEntity, String> { | |
33 | 33 | |
34 | 34 | @Query("SELECT di FROM DashboardInfoEntity di WHERE di.tenantId = :tenantId " + |
35 | 35 | "AND LOWER(di.searchText) LIKE LOWER(CONCAT(:searchText, '%')) " + |
36 | 36 | "AND di.id > :idOffset ORDER BY di.id") |
37 | - List<DashboardInfoEntity> findByTenantId(@Param("tenantId") UUID tenantId, | |
37 | + List<DashboardInfoEntity> findByTenantId(@Param("tenantId") String tenantId, | |
38 | 38 | @Param("searchText") String searchText, |
39 | - @Param("idOffset") UUID idOffset, | |
39 | + @Param("idOffset") String idOffset, | |
40 | 40 | Pageable pageable); |
41 | 41 | |
42 | 42 | @Query("SELECT di FROM DashboardInfoEntity di WHERE di.tenantId = :tenantId " + |
43 | 43 | "AND di.customerId = :customerId AND LOWER(di.searchText) LIKE LOWER(CONCAT(:searchText, '%')) " + |
44 | 44 | "AND di.id > :idOffset ORDER BY di.id") |
45 | - List<DashboardInfoEntity> findByTenantIdAndCustomerId(@Param("tenantId") UUID tenantId, | |
46 | - @Param("customerId") UUID customerId, | |
45 | + List<DashboardInfoEntity> findByTenantIdAndCustomerId(@Param("tenantId") String tenantId, | |
46 | + @Param("customerId") String customerId, | |
47 | 47 | @Param("searchText") String searchText, |
48 | - @Param("idOffset") UUID idOffset, | |
48 | + @Param("idOffset") String idOffset, | |
49 | 49 | Pageable pageable); |
50 | 50 | } | ... | ... |
... | ... | @@ -16,14 +16,12 @@ |
16 | 16 | package org.thingsboard.server.dao.sql.dashboard; |
17 | 17 | |
18 | 18 | import org.springframework.data.repository.CrudRepository; |
19 | -import org.thingsboard.server.dao.util.SqlDao; | |
20 | 19 | import org.thingsboard.server.dao.model.sql.DashboardEntity; |
21 | - | |
22 | -import java.util.UUID; | |
20 | +import org.thingsboard.server.dao.util.SqlDao; | |
23 | 21 | |
24 | 22 | /** |
25 | 23 | * Created by Valerii Sosliuk on 5/6/2017. |
26 | 24 | */ |
27 | 25 | @SqlDao |
28 | -public interface DashboardRepository extends CrudRepository<DashboardEntity, UUID> { | |
26 | +public interface DashboardRepository extends CrudRepository<DashboardEntity, String> { | |
29 | 27 | } | ... | ... |
... | ... | @@ -19,12 +19,10 @@ import org.springframework.beans.factory.annotation.Autowired; |
19 | 19 | import org.springframework.data.repository.CrudRepository; |
20 | 20 | import org.springframework.stereotype.Component; |
21 | 21 | import org.thingsboard.server.common.data.Dashboard; |
22 | -import org.thingsboard.server.dao.util.SqlDao; | |
23 | 22 | import org.thingsboard.server.dao.dashboard.DashboardDao; |
24 | 23 | import org.thingsboard.server.dao.model.sql.DashboardEntity; |
25 | 24 | import org.thingsboard.server.dao.sql.JpaAbstractSearchTextDao; |
26 | - | |
27 | -import java.util.UUID; | |
25 | +import org.thingsboard.server.dao.util.SqlDao; | |
28 | 26 | |
29 | 27 | /** |
30 | 28 | * Created by Valerii Sosliuk on 5/6/2017. |
... | ... | @@ -42,7 +40,7 @@ public class JpaDashboardDao extends JpaAbstractSearchTextDao<DashboardEntity, D |
42 | 40 | } |
43 | 41 | |
44 | 42 | @Override |
45 | - protected CrudRepository<DashboardEntity, UUID> getCrudRepository() { | |
43 | + protected CrudRepository<DashboardEntity, String> getCrudRepository() { | |
46 | 44 | return dashboardRepository; |
47 | 45 | } |
48 | 46 | } | ... | ... |
... | ... | @@ -20,18 +20,19 @@ import org.springframework.data.domain.PageRequest; |
20 | 20 | import org.springframework.data.repository.CrudRepository; |
21 | 21 | import org.springframework.stereotype.Component; |
22 | 22 | import org.thingsboard.server.common.data.DashboardInfo; |
23 | +import org.thingsboard.server.common.data.UUIDConverter; | |
23 | 24 | import org.thingsboard.server.common.data.page.TextPageLink; |
24 | 25 | import org.thingsboard.server.dao.DaoUtil; |
25 | -import org.thingsboard.server.dao.util.SqlDao; | |
26 | 26 | import org.thingsboard.server.dao.dashboard.DashboardInfoDao; |
27 | 27 | import org.thingsboard.server.dao.model.sql.DashboardInfoEntity; |
28 | 28 | import org.thingsboard.server.dao.sql.JpaAbstractSearchTextDao; |
29 | +import org.thingsboard.server.dao.util.SqlDao; | |
29 | 30 | |
30 | 31 | import java.util.List; |
31 | 32 | import java.util.Objects; |
32 | 33 | import java.util.UUID; |
33 | 34 | |
34 | -import static org.thingsboard.server.dao.model.ModelConstants.NULL_UUID; | |
35 | +import static org.thingsboard.server.dao.model.ModelConstants.NULL_UUID_STR; | |
35 | 36 | |
36 | 37 | /** |
37 | 38 | * Created by Valerii Sosliuk on 5/6/2017. |
... | ... | @@ -57,9 +58,9 @@ public class JpaDashboardInfoDao extends JpaAbstractSearchTextDao<DashboardInfoE |
57 | 58 | public List<DashboardInfo> findDashboardsByTenantId(UUID tenantId, TextPageLink pageLink) { |
58 | 59 | return DaoUtil.convertDataList(dashboardInfoRepository |
59 | 60 | .findByTenantId( |
60 | - tenantId, | |
61 | + UUIDConverter.fromTimeUUID(tenantId), | |
61 | 62 | Objects.toString(pageLink.getTextSearch(), ""), |
62 | - pageLink.getIdOffset() == null ? NULL_UUID : pageLink.getIdOffset(), | |
63 | + pageLink.getIdOffset() == null ? NULL_UUID_STR : UUIDConverter.fromTimeUUID(pageLink.getIdOffset()), | |
63 | 64 | new PageRequest(0, pageLink.getLimit()))); |
64 | 65 | } |
65 | 66 | |
... | ... | @@ -67,10 +68,10 @@ public class JpaDashboardInfoDao extends JpaAbstractSearchTextDao<DashboardInfoE |
67 | 68 | public List<DashboardInfo> findDashboardsByTenantIdAndCustomerId(UUID tenantId, UUID customerId, TextPageLink pageLink) { |
68 | 69 | return DaoUtil.convertDataList(dashboardInfoRepository |
69 | 70 | .findByTenantIdAndCustomerId( |
70 | - tenantId, | |
71 | - customerId, | |
71 | + UUIDConverter.fromTimeUUID(tenantId), | |
72 | + UUIDConverter.fromTimeUUID(customerId), | |
72 | 73 | Objects.toString(pageLink.getTextSearch(), ""), |
73 | - pageLink.getIdOffset() == null ? NULL_UUID : pageLink.getIdOffset(), | |
74 | + pageLink.getIdOffset() == null ? NULL_UUID_STR : UUIDConverter.fromTimeUUID(pageLink.getIdOffset()), | |
74 | 75 | new PageRequest(0, pageLink.getLimit()))); |
75 | 76 | } |
76 | 77 | } | ... | ... |
... | ... | @@ -16,18 +16,16 @@ |
16 | 16 | package org.thingsboard.server.dao.sql.device; |
17 | 17 | |
18 | 18 | import org.springframework.data.repository.CrudRepository; |
19 | -import org.thingsboard.server.dao.util.SqlDao; | |
20 | 19 | import org.thingsboard.server.dao.model.sql.DeviceCredentialsEntity; |
21 | - | |
22 | -import java.util.UUID; | |
20 | +import org.thingsboard.server.dao.util.SqlDao; | |
23 | 21 | |
24 | 22 | /** |
25 | 23 | * Created by Valerii Sosliuk on 5/6/2017. |
26 | 24 | */ |
27 | 25 | @SqlDao |
28 | -public interface DeviceCredentialsRepository extends CrudRepository<DeviceCredentialsEntity, UUID> { | |
26 | +public interface DeviceCredentialsRepository extends CrudRepository<DeviceCredentialsEntity, String> { | |
29 | 27 | |
30 | - DeviceCredentialsEntity findByDeviceId(UUID deviceId); | |
28 | + DeviceCredentialsEntity findByDeviceId(String deviceId); | |
31 | 29 | |
32 | 30 | DeviceCredentialsEntity findByCredentialsId(String credentialsId); |
33 | 31 | } | ... | ... |
... | ... | @@ -19,46 +19,45 @@ import org.springframework.data.domain.Pageable; |
19 | 19 | import org.springframework.data.jpa.repository.Query; |
20 | 20 | import org.springframework.data.repository.CrudRepository; |
21 | 21 | import org.springframework.data.repository.query.Param; |
22 | -import org.thingsboard.server.dao.util.SqlDao; | |
23 | 22 | import org.thingsboard.server.dao.model.sql.DeviceEntity; |
24 | 23 | import org.thingsboard.server.dao.model.sql.TenantDeviceTypeEntity; |
24 | +import org.thingsboard.server.dao.util.SqlDao; | |
25 | 25 | |
26 | 26 | import java.util.List; |
27 | -import java.util.UUID; | |
28 | 27 | |
29 | 28 | /** |
30 | 29 | * Created by Valerii Sosliuk on 5/6/2017. |
31 | 30 | */ |
32 | 31 | @SqlDao |
33 | -public interface DeviceRepository extends CrudRepository<DeviceEntity, UUID> { | |
32 | +public interface DeviceRepository extends CrudRepository<DeviceEntity, String> { | |
34 | 33 | |
35 | 34 | |
36 | 35 | @Query("SELECT d FROM DeviceEntity d WHERE d.tenantId = :tenantId " + |
37 | 36 | "AND d.customerId = :customerId " + |
38 | 37 | "AND LOWER(d.searchText) LIKE LOWER(CONCAT(:searchText, '%')) " + |
39 | 38 | "AND d.id > :idOffset ORDER BY d.id") |
40 | - List<DeviceEntity> findByTenantIdAndCustomerId(@Param("tenantId") UUID tenantId, | |
41 | - @Param("customerId") UUID customerId, | |
39 | + List<DeviceEntity> findByTenantIdAndCustomerId(@Param("tenantId") String tenantId, | |
40 | + @Param("customerId") String customerId, | |
42 | 41 | @Param("searchText") String searchText, |
43 | - @Param("idOffset") UUID idOffset, | |
42 | + @Param("idOffset") String idOffset, | |
44 | 43 | Pageable pageable); |
45 | 44 | |
46 | 45 | @Query("SELECT d FROM DeviceEntity d WHERE d.tenantId = :tenantId " + |
47 | 46 | "AND LOWER(d.searchText) LIKE LOWER(CONCAT(:textSearch, '%')) " + |
48 | 47 | "AND d.id > :idOffset ORDER BY d.id") |
49 | - List<DeviceEntity> findByTenantId(@Param("tenantId") UUID tenantId, | |
48 | + List<DeviceEntity> findByTenantId(@Param("tenantId") String tenantId, | |
50 | 49 | @Param("textSearch") String textSearch, |
51 | - @Param("idOffset") UUID idOffset, | |
50 | + @Param("idOffset") String idOffset, | |
52 | 51 | Pageable pageable); |
53 | 52 | |
54 | 53 | @Query("SELECT d FROM DeviceEntity d WHERE d.tenantId = :tenantId " + |
55 | 54 | "AND d.type = :type " + |
56 | 55 | "AND LOWER(d.searchText) LIKE LOWER(CONCAT(:textSearch, '%')) " + |
57 | 56 | "AND d.id > :idOffset ORDER BY d.id") |
58 | - List<DeviceEntity> findByTenantIdAndType(@Param("tenantId") UUID tenantId, | |
57 | + List<DeviceEntity> findByTenantIdAndType(@Param("tenantId") String tenantId, | |
59 | 58 | @Param("type") String type, |
60 | 59 | @Param("textSearch") String textSearch, |
61 | - @Param("idOffset") UUID idOffset, | |
60 | + @Param("idOffset") String idOffset, | |
62 | 61 | Pageable pageable); |
63 | 62 | |
64 | 63 | @Query("SELECT d FROM DeviceEntity d WHERE d.tenantId = :tenantId " + |
... | ... | @@ -66,19 +65,19 @@ public interface DeviceRepository extends CrudRepository<DeviceEntity, UUID> { |
66 | 65 | "AND d.type = :type " + |
67 | 66 | "AND LOWER(d.searchText) LIKE LOWER(CONCAT(:textSearch, '%')) " + |
68 | 67 | "AND d.id > :idOffset ORDER BY d.id") |
69 | - List<DeviceEntity> findByTenantIdAndCustomerIdAndType(@Param("tenantId") UUID tenantId, | |
70 | - @Param("customerId") UUID customerId, | |
68 | + List<DeviceEntity> findByTenantIdAndCustomerIdAndType(@Param("tenantId") String tenantId, | |
69 | + @Param("customerId") String customerId, | |
71 | 70 | @Param("type") String type, |
72 | 71 | @Param("textSearch") String textSearch, |
73 | - @Param("idOffset") UUID idOffset, | |
72 | + @Param("idOffset") String idOffset, | |
74 | 73 | Pageable pageable); |
75 | 74 | |
76 | 75 | @Query("SELECT DISTINCT NEW org.thingsboard.server.dao.model.sql.TenantDeviceTypeEntity(d.tenantId, d.type) FROM DeviceEntity d") |
77 | 76 | List<TenantDeviceTypeEntity> findTenantDeviceTypes(); |
78 | 77 | |
79 | - DeviceEntity findByTenantIdAndName(UUID tenantId, String name); | |
78 | + DeviceEntity findByTenantIdAndName(String tenantId, String name); | |
80 | 79 | |
81 | - List<DeviceEntity> findDevicesByTenantIdAndCustomerIdAndIdIn(UUID tenantId, UUID customerId, List<UUID> deviceIds); | |
80 | + List<DeviceEntity> findDevicesByTenantIdAndCustomerIdAndIdIn(String tenantId, String customerId, List<String> deviceIds); | |
82 | 81 | |
83 | - List<DeviceEntity> findDevicesByTenantIdAndIdIn(UUID tenantId, List<UUID> deviceIds); | |
82 | + List<DeviceEntity> findDevicesByTenantIdAndIdIn(String tenantId, List<String> deviceIds); | |
84 | 83 | } | ... | ... |
... | ... | @@ -18,12 +18,13 @@ package org.thingsboard.server.dao.sql.device; |
18 | 18 | import org.springframework.beans.factory.annotation.Autowired; |
19 | 19 | import org.springframework.data.repository.CrudRepository; |
20 | 20 | import org.springframework.stereotype.Component; |
21 | +import org.thingsboard.server.common.data.UUIDConverter; | |
21 | 22 | import org.thingsboard.server.common.data.security.DeviceCredentials; |
22 | 23 | import org.thingsboard.server.dao.DaoUtil; |
23 | -import org.thingsboard.server.dao.util.SqlDao; | |
24 | 24 | import org.thingsboard.server.dao.device.DeviceCredentialsDao; |
25 | 25 | import org.thingsboard.server.dao.model.sql.DeviceCredentialsEntity; |
26 | 26 | import org.thingsboard.server.dao.sql.JpaAbstractDao; |
27 | +import org.thingsboard.server.dao.util.SqlDao; | |
27 | 28 | |
28 | 29 | import java.util.UUID; |
29 | 30 | |
... | ... | @@ -43,13 +44,13 @@ public class JpaDeviceCredentialsDao extends JpaAbstractDao<DeviceCredentialsEnt |
43 | 44 | } |
44 | 45 | |
45 | 46 | @Override |
46 | - protected CrudRepository<DeviceCredentialsEntity, UUID> getCrudRepository() { | |
47 | + protected CrudRepository<DeviceCredentialsEntity, String> getCrudRepository() { | |
47 | 48 | return deviceCredentialsRepository; |
48 | 49 | } |
49 | 50 | |
50 | 51 | @Override |
51 | 52 | public DeviceCredentials findByDeviceId(UUID deviceId) { |
52 | - return DaoUtil.getData(deviceCredentialsRepository.findByDeviceId(deviceId)); | |
53 | + return DaoUtil.getData(deviceCredentialsRepository.findByDeviceId(UUIDConverter.fromTimeUUID(deviceId))); | |
53 | 54 | } |
54 | 55 | |
55 | 56 | @Override | ... | ... |
... | ... | @@ -22,18 +22,21 @@ import org.springframework.data.repository.CrudRepository; |
22 | 22 | import org.springframework.stereotype.Component; |
23 | 23 | import org.thingsboard.server.common.data.Device; |
24 | 24 | import org.thingsboard.server.common.data.TenantDeviceType; |
25 | +import org.thingsboard.server.common.data.UUIDConverter; | |
25 | 26 | import org.thingsboard.server.common.data.id.TenantId; |
26 | 27 | import org.thingsboard.server.common.data.page.TextPageLink; |
27 | 28 | import org.thingsboard.server.dao.DaoUtil; |
28 | -import org.thingsboard.server.dao.util.SqlDao; | |
29 | 29 | import org.thingsboard.server.dao.device.DeviceDao; |
30 | 30 | import org.thingsboard.server.dao.model.sql.DeviceEntity; |
31 | 31 | import org.thingsboard.server.dao.model.sql.TenantDeviceTypeEntity; |
32 | 32 | import org.thingsboard.server.dao.sql.JpaAbstractSearchTextDao; |
33 | +import org.thingsboard.server.dao.util.SqlDao; | |
33 | 34 | |
34 | 35 | import java.util.*; |
35 | 36 | |
36 | -import static org.thingsboard.server.dao.model.ModelConstants.NULL_UUID; | |
37 | +import static org.thingsboard.server.common.data.UUIDConverter.fromTimeUUID; | |
38 | +import static org.thingsboard.server.common.data.UUIDConverter.fromTimeUUIDs; | |
39 | +import static org.thingsboard.server.dao.model.ModelConstants.NULL_UUID_STR; | |
37 | 40 | |
38 | 41 | /** |
39 | 42 | * Created by Valerii Sosliuk on 5/6/2017. |
... | ... | @@ -51,7 +54,7 @@ public class JpaDeviceDao extends JpaAbstractSearchTextDao<DeviceEntity, Device> |
51 | 54 | } |
52 | 55 | |
53 | 56 | @Override |
54 | - protected CrudRepository<DeviceEntity, UUID> getCrudRepository() { | |
57 | + protected CrudRepository<DeviceEntity, String> getCrudRepository() { | |
55 | 58 | return deviceRepository; |
56 | 59 | } |
57 | 60 | |
... | ... | @@ -59,37 +62,37 @@ public class JpaDeviceDao extends JpaAbstractSearchTextDao<DeviceEntity, Device> |
59 | 62 | public List<Device> findDevicesByTenantId(UUID tenantId, TextPageLink pageLink) { |
60 | 63 | return DaoUtil.convertDataList( |
61 | 64 | deviceRepository.findByTenantId( |
62 | - tenantId, | |
65 | + fromTimeUUID(tenantId), | |
63 | 66 | Objects.toString(pageLink.getTextSearch(), ""), |
64 | - pageLink.getIdOffset() == null ? NULL_UUID : pageLink.getIdOffset(), | |
67 | + pageLink.getIdOffset() == null ? NULL_UUID_STR : fromTimeUUID(pageLink.getIdOffset()), | |
65 | 68 | new PageRequest(0, pageLink.getLimit()))); |
66 | 69 | } |
67 | 70 | |
68 | 71 | @Override |
69 | 72 | public ListenableFuture<List<Device>> findDevicesByTenantIdAndIdsAsync(UUID tenantId, List<UUID> deviceIds) { |
70 | - return service.submit(() -> DaoUtil.convertDataList(deviceRepository.findDevicesByTenantIdAndIdIn(tenantId, deviceIds))); | |
73 | + return service.submit(() -> DaoUtil.convertDataList(deviceRepository.findDevicesByTenantIdAndIdIn(UUIDConverter.fromTimeUUID(tenantId), fromTimeUUIDs(deviceIds)))); | |
71 | 74 | } |
72 | 75 | |
73 | 76 | @Override |
74 | 77 | public List<Device> findDevicesByTenantIdAndCustomerId(UUID tenantId, UUID customerId, TextPageLink pageLink) { |
75 | 78 | return DaoUtil.convertDataList( |
76 | 79 | deviceRepository.findByTenantIdAndCustomerId( |
77 | - tenantId, | |
78 | - customerId, | |
80 | + fromTimeUUID(tenantId), | |
81 | + fromTimeUUID(customerId), | |
79 | 82 | Objects.toString(pageLink.getTextSearch(), ""), |
80 | - pageLink.getIdOffset() == null ? NULL_UUID : pageLink.getIdOffset(), | |
83 | + pageLink.getIdOffset() == null ? NULL_UUID_STR : fromTimeUUID(pageLink.getIdOffset()), | |
81 | 84 | new PageRequest(0, pageLink.getLimit()))); |
82 | 85 | } |
83 | 86 | |
84 | 87 | @Override |
85 | 88 | public ListenableFuture<List<Device>> findDevicesByTenantIdCustomerIdAndIdsAsync(UUID tenantId, UUID customerId, List<UUID> deviceIds) { |
86 | 89 | return service.submit(() -> DaoUtil.convertDataList( |
87 | - deviceRepository.findDevicesByTenantIdAndCustomerIdAndIdIn(tenantId, customerId, deviceIds))); | |
90 | + deviceRepository.findDevicesByTenantIdAndCustomerIdAndIdIn(fromTimeUUID(tenantId), fromTimeUUID(customerId), fromTimeUUIDs(deviceIds)))); | |
88 | 91 | } |
89 | 92 | |
90 | 93 | @Override |
91 | 94 | public Optional<Device> findDeviceByTenantIdAndName(UUID tenantId, String name) { |
92 | - Device device = DaoUtil.getData(deviceRepository.findByTenantIdAndName(tenantId, name)); | |
95 | + Device device = DaoUtil.getData(deviceRepository.findByTenantIdAndName(fromTimeUUID(tenantId), name)); | |
93 | 96 | return Optional.ofNullable(device); |
94 | 97 | } |
95 | 98 | |
... | ... | @@ -97,10 +100,10 @@ public class JpaDeviceDao extends JpaAbstractSearchTextDao<DeviceEntity, Device> |
97 | 100 | public List<Device> findDevicesByTenantIdAndType(UUID tenantId, String type, TextPageLink pageLink) { |
98 | 101 | return DaoUtil.convertDataList( |
99 | 102 | deviceRepository.findByTenantIdAndType( |
100 | - tenantId, | |
103 | + fromTimeUUID(tenantId), | |
101 | 104 | type, |
102 | 105 | Objects.toString(pageLink.getTextSearch(), ""), |
103 | - pageLink.getIdOffset() == null ? NULL_UUID : pageLink.getIdOffset(), | |
106 | + pageLink.getIdOffset() == null ? NULL_UUID_STR : fromTimeUUID(pageLink.getIdOffset()), | |
104 | 107 | new PageRequest(0, pageLink.getLimit()))); |
105 | 108 | } |
106 | 109 | |
... | ... | @@ -108,11 +111,11 @@ public class JpaDeviceDao extends JpaAbstractSearchTextDao<DeviceEntity, Device> |
108 | 111 | public List<Device> findDevicesByTenantIdAndCustomerIdAndType(UUID tenantId, UUID customerId, String type, TextPageLink pageLink) { |
109 | 112 | return DaoUtil.convertDataList( |
110 | 113 | deviceRepository.findByTenantIdAndCustomerIdAndType( |
111 | - tenantId, | |
112 | - customerId, | |
114 | + fromTimeUUID(tenantId), | |
115 | + fromTimeUUID(customerId), | |
113 | 116 | type, |
114 | 117 | Objects.toString(pageLink.getTextSearch(), ""), |
115 | - pageLink.getIdOffset() == null ? NULL_UUID : pageLink.getIdOffset(), | |
118 | + pageLink.getIdOffset() == null ? NULL_UUID_STR : fromTimeUUID(pageLink.getIdOffset()), | |
116 | 119 | new PageRequest(0, pageLink.getLimit()))); |
117 | 120 | } |
118 | 121 | |
... | ... | @@ -126,7 +129,7 @@ public class JpaDeviceDao extends JpaAbstractSearchTextDao<DeviceEntity, Device> |
126 | 129 | if (entities != null && !entities.isEmpty()) { |
127 | 130 | list = new ArrayList<>(); |
128 | 131 | for (TenantDeviceTypeEntity entity : entities) { |
129 | - list.add(new TenantDeviceType(entity.getType(), new TenantId(entity.getTenantId()))); | |
132 | + list.add(new TenantDeviceType(entity.getType(), new TenantId(UUIDConverter.fromString(entity.getTenantId())))); | |
130 | 133 | } |
131 | 134 | } |
132 | 135 | return list; | ... | ... |
... | ... | @@ -21,21 +21,19 @@ import org.thingsboard.server.common.data.EntityType; |
21 | 21 | import org.thingsboard.server.dao.model.sql.EventEntity; |
22 | 22 | import org.thingsboard.server.dao.util.SqlDao; |
23 | 23 | |
24 | -import java.util.UUID; | |
25 | - | |
26 | 24 | /** |
27 | 25 | * Created by Valerii Sosliuk on 5/3/2017. |
28 | 26 | */ |
29 | 27 | @SqlDao |
30 | -public interface EventRepository extends CrudRepository<EventEntity, UUID>, JpaSpecificationExecutor<EventEntity> { | |
28 | +public interface EventRepository extends CrudRepository<EventEntity, String>, JpaSpecificationExecutor<EventEntity> { | |
31 | 29 | |
32 | - EventEntity findByTenantIdAndEntityTypeAndEntityIdAndEventTypeAndEventUid(UUID tenantId, | |
30 | + EventEntity findByTenantIdAndEntityTypeAndEntityIdAndEventTypeAndEventUid(String tenantId, | |
33 | 31 | EntityType entityType, |
34 | - UUID entityId, | |
32 | + String entityId, | |
35 | 33 | String eventType, |
36 | 34 | String eventUid); |
37 | 35 | |
38 | - EventEntity findByTenantIdAndEntityTypeAndEntityId(UUID tenantId, | |
36 | + EventEntity findByTenantIdAndEntityTypeAndEntityId(String tenantId, | |
39 | 37 | EntityType entityType, |
40 | - UUID entityId); | |
38 | + String entityId); | |
41 | 39 | } | ... | ... |
... | ... | @@ -26,14 +26,15 @@ import org.springframework.data.jpa.domain.Specification; |
26 | 26 | import org.springframework.data.repository.CrudRepository; |
27 | 27 | import org.springframework.stereotype.Component; |
28 | 28 | import org.thingsboard.server.common.data.Event; |
29 | +import org.thingsboard.server.common.data.UUIDConverter; | |
29 | 30 | import org.thingsboard.server.common.data.id.EntityId; |
30 | 31 | import org.thingsboard.server.common.data.id.EventId; |
31 | 32 | import org.thingsboard.server.common.data.page.TimePageLink; |
32 | 33 | import org.thingsboard.server.dao.DaoUtil; |
33 | -import org.thingsboard.server.dao.util.SqlDao; | |
34 | 34 | import org.thingsboard.server.dao.event.EventDao; |
35 | 35 | import org.thingsboard.server.dao.model.sql.EventEntity; |
36 | 36 | import org.thingsboard.server.dao.sql.JpaAbstractSearchTimeDao; |
37 | +import org.thingsboard.server.dao.util.SqlDao; | |
37 | 38 | |
38 | 39 | import javax.persistence.criteria.CriteriaBuilder; |
39 | 40 | import javax.persistence.criteria.CriteriaQuery; |
... | ... | @@ -67,7 +68,7 @@ public class JpaBaseEventDao extends JpaAbstractSearchTimeDao<EventEntity, Event |
67 | 68 | } |
68 | 69 | |
69 | 70 | @Override |
70 | - protected CrudRepository<EventEntity, UUID> getCrudRepository() { | |
71 | + protected CrudRepository<EventEntity, String> getCrudRepository() { | |
71 | 72 | return eventRepository; |
72 | 73 | } |
73 | 74 | |
... | ... | @@ -91,7 +92,7 @@ public class JpaBaseEventDao extends JpaAbstractSearchTimeDao<EventEntity, Event |
91 | 92 | @Override |
92 | 93 | public Event findEvent(UUID tenantId, EntityId entityId, String eventType, String eventUid) { |
93 | 94 | return DaoUtil.getData(eventRepository.findByTenantIdAndEntityTypeAndEntityIdAndEventTypeAndEventUid( |
94 | - tenantId, entityId.getEntityType(), entityId.getId(), eventType, eventUid)); | |
95 | + UUIDConverter.fromTimeUUID(tenantId), entityId.getEntityType(), UUIDConverter.fromTimeUUID(entityId.getId()), eventType, eventUid)); | |
95 | 96 | } |
96 | 97 | |
97 | 98 | @Override |
... | ... | @@ -112,7 +113,7 @@ public class JpaBaseEventDao extends JpaAbstractSearchTimeDao<EventEntity, Event |
112 | 113 | log.debug("Save event [{}] ", entity); |
113 | 114 | if (entity.getTenantId() == null) { |
114 | 115 | log.trace("Save system event with predefined id {}", systemTenantId); |
115 | - entity.setTenantId(systemTenantId); | |
116 | + entity.setTenantId(UUIDConverter.fromTimeUUID(systemTenantId)); | |
116 | 117 | } |
117 | 118 | if (entity.getId() == null) { |
118 | 119 | entity.setId(UUIDs.timeBased()); |
... | ... | @@ -133,13 +134,13 @@ public class JpaBaseEventDao extends JpaAbstractSearchTimeDao<EventEntity, Event |
133 | 134 | public Predicate toPredicate(Root<EventEntity> root, CriteriaQuery<?> criteriaQuery, CriteriaBuilder criteriaBuilder) { |
134 | 135 | List<Predicate> predicates = new ArrayList<Predicate>(); |
135 | 136 | if (tenantId != null) { |
136 | - Predicate tenantIdPredicate = criteriaBuilder.equal(root.get("tenantId"), tenantId); | |
137 | + Predicate tenantIdPredicate = criteriaBuilder.equal(root.get("tenantId"), UUIDConverter.fromTimeUUID(tenantId)); | |
137 | 138 | predicates.add(tenantIdPredicate); |
138 | 139 | } |
139 | 140 | if (entityId != null) { |
140 | 141 | Predicate entityTypePredicate = criteriaBuilder.equal(root.get("entityType"), entityId.getEntityType()); |
141 | 142 | predicates.add(entityTypePredicate); |
142 | - Predicate entityIdPredicate = criteriaBuilder.equal(root.get("entityId"), entityId.getId()); | |
143 | + Predicate entityIdPredicate = criteriaBuilder.equal(root.get("entityId"), UUIDConverter.fromTimeUUID(entityId.getId())); | |
143 | 144 | predicates.add(entityIdPredicate); |
144 | 145 | } |
145 | 146 | if (eventType != null) { | ... | ... |