Commit d8bbdfba688af93bc58c90e2a0397a6fc676870f
Merge branch 'feature/TB-70' of github.com:thingsboard/thingsboard into feature/TB-70
Showing
100 changed files
with
756 additions
and
672 deletions
Too many changes to show.
To preserve performance only 100 of 134 files are displayed.
... | ... | @@ -6,19 +6,35 @@ |
6 | 6 | }, |
7 | 7 | "widgetTypes": [ |
8 | 8 | { |
9 | - "alias": "device_terminal", | |
10 | - "name": "Device terminal", | |
9 | + "alias": "rpc_debug_terminal", | |
10 | + "name": "RPC debug terminal", | |
11 | 11 | "descriptor": { |
12 | 12 | "type": "rpc", |
13 | 13 | "sizeX": 9.5, |
14 | 14 | "sizeY": 5.5, |
15 | 15 | "resources": [], |
16 | - "templateHtml": "<div style=\"height: 100%;\" id=\"device-terminal\"></div>", | |
16 | + "templateHtml": "<div style=\"height: 100%; overflow-y: auto;\" id=\"device-terminal\"></div>", | |
17 | 17 | "templateCss": ".cmd .cursor.blink {\n -webkit-animation-name: terminal-underline;\n -moz-animation-name: terminal-underline;\n -ms-animation-name: terminal-underline;\n animation-name: terminal-underline;\n}\n.terminal .inverted, .cmd .inverted {\n border-bottom-color: #aaa;\n}\n", |
18 | - "controllerScript": "var requestTimeout = 500;\n\nself.onInit = function() {\n var subscription = self.ctx.defaultSubscription;\n var rpcEnabled = subscription.rpcEnabled;\n var deviceName = 'Simulated';\n var prompt;\n if (subscription.targetDeviceName && subscription.targetDeviceName.length) {\n deviceName = subscription.targetDeviceName;\n }\n if (self.ctx.settings.requestTimeout) {\n requestTimeout = self.ctx.settings.requestTimeout;\n }\n var greetings = 'Welcome to ThingsBoard RPC commands terminal.\\n\\n';\n if (!rpcEnabled) {\n greetings += 'Target device is not set!\\n\\n';\n prompt = '';\n } else {\n greetings += 'Current target device for RPC commands: [[b;#fff;]' + deviceName + ']\\n\\n';\n greetings += 'Please type [[b;#fff;]\\'help\\'] to see usage.\\n';\n prompt = '[[b;#8bc34a;]' + deviceName +']> ';\n }\n \n var terminal = $('#device-terminal', self.ctx.$container).terminal(\n function(command) {\n if (command !== '') {\n try {\n var localCommand = angular.copy(command).trim();\n if (localCommand == 'help') {\n printUsage(this);\n } else {\n var cmdObj = $.terminal.parse_command(localCommand);\n if (cmdObj.args.length > 1) {\n this.error(\"Wrong number of arguments!\");\n this.echo(' ');\n } else {\n var params;\n if (cmdObj.args.length && cmdObj.args[0]) {\n try {\n params = JSON.parse(cmdObj.args[0]);\n } catch (e) {\n params = cmdObj.args[0];\n }\n }\n performRpc(this, cmdObj.name, params);\n }\n }\n } catch(e) {\n this.error(new String(e));\n }\n } else {\n this.echo('');\n }\n }, {\n greetings: greetings,\n prompt: prompt\n });\n \n if (!rpcEnabled) {\n terminal.error('No RPC target detected!').pause();\n }\n}\n\n\nfunction printUsage(terminal) {\n var commandsListText = '\\n[[b;#fff;]Usage:]\\n';\n commandsListText += ' <method> [params body]\\n\\n';\n commandsListText += '[[b;#fff;]Example 1:]\\n'; \n commandsListText += ' myRemoteMethod1 myText\\n\\n'; \n commandsListText += '[[b;#fff;]Example 2:]\\n'; \n commandsListText += ' myOtherRemoteMethod \"{\\\\\"key1\\\\\": 2, \\\\\"key2\\\\\": \\\\\"myVal\\\\\"}\"\\n'; \n terminal.echo(new String(commandsListText));\n}\n\nfunction performRpc(terminal, method, params) {\n terminal.pause();\n self.ctx.controlApi.sendTwoWayCommand(method, params, requestTimeout).then(\n function success(responseBody) {\n terminal.echo(JSON.stringify(responseBody));\n terminal.echo(' ');\n terminal.resume();\n },\n function fail() {\n var errorText = self.ctx.defaultSubscription.rpcErrorText;\n terminal.error(errorText);\n terminal.echo(' ');\n terminal.resume();\n }\n );\n}\n\n \nself.onDestroy = function() {\n}\n", | |
18 | + "controllerScript": "var requestTimeout = 500;\n\nself.onInit = function() {\n var subscription = self.ctx.defaultSubscription;\n var rpcEnabled = subscription.rpcEnabled;\n var deviceName = 'Simulated';\n var prompt;\n if (subscription.targetDeviceName && subscription.targetDeviceName.length) {\n deviceName = subscription.targetDeviceName;\n }\n if (self.ctx.settings.requestTimeout) {\n requestTimeout = self.ctx.settings.requestTimeout;\n }\n var greetings = 'Welcome to ThingsBoard RPC debug terminal.\\n\\n';\n if (!rpcEnabled) {\n greetings += 'Target device is not set!\\n\\n';\n prompt = '';\n } else {\n greetings += 'Current target device for RPC commands: [[b;#fff;]' + deviceName + ']\\n\\n';\n greetings += 'Please type [[b;#fff;]\\'help\\'] to see usage.\\n';\n prompt = '[[b;#8bc34a;]' + deviceName +']> ';\n }\n \n var terminal = $('#device-terminal', self.ctx.$container).terminal(\n function(command) {\n if (command !== '') {\n try {\n var localCommand = angular.copy(command).trim();\n if (localCommand == 'help') {\n printUsage(this);\n } else {\n var cmdObj = $.terminal.parse_command(localCommand);\n if (cmdObj.args.length > 1) {\n this.error(\"Wrong number of arguments!\");\n this.echo(' ');\n } else {\n var params;\n if (cmdObj.args.length && cmdObj.args[0]) {\n try {\n params = JSON.parse(cmdObj.args[0]);\n } catch (e) {\n params = cmdObj.args[0];\n }\n }\n performRpc(this, cmdObj.name, params);\n }\n }\n } catch(e) {\n this.error(new String(e));\n }\n } else {\n this.echo('');\n }\n }, {\n greetings: greetings,\n prompt: prompt\n });\n \n if (!rpcEnabled) {\n terminal.error('No RPC target detected!').pause();\n }\n}\n\n\nfunction printUsage(terminal) {\n var commandsListText = '\\n[[b;#fff;]Usage:]\\n';\n commandsListText += ' <method> [params body]\\n\\n';\n commandsListText += '[[b;#fff;]Example 1:]\\n'; \n commandsListText += ' myRemoteMethod1 myText\\n\\n'; \n commandsListText += '[[b;#fff;]Example 2:]\\n'; \n commandsListText += ' myOtherRemoteMethod \"{\\\\\"key1\\\\\": 2, \\\\\"key2\\\\\": \\\\\"myVal\\\\\"}\"\\n'; \n terminal.echo(new String(commandsListText));\n}\n\nfunction performRpc(terminal, method, params) {\n terminal.pause();\n self.ctx.controlApi.sendTwoWayCommand(method, params, requestTimeout).then(\n function success(responseBody) {\n terminal.echo(JSON.stringify(responseBody));\n terminal.echo(' ');\n terminal.resume();\n },\n function fail() {\n var errorText = self.ctx.defaultSubscription.rpcErrorText;\n terminal.error(errorText);\n terminal.echo(' ');\n terminal.resume();\n }\n );\n}\n\n \nself.onDestroy = function() {\n}\n", | |
19 | 19 | "settingsSchema": "{\n \"schema\": {\n \"type\": \"object\",\n \"title\": \"Settings\",\n \"properties\": {\n \"requestTimeout\": {\n \"title\": \"RPC request timeout (ms)\",\n \"type\": \"number\",\n \"default\": 500\n }\n },\n \"required\": [\"requestTimeout\"]\n },\n \"form\": [\n \"requestTimeout\"\n ]\n}", |
20 | 20 | "dataKeySettingsSchema": "{}\n", |
21 | - "defaultConfig": "{\"targetDeviceAliases\":[],\"showTitle\":true,\"backgroundColor\":\"#010101\",\"color\":\"rgba(255, 254, 254, 0.87)\",\"padding\":\"0px\",\"settings\":{\"parseGpioStatusFunction\":\"return body[pin] === true;\",\"gpioStatusChangeRequest\":{\"method\":\"setGpioStatus\",\"paramsBody\":\"{\\n \\\"pin\\\": \\\"{$pin}\\\",\\n \\\"enabled\\\": \\\"{$enabled}\\\"\\n}\"},\"requestTimeout\":500,\"switchPanelBackgroundColor\":\"#b71c1c\",\"gpioStatusRequest\":{\"method\":\"getGpioStatus\",\"paramsBody\":\"{}\"},\"gpioList\":[{\"pin\":1,\"label\":\"GPIO 1\",\"row\":0,\"col\":0,\"_uniqueKey\":0},{\"pin\":2,\"label\":\"GPIO 2\",\"row\":0,\"col\":1,\"_uniqueKey\":1},{\"pin\":3,\"label\":\"GPIO 3\",\"row\":1,\"col\":0,\"_uniqueKey\":2}]},\"title\":\"Device terminal\",\"dropShadow\":true,\"enableFullscreen\":true,\"widgetStyle\":{},\"titleStyle\":{\"fontSize\":\"16px\",\"fontWeight\":400},\"useDashboardTimewindow\":true,\"showLegend\":false,\"actions\":{}}" | |
21 | + "defaultConfig": "{\"targetDeviceAliases\":[],\"showTitle\":true,\"backgroundColor\":\"#010101\",\"color\":\"rgba(255, 254, 254, 0.87)\",\"padding\":\"0px\",\"settings\":{\"parseGpioStatusFunction\":\"return body[pin] === true;\",\"gpioStatusChangeRequest\":{\"method\":\"setGpioStatus\",\"paramsBody\":\"{\\n \\\"pin\\\": \\\"{$pin}\\\",\\n \\\"enabled\\\": \\\"{$enabled}\\\"\\n}\"},\"requestTimeout\":500,\"switchPanelBackgroundColor\":\"#b71c1c\",\"gpioStatusRequest\":{\"method\":\"getGpioStatus\",\"paramsBody\":\"{}\"},\"gpioList\":[{\"pin\":1,\"label\":\"GPIO 1\",\"row\":0,\"col\":0,\"_uniqueKey\":0},{\"pin\":2,\"label\":\"GPIO 2\",\"row\":0,\"col\":1,\"_uniqueKey\":1},{\"pin\":3,\"label\":\"GPIO 3\",\"row\":1,\"col\":0,\"_uniqueKey\":2}]},\"title\":\"RPC debug terminal\",\"dropShadow\":true,\"enableFullscreen\":true,\"widgetStyle\":{},\"titleStyle\":{\"fontSize\":\"16px\",\"fontWeight\":400},\"useDashboardTimewindow\":true,\"showLegend\":false,\"actions\":{}}" | |
22 | + } | |
23 | + }, | |
24 | + { | |
25 | + "alias": "rpc_remote_shell", | |
26 | + "name": "RPC remote shell", | |
27 | + "descriptor": { | |
28 | + "type": "rpc", | |
29 | + "sizeX": 9.5, | |
30 | + "sizeY": 5.5, | |
31 | + "resources": [], | |
32 | + "templateHtml": "<div style=\"height: 100%; overflow-y: auto;\" id=\"device-terminal\"></div>", | |
33 | + "templateCss": ".cmd .cursor.blink {\n -webkit-animation-name: terminal-underline;\n -moz-animation-name: terminal-underline;\n -ms-animation-name: terminal-underline;\n animation-name: terminal-underline;\n}\n.terminal .inverted, .cmd .inverted {\n border-bottom-color: #aaa;\n}\n", | |
34 | + "controllerScript": "var requestTimeout = 500;\nconst commandStatusPollingInterval = 200;\n\nconst welcome = 'Welcome to ThingsBoard RPC remote shell.\\n';\n\nvar terminal, rpcEnabled, simulated, deviceName, cwd;\nvar commandExecuting = false;\n\nself.onInit = function() {\n var subscription = self.ctx.defaultSubscription;\n rpcEnabled = subscription.rpcEnabled;\n if (subscription.targetDeviceName && subscription.targetDeviceName.length) {\n deviceName = subscription.targetDeviceName;\n } else {\n deviceName = 'Simulated';\n simulated = true;\n }\n if (self.ctx.settings.requestTimeout) {\n requestTimeout = self.ctx.settings.requestTimeout;\n }\n \n terminal = $('#device-terminal', self.ctx.$container).terminal(\n function (command) {\n if (command && command.trim().length) {\n try {\n if (simulated) {\n this.echo(command);\n } else {\n sendCommand(this, command);\n }\n } catch(e) {\n this.error(new String(e));\n }\n } else {\n this.echo('');\n }\n }, {\n greetings: false,\n prompt: rpcEnabled ? currentPrompt : '',\n name: 'shell',\n pauseEvents: false,\n keydown: (e, term) => {\n if ((e.which == 67 || e.which == 68) && e.ctrlKey) { // CTRL+C || CTRL+D\n if (commandExecuting) {\n terminateCommand(term);\n return false;\n }\n }\n },\n onInit: initTerm\n }\n );\n}\n\nfunction initTerm(terminal) {\n terminal.echo(welcome);\n if (!rpcEnabled) {\n terminal.error('Target device is not set!\\n');\n } else {\n terminal.echo(`Current target device for RPC terminal: [[b;#fff;]${deviceName}]\\n`);\n if (!simulated) {\n terminal.pause();\n getTermInfo(terminal,\n (remoteTermInfo) => {\n if (remoteTermInfo) {\n terminal.echo(`Remote platform info:`);\n terminal.echo(`OS: [[b;#fff;]${remoteTermInfo.platform}]`);\n if (remoteTermInfo.release) {\n terminal.echo(`OS release: [[b;#fff;]${remoteTermInfo.release}]`);\n }\n terminal.echo('\\r');\n } else {\n terminal.echo('[[;#f00;]Unable to get remote platform info.\\nDevice is not responding.]\\n');\n }\n terminal.resume();\n });\n }\n }\n}\n\nfunction currentPrompt(callback) {\n if (cwd) {\n callback('[[b;#2196f3;]' + deviceName +']: [[b;#8bc34a;]' + cwd +']> ');\n } else {\n callback('[[b;#8bc34a;]' + deviceName +']> ');\n }\n}\n\nfunction getTermInfo(terminal, callback) {\n self.ctx.controlApi.sendTwoWayCommand('getTermInfo', null, requestTimeout).then(\n (termInfo) => {\n cwd = termInfo.cwd;\n if (callback) {\n callback(termInfo);\n } \n },\n () => {\n if (callback) {\n callback(null);\n }\n }\n );\n}\n\nfunction sendCommand(terminal, command) {\n terminal.pause();\n var sendCommandRequest = {\n command: command,\n cwd: cwd\n };\n self.ctx.controlApi.sendTwoWayCommand('sendCommand', sendCommandRequest, requestTimeout).then(\n (responseBody) => {\n if (responseBody && responseBody.ok) {\n commandExecuting = true;\n setTimeout( pollCommandStatus.bind(null,terminal), commandStatusPollingInterval );\n } else {\n var error = responseBody ? responseBody.error : 'Unhandled error.';\n terminal.error(error);\n terminal.resume();\n }\n },\n () => {\n onRpcError(terminal);\n }\n );\n}\n\nfunction terminateCommand(terminal) {\n self.ctx.controlApi.sendTwoWayCommand('terminateCommand', null, requestTimeout).then(\n (responseBody) => {\n if (!responseBody.ok) {\n commandExecuting = false;\n terminal.error(responseBody.error);\n terminal.resume();\n } \n },\n () => {\n onRpcError(terminal);\n }\n ); \n}\n\nfunction onRpcError(terminal) {\n var errorText = self.ctx.defaultSubscription.rpcErrorText;\n terminal.error(errorText);\n terminal.resume();\n}\n\nfunction pollCommandStatus(terminal) {\n self.ctx.controlApi.sendTwoWayCommand('getCommandStatus', null, requestTimeout).then(\n (commandStatusResponse) => {\n commandStatusResponse.data.forEach((dataElement) => {\n if (dataElement.stdout) {\n terminal.echo(dataElement.stdout);\n }\n if (dataElement.stderr) {\n terminal.error(dataElement.stderr);\n }\n }); \n if (commandStatusResponse.done) {\n commandExecuting = false;\n cwd = commandStatusResponse.cwd;\n terminal.resume();\n } else {\n var interval = commandStatusPollingInterval;\n if (!commandStatusResponse.data.length) {\n interval *=5;\n }\n setTimeout( pollCommandStatus.bind(null,terminal), interval );\n }\n },\n () => {\n commandExecuting = false;\n onRpcError(terminal);\n }\n );\n}\n\nself.onResize = function () {\n if (terminal) {\n terminal.resize(self.ctx.width, self.ctx.height);\n }\n}\n\nself.onDestroy = function() {\n}\n", | |
35 | + "settingsSchema": "{\n \"schema\": {\n \"type\": \"object\",\n \"title\": \"Settings\",\n \"properties\": {\n \"requestTimeout\": {\n \"title\": \"RPC request timeout (ms)\",\n \"type\": \"number\",\n \"default\": 500\n }\n },\n \"required\": [\"requestTimeout\"]\n },\n \"form\": [\n \"requestTimeout\"\n ]\n}", | |
36 | + "dataKeySettingsSchema": "{}\n", | |
37 | + "defaultConfig": "{\"targetDeviceAliases\":[],\"showTitle\":true,\"backgroundColor\":\"#010101\",\"color\":\"rgba(255, 254, 254, 0.87)\",\"padding\":\"0px\",\"settings\":{\"parseGpioStatusFunction\":\"return body[pin] === true;\",\"gpioStatusChangeRequest\":{\"method\":\"setGpioStatus\",\"paramsBody\":\"{\\n \\\"pin\\\": \\\"{$pin}\\\",\\n \\\"enabled\\\": \\\"{$enabled}\\\"\\n}\"},\"requestTimeout\":500,\"switchPanelBackgroundColor\":\"#b71c1c\",\"gpioStatusRequest\":{\"method\":\"getGpioStatus\",\"paramsBody\":\"{}\"},\"gpioList\":[{\"pin\":1,\"label\":\"GPIO 1\",\"row\":0,\"col\":0,\"_uniqueKey\":0},{\"pin\":2,\"label\":\"GPIO 2\",\"row\":0,\"col\":1,\"_uniqueKey\":1},{\"pin\":3,\"label\":\"GPIO 3\",\"row\":1,\"col\":0,\"_uniqueKey\":2}]},\"title\":\"RPC remote shell\",\"dropShadow\":true,\"enableFullscreen\":true,\"widgetStyle\":{},\"titleStyle\":{\"fontSize\":\"16px\",\"fontWeight\":400},\"useDashboardTimewindow\":true,\"showLegend\":false,\"actions\":{}}" | |
22 | 38 | } |
23 | 39 | } |
24 | 40 | ] | ... | ... |
... | ... | @@ -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 | } | ... | ... |