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,19 +6,35 @@ | ||
6 | }, | 6 | }, |
7 | "widgetTypes": [ | 7 | "widgetTypes": [ |
8 | { | 8 | { |
9 | - "alias": "device_terminal", | ||
10 | - "name": "Device terminal", | 9 | + "alias": "rpc_debug_terminal", |
10 | + "name": "RPC debug terminal", | ||
11 | "descriptor": { | 11 | "descriptor": { |
12 | "type": "rpc", | 12 | "type": "rpc", |
13 | "sizeX": 9.5, | 13 | "sizeX": 9.5, |
14 | "sizeY": 5.5, | 14 | "sizeY": 5.5, |
15 | "resources": [], | 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 | "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", | 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 | "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}", | 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 | "dataKeySettingsSchema": "{}\n", | 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,7 +106,7 @@ coap: | ||
106 | timeout: "${COAP_TIMEOUT:10000}" | 106 | timeout: "${COAP_TIMEOUT:10000}" |
107 | 107 | ||
108 | database: | 108 | database: |
109 | - type: "${DATABASE_TYPE:cassandra}" # cassandra OR sql | 109 | + type: "${DATABASE_TYPE:sql}" # cassandra OR sql |
110 | 110 | ||
111 | # Cassandra driver configuration parameters | 111 | # Cassandra driver configuration parameters |
112 | cassandra: | 112 | cassandra: |
@@ -66,6 +66,11 @@ | @@ -66,6 +66,11 @@ | ||
66 | <artifactId>mockito-all</artifactId> | 66 | <artifactId>mockito-all</artifactId> |
67 | <scope>test</scope> | 67 | <scope>test</scope> |
68 | </dependency> | 68 | </dependency> |
69 | + <dependency> | ||
70 | + <groupId>com.datastax.cassandra</groupId> | ||
71 | + <artifactId>cassandra-driver-core</artifactId> | ||
72 | + <scope>test</scope> | ||
73 | + </dependency> | ||
69 | </dependencies> | 74 | </dependencies> |
70 | 75 | ||
71 | <build> | 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,6 +15,7 @@ | ||
15 | */ | 15 | */ |
16 | package org.thingsboard.server.common.data.asset; | 16 | package org.thingsboard.server.common.data.asset; |
17 | 17 | ||
18 | +import org.thingsboard.server.common.data.UUIDConverter; | ||
18 | import org.thingsboard.server.common.data.id.TenantId; | 19 | import org.thingsboard.server.common.data.id.TenantId; |
19 | 20 | ||
20 | import java.util.UUID; | 21 | import java.util.UUID; |
@@ -40,6 +41,11 @@ public class TenantAssetType { | @@ -40,6 +41,11 @@ public class TenantAssetType { | ||
40 | this.tenantId = new TenantId(tenantId); | 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 | public String getType() { | 49 | public String getType() { |
44 | return type; | 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,7 +47,6 @@ import javax.annotation.PostConstruct; | ||
47 | import javax.annotation.PreDestroy; | 47 | import javax.annotation.PreDestroy; |
48 | import java.util.ArrayList; | 48 | import java.util.ArrayList; |
49 | import java.util.List; | 49 | import java.util.List; |
50 | -import java.util.UUID; | ||
51 | import java.util.concurrent.ExecutionException; | 50 | import java.util.concurrent.ExecutionException; |
52 | import java.util.concurrent.ExecutorService; | 51 | import java.util.concurrent.ExecutorService; |
53 | import java.util.concurrent.Executors; | 52 | import java.util.concurrent.Executors; |
@@ -33,11 +33,11 @@ import org.thingsboard.server.common.data.id.EntityId; | @@ -33,11 +33,11 @@ import org.thingsboard.server.common.data.id.EntityId; | ||
33 | import org.thingsboard.server.common.data.id.TenantId; | 33 | import org.thingsboard.server.common.data.id.TenantId; |
34 | import org.thingsboard.server.common.data.relation.EntityRelation; | 34 | import org.thingsboard.server.common.data.relation.EntityRelation; |
35 | import org.thingsboard.server.common.data.relation.RelationTypeGroup; | 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 | import org.thingsboard.server.dao.model.ModelConstants; | 36 | import org.thingsboard.server.dao.model.ModelConstants; |
39 | import org.thingsboard.server.dao.model.nosql.AlarmEntity; | 37 | import org.thingsboard.server.dao.model.nosql.AlarmEntity; |
38 | +import org.thingsboard.server.dao.nosql.CassandraAbstractModelDao; | ||
40 | import org.thingsboard.server.dao.relation.RelationDao; | 39 | import org.thingsboard.server.dao.relation.RelationDao; |
40 | +import org.thingsboard.server.dao.util.NoSqlDao; | ||
41 | 41 | ||
42 | import java.util.ArrayList; | 42 | import java.util.ArrayList; |
43 | import java.util.List; | 43 | import java.util.List; |
@@ -20,7 +20,6 @@ import org.thingsboard.server.common.data.asset.Asset; | @@ -20,7 +20,6 @@ import org.thingsboard.server.common.data.asset.Asset; | ||
20 | import org.thingsboard.server.common.data.asset.TenantAssetType; | 20 | import org.thingsboard.server.common.data.asset.TenantAssetType; |
21 | import org.thingsboard.server.common.data.page.TextPageLink; | 21 | import org.thingsboard.server.common.data.page.TextPageLink; |
22 | import org.thingsboard.server.dao.Dao; | 22 | import org.thingsboard.server.dao.Dao; |
23 | -import org.thingsboard.server.dao.model.TenantAssetTypeEntity; | ||
24 | 23 | ||
25 | import java.util.List; | 24 | import java.util.List; |
26 | import java.util.Optional; | 25 | import java.util.Optional; |
@@ -18,9 +18,9 @@ package org.thingsboard.server.dao.asset; | @@ -18,9 +18,9 @@ package org.thingsboard.server.dao.asset; | ||
18 | import lombok.Data; | 18 | import lombok.Data; |
19 | import org.thingsboard.server.common.data.EntityType; | 19 | import org.thingsboard.server.common.data.EntityType; |
20 | import org.thingsboard.server.common.data.relation.EntityRelation; | 20 | import org.thingsboard.server.common.data.relation.EntityRelation; |
21 | -import org.thingsboard.server.dao.relation.RelationsSearchParameters; | ||
22 | import org.thingsboard.server.dao.relation.EntityRelationsQuery; | 21 | import org.thingsboard.server.dao.relation.EntityRelationsQuery; |
23 | import org.thingsboard.server.dao.relation.EntityTypeFilter; | 22 | import org.thingsboard.server.dao.relation.EntityTypeFilter; |
23 | +import org.thingsboard.server.dao.relation.RelationsSearchParameters; | ||
24 | 24 | ||
25 | import javax.annotation.Nullable; | 25 | import javax.annotation.Nullable; |
26 | import java.util.Collections; | 26 | import java.util.Collections; |
@@ -51,7 +51,7 @@ import java.util.List; | @@ -51,7 +51,7 @@ import java.util.List; | ||
51 | import java.util.Optional; | 51 | import java.util.Optional; |
52 | import java.util.stream.Collectors; | 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 | import static org.thingsboard.server.dao.model.ModelConstants.NULL_UUID; | 55 | import static org.thingsboard.server.dao.model.ModelConstants.NULL_UUID; |
56 | import static org.thingsboard.server.dao.service.Validator.*; | 56 | import static org.thingsboard.server.dao.service.Validator.*; |
57 | 57 |
@@ -27,11 +27,11 @@ import org.springframework.stereotype.Component; | @@ -27,11 +27,11 @@ import org.springframework.stereotype.Component; | ||
27 | import org.thingsboard.server.common.data.asset.Asset; | 27 | import org.thingsboard.server.common.data.asset.Asset; |
28 | import org.thingsboard.server.common.data.asset.TenantAssetType; | 28 | import org.thingsboard.server.common.data.asset.TenantAssetType; |
29 | import org.thingsboard.server.common.data.page.TextPageLink; | 29 | import org.thingsboard.server.common.data.page.TextPageLink; |
30 | -import org.thingsboard.server.dao.nosql.CassandraAbstractSearchTextDao; | ||
31 | import org.thingsboard.server.dao.DaoUtil; | 30 | import org.thingsboard.server.dao.DaoUtil; |
32 | -import org.thingsboard.server.dao.util.NoSqlDao; | ||
33 | import org.thingsboard.server.dao.model.TenantAssetTypeEntity; | 31 | import org.thingsboard.server.dao.model.TenantAssetTypeEntity; |
34 | import org.thingsboard.server.dao.model.nosql.AssetEntity; | 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 | import javax.annotation.Nullable; | 36 | import javax.annotation.Nullable; |
37 | import java.util.*; | 37 | import java.util.*; |
@@ -15,8 +15,6 @@ | @@ -15,8 +15,6 @@ | ||
15 | */ | 15 | */ |
16 | package org.thingsboard.server.dao.attributes; | 16 | package org.thingsboard.server.dao.attributes; |
17 | 17 | ||
18 | -import com.datastax.driver.core.ResultSet; | ||
19 | -import com.datastax.driver.core.ResultSetFuture; | ||
20 | import com.google.common.collect.Lists; | 18 | import com.google.common.collect.Lists; |
21 | import com.google.common.util.concurrent.Futures; | 19 | import com.google.common.util.concurrent.Futures; |
22 | import com.google.common.util.concurrent.ListenableFuture; | 20 | import com.google.common.util.concurrent.ListenableFuture; |
@@ -26,10 +26,10 @@ import org.springframework.stereotype.Component; | @@ -26,10 +26,10 @@ import org.springframework.stereotype.Component; | ||
26 | import org.thingsboard.server.common.data.id.EntityId; | 26 | import org.thingsboard.server.common.data.id.EntityId; |
27 | import org.thingsboard.server.common.data.kv.AttributeKvEntry; | 27 | import org.thingsboard.server.common.data.kv.AttributeKvEntry; |
28 | import org.thingsboard.server.common.data.kv.BaseAttributeKvEntry; | 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 | import org.thingsboard.server.dao.model.ModelConstants; | 29 | import org.thingsboard.server.dao.model.ModelConstants; |
30 | +import org.thingsboard.server.dao.nosql.CassandraAbstractAsyncDao; | ||
32 | import org.thingsboard.server.dao.timeseries.CassandraBaseTimeseriesDao; | 31 | import org.thingsboard.server.dao.timeseries.CassandraBaseTimeseriesDao; |
32 | +import org.thingsboard.server.dao.util.NoSqlDao; | ||
33 | 33 | ||
34 | import javax.annotation.PostConstruct; | 34 | import javax.annotation.PostConstruct; |
35 | import javax.annotation.PreDestroy; | 35 | import javax.annotation.PreDestroy; |
@@ -17,9 +17,10 @@ package org.thingsboard.server.dao.cassandra; | @@ -17,9 +17,10 @@ package org.thingsboard.server.dao.cassandra; | ||
17 | 17 | ||
18 | import org.springframework.beans.factory.annotation.Value; | 18 | import org.springframework.beans.factory.annotation.Value; |
19 | import org.springframework.stereotype.Component; | 19 | import org.springframework.stereotype.Component; |
20 | -import javax.annotation.PostConstruct; | ||
21 | import org.thingsboard.server.dao.util.NoSqlDao; | 20 | import org.thingsboard.server.dao.util.NoSqlDao; |
22 | 21 | ||
22 | +import javax.annotation.PostConstruct; | ||
23 | + | ||
23 | @Component | 24 | @Component |
24 | @NoSqlDao | 25 | @NoSqlDao |
25 | public class CassandraCluster extends AbstractCassandraCluster { | 26 | public class CassandraCluster extends AbstractCassandraCluster { |
@@ -27,11 +27,11 @@ import org.thingsboard.server.common.data.page.TextPageLink; | @@ -27,11 +27,11 @@ import org.thingsboard.server.common.data.page.TextPageLink; | ||
27 | import org.thingsboard.server.common.data.plugin.ComponentDescriptor; | 27 | import org.thingsboard.server.common.data.plugin.ComponentDescriptor; |
28 | import org.thingsboard.server.common.data.plugin.ComponentScope; | 28 | import org.thingsboard.server.common.data.plugin.ComponentScope; |
29 | import org.thingsboard.server.common.data.plugin.ComponentType; | 29 | import org.thingsboard.server.common.data.plugin.ComponentType; |
30 | -import org.thingsboard.server.dao.nosql.CassandraAbstractSearchTextDao; | ||
31 | import org.thingsboard.server.dao.DaoUtil; | 30 | import org.thingsboard.server.dao.DaoUtil; |
32 | -import org.thingsboard.server.dao.util.NoSqlDao; | ||
33 | import org.thingsboard.server.dao.model.ModelConstants; | 31 | import org.thingsboard.server.dao.model.ModelConstants; |
34 | import org.thingsboard.server.dao.model.nosql.ComponentDescriptorEntity; | 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 | import java.util.Arrays; | 36 | import java.util.Arrays; |
37 | import java.util.List; | 37 | import java.util.List; |
@@ -20,11 +20,11 @@ import lombok.extern.slf4j.Slf4j; | @@ -20,11 +20,11 @@ import lombok.extern.slf4j.Slf4j; | ||
20 | import org.springframework.stereotype.Component; | 20 | import org.springframework.stereotype.Component; |
21 | import org.thingsboard.server.common.data.Customer; | 21 | import org.thingsboard.server.common.data.Customer; |
22 | import org.thingsboard.server.common.data.page.TextPageLink; | 22 | import org.thingsboard.server.common.data.page.TextPageLink; |
23 | -import org.thingsboard.server.dao.nosql.CassandraAbstractSearchTextDao; | ||
24 | import org.thingsboard.server.dao.DaoUtil; | 23 | import org.thingsboard.server.dao.DaoUtil; |
25 | -import org.thingsboard.server.dao.util.NoSqlDao; | ||
26 | import org.thingsboard.server.dao.model.ModelConstants; | 24 | import org.thingsboard.server.dao.model.ModelConstants; |
27 | import org.thingsboard.server.dao.model.nosql.CustomerEntity; | 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 | import java.util.Arrays; | 29 | import java.util.Arrays; |
30 | import java.util.List; | 30 | import java.util.List; |
@@ -15,12 +15,12 @@ | @@ -15,12 +15,12 @@ | ||
15 | */ | 15 | */ |
16 | package org.thingsboard.server.dao.customer; | 16 | package org.thingsboard.server.dao.customer; |
17 | 17 | ||
18 | -import java.util.Optional; | ||
19 | import org.thingsboard.server.common.data.Customer; | 18 | import org.thingsboard.server.common.data.Customer; |
20 | import org.thingsboard.server.common.data.page.TextPageLink; | 19 | import org.thingsboard.server.common.data.page.TextPageLink; |
21 | import org.thingsboard.server.dao.Dao; | 20 | import org.thingsboard.server.dao.Dao; |
22 | 21 | ||
23 | import java.util.List; | 22 | import java.util.List; |
23 | +import java.util.Optional; | ||
24 | import java.util.UUID; | 24 | import java.util.UUID; |
25 | 25 | ||
26 | /** | 26 | /** |
@@ -15,12 +15,6 @@ | @@ -15,12 +15,6 @@ | ||
15 | */ | 15 | */ |
16 | package org.thingsboard.server.dao.customer; | 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 | import com.fasterxml.jackson.databind.JsonNode; | 18 | import com.fasterxml.jackson.databind.JsonNode; |
25 | import com.fasterxml.jackson.databind.ObjectMapper; | 19 | import com.fasterxml.jackson.databind.ObjectMapper; |
26 | import com.google.common.util.concurrent.ListenableFuture; | 20 | import com.google.common.util.concurrent.ListenableFuture; |
@@ -45,6 +39,12 @@ import org.thingsboard.server.dao.service.Validator; | @@ -45,6 +39,12 @@ import org.thingsboard.server.dao.service.Validator; | ||
45 | import org.thingsboard.server.dao.tenant.TenantDao; | 39 | import org.thingsboard.server.dao.tenant.TenantDao; |
46 | import org.thingsboard.server.dao.user.UserService; | 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 | @Service | 48 | @Service |
49 | @Slf4j | 49 | @Slf4j |
50 | public class CustomerServiceImpl extends AbstractEntityService implements CustomerService { | 50 | public class CustomerServiceImpl extends AbstractEntityService implements CustomerService { |
@@ -17,9 +17,9 @@ package org.thingsboard.server.dao.dashboard; | @@ -17,9 +17,9 @@ package org.thingsboard.server.dao.dashboard; | ||
17 | 17 | ||
18 | import org.springframework.stereotype.Component; | 18 | import org.springframework.stereotype.Component; |
19 | import org.thingsboard.server.common.data.Dashboard; | 19 | import org.thingsboard.server.common.data.Dashboard; |
20 | +import org.thingsboard.server.dao.model.nosql.DashboardEntity; | ||
20 | import org.thingsboard.server.dao.nosql.CassandraAbstractSearchTextDao; | 21 | import org.thingsboard.server.dao.nosql.CassandraAbstractSearchTextDao; |
21 | import org.thingsboard.server.dao.util.NoSqlDao; | 22 | import org.thingsboard.server.dao.util.NoSqlDao; |
22 | -import org.thingsboard.server.dao.model.nosql.DashboardEntity; | ||
23 | 23 | ||
24 | import static org.thingsboard.server.dao.model.ModelConstants.DASHBOARD_COLUMN_FAMILY_NAME; | 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,10 +19,10 @@ import lombok.extern.slf4j.Slf4j; | ||
19 | import org.springframework.stereotype.Component; | 19 | import org.springframework.stereotype.Component; |
20 | import org.thingsboard.server.common.data.DashboardInfo; | 20 | import org.thingsboard.server.common.data.DashboardInfo; |
21 | import org.thingsboard.server.common.data.page.TextPageLink; | 21 | import org.thingsboard.server.common.data.page.TextPageLink; |
22 | -import org.thingsboard.server.dao.nosql.CassandraAbstractSearchTextDao; | ||
23 | import org.thingsboard.server.dao.DaoUtil; | 22 | import org.thingsboard.server.dao.DaoUtil; |
24 | -import org.thingsboard.server.dao.util.NoSqlDao; | ||
25 | import org.thingsboard.server.dao.model.nosql.DashboardInfoEntity; | 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 | import java.util.Arrays; | 27 | import java.util.Arrays; |
28 | import java.util.Collections; | 28 | import java.util.Collections; |
@@ -19,11 +19,11 @@ import com.datastax.driver.core.querybuilder.Select.Where; | @@ -19,11 +19,11 @@ import com.datastax.driver.core.querybuilder.Select.Where; | ||
19 | import lombok.extern.slf4j.Slf4j; | 19 | import lombok.extern.slf4j.Slf4j; |
20 | import org.springframework.stereotype.Component; | 20 | import org.springframework.stereotype.Component; |
21 | import org.thingsboard.server.common.data.security.DeviceCredentials; | 21 | import org.thingsboard.server.common.data.security.DeviceCredentials; |
22 | -import org.thingsboard.server.dao.nosql.CassandraAbstractModelDao; | ||
23 | import org.thingsboard.server.dao.DaoUtil; | 22 | import org.thingsboard.server.dao.DaoUtil; |
24 | -import org.thingsboard.server.dao.util.NoSqlDao; | ||
25 | import org.thingsboard.server.dao.model.ModelConstants; | 23 | import org.thingsboard.server.dao.model.ModelConstants; |
26 | import org.thingsboard.server.dao.model.nosql.DeviceCredentialsEntity; | 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 | import java.util.UUID; | 28 | import java.util.UUID; |
29 | 29 |
@@ -27,11 +27,11 @@ import org.springframework.stereotype.Component; | @@ -27,11 +27,11 @@ import org.springframework.stereotype.Component; | ||
27 | import org.thingsboard.server.common.data.Device; | 27 | import org.thingsboard.server.common.data.Device; |
28 | import org.thingsboard.server.common.data.TenantDeviceType; | 28 | import org.thingsboard.server.common.data.TenantDeviceType; |
29 | import org.thingsboard.server.common.data.page.TextPageLink; | 29 | import org.thingsboard.server.common.data.page.TextPageLink; |
30 | -import org.thingsboard.server.dao.nosql.CassandraAbstractSearchTextDao; | ||
31 | import org.thingsboard.server.dao.DaoUtil; | 30 | import org.thingsboard.server.dao.DaoUtil; |
32 | -import org.thingsboard.server.dao.util.NoSqlDao; | ||
33 | import org.thingsboard.server.dao.model.TenantDeviceTypeEntity; | 31 | import org.thingsboard.server.dao.model.TenantDeviceTypeEntity; |
34 | import org.thingsboard.server.dao.model.nosql.DeviceEntity; | 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 | import javax.annotation.Nullable; | 36 | import javax.annotation.Nullable; |
37 | import java.util.*; | 37 | import java.util.*; |
@@ -20,7 +20,6 @@ import org.thingsboard.server.common.data.Device; | @@ -20,7 +20,6 @@ import org.thingsboard.server.common.data.Device; | ||
20 | import org.thingsboard.server.common.data.TenantDeviceType; | 20 | import org.thingsboard.server.common.data.TenantDeviceType; |
21 | import org.thingsboard.server.common.data.page.TextPageLink; | 21 | import org.thingsboard.server.common.data.page.TextPageLink; |
22 | import org.thingsboard.server.dao.Dao; | 22 | import org.thingsboard.server.dao.Dao; |
23 | -import org.thingsboard.server.dao.model.TenantDeviceTypeEntity; | ||
24 | 23 | ||
25 | import java.util.List; | 24 | import java.util.List; |
26 | import java.util.Optional; | 25 | import java.util.Optional; |
@@ -21,7 +21,7 @@ import com.google.common.util.concurrent.ListenableFuture; | @@ -21,7 +21,7 @@ import com.google.common.util.concurrent.ListenableFuture; | ||
21 | import lombok.extern.slf4j.Slf4j; | 21 | import lombok.extern.slf4j.Slf4j; |
22 | import org.springframework.beans.factory.annotation.Autowired; | 22 | import org.springframework.beans.factory.annotation.Autowired; |
23 | import org.springframework.stereotype.Service; | 23 | import org.springframework.stereotype.Service; |
24 | -import org.thingsboard.server.common.data.*; | 24 | +import org.thingsboard.server.common.data.HasName; |
25 | import org.thingsboard.server.common.data.alarm.AlarmId; | 25 | import org.thingsboard.server.common.data.alarm.AlarmId; |
26 | import org.thingsboard.server.common.data.id.*; | 26 | import org.thingsboard.server.common.data.id.*; |
27 | import org.thingsboard.server.dao.alarm.AlarmService; | 27 | import org.thingsboard.server.dao.alarm.AlarmService; |
@@ -28,11 +28,11 @@ import org.thingsboard.server.common.data.id.EntityId; | @@ -28,11 +28,11 @@ import org.thingsboard.server.common.data.id.EntityId; | ||
28 | import org.thingsboard.server.common.data.id.EventId; | 28 | import org.thingsboard.server.common.data.id.EventId; |
29 | import org.thingsboard.server.common.data.id.TenantId; | 29 | import org.thingsboard.server.common.data.id.TenantId; |
30 | import org.thingsboard.server.common.data.page.TimePageLink; | 30 | import org.thingsboard.server.common.data.page.TimePageLink; |
31 | -import org.thingsboard.server.dao.nosql.CassandraAbstractSearchTimeDao; | ||
32 | import org.thingsboard.server.dao.DaoUtil; | 31 | import org.thingsboard.server.dao.DaoUtil; |
33 | -import org.thingsboard.server.dao.util.NoSqlDao; | ||
34 | import org.thingsboard.server.dao.model.ModelConstants; | 32 | import org.thingsboard.server.dao.model.ModelConstants; |
35 | import org.thingsboard.server.dao.model.nosql.EventEntity; | 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 | import java.util.Arrays; | 37 | import java.util.Arrays; |
38 | import java.util.List; | 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,18 +15,20 @@ | ||
15 | */ | 15 | */ |
16 | package org.thingsboard.server.dao.model; | 16 | package org.thingsboard.server.dao.model; |
17 | 17 | ||
18 | -import java.util.UUID; | ||
19 | - | ||
20 | import com.datastax.driver.core.utils.UUIDs; | 18 | import com.datastax.driver.core.utils.UUIDs; |
21 | import org.apache.commons.lang3.ArrayUtils; | 19 | import org.apache.commons.lang3.ArrayUtils; |
20 | +import org.thingsboard.server.common.data.UUIDConverter; | ||
22 | import org.thingsboard.server.common.data.kv.Aggregation; | 21 | import org.thingsboard.server.common.data.kv.Aggregation; |
23 | 22 | ||
23 | +import java.util.UUID; | ||
24 | + | ||
24 | public class ModelConstants { | 25 | public class ModelConstants { |
25 | 26 | ||
26 | private ModelConstants() { | 27 | private ModelConstants() { |
27 | } | 28 | } |
28 | 29 | ||
29 | public static UUID NULL_UUID = UUIDs.startOf(0); | 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 | * Generic constants. | 34 | * Generic constants. |
@@ -15,24 +15,20 @@ | @@ -15,24 +15,20 @@ | ||
15 | */ | 15 | */ |
16 | package org.thingsboard.server.dao.model.nosql; | 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 | import com.datastax.driver.core.utils.UUIDs; | 18 | import com.datastax.driver.core.utils.UUIDs; |
31 | import com.datastax.driver.mapping.annotations.Column; | 19 | import com.datastax.driver.mapping.annotations.Column; |
32 | import com.datastax.driver.mapping.annotations.PartitionKey; | 20 | import com.datastax.driver.mapping.annotations.PartitionKey; |
33 | import com.datastax.driver.mapping.annotations.Table; | 21 | import com.datastax.driver.mapping.annotations.Table; |
34 | import com.datastax.driver.mapping.annotations.Transient; | 22 | import com.datastax.driver.mapping.annotations.Transient; |
35 | import com.fasterxml.jackson.databind.JsonNode; | 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 | @Table(name = ADMIN_SETTINGS_COLUMN_FAMILY_NAME) | 33 | @Table(name = ADMIN_SETTINGS_COLUMN_FAMILY_NAME) |
38 | public final class AdminSettingsEntity implements BaseEntity<AdminSettings> { | 34 | public final class AdminSettingsEntity implements BaseEntity<AdminSettings> { |
@@ -15,20 +15,19 @@ | @@ -15,20 +15,19 @@ | ||
15 | */ | 15 | */ |
16 | package org.thingsboard.server.dao.model.nosql; | 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 | import com.datastax.driver.core.utils.UUIDs; | 18 | import com.datastax.driver.core.utils.UUIDs; |
27 | import com.datastax.driver.mapping.annotations.Column; | 19 | import com.datastax.driver.mapping.annotations.Column; |
28 | import com.datastax.driver.mapping.annotations.PartitionKey; | 20 | import com.datastax.driver.mapping.annotations.PartitionKey; |
29 | import com.datastax.driver.mapping.annotations.Table; | 21 | import com.datastax.driver.mapping.annotations.Table; |
30 | import com.datastax.driver.mapping.annotations.Transient; | 22 | import com.datastax.driver.mapping.annotations.Transient; |
31 | import com.fasterxml.jackson.databind.JsonNode; | 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 | import static org.thingsboard.server.dao.model.ModelConstants.*; | 32 | import static org.thingsboard.server.dao.model.ModelConstants.*; |
34 | 33 |
@@ -15,8 +15,12 @@ | @@ -15,8 +15,12 @@ | ||
15 | */ | 15 | */ |
16 | package org.thingsboard.server.dao.model.nosql; | 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 | import org.thingsboard.server.common.data.Dashboard; | 24 | import org.thingsboard.server.common.data.Dashboard; |
21 | import org.thingsboard.server.common.data.id.CustomerId; | 25 | import org.thingsboard.server.common.data.id.CustomerId; |
22 | import org.thingsboard.server.common.data.id.DashboardId; | 26 | import org.thingsboard.server.common.data.id.DashboardId; |
@@ -24,12 +28,7 @@ import org.thingsboard.server.common.data.id.TenantId; | @@ -24,12 +28,7 @@ import org.thingsboard.server.common.data.id.TenantId; | ||
24 | import org.thingsboard.server.dao.model.SearchTextEntity; | 28 | import org.thingsboard.server.dao.model.SearchTextEntity; |
25 | import org.thingsboard.server.dao.model.type.JsonCodec; | 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 | import static org.thingsboard.server.dao.model.ModelConstants.*; | 33 | import static org.thingsboard.server.dao.model.ModelConstants.*; |
35 | 34 |
@@ -15,19 +15,18 @@ | @@ -15,19 +15,18 @@ | ||
15 | */ | 15 | */ |
16 | package org.thingsboard.server.dao.model.nosql; | 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 | import org.thingsboard.server.common.data.DashboardInfo; | 23 | import org.thingsboard.server.common.data.DashboardInfo; |
21 | import org.thingsboard.server.common.data.id.CustomerId; | 24 | import org.thingsboard.server.common.data.id.CustomerId; |
22 | import org.thingsboard.server.common.data.id.DashboardId; | 25 | import org.thingsboard.server.common.data.id.DashboardId; |
23 | import org.thingsboard.server.common.data.id.TenantId; | 26 | import org.thingsboard.server.common.data.id.TenantId; |
24 | import org.thingsboard.server.dao.model.SearchTextEntity; | 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 | import static org.thingsboard.server.dao.model.ModelConstants.*; | 31 | import static org.thingsboard.server.dao.model.ModelConstants.*; |
33 | 32 |
@@ -15,8 +15,11 @@ | @@ -15,8 +15,11 @@ | ||
15 | */ | 15 | */ |
16 | package org.thingsboard.server.dao.model.nosql; | 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 | import org.thingsboard.server.common.data.id.DeviceCredentialsId; | 23 | import org.thingsboard.server.common.data.id.DeviceCredentialsId; |
21 | import org.thingsboard.server.common.data.id.DeviceId; | 24 | import org.thingsboard.server.common.data.id.DeviceId; |
22 | import org.thingsboard.server.common.data.security.DeviceCredentials; | 25 | import org.thingsboard.server.common.data.security.DeviceCredentials; |
@@ -24,11 +27,7 @@ import org.thingsboard.server.common.data.security.DeviceCredentialsType; | @@ -24,11 +27,7 @@ import org.thingsboard.server.common.data.security.DeviceCredentialsType; | ||
24 | import org.thingsboard.server.dao.model.BaseEntity; | 27 | import org.thingsboard.server.dao.model.BaseEntity; |
25 | import org.thingsboard.server.dao.model.type.DeviceCredentialsTypeCodec; | 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 | import static org.thingsboard.server.dao.model.ModelConstants.*; | 32 | import static org.thingsboard.server.dao.model.ModelConstants.*; |
34 | 33 |
@@ -28,10 +28,10 @@ import org.thingsboard.server.common.data.id.TenantId; | @@ -28,10 +28,10 @@ import org.thingsboard.server.common.data.id.TenantId; | ||
28 | import org.thingsboard.server.dao.model.SearchTextEntity; | 28 | import org.thingsboard.server.dao.model.SearchTextEntity; |
29 | import org.thingsboard.server.dao.model.type.JsonCodec; | 29 | import org.thingsboard.server.dao.model.type.JsonCodec; |
30 | 30 | ||
31 | -import static org.thingsboard.server.dao.model.ModelConstants.*; | ||
32 | - | ||
33 | import java.util.UUID; | 31 | import java.util.UUID; |
34 | 32 | ||
33 | +import static org.thingsboard.server.dao.model.ModelConstants.*; | ||
34 | + | ||
35 | @Table(name = DEVICE_COLUMN_FAMILY_NAME) | 35 | @Table(name = DEVICE_COLUMN_FAMILY_NAME) |
36 | public final class DeviceEntity implements SearchTextEntity<Device> { | 36 | public final class DeviceEntity implements SearchTextEntity<Device> { |
37 | 37 |
@@ -26,11 +26,11 @@ import org.thingsboard.server.dao.model.SearchTextEntity; | @@ -26,11 +26,11 @@ import org.thingsboard.server.dao.model.SearchTextEntity; | ||
26 | import org.thingsboard.server.dao.model.type.ComponentLifecycleStateCodec; | 26 | import org.thingsboard.server.dao.model.type.ComponentLifecycleStateCodec; |
27 | import org.thingsboard.server.dao.model.type.JsonCodec; | 27 | import org.thingsboard.server.dao.model.type.JsonCodec; |
28 | 28 | ||
29 | -import static org.thingsboard.server.dao.model.ModelConstants.*; | ||
30 | - | ||
31 | import java.util.Objects; | 29 | import java.util.Objects; |
32 | import java.util.UUID; | 30 | import java.util.UUID; |
33 | 31 | ||
32 | +import static org.thingsboard.server.dao.model.ModelConstants.*; | ||
33 | + | ||
34 | @Table(name = PLUGIN_COLUMN_FAMILY_NAME) | 34 | @Table(name = PLUGIN_COLUMN_FAMILY_NAME) |
35 | public class PluginMetaDataEntity implements SearchTextEntity<PluginMetaData> { | 35 | public class PluginMetaDataEntity implements SearchTextEntity<PluginMetaData> { |
36 | 36 |
@@ -30,12 +30,12 @@ import org.thingsboard.server.dao.model.SearchTextEntity; | @@ -30,12 +30,12 @@ import org.thingsboard.server.dao.model.SearchTextEntity; | ||
30 | import org.thingsboard.server.dao.model.type.ComponentLifecycleStateCodec; | 30 | import org.thingsboard.server.dao.model.type.ComponentLifecycleStateCodec; |
31 | import org.thingsboard.server.dao.model.type.JsonCodec; | 31 | import org.thingsboard.server.dao.model.type.JsonCodec; |
32 | 32 | ||
33 | -import static org.thingsboard.server.dao.model.ModelConstants.*; | ||
34 | - | ||
35 | import javax.persistence.Transient; | 33 | import javax.persistence.Transient; |
36 | import java.util.Objects; | 34 | import java.util.Objects; |
37 | import java.util.UUID; | 35 | import java.util.UUID; |
38 | 36 | ||
37 | +import static org.thingsboard.server.dao.model.ModelConstants.*; | ||
38 | + | ||
39 | @Table(name = RULE_COLUMN_FAMILY_NAME) | 39 | @Table(name = RULE_COLUMN_FAMILY_NAME) |
40 | public class RuleMetaDataEntity implements SearchTextEntity<RuleMetaData> { | 40 | public class RuleMetaDataEntity implements SearchTextEntity<RuleMetaData> { |
41 | 41 |
@@ -15,19 +15,19 @@ | @@ -15,19 +15,19 @@ | ||
15 | */ | 15 | */ |
16 | package org.thingsboard.server.dao.model.nosql; | 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 | import com.datastax.driver.core.utils.UUIDs; | 18 | import com.datastax.driver.core.utils.UUIDs; |
26 | import com.datastax.driver.mapping.annotations.Column; | 19 | import com.datastax.driver.mapping.annotations.Column; |
27 | import com.datastax.driver.mapping.annotations.PartitionKey; | 20 | import com.datastax.driver.mapping.annotations.PartitionKey; |
28 | import com.datastax.driver.mapping.annotations.Table; | 21 | import com.datastax.driver.mapping.annotations.Table; |
29 | import com.datastax.driver.mapping.annotations.Transient; | 22 | import com.datastax.driver.mapping.annotations.Transient; |
30 | import com.fasterxml.jackson.databind.JsonNode; | 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 | import static org.thingsboard.server.dao.model.ModelConstants.*; | 31 | import static org.thingsboard.server.dao.model.ModelConstants.*; |
32 | 32 | ||
33 | @Table(name = TENANT_COLUMN_FAMILY_NAME) | 33 | @Table(name = TENANT_COLUMN_FAMILY_NAME) |
@@ -15,18 +15,18 @@ | @@ -15,18 +15,18 @@ | ||
15 | */ | 15 | */ |
16 | package org.thingsboard.server.dao.model.nosql; | 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 | import com.datastax.driver.core.utils.UUIDs; | 18 | import com.datastax.driver.core.utils.UUIDs; |
25 | import com.datastax.driver.mapping.annotations.Column; | 19 | import com.datastax.driver.mapping.annotations.Column; |
26 | import com.datastax.driver.mapping.annotations.PartitionKey; | 20 | import com.datastax.driver.mapping.annotations.PartitionKey; |
27 | import com.datastax.driver.mapping.annotations.Table; | 21 | import com.datastax.driver.mapping.annotations.Table; |
28 | import com.datastax.driver.mapping.annotations.Transient; | 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 | import org.thingsboard.server.dao.model.BaseEntity; | 26 | import org.thingsboard.server.dao.model.BaseEntity; |
27 | + | ||
28 | +import java.util.UUID; | ||
29 | + | ||
30 | import static org.thingsboard.server.dao.model.ModelConstants.*; | 30 | import static org.thingsboard.server.dao.model.ModelConstants.*; |
31 | 31 | ||
32 | @Table(name = USER_CREDENTIALS_COLUMN_FAMILY_NAME) | 32 | @Table(name = USER_CREDENTIALS_COLUMN_FAMILY_NAME) |
@@ -15,8 +15,12 @@ | @@ -15,8 +15,12 @@ | ||
15 | */ | 15 | */ |
16 | package org.thingsboard.server.dao.model.nosql; | 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 | import org.thingsboard.server.common.data.User; | 24 | import org.thingsboard.server.common.data.User; |
21 | import org.thingsboard.server.common.data.id.CustomerId; | 25 | import org.thingsboard.server.common.data.id.CustomerId; |
22 | import org.thingsboard.server.common.data.id.TenantId; | 26 | import org.thingsboard.server.common.data.id.TenantId; |
@@ -26,12 +30,8 @@ import org.thingsboard.server.dao.model.SearchTextEntity; | @@ -26,12 +30,8 @@ import org.thingsboard.server.dao.model.SearchTextEntity; | ||
26 | import org.thingsboard.server.dao.model.type.AuthorityCodec; | 30 | import org.thingsboard.server.dao.model.type.AuthorityCodec; |
27 | import org.thingsboard.server.dao.model.type.JsonCodec; | 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 | import static org.thingsboard.server.dao.model.ModelConstants.*; | 35 | import static org.thingsboard.server.dao.model.ModelConstants.*; |
36 | 36 | ||
37 | @Table(name = USER_COLUMN_FAMILY_NAME) | 37 | @Table(name = USER_COLUMN_FAMILY_NAME) |
@@ -26,10 +26,11 @@ import org.thingsboard.server.common.data.id.WidgetTypeId; | @@ -26,10 +26,11 @@ import org.thingsboard.server.common.data.id.WidgetTypeId; | ||
26 | import org.thingsboard.server.common.data.widget.WidgetType; | 26 | import org.thingsboard.server.common.data.widget.WidgetType; |
27 | import org.thingsboard.server.dao.model.BaseEntity; | 27 | import org.thingsboard.server.dao.model.BaseEntity; |
28 | import org.thingsboard.server.dao.model.type.JsonCodec; | 28 | import org.thingsboard.server.dao.model.type.JsonCodec; |
29 | -import static org.thingsboard.server.dao.model.ModelConstants.*; | ||
30 | 29 | ||
31 | import java.util.UUID; | 30 | import java.util.UUID; |
32 | 31 | ||
32 | +import static org.thingsboard.server.dao.model.ModelConstants.*; | ||
33 | + | ||
33 | @Table(name = WIDGET_TYPE_COLUMN_FAMILY_NAME) | 34 | @Table(name = WIDGET_TYPE_COLUMN_FAMILY_NAME) |
34 | public final class WidgetTypeEntity implements BaseEntity<WidgetType> { | 35 | public final class WidgetTypeEntity implements BaseEntity<WidgetType> { |
35 | 36 |
@@ -25,11 +25,12 @@ import org.thingsboard.server.common.data.id.TenantId; | @@ -25,11 +25,12 @@ import org.thingsboard.server.common.data.id.TenantId; | ||
25 | import org.thingsboard.server.common.data.id.WidgetsBundleId; | 25 | import org.thingsboard.server.common.data.id.WidgetsBundleId; |
26 | import org.thingsboard.server.common.data.widget.WidgetsBundle; | 26 | import org.thingsboard.server.common.data.widget.WidgetsBundle; |
27 | import org.thingsboard.server.dao.model.SearchTextEntity; | 27 | import org.thingsboard.server.dao.model.SearchTextEntity; |
28 | -import static org.thingsboard.server.dao.model.ModelConstants.*; | ||
29 | 28 | ||
30 | import java.nio.ByteBuffer; | 29 | import java.nio.ByteBuffer; |
31 | import java.util.UUID; | 30 | import java.util.UUID; |
32 | 31 | ||
32 | +import static org.thingsboard.server.dao.model.ModelConstants.*; | ||
33 | + | ||
33 | @Table(name = WIDGETS_BUNDLE_COLUMN_FAMILY_NAME) | 34 | @Table(name = WIDGETS_BUNDLE_COLUMN_FAMILY_NAME) |
34 | public final class WidgetsBundleEntity implements SearchTextEntity<WidgetsBundle> { | 35 | public final class WidgetsBundleEntity implements SearchTextEntity<WidgetsBundle> { |
35 | 36 |
@@ -18,31 +18,33 @@ package org.thingsboard.server.dao.model.sql; | @@ -18,31 +18,33 @@ package org.thingsboard.server.dao.model.sql; | ||
18 | import com.datastax.driver.core.utils.UUIDs; | 18 | import com.datastax.driver.core.utils.UUIDs; |
19 | import com.fasterxml.jackson.databind.JsonNode; | 19 | import com.fasterxml.jackson.databind.JsonNode; |
20 | import lombok.Data; | 20 | import lombok.Data; |
21 | +import lombok.EqualsAndHashCode; | ||
21 | import org.hibernate.annotations.Type; | 22 | import org.hibernate.annotations.Type; |
22 | import org.hibernate.annotations.TypeDef; | 23 | import org.hibernate.annotations.TypeDef; |
23 | import org.thingsboard.server.common.data.AdminSettings; | 24 | import org.thingsboard.server.common.data.AdminSettings; |
25 | +import org.thingsboard.server.common.data.UUIDConverter; | ||
24 | import org.thingsboard.server.common.data.id.AdminSettingsId; | 26 | import org.thingsboard.server.common.data.id.AdminSettingsId; |
25 | import org.thingsboard.server.dao.model.BaseEntity; | 27 | import org.thingsboard.server.dao.model.BaseEntity; |
28 | +import org.thingsboard.server.dao.model.BaseSqlEntity; | ||
26 | import org.thingsboard.server.dao.util.mapping.JsonStringType; | 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 | import static org.thingsboard.server.dao.model.ModelConstants.*; | 36 | import static org.thingsboard.server.dao.model.ModelConstants.*; |
32 | 37 | ||
33 | @Data | 38 | @Data |
39 | +@EqualsAndHashCode(callSuper = true) | ||
34 | @Entity | 40 | @Entity |
35 | @TypeDef(name = "json", typeClass = JsonStringType.class) | 41 | @TypeDef(name = "json", typeClass = JsonStringType.class) |
36 | @Table(name = ADMIN_SETTINGS_COLUMN_FAMILY_NAME) | 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 | @Transient | 45 | @Transient |
40 | private static final long serialVersionUID = 842759712850362147L; | 46 | private static final long serialVersionUID = 842759712850362147L; |
41 | 47 | ||
42 | - @Id | ||
43 | - @Column(name = ID_PROPERTY) | ||
44 | - private UUID id; | ||
45 | - | ||
46 | @Column(name = ADMIN_SETTINGS_KEY_PROPERTY) | 48 | @Column(name = ADMIN_SETTINGS_KEY_PROPERTY) |
47 | private String key; | 49 | private String key; |
48 | 50 | ||
@@ -56,26 +58,16 @@ public final class AdminSettingsEntity implements BaseEntity<AdminSettings> { | @@ -56,26 +58,16 @@ public final class AdminSettingsEntity implements BaseEntity<AdminSettings> { | ||
56 | 58 | ||
57 | public AdminSettingsEntity(AdminSettings adminSettings) { | 59 | public AdminSettingsEntity(AdminSettings adminSettings) { |
58 | if (adminSettings.getId() != null) { | 60 | if (adminSettings.getId() != null) { |
59 | - this.id = adminSettings.getId().getId(); | 61 | + this.setId(adminSettings.getId().getId()); |
60 | } | 62 | } |
61 | this.key = adminSettings.getKey(); | 63 | this.key = adminSettings.getKey(); |
62 | this.jsonValue = adminSettings.getJsonValue(); | 64 | this.jsonValue = adminSettings.getJsonValue(); |
63 | } | 65 | } |
64 | 66 | ||
65 | @Override | 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 | public AdminSettings toData() { | 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 | adminSettings.setKey(key); | 71 | adminSettings.setKey(key); |
80 | adminSettings.setJsonValue(jsonValue); | 72 | adminSettings.setJsonValue(jsonValue); |
81 | return adminSettings; | 73 | return adminSettings; |
@@ -18,9 +18,11 @@ package org.thingsboard.server.dao.model.sql; | @@ -18,9 +18,11 @@ package org.thingsboard.server.dao.model.sql; | ||
18 | import com.datastax.driver.core.utils.UUIDs; | 18 | import com.datastax.driver.core.utils.UUIDs; |
19 | import com.fasterxml.jackson.databind.JsonNode; | 19 | import com.fasterxml.jackson.databind.JsonNode; |
20 | import lombok.Data; | 20 | import lombok.Data; |
21 | +import lombok.EqualsAndHashCode; | ||
21 | import org.hibernate.annotations.Type; | 22 | import org.hibernate.annotations.Type; |
22 | import org.hibernate.annotations.TypeDef; | 23 | import org.hibernate.annotations.TypeDef; |
23 | import org.thingsboard.server.common.data.EntityType; | 24 | import org.thingsboard.server.common.data.EntityType; |
25 | +import org.thingsboard.server.common.data.UUIDConverter; | ||
24 | import org.thingsboard.server.common.data.alarm.Alarm; | 26 | import org.thingsboard.server.common.data.alarm.Alarm; |
25 | import org.thingsboard.server.common.data.alarm.AlarmId; | 27 | import org.thingsboard.server.common.data.alarm.AlarmId; |
26 | import org.thingsboard.server.common.data.alarm.AlarmSeverity; | 28 | import org.thingsboard.server.common.data.alarm.AlarmSeverity; |
@@ -28,32 +30,29 @@ import org.thingsboard.server.common.data.alarm.AlarmStatus; | @@ -28,32 +30,29 @@ import org.thingsboard.server.common.data.alarm.AlarmStatus; | ||
28 | import org.thingsboard.server.common.data.id.EntityIdFactory; | 30 | import org.thingsboard.server.common.data.id.EntityIdFactory; |
29 | import org.thingsboard.server.common.data.id.TenantId; | 31 | import org.thingsboard.server.common.data.id.TenantId; |
30 | import org.thingsboard.server.dao.model.BaseEntity; | 32 | import org.thingsboard.server.dao.model.BaseEntity; |
33 | +import org.thingsboard.server.dao.model.BaseSqlEntity; | ||
31 | import org.thingsboard.server.dao.model.ModelConstants; | 34 | import org.thingsboard.server.dao.model.ModelConstants; |
32 | import org.thingsboard.server.dao.util.mapping.JsonStringType; | 35 | import org.thingsboard.server.dao.util.mapping.JsonStringType; |
33 | 36 | ||
34 | import javax.persistence.*; | 37 | import javax.persistence.*; |
35 | -import java.util.UUID; | ||
36 | 38 | ||
37 | import static org.thingsboard.server.dao.model.ModelConstants.*; | 39 | import static org.thingsboard.server.dao.model.ModelConstants.*; |
38 | 40 | ||
39 | @Data | 41 | @Data |
42 | +@EqualsAndHashCode(callSuper = true) | ||
40 | @Entity | 43 | @Entity |
41 | @TypeDef(name = "json", typeClass = JsonStringType.class) | 44 | @TypeDef(name = "json", typeClass = JsonStringType.class) |
42 | @Table(name = ALARM_COLUMN_FAMILY_NAME) | 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 | @Transient | 48 | @Transient |
46 | private static final long serialVersionUID = -339979717281685984L; | 49 | private static final long serialVersionUID = -339979717281685984L; |
47 | 50 | ||
48 | - @Id | ||
49 | - @Column(name = ID_PROPERTY) | ||
50 | - private UUID id; | ||
51 | - | ||
52 | @Column(name = ALARM_TENANT_ID_PROPERTY) | 51 | @Column(name = ALARM_TENANT_ID_PROPERTY) |
53 | - private UUID tenantId; | 52 | + private String tenantId; |
54 | 53 | ||
55 | @Column(name = ALARM_ORIGINATOR_ID_PROPERTY) | 54 | @Column(name = ALARM_ORIGINATOR_ID_PROPERTY) |
56 | - private UUID originatorId; | 55 | + private String originatorId; |
57 | 56 | ||
58 | @Column(name = ALARM_ORIGINATOR_TYPE_PROPERTY) | 57 | @Column(name = ALARM_ORIGINATOR_TYPE_PROPERTY) |
59 | private EntityType originatorType; | 58 | private EntityType originatorType; |
@@ -94,13 +93,13 @@ public final class AlarmEntity implements BaseEntity<Alarm> { | @@ -94,13 +93,13 @@ public final class AlarmEntity implements BaseEntity<Alarm> { | ||
94 | 93 | ||
95 | public AlarmEntity(Alarm alarm) { | 94 | public AlarmEntity(Alarm alarm) { |
96 | if (alarm.getId() != null) { | 95 | if (alarm.getId() != null) { |
97 | - this.id = alarm.getId().getId(); | 96 | + this.setId(alarm.getId().getId()); |
98 | } | 97 | } |
99 | if (alarm.getTenantId() != null) { | 98 | if (alarm.getTenantId() != null) { |
100 | - this.tenantId = alarm.getTenantId().getId(); | 99 | + this.tenantId = UUIDConverter.fromTimeUUID(alarm.getTenantId().getId()); |
101 | } | 100 | } |
102 | this.type = alarm.getType(); | 101 | this.type = alarm.getType(); |
103 | - this.originatorId = alarm.getOriginator().getId(); | 102 | + this.originatorId = UUIDConverter.fromTimeUUID(alarm.getOriginator().getId()); |
104 | this.originatorType = alarm.getOriginator().getEntityType(); | 103 | this.originatorType = alarm.getOriginator().getEntityType(); |
105 | this.type = alarm.getType(); | 104 | this.type = alarm.getType(); |
106 | this.severity = alarm.getSeverity(); | 105 | this.severity = alarm.getSeverity(); |
@@ -115,12 +114,12 @@ public final class AlarmEntity implements BaseEntity<Alarm> { | @@ -115,12 +114,12 @@ public final class AlarmEntity implements BaseEntity<Alarm> { | ||
115 | 114 | ||
116 | @Override | 115 | @Override |
117 | public Alarm toData() { | 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 | if (tenantId != null) { | 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 | alarm.setType(type); | 123 | alarm.setType(type); |
125 | alarm.setSeverity(severity); | 124 | alarm.setSeverity(severity); |
126 | alarm.setStatus(status); | 125 | alarm.setStatus(status); |
@@ -18,39 +18,41 @@ package org.thingsboard.server.dao.model.sql; | @@ -18,39 +18,41 @@ package org.thingsboard.server.dao.model.sql; | ||
18 | import com.datastax.driver.core.utils.UUIDs; | 18 | import com.datastax.driver.core.utils.UUIDs; |
19 | import com.fasterxml.jackson.databind.JsonNode; | 19 | import com.fasterxml.jackson.databind.JsonNode; |
20 | import lombok.Data; | 20 | import lombok.Data; |
21 | +import lombok.EqualsAndHashCode; | ||
21 | import org.hibernate.annotations.Type; | 22 | import org.hibernate.annotations.Type; |
22 | import org.hibernate.annotations.TypeDef; | 23 | import org.hibernate.annotations.TypeDef; |
24 | +import org.thingsboard.server.common.data.UUIDConverter; | ||
23 | import org.thingsboard.server.common.data.asset.Asset; | 25 | import org.thingsboard.server.common.data.asset.Asset; |
24 | import org.thingsboard.server.common.data.id.AssetId; | 26 | import org.thingsboard.server.common.data.id.AssetId; |
25 | import org.thingsboard.server.common.data.id.CustomerId; | 27 | import org.thingsboard.server.common.data.id.CustomerId; |
26 | import org.thingsboard.server.common.data.id.TenantId; | 28 | import org.thingsboard.server.common.data.id.TenantId; |
29 | +import org.thingsboard.server.dao.model.BaseSqlEntity; | ||
27 | import org.thingsboard.server.dao.model.ModelConstants; | 30 | import org.thingsboard.server.dao.model.ModelConstants; |
28 | import org.thingsboard.server.dao.model.SearchTextEntity; | 31 | import org.thingsboard.server.dao.model.SearchTextEntity; |
29 | import org.thingsboard.server.dao.util.mapping.JsonStringType; | 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 | import static org.thingsboard.server.dao.model.ModelConstants.*; | 39 | import static org.thingsboard.server.dao.model.ModelConstants.*; |
35 | 40 | ||
36 | @Data | 41 | @Data |
42 | +@EqualsAndHashCode(callSuper = true) | ||
37 | @Entity | 43 | @Entity |
38 | @TypeDef(name = "json", typeClass = JsonStringType.class) | 44 | @TypeDef(name = "json", typeClass = JsonStringType.class) |
39 | @Table(name = ASSET_COLUMN_FAMILY_NAME) | 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 | @Transient | 48 | @Transient |
43 | private static final long serialVersionUID = -4089175869616037592L; | 49 | private static final long serialVersionUID = -4089175869616037592L; |
44 | 50 | ||
45 | - @Id | ||
46 | - @Column(name = ID_PROPERTY) | ||
47 | - private UUID id; | ||
48 | - | ||
49 | @Column(name = ASSET_TENANT_ID_PROPERTY) | 51 | @Column(name = ASSET_TENANT_ID_PROPERTY) |
50 | - private UUID tenantId; | 52 | + private String tenantId; |
51 | 53 | ||
52 | @Column(name = ASSET_CUSTOMER_ID_PROPERTY) | 54 | @Column(name = ASSET_CUSTOMER_ID_PROPERTY) |
53 | - private UUID customerId; | 55 | + private String customerId; |
54 | 56 | ||
55 | @Column(name = ASSET_NAME_PROPERTY) | 57 | @Column(name = ASSET_NAME_PROPERTY) |
56 | private String name; | 58 | private String name; |
@@ -71,13 +73,13 @@ public final class AssetEntity implements SearchTextEntity<Asset> { | @@ -71,13 +73,13 @@ public final class AssetEntity implements SearchTextEntity<Asset> { | ||
71 | 73 | ||
72 | public AssetEntity(Asset asset) { | 74 | public AssetEntity(Asset asset) { |
73 | if (asset.getId() != null) { | 75 | if (asset.getId() != null) { |
74 | - this.id = asset.getId().getId(); | 76 | + this.setId(asset.getId().getId()); |
75 | } | 77 | } |
76 | if (asset.getTenantId() != null) { | 78 | if (asset.getTenantId() != null) { |
77 | - this.tenantId = asset.getTenantId().getId(); | 79 | + this.tenantId = UUIDConverter.fromTimeUUID(asset.getTenantId().getId()); |
78 | } | 80 | } |
79 | if (asset.getCustomerId() != null) { | 81 | if (asset.getCustomerId() != null) { |
80 | - this.customerId = asset.getCustomerId().getId(); | 82 | + this.customerId = UUIDConverter.fromTimeUUID(asset.getCustomerId().getId()); |
81 | } | 83 | } |
82 | this.name = asset.getName(); | 84 | this.name = asset.getName(); |
83 | this.type = asset.getType(); | 85 | this.type = asset.getType(); |
@@ -100,13 +102,13 @@ public final class AssetEntity implements SearchTextEntity<Asset> { | @@ -100,13 +102,13 @@ public final class AssetEntity implements SearchTextEntity<Asset> { | ||
100 | 102 | ||
101 | @Override | 103 | @Override |
102 | public Asset toData() { | 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 | if (tenantId != null) { | 107 | if (tenantId != null) { |
106 | - asset.setTenantId(new TenantId(tenantId)); | 108 | + asset.setTenantId(new TenantId(UUIDConverter.fromString(tenantId))); |
107 | } | 109 | } |
108 | if (customerId != null) { | 110 | if (customerId != null) { |
109 | - asset.setCustomerId(new CustomerId(customerId)); | 111 | + asset.setCustomerId(new CustomerId(UUIDConverter.fromString(customerId))); |
110 | } | 112 | } |
111 | asset.setName(name); | 113 | asset.setName(name); |
112 | asset.setType(type); | 114 | asset.setType(type); |
@@ -21,14 +21,13 @@ import lombok.NoArgsConstructor; | @@ -21,14 +21,13 @@ import lombok.NoArgsConstructor; | ||
21 | import org.thingsboard.server.common.data.EntityType; | 21 | import org.thingsboard.server.common.data.EntityType; |
22 | 22 | ||
23 | import java.io.Serializable; | 23 | import java.io.Serializable; |
24 | -import java.util.UUID; | ||
25 | 24 | ||
26 | @Data | 25 | @Data |
27 | @AllArgsConstructor | 26 | @AllArgsConstructor |
28 | @NoArgsConstructor | 27 | @NoArgsConstructor |
29 | public class AttributeKvCompositeKey implements Serializable { | 28 | public class AttributeKvCompositeKey implements Serializable { |
30 | private EntityType entityType; | 29 | private EntityType entityType; |
31 | - private UUID entityId; | 30 | + private String entityId; |
32 | private String attributeType; | 31 | private String attributeType; |
33 | private String attributeKey; | 32 | private String attributeKey; |
34 | } | 33 | } |
@@ -22,7 +22,6 @@ import org.thingsboard.server.dao.model.ToData; | @@ -22,7 +22,6 @@ import org.thingsboard.server.dao.model.ToData; | ||
22 | 22 | ||
23 | import javax.persistence.*; | 23 | import javax.persistence.*; |
24 | import java.io.Serializable; | 24 | import java.io.Serializable; |
25 | -import java.util.UUID; | ||
26 | 25 | ||
27 | import static org.thingsboard.server.dao.model.ModelConstants.*; | 26 | import static org.thingsboard.server.dao.model.ModelConstants.*; |
28 | 27 | ||
@@ -39,7 +38,7 @@ public class AttributeKvEntity implements ToData<AttributeKvEntry>, Serializable | @@ -39,7 +38,7 @@ public class AttributeKvEntity implements ToData<AttributeKvEntry>, Serializable | ||
39 | 38 | ||
40 | @Id | 39 | @Id |
41 | @Column(name = ENTITY_ID_COLUMN) | 40 | @Column(name = ENTITY_ID_COLUMN) |
42 | - private UUID entityId; | 41 | + private String entityId; |
43 | 42 | ||
44 | @Id | 43 | @Id |
45 | @Column(name = ATTRIBUTE_TYPE_COLUMN) | 44 | @Column(name = ATTRIBUTE_TYPE_COLUMN) |
@@ -17,32 +17,30 @@ package org.thingsboard.server.dao.model.sql; | @@ -17,32 +17,30 @@ package org.thingsboard.server.dao.model.sql; | ||
17 | 17 | ||
18 | import com.fasterxml.jackson.databind.JsonNode; | 18 | import com.fasterxml.jackson.databind.JsonNode; |
19 | import lombok.Data; | 19 | import lombok.Data; |
20 | +import lombok.EqualsAndHashCode; | ||
20 | import org.hibernate.annotations.Type; | 21 | import org.hibernate.annotations.Type; |
21 | import org.hibernate.annotations.TypeDef; | 22 | import org.hibernate.annotations.TypeDef; |
22 | import org.thingsboard.server.common.data.id.ComponentDescriptorId; | 23 | import org.thingsboard.server.common.data.id.ComponentDescriptorId; |
23 | import org.thingsboard.server.common.data.plugin.ComponentDescriptor; | 24 | import org.thingsboard.server.common.data.plugin.ComponentDescriptor; |
24 | import org.thingsboard.server.common.data.plugin.ComponentScope; | 25 | import org.thingsboard.server.common.data.plugin.ComponentScope; |
25 | import org.thingsboard.server.common.data.plugin.ComponentType; | 26 | import org.thingsboard.server.common.data.plugin.ComponentType; |
27 | +import org.thingsboard.server.dao.model.BaseSqlEntity; | ||
26 | import org.thingsboard.server.dao.model.ModelConstants; | 28 | import org.thingsboard.server.dao.model.ModelConstants; |
27 | import org.thingsboard.server.dao.model.SearchTextEntity; | 29 | import org.thingsboard.server.dao.model.SearchTextEntity; |
28 | import org.thingsboard.server.dao.util.mapping.JsonStringType; | 30 | import org.thingsboard.server.dao.util.mapping.JsonStringType; |
29 | 31 | ||
30 | import javax.persistence.*; | 32 | import javax.persistence.*; |
31 | -import java.util.UUID; | ||
32 | 33 | ||
33 | @Data | 34 | @Data |
35 | +@EqualsAndHashCode(callSuper = true) | ||
34 | @Entity | 36 | @Entity |
35 | @TypeDef(name = "json", typeClass = JsonStringType.class) | 37 | @TypeDef(name = "json", typeClass = JsonStringType.class) |
36 | @Table(name = ModelConstants.COMPONENT_DESCRIPTOR_COLUMN_FAMILY_NAME) | 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 | @Transient | 41 | @Transient |
40 | private static final long serialVersionUID = 253590350877992402L; | 42 | private static final long serialVersionUID = 253590350877992402L; |
41 | 43 | ||
42 | - @Id | ||
43 | - @Column(name = ModelConstants.ID_PROPERTY) | ||
44 | - private UUID id; | ||
45 | - | ||
46 | @Enumerated(EnumType.STRING) | 44 | @Enumerated(EnumType.STRING) |
47 | @Column(name = ModelConstants.COMPONENT_DESCRIPTOR_TYPE_PROPERTY) | 45 | @Column(name = ModelConstants.COMPONENT_DESCRIPTOR_TYPE_PROPERTY) |
48 | private ComponentType type; | 46 | private ComponentType type; |
@@ -72,7 +70,7 @@ public class ComponentDescriptorEntity implements SearchTextEntity<ComponentDesc | @@ -72,7 +70,7 @@ public class ComponentDescriptorEntity implements SearchTextEntity<ComponentDesc | ||
72 | 70 | ||
73 | public ComponentDescriptorEntity(ComponentDescriptor component) { | 71 | public ComponentDescriptorEntity(ComponentDescriptor component) { |
74 | if (component.getId() != null) { | 72 | if (component.getId() != null) { |
75 | - this.id = component.getId().getId(); | 73 | + this.setId(component.getId().getId()); |
76 | } | 74 | } |
77 | this.actions = component.getActions(); | 75 | this.actions = component.getActions(); |
78 | this.type = component.getType(); | 76 | this.type = component.getType(); |
@@ -85,7 +83,7 @@ public class ComponentDescriptorEntity implements SearchTextEntity<ComponentDesc | @@ -85,7 +83,7 @@ public class ComponentDescriptorEntity implements SearchTextEntity<ComponentDesc | ||
85 | 83 | ||
86 | @Override | 84 | @Override |
87 | public ComponentDescriptor toData() { | 85 | public ComponentDescriptor toData() { |
88 | - ComponentDescriptor data = new ComponentDescriptor(new ComponentDescriptorId(id)); | 86 | + ComponentDescriptor data = new ComponentDescriptor(new ComponentDescriptorId(this.getId())); |
89 | data.setType(type); | 87 | data.setType(type); |
90 | data.setScope(scope); | 88 | data.setScope(scope); |
91 | data.setName(this.getName()); | 89 | data.setName(this.getName()); |
@@ -95,16 +93,6 @@ public class ComponentDescriptorEntity implements SearchTextEntity<ComponentDesc | @@ -95,16 +93,6 @@ public class ComponentDescriptorEntity implements SearchTextEntity<ComponentDesc | ||
95 | return data; | 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 | public String getSearchText() { | 96 | public String getSearchText() { |
109 | return searchText; | 97 | return searchText; |
110 | } | 98 | } |
@@ -18,33 +18,35 @@ package org.thingsboard.server.dao.model.sql; | @@ -18,33 +18,35 @@ package org.thingsboard.server.dao.model.sql; | ||
18 | import com.datastax.driver.core.utils.UUIDs; | 18 | import com.datastax.driver.core.utils.UUIDs; |
19 | import com.fasterxml.jackson.databind.JsonNode; | 19 | import com.fasterxml.jackson.databind.JsonNode; |
20 | import lombok.Data; | 20 | import lombok.Data; |
21 | +import lombok.EqualsAndHashCode; | ||
21 | import org.hibernate.annotations.Type; | 22 | import org.hibernate.annotations.Type; |
22 | import org.hibernate.annotations.TypeDef; | 23 | import org.hibernate.annotations.TypeDef; |
23 | import org.thingsboard.server.common.data.Customer; | 24 | import org.thingsboard.server.common.data.Customer; |
25 | +import org.thingsboard.server.common.data.UUIDConverter; | ||
24 | import org.thingsboard.server.common.data.id.CustomerId; | 26 | import org.thingsboard.server.common.data.id.CustomerId; |
25 | import org.thingsboard.server.common.data.id.TenantId; | 27 | import org.thingsboard.server.common.data.id.TenantId; |
28 | +import org.thingsboard.server.dao.model.BaseSqlEntity; | ||
26 | import org.thingsboard.server.dao.model.ModelConstants; | 29 | import org.thingsboard.server.dao.model.ModelConstants; |
27 | import org.thingsboard.server.dao.model.SearchTextEntity; | 30 | import org.thingsboard.server.dao.model.SearchTextEntity; |
28 | import org.thingsboard.server.dao.util.mapping.JsonStringType; | 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 | @Data | 38 | @Data |
39 | +@EqualsAndHashCode(callSuper = true) | ||
34 | @Entity | 40 | @Entity |
35 | @TypeDef(name = "json", typeClass = JsonStringType.class) | 41 | @TypeDef(name = "json", typeClass = JsonStringType.class) |
36 | @Table(name = ModelConstants.CUSTOMER_COLUMN_FAMILY_NAME) | 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 | @Transient | 45 | @Transient |
40 | private static final long serialVersionUID = 8951342124082981556L; | 46 | private static final long serialVersionUID = 8951342124082981556L; |
41 | 47 | ||
42 | - @Id | ||
43 | - @Column(name = ModelConstants.ID_PROPERTY) | ||
44 | - private UUID id; | ||
45 | - | ||
46 | @Column(name = ModelConstants.CUSTOMER_TENANT_ID_PROPERTY) | 48 | @Column(name = ModelConstants.CUSTOMER_TENANT_ID_PROPERTY) |
47 | - private UUID tenantId; | 49 | + private String tenantId; |
48 | 50 | ||
49 | @Column(name = ModelConstants.CUSTOMER_TITLE_PROPERTY) | 51 | @Column(name = ModelConstants.CUSTOMER_TITLE_PROPERTY) |
50 | private String title; | 52 | private String title; |
@@ -86,9 +88,9 @@ public final class CustomerEntity implements SearchTextEntity<Customer> { | @@ -86,9 +88,9 @@ public final class CustomerEntity implements SearchTextEntity<Customer> { | ||
86 | 88 | ||
87 | public CustomerEntity(Customer customer) { | 89 | public CustomerEntity(Customer customer) { |
88 | if (customer.getId() != null) { | 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 | this.title = customer.getTitle(); | 94 | this.title = customer.getTitle(); |
93 | this.country = customer.getCountry(); | 95 | this.country = customer.getCountry(); |
94 | this.state = customer.getState(); | 96 | this.state = customer.getState(); |
@@ -102,16 +104,6 @@ public final class CustomerEntity implements SearchTextEntity<Customer> { | @@ -102,16 +104,6 @@ public final class CustomerEntity implements SearchTextEntity<Customer> { | ||
102 | } | 104 | } |
103 | 105 | ||
104 | @Override | 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 | public String getSearchTextSource() { | 107 | public String getSearchTextSource() { |
116 | return title; | 108 | return title; |
117 | } | 109 | } |
@@ -123,9 +115,9 @@ public final class CustomerEntity implements SearchTextEntity<Customer> { | @@ -123,9 +115,9 @@ public final class CustomerEntity implements SearchTextEntity<Customer> { | ||
123 | 115 | ||
124 | @Override | 116 | @Override |
125 | public Customer toData() { | 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 | customer.setTitle(title); | 121 | customer.setTitle(title); |
130 | customer.setCountry(country); | 122 | customer.setCountry(country); |
131 | customer.setState(state); | 123 | customer.setState(state); |
@@ -18,37 +18,38 @@ package org.thingsboard.server.dao.model.sql; | @@ -18,37 +18,38 @@ package org.thingsboard.server.dao.model.sql; | ||
18 | import com.datastax.driver.core.utils.UUIDs; | 18 | import com.datastax.driver.core.utils.UUIDs; |
19 | import com.fasterxml.jackson.databind.JsonNode; | 19 | import com.fasterxml.jackson.databind.JsonNode; |
20 | import lombok.Data; | 20 | import lombok.Data; |
21 | +import lombok.EqualsAndHashCode; | ||
21 | import org.hibernate.annotations.Type; | 22 | import org.hibernate.annotations.Type; |
22 | import org.hibernate.annotations.TypeDef; | 23 | import org.hibernate.annotations.TypeDef; |
23 | import org.thingsboard.server.common.data.Dashboard; | 24 | import org.thingsboard.server.common.data.Dashboard; |
24 | import org.thingsboard.server.common.data.id.CustomerId; | 25 | import org.thingsboard.server.common.data.id.CustomerId; |
25 | import org.thingsboard.server.common.data.id.DashboardId; | 26 | import org.thingsboard.server.common.data.id.DashboardId; |
26 | import org.thingsboard.server.common.data.id.TenantId; | 27 | import org.thingsboard.server.common.data.id.TenantId; |
28 | +import org.thingsboard.server.dao.model.BaseSqlEntity; | ||
27 | import org.thingsboard.server.dao.model.ModelConstants; | 29 | import org.thingsboard.server.dao.model.ModelConstants; |
28 | import org.thingsboard.server.dao.model.SearchTextEntity; | 30 | import org.thingsboard.server.dao.model.SearchTextEntity; |
29 | import org.thingsboard.server.dao.util.mapping.JsonStringType; | 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 | @Data | 38 | @Data |
39 | +@EqualsAndHashCode(callSuper = true) | ||
35 | @Entity | 40 | @Entity |
36 | @TypeDef(name = "json", typeClass = JsonStringType.class) | 41 | @TypeDef(name = "json", typeClass = JsonStringType.class) |
37 | @Table(name = ModelConstants.DASHBOARD_COLUMN_FAMILY_NAME) | 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 | @Transient | 45 | @Transient |
41 | private static final long serialVersionUID = -4838084363113078898L; | 46 | private static final long serialVersionUID = -4838084363113078898L; |
42 | 47 | ||
43 | - @Id | ||
44 | - @Column(name = ModelConstants.ID_PROPERTY) | ||
45 | - private UUID id; | ||
46 | - | ||
47 | @Column(name = ModelConstants.DASHBOARD_TENANT_ID_PROPERTY) | 48 | @Column(name = ModelConstants.DASHBOARD_TENANT_ID_PROPERTY) |
48 | - private UUID tenantId; | 49 | + private String tenantId; |
49 | 50 | ||
50 | @Column(name = ModelConstants.DASHBOARD_CUSTOMER_ID_PROPERTY) | 51 | @Column(name = ModelConstants.DASHBOARD_CUSTOMER_ID_PROPERTY) |
51 | - private UUID customerId; | 52 | + private String customerId; |
52 | 53 | ||
53 | @Column(name = ModelConstants.DASHBOARD_TITLE_PROPERTY) | 54 | @Column(name = ModelConstants.DASHBOARD_TITLE_PROPERTY) |
54 | private String title; | 55 | private String title; |
@@ -66,13 +67,13 @@ public final class DashboardEntity implements SearchTextEntity<Dashboard> { | @@ -66,13 +67,13 @@ public final class DashboardEntity implements SearchTextEntity<Dashboard> { | ||
66 | 67 | ||
67 | public DashboardEntity(Dashboard dashboard) { | 68 | public DashboardEntity(Dashboard dashboard) { |
68 | if (dashboard.getId() != null) { | 69 | if (dashboard.getId() != null) { |
69 | - this.id = dashboard.getId().getId(); | 70 | + this.setId(dashboard.getId().getId()); |
70 | } | 71 | } |
71 | if (dashboard.getTenantId() != null) { | 72 | if (dashboard.getTenantId() != null) { |
72 | - this.tenantId = dashboard.getTenantId().getId(); | 73 | + this.tenantId = toString(dashboard.getTenantId().getId()); |
73 | } | 74 | } |
74 | if (dashboard.getCustomerId() != null) { | 75 | if (dashboard.getCustomerId() != null) { |
75 | - this.customerId = dashboard.getCustomerId().getId(); | 76 | + this.customerId = toString(dashboard.getCustomerId().getId()); |
76 | } | 77 | } |
77 | this.title = dashboard.getTitle(); | 78 | this.title = dashboard.getTitle(); |
78 | this.configuration = dashboard.getConfiguration(); | 79 | this.configuration = dashboard.getConfiguration(); |
@@ -90,13 +91,13 @@ public final class DashboardEntity implements SearchTextEntity<Dashboard> { | @@ -90,13 +91,13 @@ public final class DashboardEntity implements SearchTextEntity<Dashboard> { | ||
90 | 91 | ||
91 | @Override | 92 | @Override |
92 | public Dashboard toData() { | 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 | if (tenantId != null) { | 96 | if (tenantId != null) { |
96 | - dashboard.setTenantId(new TenantId(tenantId)); | 97 | + dashboard.setTenantId(new TenantId(toUUID(tenantId))); |
97 | } | 98 | } |
98 | if (customerId != null) { | 99 | if (customerId != null) { |
99 | - dashboard.setCustomerId(new CustomerId(customerId)); | 100 | + dashboard.setCustomerId(new CustomerId(toUUID(customerId))); |
100 | } | 101 | } |
101 | dashboard.setTitle(title); | 102 | dashboard.setTitle(title); |
102 | dashboard.setConfiguration(configuration); | 103 | dashboard.setConfiguration(configuration); |
@@ -17,33 +17,34 @@ package org.thingsboard.server.dao.model.sql; | @@ -17,33 +17,34 @@ package org.thingsboard.server.dao.model.sql; | ||
17 | 17 | ||
18 | import com.datastax.driver.core.utils.UUIDs; | 18 | import com.datastax.driver.core.utils.UUIDs; |
19 | import lombok.Data; | 19 | import lombok.Data; |
20 | +import lombok.EqualsAndHashCode; | ||
20 | import org.thingsboard.server.common.data.DashboardInfo; | 21 | import org.thingsboard.server.common.data.DashboardInfo; |
21 | import org.thingsboard.server.common.data.id.CustomerId; | 22 | import org.thingsboard.server.common.data.id.CustomerId; |
22 | import org.thingsboard.server.common.data.id.DashboardId; | 23 | import org.thingsboard.server.common.data.id.DashboardId; |
23 | import org.thingsboard.server.common.data.id.TenantId; | 24 | import org.thingsboard.server.common.data.id.TenantId; |
25 | +import org.thingsboard.server.dao.model.BaseSqlEntity; | ||
24 | import org.thingsboard.server.dao.model.ModelConstants; | 26 | import org.thingsboard.server.dao.model.ModelConstants; |
25 | import org.thingsboard.server.dao.model.SearchTextEntity; | 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 | @Data | 34 | @Data |
35 | +@EqualsAndHashCode(callSuper = true) | ||
31 | @Entity | 36 | @Entity |
32 | @Table(name = ModelConstants.DASHBOARD_COLUMN_FAMILY_NAME) | 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 | @Transient | 40 | @Transient |
36 | private static final long serialVersionUID = -5525675905528050250L; | 41 | private static final long serialVersionUID = -5525675905528050250L; |
37 | 42 | ||
38 | - @Id | ||
39 | - @Column(name = ModelConstants.ID_PROPERTY) | ||
40 | - private UUID id; | ||
41 | - | ||
42 | @Column(name = ModelConstants.DASHBOARD_TENANT_ID_PROPERTY) | 43 | @Column(name = ModelConstants.DASHBOARD_TENANT_ID_PROPERTY) |
43 | - private UUID tenantId; | 44 | + private String tenantId; |
44 | 45 | ||
45 | @Column(name = ModelConstants.DASHBOARD_CUSTOMER_ID_PROPERTY) | 46 | @Column(name = ModelConstants.DASHBOARD_CUSTOMER_ID_PROPERTY) |
46 | - private UUID customerId; | 47 | + private String customerId; |
47 | 48 | ||
48 | @Column(name = ModelConstants.DASHBOARD_TITLE_PROPERTY) | 49 | @Column(name = ModelConstants.DASHBOARD_TITLE_PROPERTY) |
49 | private String title; | 50 | private String title; |
@@ -57,13 +58,13 @@ public class DashboardInfoEntity implements SearchTextEntity<DashboardInfo> { | @@ -57,13 +58,13 @@ public class DashboardInfoEntity implements SearchTextEntity<DashboardInfo> { | ||
57 | 58 | ||
58 | public DashboardInfoEntity(DashboardInfo dashboardInfo) { | 59 | public DashboardInfoEntity(DashboardInfo dashboardInfo) { |
59 | if (dashboardInfo.getId() != null) { | 60 | if (dashboardInfo.getId() != null) { |
60 | - this.id = dashboardInfo.getId().getId(); | 61 | + this.setId(dashboardInfo.getId().getId()); |
61 | } | 62 | } |
62 | if (dashboardInfo.getTenantId() != null) { | 63 | if (dashboardInfo.getTenantId() != null) { |
63 | - this.tenantId = dashboardInfo.getTenantId().getId(); | 64 | + this.tenantId = toString(dashboardInfo.getTenantId().getId()); |
64 | } | 65 | } |
65 | if (dashboardInfo.getCustomerId() != null) { | 66 | if (dashboardInfo.getCustomerId() != null) { |
66 | - this.customerId = dashboardInfo.getCustomerId().getId(); | 67 | + this.customerId = toString(dashboardInfo.getCustomerId().getId()); |
67 | } | 68 | } |
68 | this.title = dashboardInfo.getTitle(); | 69 | this.title = dashboardInfo.getTitle(); |
69 | } | 70 | } |
@@ -84,13 +85,13 @@ public class DashboardInfoEntity implements SearchTextEntity<DashboardInfo> { | @@ -84,13 +85,13 @@ public class DashboardInfoEntity implements SearchTextEntity<DashboardInfo> { | ||
84 | 85 | ||
85 | @Override | 86 | @Override |
86 | public DashboardInfo toData() { | 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 | if (tenantId != null) { | 90 | if (tenantId != null) { |
90 | - dashboardInfo.setTenantId(new TenantId(tenantId)); | 91 | + dashboardInfo.setTenantId(new TenantId(toUUID(tenantId))); |
91 | } | 92 | } |
92 | if (customerId != null) { | 93 | if (customerId != null) { |
93 | - dashboardInfo.setCustomerId(new CustomerId(customerId)); | 94 | + dashboardInfo.setCustomerId(new CustomerId(toUUID(customerId))); |
94 | } | 95 | } |
95 | dashboardInfo.setTitle(title); | 96 | dashboardInfo.setTitle(title); |
96 | return dashboardInfo; | 97 | return dashboardInfo; |
@@ -17,29 +17,28 @@ package org.thingsboard.server.dao.model.sql; | @@ -17,29 +17,28 @@ package org.thingsboard.server.dao.model.sql; | ||
17 | 17 | ||
18 | import com.datastax.driver.core.utils.UUIDs; | 18 | import com.datastax.driver.core.utils.UUIDs; |
19 | import lombok.Data; | 19 | import lombok.Data; |
20 | +import lombok.EqualsAndHashCode; | ||
20 | import org.thingsboard.server.common.data.id.DeviceCredentialsId; | 21 | import org.thingsboard.server.common.data.id.DeviceCredentialsId; |
21 | import org.thingsboard.server.common.data.id.DeviceId; | 22 | import org.thingsboard.server.common.data.id.DeviceId; |
22 | import org.thingsboard.server.common.data.security.DeviceCredentials; | 23 | import org.thingsboard.server.common.data.security.DeviceCredentials; |
23 | import org.thingsboard.server.common.data.security.DeviceCredentialsType; | 24 | import org.thingsboard.server.common.data.security.DeviceCredentialsType; |
24 | import org.thingsboard.server.dao.model.BaseEntity; | 25 | import org.thingsboard.server.dao.model.BaseEntity; |
26 | +import org.thingsboard.server.dao.model.BaseSqlEntity; | ||
25 | import org.thingsboard.server.dao.model.ModelConstants; | 27 | import org.thingsboard.server.dao.model.ModelConstants; |
26 | 28 | ||
27 | import javax.persistence.*; | 29 | import javax.persistence.*; |
28 | -import java.util.UUID; | ||
29 | 30 | ||
30 | @Data | 31 | @Data |
32 | +@EqualsAndHashCode(callSuper = true) | ||
31 | @Entity | 33 | @Entity |
32 | @Table(name = ModelConstants.DEVICE_CREDENTIALS_COLUMN_FAMILY_NAME) | 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 | @Transient | 37 | @Transient |
36 | private static final long serialVersionUID = -2512362753385470464L; | 38 | private static final long serialVersionUID = -2512362753385470464L; |
37 | - @Id | ||
38 | - @Column(name = ModelConstants.ID_PROPERTY) | ||
39 | - private UUID id; | ||
40 | - | 39 | + |
41 | @Column(name = ModelConstants.DEVICE_CREDENTIALS_DEVICE_ID_PROPERTY) | 40 | @Column(name = ModelConstants.DEVICE_CREDENTIALS_DEVICE_ID_PROPERTY) |
42 | - private UUID deviceId; | 41 | + private String deviceId; |
43 | 42 | ||
44 | @Enumerated(EnumType.STRING) | 43 | @Enumerated(EnumType.STRING) |
45 | @Column(name = ModelConstants.DEVICE_CREDENTIALS_CREDENTIALS_TYPE_PROPERTY) | 44 | @Column(name = ModelConstants.DEVICE_CREDENTIALS_CREDENTIALS_TYPE_PROPERTY) |
@@ -57,22 +56,22 @@ public final class DeviceCredentialsEntity implements BaseEntity<DeviceCredentia | @@ -57,22 +56,22 @@ public final class DeviceCredentialsEntity implements BaseEntity<DeviceCredentia | ||
57 | 56 | ||
58 | public DeviceCredentialsEntity(DeviceCredentials deviceCredentials) { | 57 | public DeviceCredentialsEntity(DeviceCredentials deviceCredentials) { |
59 | if (deviceCredentials.getId() != null) { | 58 | if (deviceCredentials.getId() != null) { |
60 | - this.id = deviceCredentials.getId().getId(); | 59 | + this.setId(deviceCredentials.getId().getId()); |
61 | } | 60 | } |
62 | if (deviceCredentials.getDeviceId() != null) { | 61 | if (deviceCredentials.getDeviceId() != null) { |
63 | - this.deviceId = deviceCredentials.getDeviceId().getId(); | 62 | + this.deviceId = toString(deviceCredentials.getDeviceId().getId()); |
64 | } | 63 | } |
65 | this.credentialsType = deviceCredentials.getCredentialsType(); | 64 | this.credentialsType = deviceCredentials.getCredentialsType(); |
66 | this.credentialsId = deviceCredentials.getCredentialsId(); | 65 | this.credentialsId = deviceCredentials.getCredentialsId(); |
67 | - this.credentialsValue = deviceCredentials.getCredentialsValue(); | 66 | + this.credentialsValue = deviceCredentials.getCredentialsValue(); |
68 | } | 67 | } |
69 | - | 68 | + |
70 | @Override | 69 | @Override |
71 | public DeviceCredentials toData() { | 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 | if (deviceId != null) { | 73 | if (deviceId != null) { |
75 | - deviceCredentials.setDeviceId(new DeviceId(deviceId)); | 74 | + deviceCredentials.setDeviceId(new DeviceId(toUUID(deviceId))); |
76 | } | 75 | } |
77 | deviceCredentials.setCredentialsType(credentialsType); | 76 | deviceCredentials.setCredentialsType(credentialsType); |
78 | deviceCredentials.setCredentialsId(credentialsId); | 77 | deviceCredentials.setCredentialsId(credentialsId); |
@@ -18,44 +18,45 @@ package org.thingsboard.server.dao.model.sql; | @@ -18,44 +18,45 @@ package org.thingsboard.server.dao.model.sql; | ||
18 | import com.datastax.driver.core.utils.UUIDs; | 18 | import com.datastax.driver.core.utils.UUIDs; |
19 | import com.fasterxml.jackson.databind.JsonNode; | 19 | import com.fasterxml.jackson.databind.JsonNode; |
20 | import lombok.Data; | 20 | import lombok.Data; |
21 | +import lombok.EqualsAndHashCode; | ||
21 | import org.hibernate.annotations.Type; | 22 | import org.hibernate.annotations.Type; |
22 | import org.hibernate.annotations.TypeDef; | 23 | import org.hibernate.annotations.TypeDef; |
23 | import org.thingsboard.server.common.data.Device; | 24 | import org.thingsboard.server.common.data.Device; |
24 | import org.thingsboard.server.common.data.id.CustomerId; | 25 | import org.thingsboard.server.common.data.id.CustomerId; |
25 | import org.thingsboard.server.common.data.id.DeviceId; | 26 | import org.thingsboard.server.common.data.id.DeviceId; |
26 | import org.thingsboard.server.common.data.id.TenantId; | 27 | import org.thingsboard.server.common.data.id.TenantId; |
28 | +import org.thingsboard.server.dao.model.BaseSqlEntity; | ||
27 | import org.thingsboard.server.dao.model.ModelConstants; | 29 | import org.thingsboard.server.dao.model.ModelConstants; |
28 | import org.thingsboard.server.dao.model.SearchTextEntity; | 30 | import org.thingsboard.server.dao.model.SearchTextEntity; |
29 | import org.thingsboard.server.dao.util.mapping.JsonStringType; | 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 | @Data | 38 | @Data |
39 | +@EqualsAndHashCode(callSuper = true) | ||
35 | @Entity | 40 | @Entity |
36 | @TypeDef(name = "json", typeClass = JsonStringType.class) | 41 | @TypeDef(name = "json", typeClass = JsonStringType.class) |
37 | @Table(name = ModelConstants.DEVICE_COLUMN_FAMILY_NAME) | 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 | @Transient | 45 | @Transient |
41 | private static final long serialVersionUID = 8050086401213322856L; | 46 | private static final long serialVersionUID = 8050086401213322856L; |
42 | 47 | ||
43 | - @Id | ||
44 | - @Column(name = ModelConstants.ID_PROPERTY) | ||
45 | - private UUID id; | ||
46 | - | ||
47 | @Column(name = ModelConstants.DEVICE_TENANT_ID_PROPERTY) | 48 | @Column(name = ModelConstants.DEVICE_TENANT_ID_PROPERTY) |
48 | - private UUID tenantId; | 49 | + private String tenantId; |
49 | 50 | ||
50 | @Column(name = ModelConstants.DEVICE_CUSTOMER_ID_PROPERTY) | 51 | @Column(name = ModelConstants.DEVICE_CUSTOMER_ID_PROPERTY) |
51 | - private UUID customerId; | 52 | + private String customerId; |
52 | 53 | ||
53 | @Column(name = ModelConstants.DEVICE_TYPE_PROPERTY) | 54 | @Column(name = ModelConstants.DEVICE_TYPE_PROPERTY) |
54 | private String type; | 55 | private String type; |
55 | 56 | ||
56 | @Column(name = ModelConstants.DEVICE_NAME_PROPERTY) | 57 | @Column(name = ModelConstants.DEVICE_NAME_PROPERTY) |
57 | private String name; | 58 | private String name; |
58 | - | 59 | + |
59 | @Column(name = ModelConstants.SEARCH_TEXT_PROPERTY) | 60 | @Column(name = ModelConstants.SEARCH_TEXT_PROPERTY) |
60 | private String searchText; | 61 | private String searchText; |
61 | 62 | ||
@@ -69,13 +70,13 @@ public final class DeviceEntity implements SearchTextEntity<Device> { | @@ -69,13 +70,13 @@ public final class DeviceEntity implements SearchTextEntity<Device> { | ||
69 | 70 | ||
70 | public DeviceEntity(Device device) { | 71 | public DeviceEntity(Device device) { |
71 | if (device.getId() != null) { | 72 | if (device.getId() != null) { |
72 | - this.id = device.getId().getId(); | 73 | + this.setId(device.getId().getId()); |
73 | } | 74 | } |
74 | if (device.getTenantId() != null) { | 75 | if (device.getTenantId() != null) { |
75 | - this.tenantId = device.getTenantId().getId(); | 76 | + this.tenantId = toString(device.getTenantId().getId()); |
76 | } | 77 | } |
77 | if (device.getCustomerId() != null) { | 78 | if (device.getCustomerId() != null) { |
78 | - this.customerId = device.getCustomerId().getId(); | 79 | + this.customerId = toString(device.getCustomerId().getId()); |
79 | } | 80 | } |
80 | this.name = device.getName(); | 81 | this.name = device.getName(); |
81 | this.type = device.getType(); | 82 | this.type = device.getType(); |
@@ -91,16 +92,16 @@ public final class DeviceEntity implements SearchTextEntity<Device> { | @@ -91,16 +92,16 @@ public final class DeviceEntity implements SearchTextEntity<Device> { | ||
91 | public void setSearchText(String searchText) { | 92 | public void setSearchText(String searchText) { |
92 | this.searchText = searchText; | 93 | this.searchText = searchText; |
93 | } | 94 | } |
94 | - | 95 | + |
95 | @Override | 96 | @Override |
96 | public Device toData() { | 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 | if (tenantId != null) { | 100 | if (tenantId != null) { |
100 | - device.setTenantId(new TenantId(tenantId)); | 101 | + device.setTenantId(new TenantId(toUUID(tenantId))); |
101 | } | 102 | } |
102 | if (customerId != null) { | 103 | if (customerId != null) { |
103 | - device.setCustomerId(new CustomerId(customerId)); | 104 | + device.setCustomerId(new CustomerId(toUUID(customerId))); |
104 | } | 105 | } |
105 | device.setName(name); | 106 | device.setName(name); |
106 | device.setType(type); | 107 | device.setType(type); |
@@ -18,43 +18,43 @@ package org.thingsboard.server.dao.model.sql; | @@ -18,43 +18,43 @@ package org.thingsboard.server.dao.model.sql; | ||
18 | import com.datastax.driver.core.utils.UUIDs; | 18 | import com.datastax.driver.core.utils.UUIDs; |
19 | import com.fasterxml.jackson.databind.JsonNode; | 19 | import com.fasterxml.jackson.databind.JsonNode; |
20 | import lombok.Data; | 20 | import lombok.Data; |
21 | +import lombok.EqualsAndHashCode; | ||
21 | import lombok.NoArgsConstructor; | 22 | import lombok.NoArgsConstructor; |
22 | import org.hibernate.annotations.Type; | 23 | import org.hibernate.annotations.Type; |
23 | import org.hibernate.annotations.TypeDef; | 24 | import org.hibernate.annotations.TypeDef; |
24 | import org.thingsboard.server.common.data.EntityType; | 25 | import org.thingsboard.server.common.data.EntityType; |
25 | import org.thingsboard.server.common.data.Event; | 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 | import org.thingsboard.server.dao.model.BaseEntity; | 30 | import org.thingsboard.server.dao.model.BaseEntity; |
31 | +import org.thingsboard.server.dao.model.BaseSqlEntity; | ||
28 | import org.thingsboard.server.dao.util.mapping.JsonStringType; | 32 | import org.thingsboard.server.dao.util.mapping.JsonStringType; |
29 | 33 | ||
30 | import javax.persistence.*; | 34 | import javax.persistence.*; |
31 | -import java.util.UUID; | ||
32 | 35 | ||
33 | import static org.thingsboard.server.dao.model.ModelConstants.*; | 36 | import static org.thingsboard.server.dao.model.ModelConstants.*; |
34 | 37 | ||
35 | @Data | 38 | @Data |
39 | +@EqualsAndHashCode(callSuper = true) | ||
36 | @Entity | 40 | @Entity |
37 | @TypeDef(name = "json", typeClass = JsonStringType.class) | 41 | @TypeDef(name = "json", typeClass = JsonStringType.class) |
38 | @Table(name = EVENT_COLUMN_FAMILY_NAME) | 42 | @Table(name = EVENT_COLUMN_FAMILY_NAME) |
39 | @NoArgsConstructor | 43 | @NoArgsConstructor |
40 | -public class EventEntity implements BaseEntity<Event> { | 44 | +public class EventEntity extends BaseSqlEntity<Event> implements BaseEntity<Event> { |
41 | 45 | ||
42 | @Transient | 46 | @Transient |
43 | private static final long serialVersionUID = -5717830061727466727L; | 47 | private static final long serialVersionUID = -5717830061727466727L; |
44 | 48 | ||
45 | - @Id | ||
46 | - @Column(name = ID_PROPERTY) | ||
47 | - private UUID id; | ||
48 | - | ||
49 | @Column(name = EVENT_TENANT_ID_PROPERTY) | 49 | @Column(name = EVENT_TENANT_ID_PROPERTY) |
50 | - private UUID tenantId; | 50 | + private String tenantId; |
51 | 51 | ||
52 | @Enumerated(EnumType.STRING) | 52 | @Enumerated(EnumType.STRING) |
53 | @Column(name = EVENT_ENTITY_TYPE_PROPERTY) | 53 | @Column(name = EVENT_ENTITY_TYPE_PROPERTY) |
54 | private EntityType entityType; | 54 | private EntityType entityType; |
55 | 55 | ||
56 | @Column(name = EVENT_ENTITY_ID_PROPERTY) | 56 | @Column(name = EVENT_ENTITY_ID_PROPERTY) |
57 | - private UUID entityId; | 57 | + private String entityId; |
58 | 58 | ||
59 | @Column(name = EVENT_TYPE_PROPERTY) | 59 | @Column(name = EVENT_TYPE_PROPERTY) |
60 | private String eventType; | 60 | private String eventType; |
@@ -68,52 +68,27 @@ public class EventEntity implements BaseEntity<Event> { | @@ -68,52 +68,27 @@ public class EventEntity implements BaseEntity<Event> { | ||
68 | 68 | ||
69 | public EventEntity(Event event) { | 69 | public EventEntity(Event event) { |
70 | if (event.getId() != null) { | 70 | if (event.getId() != null) { |
71 | - this.id = event.getId().getId(); | 71 | + this.setId(event.getId().getId()); |
72 | } | 72 | } |
73 | if (event.getTenantId() != null) { | 73 | if (event.getTenantId() != null) { |
74 | - this.tenantId = event.getTenantId().getId(); | 74 | + this.tenantId = toString(event.getTenantId().getId()); |
75 | } | 75 | } |
76 | if (event.getEntityId() != null) { | 76 | if (event.getEntityId() != null) { |
77 | this.entityType = event.getEntityId().getEntityType(); | 77 | this.entityType = event.getEntityId().getEntityType(); |
78 | - this.entityId = event.getEntityId().getId(); | 78 | + this.entityId = toString(event.getEntityId().getId()); |
79 | } | 79 | } |
80 | this.eventType = event.getType(); | 80 | this.eventType = event.getType(); |
81 | this.eventUid = event.getUid(); | 81 | this.eventUid = event.getUid(); |
82 | this.body = event.getBody(); | 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 | @Override | 86 | @Override |
96 | public Event toData() { | 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 | event.setBody(body); | 92 | event.setBody(body); |
118 | event.setType(eventType); | 93 | event.setType(eventType); |
119 | event.setUid(eventUid); | 94 | event.setUid(eventUid); |
@@ -18,36 +18,38 @@ package org.thingsboard.server.dao.model.sql; | @@ -18,36 +18,38 @@ package org.thingsboard.server.dao.model.sql; | ||
18 | import com.datastax.driver.core.utils.UUIDs; | 18 | import com.datastax.driver.core.utils.UUIDs; |
19 | import com.fasterxml.jackson.databind.JsonNode; | 19 | import com.fasterxml.jackson.databind.JsonNode; |
20 | import lombok.Data; | 20 | import lombok.Data; |
21 | +import lombok.EqualsAndHashCode; | ||
21 | import org.hibernate.annotations.Type; | 22 | import org.hibernate.annotations.Type; |
22 | import org.hibernate.annotations.TypeDef; | 23 | import org.hibernate.annotations.TypeDef; |
23 | import org.thingsboard.server.common.data.id.PluginId; | 24 | import org.thingsboard.server.common.data.id.PluginId; |
24 | import org.thingsboard.server.common.data.id.TenantId; | 25 | import org.thingsboard.server.common.data.id.TenantId; |
25 | import org.thingsboard.server.common.data.plugin.ComponentLifecycleState; | 26 | import org.thingsboard.server.common.data.plugin.ComponentLifecycleState; |
26 | import org.thingsboard.server.common.data.plugin.PluginMetaData; | 27 | import org.thingsboard.server.common.data.plugin.PluginMetaData; |
28 | +import org.thingsboard.server.dao.model.BaseSqlEntity; | ||
27 | import org.thingsboard.server.dao.model.ModelConstants; | 29 | import org.thingsboard.server.dao.model.ModelConstants; |
28 | import org.thingsboard.server.dao.model.SearchTextEntity; | 30 | import org.thingsboard.server.dao.model.SearchTextEntity; |
29 | import org.thingsboard.server.dao.util.mapping.JsonStringType; | 31 | import org.thingsboard.server.dao.util.mapping.JsonStringType; |
30 | 32 | ||
31 | import javax.persistence.*; | 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 | @Data | 38 | @Data |
39 | +@EqualsAndHashCode(callSuper = true) | ||
35 | @Entity | 40 | @Entity |
36 | @TypeDef(name = "json", typeClass = JsonStringType.class) | 41 | @TypeDef(name = "json", typeClass = JsonStringType.class) |
37 | @Table(name = ModelConstants.PLUGIN_COLUMN_FAMILY_NAME) | 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 | @Transient | 45 | @Transient |
41 | private static final long serialVersionUID = -6164321050824823149L; | 46 | private static final long serialVersionUID = -6164321050824823149L; |
42 | - @Id | ||
43 | - @Column(name = ModelConstants.ID_PROPERTY) | ||
44 | - private UUID id; | ||
45 | 47 | ||
46 | @Column(name = ModelConstants.PLUGIN_API_TOKEN_PROPERTY) | 48 | @Column(name = ModelConstants.PLUGIN_API_TOKEN_PROPERTY) |
47 | private String apiToken; | 49 | private String apiToken; |
48 | 50 | ||
49 | @Column(name = ModelConstants.PLUGIN_TENANT_ID_PROPERTY) | 51 | @Column(name = ModelConstants.PLUGIN_TENANT_ID_PROPERTY) |
50 | - private UUID tenantId; | 52 | + private String tenantId; |
51 | 53 | ||
52 | @Column(name = ModelConstants.PLUGIN_NAME_PROPERTY) | 54 | @Column(name = ModelConstants.PLUGIN_NAME_PROPERTY) |
53 | private String name; | 55 | private String name; |
@@ -78,9 +80,9 @@ public class PluginMetaDataEntity implements SearchTextEntity<PluginMetaData> { | @@ -78,9 +80,9 @@ public class PluginMetaDataEntity implements SearchTextEntity<PluginMetaData> { | ||
78 | 80 | ||
79 | public PluginMetaDataEntity(PluginMetaData pluginMetaData) { | 81 | public PluginMetaDataEntity(PluginMetaData pluginMetaData) { |
80 | if (pluginMetaData.getId() != null) { | 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 | this.apiToken = pluginMetaData.getApiToken(); | 86 | this.apiToken = pluginMetaData.getApiToken(); |
85 | this.clazz = pluginMetaData.getClazz(); | 87 | this.clazz = pluginMetaData.getClazz(); |
86 | this.name = pluginMetaData.getName(); | 88 | this.name = pluginMetaData.getName(); |
@@ -102,20 +104,10 @@ public class PluginMetaDataEntity implements SearchTextEntity<PluginMetaData> { | @@ -102,20 +104,10 @@ public class PluginMetaDataEntity implements SearchTextEntity<PluginMetaData> { | ||
102 | } | 104 | } |
103 | 105 | ||
104 | @Override | 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 | public PluginMetaData toData() { | 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 | data.setName(name); | 111 | data.setName(name); |
120 | data.setClazz(clazz); | 112 | data.setClazz(clazz); |
121 | data.setPublicAccess(publicAccess); | 113 | data.setPublicAccess(publicAccess); |
@@ -18,11 +18,11 @@ package org.thingsboard.server.dao.model.sql; | @@ -18,11 +18,11 @@ package org.thingsboard.server.dao.model.sql; | ||
18 | import lombok.AllArgsConstructor; | 18 | import lombok.AllArgsConstructor; |
19 | import lombok.Data; | 19 | import lombok.Data; |
20 | import lombok.NoArgsConstructor; | 20 | import lombok.NoArgsConstructor; |
21 | +import org.thingsboard.server.common.data.UUIDConverter; | ||
21 | import org.thingsboard.server.common.data.relation.EntityRelation; | 22 | import org.thingsboard.server.common.data.relation.EntityRelation; |
22 | 23 | ||
23 | import javax.persistence.Transient; | 24 | import javax.persistence.Transient; |
24 | import java.io.Serializable; | 25 | import java.io.Serializable; |
25 | -import java.util.UUID; | ||
26 | 26 | ||
27 | @NoArgsConstructor | 27 | @NoArgsConstructor |
28 | @AllArgsConstructor | 28 | @AllArgsConstructor |
@@ -32,17 +32,17 @@ public class RelationCompositeKey implements Serializable { | @@ -32,17 +32,17 @@ public class RelationCompositeKey implements Serializable { | ||
32 | @Transient | 32 | @Transient |
33 | private static final long serialVersionUID = -4089175869616037592L; | 33 | private static final long serialVersionUID = -4089175869616037592L; |
34 | 34 | ||
35 | - private UUID fromId; | 35 | + private String fromId; |
36 | private String fromType; | 36 | private String fromType; |
37 | - private UUID toId; | 37 | + private String toId; |
38 | private String toType; | 38 | private String toType; |
39 | private String relationType; | 39 | private String relationType; |
40 | private String relationTypeGroup; | 40 | private String relationTypeGroup; |
41 | 41 | ||
42 | public RelationCompositeKey(EntityRelation relation) { | 42 | public RelationCompositeKey(EntityRelation relation) { |
43 | - this.fromId = relation.getFrom().getId(); | 43 | + this.fromId = UUIDConverter.fromTimeUUID(relation.getFrom().getId()); |
44 | this.fromType = relation.getFrom().getEntityType().name(); | 44 | this.fromType = relation.getFrom().getEntityType().name(); |
45 | - this.toId = relation.getTo().getId(); | 45 | + this.toId = UUIDConverter.fromTimeUUID(relation.getTo().getId()); |
46 | this.toType = relation.getTo().getEntityType().name(); | 46 | this.toType = relation.getTo().getEntityType().name(); |
47 | this.relationType = relation.getType(); | 47 | this.relationType = relation.getType(); |
48 | this.relationTypeGroup = relation.getTypeGroup().name(); | 48 | this.relationTypeGroup = relation.getTypeGroup().name(); |
@@ -19,6 +19,7 @@ import com.fasterxml.jackson.databind.JsonNode; | @@ -19,6 +19,7 @@ import com.fasterxml.jackson.databind.JsonNode; | ||
19 | import lombok.Data; | 19 | import lombok.Data; |
20 | import org.hibernate.annotations.Type; | 20 | import org.hibernate.annotations.Type; |
21 | import org.hibernate.annotations.TypeDef; | 21 | import org.hibernate.annotations.TypeDef; |
22 | +import org.thingsboard.server.common.data.UUIDConverter; | ||
22 | import org.thingsboard.server.common.data.id.EntityIdFactory; | 23 | import org.thingsboard.server.common.data.id.EntityIdFactory; |
23 | import org.thingsboard.server.common.data.relation.EntityRelation; | 24 | import org.thingsboard.server.common.data.relation.EntityRelation; |
24 | import org.thingsboard.server.common.data.relation.RelationTypeGroup; | 25 | import org.thingsboard.server.common.data.relation.RelationTypeGroup; |
@@ -26,7 +27,6 @@ import org.thingsboard.server.dao.model.ToData; | @@ -26,7 +27,6 @@ import org.thingsboard.server.dao.model.ToData; | ||
26 | import org.thingsboard.server.dao.util.mapping.JsonStringType; | 27 | import org.thingsboard.server.dao.util.mapping.JsonStringType; |
27 | 28 | ||
28 | import javax.persistence.*; | 29 | import javax.persistence.*; |
29 | -import java.util.UUID; | ||
30 | 30 | ||
31 | import static org.thingsboard.server.dao.model.ModelConstants.*; | 31 | import static org.thingsboard.server.dao.model.ModelConstants.*; |
32 | 32 | ||
@@ -39,7 +39,7 @@ public final class RelationEntity implements ToData<EntityRelation> { | @@ -39,7 +39,7 @@ public final class RelationEntity implements ToData<EntityRelation> { | ||
39 | 39 | ||
40 | @Id | 40 | @Id |
41 | @Column(name = RELATION_FROM_ID_PROPERTY) | 41 | @Column(name = RELATION_FROM_ID_PROPERTY) |
42 | - private UUID fromId; | 42 | + private String fromId; |
43 | 43 | ||
44 | @Id | 44 | @Id |
45 | @Column(name = RELATION_FROM_TYPE_PROPERTY) | 45 | @Column(name = RELATION_FROM_TYPE_PROPERTY) |
@@ -47,7 +47,7 @@ public final class RelationEntity implements ToData<EntityRelation> { | @@ -47,7 +47,7 @@ public final class RelationEntity implements ToData<EntityRelation> { | ||
47 | 47 | ||
48 | @Id | 48 | @Id |
49 | @Column(name = RELATION_TO_ID_PROPERTY) | 49 | @Column(name = RELATION_TO_ID_PROPERTY) |
50 | - private UUID toId; | 50 | + private String toId; |
51 | 51 | ||
52 | @Id | 52 | @Id |
53 | @Column(name = RELATION_TO_TYPE_PROPERTY) | 53 | @Column(name = RELATION_TO_TYPE_PROPERTY) |
@@ -71,11 +71,11 @@ public final class RelationEntity implements ToData<EntityRelation> { | @@ -71,11 +71,11 @@ public final class RelationEntity implements ToData<EntityRelation> { | ||
71 | 71 | ||
72 | public RelationEntity(EntityRelation relation) { | 72 | public RelationEntity(EntityRelation relation) { |
73 | if (relation.getTo() != null) { | 73 | if (relation.getTo() != null) { |
74 | - this.toId = relation.getTo().getId(); | 74 | + this.toId = UUIDConverter.fromTimeUUID(relation.getTo().getId()); |
75 | this.toType = relation.getTo().getEntityType().name(); | 75 | this.toType = relation.getTo().getEntityType().name(); |
76 | } | 76 | } |
77 | if (relation.getFrom() != null) { | 77 | if (relation.getFrom() != null) { |
78 | - this.fromId = relation.getFrom().getId(); | 78 | + this.fromId = UUIDConverter.fromTimeUUID(relation.getFrom().getId()); |
79 | this.fromType = relation.getFrom().getEntityType().name(); | 79 | this.fromType = relation.getFrom().getEntityType().name(); |
80 | } | 80 | } |
81 | this.relationType = relation.getType(); | 81 | this.relationType = relation.getType(); |
@@ -87,10 +87,10 @@ public final class RelationEntity implements ToData<EntityRelation> { | @@ -87,10 +87,10 @@ public final class RelationEntity implements ToData<EntityRelation> { | ||
87 | public EntityRelation toData() { | 87 | public EntityRelation toData() { |
88 | EntityRelation relation = new EntityRelation(); | 88 | EntityRelation relation = new EntityRelation(); |
89 | if (toId != null && toType != null) { | 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 | if (fromId != null && fromType != null) { | 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 | relation.setType(relationType); | 95 | relation.setType(relationType); |
96 | relation.setTypeGroup(RelationTypeGroup.valueOf(relationTypeGroup)); | 96 | relation.setTypeGroup(RelationTypeGroup.valueOf(relationTypeGroup)); |
@@ -18,6 +18,7 @@ package org.thingsboard.server.dao.model.sql; | @@ -18,6 +18,7 @@ package org.thingsboard.server.dao.model.sql; | ||
18 | import com.datastax.driver.core.utils.UUIDs; | 18 | import com.datastax.driver.core.utils.UUIDs; |
19 | import com.fasterxml.jackson.databind.JsonNode; | 19 | import com.fasterxml.jackson.databind.JsonNode; |
20 | import lombok.Data; | 20 | import lombok.Data; |
21 | +import lombok.EqualsAndHashCode; | ||
21 | import org.hibernate.annotations.Type; | 22 | import org.hibernate.annotations.Type; |
22 | import org.hibernate.annotations.TypeDef; | 23 | import org.hibernate.annotations.TypeDef; |
23 | import org.thingsboard.server.common.data.id.RuleId; | 24 | import org.thingsboard.server.common.data.id.RuleId; |
@@ -25,27 +26,25 @@ import org.thingsboard.server.common.data.id.TenantId; | @@ -25,27 +26,25 @@ import org.thingsboard.server.common.data.id.TenantId; | ||
25 | import org.thingsboard.server.common.data.plugin.ComponentLifecycleState; | 26 | import org.thingsboard.server.common.data.plugin.ComponentLifecycleState; |
26 | import org.thingsboard.server.common.data.rule.RuleMetaData; | 27 | import org.thingsboard.server.common.data.rule.RuleMetaData; |
27 | import org.thingsboard.server.dao.DaoUtil; | 28 | import org.thingsboard.server.dao.DaoUtil; |
29 | +import org.thingsboard.server.dao.model.BaseSqlEntity; | ||
28 | import org.thingsboard.server.dao.model.ModelConstants; | 30 | import org.thingsboard.server.dao.model.ModelConstants; |
29 | import org.thingsboard.server.dao.model.SearchTextEntity; | 31 | import org.thingsboard.server.dao.model.SearchTextEntity; |
30 | import org.thingsboard.server.dao.util.mapping.JsonStringType; | 32 | import org.thingsboard.server.dao.util.mapping.JsonStringType; |
31 | 33 | ||
32 | import javax.persistence.*; | 34 | import javax.persistence.*; |
33 | -import java.util.UUID; | ||
34 | 35 | ||
35 | @Data | 36 | @Data |
37 | +@EqualsAndHashCode(callSuper = true) | ||
36 | @Entity | 38 | @Entity |
37 | @TypeDef(name = "json", typeClass = JsonStringType.class) | 39 | @TypeDef(name = "json", typeClass = JsonStringType.class) |
38 | @Table(name = ModelConstants.RULE_COLUMN_FAMILY_NAME) | 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 | @Transient | 43 | @Transient |
42 | private static final long serialVersionUID = -1506905644259463884L; | 44 | private static final long serialVersionUID = -1506905644259463884L; |
43 | - @Id | ||
44 | - @Column(name = ModelConstants.ID_PROPERTY) | ||
45 | - private UUID id; | ||
46 | 45 | ||
47 | @Column(name = ModelConstants.RULE_TENANT_ID_PROPERTY) | 46 | @Column(name = ModelConstants.RULE_TENANT_ID_PROPERTY) |
48 | - private UUID tenantId; | 47 | + private String tenantId; |
49 | 48 | ||
50 | @Column(name = ModelConstants.RULE_NAME_PROPERTY) | 49 | @Column(name = ModelConstants.RULE_NAME_PROPERTY) |
51 | private String name; | 50 | private String name; |
@@ -84,9 +83,9 @@ public class RuleMetaDataEntity implements SearchTextEntity<RuleMetaData> { | @@ -84,9 +83,9 @@ public class RuleMetaDataEntity implements SearchTextEntity<RuleMetaData> { | ||
84 | 83 | ||
85 | public RuleMetaDataEntity(RuleMetaData rule) { | 84 | public RuleMetaDataEntity(RuleMetaData rule) { |
86 | if (rule.getId() != null) { | 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 | this.name = rule.getName(); | 89 | this.name = rule.getName(); |
91 | this.pluginToken = rule.getPluginToken(); | 90 | this.pluginToken = rule.getPluginToken(); |
92 | this.state = rule.getState(); | 91 | this.state = rule.getState(); |
@@ -109,23 +108,13 @@ public class RuleMetaDataEntity implements SearchTextEntity<RuleMetaData> { | @@ -109,23 +108,13 @@ public class RuleMetaDataEntity implements SearchTextEntity<RuleMetaData> { | ||
109 | } | 108 | } |
110 | 109 | ||
111 | @Override | 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 | public RuleMetaData toData() { | 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 | rule.setName(name); | 114 | rule.setName(name); |
126 | rule.setState(state); | 115 | rule.setState(state); |
127 | rule.setWeight(weight); | 116 | rule.setWeight(weight); |
128 | - rule.setCreatedTime(UUIDs.unixTimestamp(id)); | 117 | + rule.setCreatedTime(UUIDs.unixTimestamp(getId())); |
129 | rule.setPluginToken(pluginToken); | 118 | rule.setPluginToken(pluginToken); |
130 | rule.setFilters(filters); | 119 | rule.setFilters(filters); |
131 | rule.setProcessor(processor); | 120 | rule.setProcessor(processor); |
@@ -18,11 +18,9 @@ package org.thingsboard.server.dao.model.sql; | @@ -18,11 +18,9 @@ package org.thingsboard.server.dao.model.sql; | ||
18 | import lombok.AllArgsConstructor; | 18 | import lombok.AllArgsConstructor; |
19 | import lombok.Data; | 19 | import lombok.Data; |
20 | 20 | ||
21 | -import java.util.UUID; | ||
22 | - | ||
23 | @AllArgsConstructor | 21 | @AllArgsConstructor |
24 | @Data | 22 | @Data |
25 | public class TenantDeviceTypeEntity { | 23 | public class TenantDeviceTypeEntity { |
26 | - private UUID tenantId; | 24 | + private String tenantId; |
27 | private String type; | 25 | private String type; |
28 | } | 26 | } |
@@ -18,30 +18,31 @@ package org.thingsboard.server.dao.model.sql; | @@ -18,30 +18,31 @@ package org.thingsboard.server.dao.model.sql; | ||
18 | import com.datastax.driver.core.utils.UUIDs; | 18 | import com.datastax.driver.core.utils.UUIDs; |
19 | import com.fasterxml.jackson.databind.JsonNode; | 19 | import com.fasterxml.jackson.databind.JsonNode; |
20 | import lombok.Data; | 20 | import lombok.Data; |
21 | +import lombok.EqualsAndHashCode; | ||
21 | import org.hibernate.annotations.Type; | 22 | import org.hibernate.annotations.Type; |
22 | import org.hibernate.annotations.TypeDef; | 23 | import org.hibernate.annotations.TypeDef; |
23 | import org.thingsboard.server.common.data.Tenant; | 24 | import org.thingsboard.server.common.data.Tenant; |
24 | import org.thingsboard.server.common.data.id.TenantId; | 25 | import org.thingsboard.server.common.data.id.TenantId; |
26 | +import org.thingsboard.server.dao.model.BaseSqlEntity; | ||
25 | import org.thingsboard.server.dao.model.ModelConstants; | 27 | import org.thingsboard.server.dao.model.ModelConstants; |
26 | import org.thingsboard.server.dao.model.SearchTextEntity; | 28 | import org.thingsboard.server.dao.model.SearchTextEntity; |
27 | import org.thingsboard.server.dao.util.mapping.JsonStringType; | 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 | @Data | 36 | @Data |
37 | +@EqualsAndHashCode(callSuper = true) | ||
33 | @Entity | 38 | @Entity |
34 | @TypeDef(name = "json", typeClass = JsonStringType.class) | 39 | @TypeDef(name = "json", typeClass = JsonStringType.class) |
35 | @Table(name = ModelConstants.TENANT_COLUMN_FAMILY_NAME) | 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 | @Transient | 43 | @Transient |
39 | private static final long serialVersionUID = -4330655990232136337L; | 44 | private static final long serialVersionUID = -4330655990232136337L; |
40 | 45 | ||
41 | - @Id | ||
42 | - @Column(name = ModelConstants.ID_PROPERTY) | ||
43 | - private UUID id; | ||
44 | - | ||
45 | @Column(name = ModelConstants.TENANT_TITLE_PROPERTY) | 46 | @Column(name = ModelConstants.TENANT_TITLE_PROPERTY) |
46 | private String title; | 47 | private String title; |
47 | 48 | ||
@@ -75,7 +76,7 @@ public final class TenantEntity implements SearchTextEntity<Tenant> { | @@ -75,7 +76,7 @@ public final class TenantEntity implements SearchTextEntity<Tenant> { | ||
75 | @Column(name = ModelConstants.EMAIL_PROPERTY) | 76 | @Column(name = ModelConstants.EMAIL_PROPERTY) |
76 | private String email; | 77 | private String email; |
77 | 78 | ||
78 | - @Type(type="json") | 79 | + @Type(type = "json") |
79 | @Column(name = ModelConstants.TENANT_ADDITIONAL_INFO_PROPERTY) | 80 | @Column(name = ModelConstants.TENANT_ADDITIONAL_INFO_PROPERTY) |
80 | private JsonNode additionalInfo; | 81 | private JsonNode additionalInfo; |
81 | 82 | ||
@@ -85,7 +86,7 @@ public final class TenantEntity implements SearchTextEntity<Tenant> { | @@ -85,7 +86,7 @@ public final class TenantEntity implements SearchTextEntity<Tenant> { | ||
85 | 86 | ||
86 | public TenantEntity(Tenant tenant) { | 87 | public TenantEntity(Tenant tenant) { |
87 | if (tenant.getId() != null) { | 88 | if (tenant.getId() != null) { |
88 | - this.id = tenant.getId().getId(); | 89 | + this.setId(tenant.getId().getId()); |
89 | } | 90 | } |
90 | this.title = tenant.getTitle(); | 91 | this.title = tenant.getTitle(); |
91 | this.region = tenant.getRegion(); | 92 | this.region = tenant.getRegion(); |
@@ -116,8 +117,8 @@ public final class TenantEntity implements SearchTextEntity<Tenant> { | @@ -116,8 +117,8 @@ public final class TenantEntity implements SearchTextEntity<Tenant> { | ||
116 | 117 | ||
117 | @Override | 118 | @Override |
118 | public Tenant toData() { | 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 | tenant.setTitle(title); | 122 | tenant.setTitle(title); |
122 | tenant.setRegion(region); | 123 | tenant.setRegion(region); |
123 | tenant.setCountry(country); | 124 | tenant.setCountry(country); |
@@ -22,18 +22,17 @@ import org.thingsboard.server.common.data.EntityType; | @@ -22,18 +22,17 @@ import org.thingsboard.server.common.data.EntityType; | ||
22 | 22 | ||
23 | import javax.persistence.Transient; | 23 | import javax.persistence.Transient; |
24 | import java.io.Serializable; | 24 | import java.io.Serializable; |
25 | -import java.util.UUID; | ||
26 | 25 | ||
27 | @Data | 26 | @Data |
28 | @AllArgsConstructor | 27 | @AllArgsConstructor |
29 | @NoArgsConstructor | 28 | @NoArgsConstructor |
30 | -public class TsKvCompositeKey implements Serializable{ | 29 | +public class TsKvCompositeKey implements Serializable { |
31 | 30 | ||
32 | @Transient | 31 | @Transient |
33 | private static final long serialVersionUID = -4089175869616037523L; | 32 | private static final long serialVersionUID = -4089175869616037523L; |
34 | 33 | ||
35 | private EntityType entityType; | 34 | private EntityType entityType; |
36 | - private UUID entityId; | 35 | + private String entityId; |
37 | private String key; | 36 | private String key; |
38 | private long ts; | 37 | private long ts; |
39 | } | 38 | } |
@@ -21,7 +21,6 @@ import org.thingsboard.server.common.data.kv.*; | @@ -21,7 +21,6 @@ import org.thingsboard.server.common.data.kv.*; | ||
21 | import org.thingsboard.server.dao.model.ToData; | 21 | import org.thingsboard.server.dao.model.ToData; |
22 | 22 | ||
23 | import javax.persistence.*; | 23 | import javax.persistence.*; |
24 | -import java.util.UUID; | ||
25 | 24 | ||
26 | import static org.thingsboard.server.dao.model.ModelConstants.*; | 25 | import static org.thingsboard.server.dao.model.ModelConstants.*; |
27 | 26 | ||
@@ -69,7 +68,7 @@ public final class TsKvEntity implements ToData<TsKvEntry> { | @@ -69,7 +68,7 @@ public final class TsKvEntity implements ToData<TsKvEntry> { | ||
69 | 68 | ||
70 | @Id | 69 | @Id |
71 | @Column(name = ENTITY_ID_COLUMN) | 70 | @Column(name = ENTITY_ID_COLUMN) |
72 | - private UUID entityId; | 71 | + private String entityId; |
73 | 72 | ||
74 | @Id | 73 | @Id |
75 | @Column(name = KEY_COLUMN) | 74 | @Column(name = KEY_COLUMN) |
@@ -15,12 +15,13 @@ | @@ -15,12 +15,13 @@ | ||
15 | */ | 15 | */ |
16 | package org.thingsboard.server.dao.model.sql; | 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 | import org.thingsboard.server.common.data.EntityType; | 21 | import org.thingsboard.server.common.data.EntityType; |
20 | 22 | ||
21 | import javax.persistence.Transient; | 23 | import javax.persistence.Transient; |
22 | import java.io.Serializable; | 24 | import java.io.Serializable; |
23 | -import java.util.UUID; | ||
24 | 25 | ||
25 | @Data | 26 | @Data |
26 | @NoArgsConstructor | 27 | @NoArgsConstructor |
@@ -31,6 +32,6 @@ public class TsKvLatestCompositeKey implements Serializable{ | @@ -31,6 +32,6 @@ public class TsKvLatestCompositeKey implements Serializable{ | ||
31 | private static final long serialVersionUID = -4089175869616037523L; | 32 | private static final long serialVersionUID = -4089175869616037523L; |
32 | 33 | ||
33 | private EntityType entityType; | 34 | private EntityType entityType; |
34 | - private UUID entityId; | 35 | + private String entityId; |
35 | private String key; | 36 | private String key; |
36 | } | 37 | } |
@@ -21,7 +21,6 @@ import org.thingsboard.server.common.data.kv.*; | @@ -21,7 +21,6 @@ import org.thingsboard.server.common.data.kv.*; | ||
21 | import org.thingsboard.server.dao.model.ToData; | 21 | import org.thingsboard.server.dao.model.ToData; |
22 | 22 | ||
23 | import javax.persistence.*; | 23 | import javax.persistence.*; |
24 | -import java.util.UUID; | ||
25 | 24 | ||
26 | import static org.thingsboard.server.dao.model.ModelConstants.*; | 25 | import static org.thingsboard.server.dao.model.ModelConstants.*; |
27 | 26 | ||
@@ -31,6 +30,8 @@ import static org.thingsboard.server.dao.model.ModelConstants.*; | @@ -31,6 +30,8 @@ import static org.thingsboard.server.dao.model.ModelConstants.*; | ||
31 | @IdClass(TsKvLatestCompositeKey.class) | 30 | @IdClass(TsKvLatestCompositeKey.class) |
32 | public final class TsKvLatestEntity implements ToData<TsKvEntry> { | 31 | public final class TsKvLatestEntity implements ToData<TsKvEntry> { |
33 | 32 | ||
33 | + | ||
34 | + //TODO: reafctor this and TsKvEntity to avoid code duplicates | ||
34 | @Id | 35 | @Id |
35 | @Enumerated(EnumType.STRING) | 36 | @Enumerated(EnumType.STRING) |
36 | @Column(name = ENTITY_TYPE_COLUMN) | 37 | @Column(name = ENTITY_TYPE_COLUMN) |
@@ -38,7 +39,7 @@ public final class TsKvLatestEntity implements ToData<TsKvEntry> { | @@ -38,7 +39,7 @@ public final class TsKvLatestEntity implements ToData<TsKvEntry> { | ||
38 | 39 | ||
39 | @Id | 40 | @Id |
40 | @Column(name = ENTITY_ID_COLUMN) | 41 | @Column(name = ENTITY_ID_COLUMN) |
41 | - private UUID entityId; | 42 | + private String entityId; |
42 | 43 | ||
43 | @Id | 44 | @Id |
44 | @Column(name = KEY_COLUMN) | 45 | @Column(name = KEY_COLUMN) |
@@ -17,29 +17,30 @@ package org.thingsboard.server.dao.model.sql; | @@ -17,29 +17,30 @@ package org.thingsboard.server.dao.model.sql; | ||
17 | 17 | ||
18 | import com.datastax.driver.core.utils.UUIDs; | 18 | import com.datastax.driver.core.utils.UUIDs; |
19 | import lombok.Data; | 19 | import lombok.Data; |
20 | +import lombok.EqualsAndHashCode; | ||
20 | import org.thingsboard.server.common.data.id.UserCredentialsId; | 21 | import org.thingsboard.server.common.data.id.UserCredentialsId; |
21 | import org.thingsboard.server.common.data.id.UserId; | 22 | import org.thingsboard.server.common.data.id.UserId; |
22 | import org.thingsboard.server.common.data.security.UserCredentials; | 23 | import org.thingsboard.server.common.data.security.UserCredentials; |
23 | import org.thingsboard.server.dao.model.BaseEntity; | 24 | import org.thingsboard.server.dao.model.BaseEntity; |
25 | +import org.thingsboard.server.dao.model.BaseSqlEntity; | ||
24 | import org.thingsboard.server.dao.model.ModelConstants; | 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 | @Data | 33 | @Data |
34 | +@EqualsAndHashCode(callSuper = true) | ||
30 | @Entity | 35 | @Entity |
31 | @Table(name = ModelConstants.USER_CREDENTIALS_COLUMN_FAMILY_NAME) | 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 | @Transient | 39 | @Transient |
35 | private static final long serialVersionUID = -3989724854149114846L; | 40 | private static final long serialVersionUID = -3989724854149114846L; |
36 | 41 | ||
37 | - @Id | ||
38 | - @Column(name = ModelConstants.ID_PROPERTY) | ||
39 | - private UUID id; | ||
40 | - | ||
41 | @Column(name = ModelConstants.USER_CREDENTIALS_USER_ID_PROPERTY, unique = true) | 42 | @Column(name = ModelConstants.USER_CREDENTIALS_USER_ID_PROPERTY, unique = true) |
42 | - private UUID userId; | 43 | + private String userId; |
43 | 44 | ||
44 | @Column(name = ModelConstants.USER_CREDENTIALS_ENABLED_PROPERTY) | 45 | @Column(name = ModelConstants.USER_CREDENTIALS_ENABLED_PROPERTY) |
45 | private boolean enabled; | 46 | private boolean enabled; |
@@ -59,10 +60,10 @@ public final class UserCredentialsEntity implements BaseEntity<UserCredentials> | @@ -59,10 +60,10 @@ public final class UserCredentialsEntity implements BaseEntity<UserCredentials> | ||
59 | 60 | ||
60 | public UserCredentialsEntity(UserCredentials userCredentials) { | 61 | public UserCredentialsEntity(UserCredentials userCredentials) { |
61 | if (userCredentials.getId() != null) { | 62 | if (userCredentials.getId() != null) { |
62 | - this.id = userCredentials.getId().getId(); | 63 | + this.setId(userCredentials.getId().getId()); |
63 | } | 64 | } |
64 | if (userCredentials.getUserId() != null) { | 65 | if (userCredentials.getUserId() != null) { |
65 | - this.userId = userCredentials.getUserId().getId(); | 66 | + this.userId = toString(userCredentials.getUserId().getId()); |
66 | } | 67 | } |
67 | this.enabled = userCredentials.isEnabled(); | 68 | this.enabled = userCredentials.isEnabled(); |
68 | this.password = userCredentials.getPassword(); | 69 | this.password = userCredentials.getPassword(); |
@@ -72,10 +73,10 @@ public final class UserCredentialsEntity implements BaseEntity<UserCredentials> | @@ -72,10 +73,10 @@ public final class UserCredentialsEntity implements BaseEntity<UserCredentials> | ||
72 | 73 | ||
73 | @Override | 74 | @Override |
74 | public UserCredentials toData() { | 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 | if (userId != null) { | 78 | if (userId != null) { |
78 | - userCredentials.setUserId(new UserId(userId)); | 79 | + userCredentials.setUserId(new UserId(toUUID(userId))); |
79 | } | 80 | } |
80 | userCredentials.setEnabled(enabled); | 81 | userCredentials.setEnabled(enabled); |
81 | userCredentials.setPassword(password); | 82 | userCredentials.setPassword(password); |
@@ -84,13 +85,4 @@ public final class UserCredentialsEntity implements BaseEntity<UserCredentials> | @@ -84,13 +85,4 @@ public final class UserCredentialsEntity implements BaseEntity<UserCredentials> | ||
84 | return userCredentials; | 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 | } |
@@ -18,6 +18,7 @@ package org.thingsboard.server.dao.model.sql; | @@ -18,6 +18,7 @@ package org.thingsboard.server.dao.model.sql; | ||
18 | import com.datastax.driver.core.utils.UUIDs; | 18 | import com.datastax.driver.core.utils.UUIDs; |
19 | import com.fasterxml.jackson.databind.JsonNode; | 19 | import com.fasterxml.jackson.databind.JsonNode; |
20 | import lombok.Data; | 20 | import lombok.Data; |
21 | +import lombok.EqualsAndHashCode; | ||
21 | import org.hibernate.annotations.Type; | 22 | import org.hibernate.annotations.Type; |
22 | import org.hibernate.annotations.TypeDef; | 23 | import org.hibernate.annotations.TypeDef; |
23 | import org.thingsboard.server.common.data.User; | 24 | import org.thingsboard.server.common.data.User; |
@@ -25,33 +26,33 @@ import org.thingsboard.server.common.data.id.CustomerId; | @@ -25,33 +26,33 @@ import org.thingsboard.server.common.data.id.CustomerId; | ||
25 | import org.thingsboard.server.common.data.id.TenantId; | 26 | import org.thingsboard.server.common.data.id.TenantId; |
26 | import org.thingsboard.server.common.data.id.UserId; | 27 | import org.thingsboard.server.common.data.id.UserId; |
27 | import org.thingsboard.server.common.data.security.Authority; | 28 | import org.thingsboard.server.common.data.security.Authority; |
29 | +import org.thingsboard.server.dao.model.BaseSqlEntity; | ||
28 | import org.thingsboard.server.dao.model.ModelConstants; | 30 | import org.thingsboard.server.dao.model.ModelConstants; |
29 | import org.thingsboard.server.dao.model.SearchTextEntity; | 31 | import org.thingsboard.server.dao.model.SearchTextEntity; |
30 | import org.thingsboard.server.dao.util.mapping.JsonStringType; | 32 | import org.thingsboard.server.dao.util.mapping.JsonStringType; |
31 | 33 | ||
32 | import javax.persistence.*; | 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 | * Created by Valerii Sosliuk on 4/21/2017. | 40 | * Created by Valerii Sosliuk on 4/21/2017. |
37 | */ | 41 | */ |
38 | @Data | 42 | @Data |
43 | +@EqualsAndHashCode(callSuper = true) | ||
39 | @Entity | 44 | @Entity |
40 | @TypeDef(name = "json", typeClass = JsonStringType.class) | 45 | @TypeDef(name = "json", typeClass = JsonStringType.class) |
41 | @Table(name = ModelConstants.USER_PG_HIBERNATE_COLUMN_FAMILY_NAME) | 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 | @Transient | 48 | @Transient |
44 | private static final long serialVersionUID = -271106508790582977L; | 49 | private static final long serialVersionUID = -271106508790582977L; |
45 | 50 | ||
46 | - @Id | ||
47 | - @Column(name = ModelConstants.ID_PROPERTY) | ||
48 | - private UUID id; | ||
49 | - | ||
50 | @Column(name = ModelConstants.USER_TENANT_ID_PROPERTY) | 51 | @Column(name = ModelConstants.USER_TENANT_ID_PROPERTY) |
51 | - private UUID tenantId; | 52 | + private String tenantId; |
52 | 53 | ||
53 | @Column(name = ModelConstants.USER_CUSTOMER_ID_PROPERTY) | 54 | @Column(name = ModelConstants.USER_CUSTOMER_ID_PROPERTY) |
54 | - private UUID customerId; | 55 | + private String customerId; |
55 | 56 | ||
56 | @Enumerated(EnumType.STRING) | 57 | @Enumerated(EnumType.STRING) |
57 | @Column(name = ModelConstants.USER_AUTHORITY_PROPERTY) | 58 | @Column(name = ModelConstants.USER_AUTHORITY_PROPERTY) |
@@ -69,7 +70,7 @@ public class UserEntity implements SearchTextEntity<User> { | @@ -69,7 +70,7 @@ public class UserEntity implements SearchTextEntity<User> { | ||
69 | @Column(name = ModelConstants.USER_LAST_NAME_PROPERTY) | 70 | @Column(name = ModelConstants.USER_LAST_NAME_PROPERTY) |
70 | private String lastName; | 71 | private String lastName; |
71 | 72 | ||
72 | - @Type(type="json") | 73 | + @Type(type = "json") |
73 | @Column(name = ModelConstants.USER_ADDITIONAL_INFO_PROPERTY) | 74 | @Column(name = ModelConstants.USER_ADDITIONAL_INFO_PROPERTY) |
74 | private JsonNode additionalInfo; | 75 | private JsonNode additionalInfo; |
75 | 76 | ||
@@ -78,14 +79,14 @@ public class UserEntity implements SearchTextEntity<User> { | @@ -78,14 +79,14 @@ public class UserEntity implements SearchTextEntity<User> { | ||
78 | 79 | ||
79 | public UserEntity(User user) { | 80 | public UserEntity(User user) { |
80 | if (user.getId() != null) { | 81 | if (user.getId() != null) { |
81 | - this.id = user.getId().getId(); | 82 | + this.setId(user.getId().getId()); |
82 | } | 83 | } |
83 | this.authority = user.getAuthority(); | 84 | this.authority = user.getAuthority(); |
84 | if (user.getTenantId() != null) { | 85 | if (user.getTenantId() != null) { |
85 | - this.tenantId = user.getTenantId().getId(); | 86 | + this.tenantId = fromTimeUUID(user.getTenantId().getId()); |
86 | } | 87 | } |
87 | if (user.getCustomerId() != null) { | 88 | if (user.getCustomerId() != null) { |
88 | - this.customerId = user.getCustomerId().getId(); | 89 | + this.customerId = fromTimeUUID(user.getCustomerId().getId()); |
89 | } | 90 | } |
90 | this.email = user.getEmail(); | 91 | this.email = user.getEmail(); |
91 | this.firstName = user.getFirstName(); | 92 | this.firstName = user.getFirstName(); |
@@ -104,25 +105,15 @@ public class UserEntity implements SearchTextEntity<User> { | @@ -104,25 +105,15 @@ public class UserEntity implements SearchTextEntity<User> { | ||
104 | } | 105 | } |
105 | 106 | ||
106 | @Override | 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 | public User toData() { | 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 | user.setAuthority(authority); | 111 | user.setAuthority(authority); |
121 | if (tenantId != null) { | 112 | if (tenantId != null) { |
122 | - user.setTenantId(new TenantId(tenantId)); | 113 | + user.setTenantId(new TenantId(fromString(tenantId))); |
123 | } | 114 | } |
124 | if (customerId != null) { | 115 | if (customerId != null) { |
125 | - user.setCustomerId(new CustomerId(customerId)); | 116 | + user.setCustomerId(new CustomerId(fromString(customerId))); |
126 | } | 117 | } |
127 | user.setEmail(email); | 118 | user.setEmail(email); |
128 | user.setFirstName(firstName); | 119 | user.setFirstName(firstName); |
@@ -18,33 +18,34 @@ package org.thingsboard.server.dao.model.sql; | @@ -18,33 +18,34 @@ package org.thingsboard.server.dao.model.sql; | ||
18 | import com.datastax.driver.core.utils.UUIDs; | 18 | import com.datastax.driver.core.utils.UUIDs; |
19 | import com.fasterxml.jackson.databind.JsonNode; | 19 | import com.fasterxml.jackson.databind.JsonNode; |
20 | import lombok.Data; | 20 | import lombok.Data; |
21 | +import lombok.EqualsAndHashCode; | ||
21 | import org.hibernate.annotations.Type; | 22 | import org.hibernate.annotations.Type; |
22 | import org.hibernate.annotations.TypeDef; | 23 | import org.hibernate.annotations.TypeDef; |
23 | import org.thingsboard.server.common.data.id.TenantId; | 24 | import org.thingsboard.server.common.data.id.TenantId; |
24 | import org.thingsboard.server.common.data.id.WidgetTypeId; | 25 | import org.thingsboard.server.common.data.id.WidgetTypeId; |
25 | import org.thingsboard.server.common.data.widget.WidgetType; | 26 | import org.thingsboard.server.common.data.widget.WidgetType; |
26 | import org.thingsboard.server.dao.model.BaseEntity; | 27 | import org.thingsboard.server.dao.model.BaseEntity; |
28 | +import org.thingsboard.server.dao.model.BaseSqlEntity; | ||
27 | import org.thingsboard.server.dao.model.ModelConstants; | 29 | import org.thingsboard.server.dao.model.ModelConstants; |
28 | import org.thingsboard.server.dao.util.mapping.JsonStringType; | 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 | @Data | 37 | @Data |
38 | +@EqualsAndHashCode(callSuper = true) | ||
34 | @Entity | 39 | @Entity |
35 | @TypeDef(name = "json", typeClass = JsonStringType.class) | 40 | @TypeDef(name = "json", typeClass = JsonStringType.class) |
36 | @Table(name = ModelConstants.WIDGET_TYPE_COLUMN_FAMILY_NAME) | 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 | @Transient | 44 | @Transient |
40 | private static final long serialVersionUID = -5436279069884988630L; | 45 | private static final long serialVersionUID = -5436279069884988630L; |
41 | 46 | ||
42 | - @Id | ||
43 | - @Column(name = ModelConstants.ID_PROPERTY) | ||
44 | - private UUID id; | ||
45 | - | ||
46 | @Column(name = ModelConstants.WIDGET_TYPE_TENANT_ID_PROPERTY) | 47 | @Column(name = ModelConstants.WIDGET_TYPE_TENANT_ID_PROPERTY) |
47 | - private UUID tenantId; | 48 | + private String tenantId; |
48 | 49 | ||
49 | @Column(name = ModelConstants.WIDGET_TYPE_BUNDLE_ALIAS_PROPERTY) | 50 | @Column(name = ModelConstants.WIDGET_TYPE_BUNDLE_ALIAS_PROPERTY) |
50 | private String bundleAlias; | 51 | private String bundleAlias; |
@@ -65,10 +66,10 @@ public final class WidgetTypeEntity implements BaseEntity<WidgetType> { | @@ -65,10 +66,10 @@ public final class WidgetTypeEntity implements BaseEntity<WidgetType> { | ||
65 | 66 | ||
66 | public WidgetTypeEntity(WidgetType widgetType) { | 67 | public WidgetTypeEntity(WidgetType widgetType) { |
67 | if (widgetType.getId() != null) { | 68 | if (widgetType.getId() != null) { |
68 | - this.id = widgetType.getId().getId(); | 69 | + this.setId(widgetType.getId().getId()); |
69 | } | 70 | } |
70 | if (widgetType.getTenantId() != null) { | 71 | if (widgetType.getTenantId() != null) { |
71 | - this.tenantId = widgetType.getTenantId().getId(); | 72 | + this.tenantId = toString(widgetType.getTenantId().getId()); |
72 | } | 73 | } |
73 | this.bundleAlias = widgetType.getBundleAlias(); | 74 | this.bundleAlias = widgetType.getBundleAlias(); |
74 | this.alias = widgetType.getAlias(); | 75 | this.alias = widgetType.getAlias(); |
@@ -77,21 +78,11 @@ public final class WidgetTypeEntity implements BaseEntity<WidgetType> { | @@ -77,21 +78,11 @@ public final class WidgetTypeEntity implements BaseEntity<WidgetType> { | ||
77 | } | 78 | } |
78 | 79 | ||
79 | @Override | 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 | public WidgetType toData() { | 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 | if (tenantId != null) { | 84 | if (tenantId != null) { |
94 | - widgetType.setTenantId(new TenantId(tenantId)); | 85 | + widgetType.setTenantId(new TenantId(toUUID(tenantId))); |
95 | } | 86 | } |
96 | widgetType.setBundleAlias(bundleAlias); | 87 | widgetType.setBundleAlias(bundleAlias); |
97 | widgetType.setAlias(alias); | 88 | widgetType.setAlias(alias); |
@@ -18,29 +18,31 @@ package org.thingsboard.server.dao.model.sql; | @@ -18,29 +18,31 @@ package org.thingsboard.server.dao.model.sql; | ||
18 | 18 | ||
19 | import com.datastax.driver.core.utils.UUIDs; | 19 | import com.datastax.driver.core.utils.UUIDs; |
20 | import lombok.Data; | 20 | import lombok.Data; |
21 | +import lombok.EqualsAndHashCode; | ||
22 | +import org.thingsboard.server.common.data.UUIDConverter; | ||
21 | import org.thingsboard.server.common.data.id.TenantId; | 23 | import org.thingsboard.server.common.data.id.TenantId; |
22 | import org.thingsboard.server.common.data.id.WidgetsBundleId; | 24 | import org.thingsboard.server.common.data.id.WidgetsBundleId; |
23 | import org.thingsboard.server.common.data.widget.WidgetsBundle; | 25 | import org.thingsboard.server.common.data.widget.WidgetsBundle; |
26 | +import org.thingsboard.server.dao.model.BaseSqlEntity; | ||
24 | import org.thingsboard.server.dao.model.ModelConstants; | 27 | import org.thingsboard.server.dao.model.ModelConstants; |
25 | import org.thingsboard.server.dao.model.SearchTextEntity; | 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 | @Data | 35 | @Data |
36 | +@EqualsAndHashCode(callSuper = true) | ||
31 | @Entity | 37 | @Entity |
32 | @Table(name = ModelConstants.WIDGETS_BUNDLE_COLUMN_FAMILY_NAME) | 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 | @Transient | 41 | @Transient |
36 | private static final long serialVersionUID = 6897035686422298096L; | 42 | private static final long serialVersionUID = 6897035686422298096L; |
37 | 43 | ||
38 | - @Id | ||
39 | - @Column(name = ModelConstants.ID_PROPERTY) | ||
40 | - private UUID id; | ||
41 | - | ||
42 | @Column(name = ModelConstants.WIDGETS_BUNDLE_TENANT_ID_PROPERTY) | 44 | @Column(name = ModelConstants.WIDGETS_BUNDLE_TENANT_ID_PROPERTY) |
43 | - private UUID tenantId; | 45 | + private String tenantId; |
44 | 46 | ||
45 | @Column(name = ModelConstants.WIDGETS_BUNDLE_ALIAS_PROPERTY) | 47 | @Column(name = ModelConstants.WIDGETS_BUNDLE_ALIAS_PROPERTY) |
46 | private String alias; | 48 | private String alias; |
@@ -57,26 +59,16 @@ public final class WidgetsBundleEntity implements SearchTextEntity<WidgetsBundle | @@ -57,26 +59,16 @@ public final class WidgetsBundleEntity implements SearchTextEntity<WidgetsBundle | ||
57 | 59 | ||
58 | public WidgetsBundleEntity(WidgetsBundle widgetsBundle) { | 60 | public WidgetsBundleEntity(WidgetsBundle widgetsBundle) { |
59 | if (widgetsBundle.getId() != null) { | 61 | if (widgetsBundle.getId() != null) { |
60 | - this.id = widgetsBundle.getId().getId(); | 62 | + this.setId(widgetsBundle.getId().getId()); |
61 | } | 63 | } |
62 | if (widgetsBundle.getTenantId() != null) { | 64 | if (widgetsBundle.getTenantId() != null) { |
63 | - this.tenantId = widgetsBundle.getTenantId().getId(); | 65 | + this.tenantId = UUIDConverter.fromTimeUUID(widgetsBundle.getTenantId().getId()); |
64 | } | 66 | } |
65 | this.alias = widgetsBundle.getAlias(); | 67 | this.alias = widgetsBundle.getAlias(); |
66 | this.title = widgetsBundle.getTitle(); | 68 | this.title = widgetsBundle.getTitle(); |
67 | } | 69 | } |
68 | 70 | ||
69 | @Override | 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 | public String getSearchTextSource() { | 72 | public String getSearchTextSource() { |
81 | return title; | 73 | return title; |
82 | } | 74 | } |
@@ -88,10 +80,10 @@ public final class WidgetsBundleEntity implements SearchTextEntity<WidgetsBundle | @@ -88,10 +80,10 @@ public final class WidgetsBundleEntity implements SearchTextEntity<WidgetsBundle | ||
88 | 80 | ||
89 | @Override | 81 | @Override |
90 | public WidgetsBundle toData() { | 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 | if (tenantId != null) { | 85 | if (tenantId != null) { |
94 | - widgetsBundle.setTenantId(new TenantId(tenantId)); | 86 | + widgetsBundle.setTenantId(new TenantId(UUIDConverter.fromString(tenantId))); |
95 | } | 87 | } |
96 | widgetsBundle.setAlias(alias); | 88 | widgetsBundle.setAlias(alias); |
97 | widgetsBundle.setTitle(title); | 89 | widgetsBundle.setTitle(title); |
@@ -17,8 +17,6 @@ package org.thingsboard.server.dao.model.type; | @@ -17,8 +17,6 @@ package org.thingsboard.server.dao.model.type; | ||
17 | 17 | ||
18 | import com.datastax.driver.extras.codecs.enums.EnumNameCodec; | 18 | import com.datastax.driver.extras.codecs.enums.EnumNameCodec; |
19 | import org.thingsboard.server.common.data.alarm.AlarmSeverity; | 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 | public class AlarmSeverityCodec extends EnumNameCodec<AlarmSeverity> { | 21 | public class AlarmSeverityCodec extends EnumNameCodec<AlarmSeverity> { |
24 | 22 |
@@ -15,9 +15,8 @@ | @@ -15,9 +15,8 @@ | ||
15 | */ | 15 | */ |
16 | package org.thingsboard.server.dao.model.type; | 16 | package org.thingsboard.server.dao.model.type; |
17 | 17 | ||
18 | -import org.thingsboard.server.common.data.security.Authority; | ||
19 | - | ||
20 | import com.datastax.driver.extras.codecs.enums.EnumNameCodec; | 18 | import com.datastax.driver.extras.codecs.enums.EnumNameCodec; |
19 | +import org.thingsboard.server.common.data.security.Authority; | ||
21 | 20 | ||
22 | public class AuthorityCodec extends EnumNameCodec<Authority> { | 21 | public class AuthorityCodec extends EnumNameCodec<Authority> { |
23 | 22 |
@@ -17,7 +17,6 @@ package org.thingsboard.server.dao.model.type; | @@ -17,7 +17,6 @@ package org.thingsboard.server.dao.model.type; | ||
17 | 17 | ||
18 | import com.datastax.driver.extras.codecs.enums.EnumNameCodec; | 18 | import com.datastax.driver.extras.codecs.enums.EnumNameCodec; |
19 | import org.thingsboard.server.common.data.plugin.ComponentLifecycleState; | 19 | import org.thingsboard.server.common.data.plugin.ComponentLifecycleState; |
20 | -import org.thingsboard.server.common.data.security.Authority; | ||
21 | 20 | ||
22 | public class ComponentLifecycleStateCodec extends EnumNameCodec<ComponentLifecycleState> { | 21 | public class ComponentLifecycleStateCodec extends EnumNameCodec<ComponentLifecycleState> { |
23 | 22 |
@@ -17,7 +17,6 @@ package org.thingsboard.server.dao.model.type; | @@ -17,7 +17,6 @@ package org.thingsboard.server.dao.model.type; | ||
17 | 17 | ||
18 | import com.datastax.driver.extras.codecs.enums.EnumNameCodec; | 18 | import com.datastax.driver.extras.codecs.enums.EnumNameCodec; |
19 | import org.thingsboard.server.common.data.plugin.ComponentScope; | 19 | import org.thingsboard.server.common.data.plugin.ComponentScope; |
20 | -import org.thingsboard.server.common.data.plugin.ComponentType; | ||
21 | 20 | ||
22 | public class ComponentScopeCodec extends EnumNameCodec<ComponentScope> { | 21 | public class ComponentScopeCodec extends EnumNameCodec<ComponentScope> { |
23 | 22 |
@@ -16,7 +16,6 @@ | @@ -16,7 +16,6 @@ | ||
16 | package org.thingsboard.server.dao.model.type; | 16 | package org.thingsboard.server.dao.model.type; |
17 | 17 | ||
18 | import com.datastax.driver.extras.codecs.enums.EnumNameCodec; | 18 | import com.datastax.driver.extras.codecs.enums.EnumNameCodec; |
19 | -import org.thingsboard.server.common.data.plugin.ComponentLifecycleState; | ||
20 | import org.thingsboard.server.common.data.plugin.ComponentType; | 19 | import org.thingsboard.server.common.data.plugin.ComponentType; |
21 | 20 | ||
22 | public class ComponentTypeCodec extends EnumNameCodec<ComponentType> { | 21 | public class ComponentTypeCodec extends EnumNameCodec<ComponentType> { |
@@ -15,9 +15,8 @@ | @@ -15,9 +15,8 @@ | ||
15 | */ | 15 | */ |
16 | package org.thingsboard.server.dao.model.type; | 16 | package org.thingsboard.server.dao.model.type; |
17 | 17 | ||
18 | -import org.thingsboard.server.common.data.security.DeviceCredentialsType; | ||
19 | - | ||
20 | import com.datastax.driver.extras.codecs.enums.EnumNameCodec; | 18 | import com.datastax.driver.extras.codecs.enums.EnumNameCodec; |
19 | +import org.thingsboard.server.common.data.security.DeviceCredentialsType; | ||
21 | 20 | ||
22 | public class DeviceCredentialsTypeCodec extends EnumNameCodec<DeviceCredentialsType> { | 21 | public class DeviceCredentialsTypeCodec extends EnumNameCodec<DeviceCredentialsType> { |
23 | 22 |
@@ -17,7 +17,6 @@ package org.thingsboard.server.dao.model.type; | @@ -17,7 +17,6 @@ package org.thingsboard.server.dao.model.type; | ||
17 | 17 | ||
18 | import com.datastax.driver.extras.codecs.enums.EnumNameCodec; | 18 | import com.datastax.driver.extras.codecs.enums.EnumNameCodec; |
19 | import org.thingsboard.server.common.data.EntityType; | 19 | import org.thingsboard.server.common.data.EntityType; |
20 | -import org.thingsboard.server.common.data.plugin.ComponentType; | ||
21 | 20 | ||
22 | public class EntityTypeCodec extends EnumNameCodec<EntityType> { | 21 | public class EntityTypeCodec extends EnumNameCodec<EntityType> { |
23 | 22 |
@@ -15,9 +15,8 @@ | @@ -15,9 +15,8 @@ | ||
15 | */ | 15 | */ |
16 | package org.thingsboard.server.dao.model.type; | 16 | package org.thingsboard.server.dao.model.type; |
17 | 17 | ||
18 | -import org.thingsboard.server.common.data.relation.RelationTypeGroup; | ||
19 | - | ||
20 | import com.datastax.driver.extras.codecs.enums.EnumNameCodec; | 18 | import com.datastax.driver.extras.codecs.enums.EnumNameCodec; |
19 | +import org.thingsboard.server.common.data.relation.RelationTypeGroup; | ||
21 | 20 | ||
22 | public class RelationTypeGroupCodec extends EnumNameCodec<RelationTypeGroup> { | 21 | public class RelationTypeGroupCodec extends EnumNameCodec<RelationTypeGroup> { |
23 | 22 |
@@ -22,11 +22,11 @@ import org.thingsboard.server.common.data.id.PluginId; | @@ -22,11 +22,11 @@ import org.thingsboard.server.common.data.id.PluginId; | ||
22 | import org.thingsboard.server.common.data.id.TenantId; | 22 | import org.thingsboard.server.common.data.id.TenantId; |
23 | import org.thingsboard.server.common.data.page.TextPageLink; | 23 | import org.thingsboard.server.common.data.page.TextPageLink; |
24 | import org.thingsboard.server.common.data.plugin.PluginMetaData; | 24 | import org.thingsboard.server.common.data.plugin.PluginMetaData; |
25 | -import org.thingsboard.server.dao.nosql.CassandraAbstractSearchTextDao; | ||
26 | import org.thingsboard.server.dao.DaoUtil; | 25 | import org.thingsboard.server.dao.DaoUtil; |
27 | -import org.thingsboard.server.dao.util.NoSqlDao; | ||
28 | import org.thingsboard.server.dao.model.ModelConstants; | 26 | import org.thingsboard.server.dao.model.ModelConstants; |
29 | import org.thingsboard.server.dao.model.nosql.PluginMetaDataEntity; | 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 | import java.util.Arrays; | 31 | import java.util.Arrays; |
32 | import java.util.List; | 32 | import java.util.List; |
@@ -28,11 +28,11 @@ import org.thingsboard.server.common.data.id.EntityIdFactory; | @@ -28,11 +28,11 @@ import org.thingsboard.server.common.data.id.EntityIdFactory; | ||
28 | import org.thingsboard.server.common.data.page.TimePageLink; | 28 | import org.thingsboard.server.common.data.page.TimePageLink; |
29 | import org.thingsboard.server.common.data.relation.EntityRelation; | 29 | import org.thingsboard.server.common.data.relation.EntityRelation; |
30 | import org.thingsboard.server.common.data.relation.RelationTypeGroup; | 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 | import org.thingsboard.server.dao.nosql.CassandraAbstractAsyncDao; | 33 | import org.thingsboard.server.dao.nosql.CassandraAbstractAsyncDao; |
32 | import org.thingsboard.server.dao.nosql.CassandraAbstractSearchTimeDao; | 34 | import org.thingsboard.server.dao.nosql.CassandraAbstractSearchTimeDao; |
33 | import org.thingsboard.server.dao.util.NoSqlDao; | 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 | import javax.annotation.PostConstruct; | 37 | import javax.annotation.PostConstruct; |
38 | import java.util.ArrayList; | 38 | import java.util.ArrayList; |
@@ -22,11 +22,11 @@ import org.thingsboard.server.common.data.id.RuleId; | @@ -22,11 +22,11 @@ import org.thingsboard.server.common.data.id.RuleId; | ||
22 | import org.thingsboard.server.common.data.id.TenantId; | 22 | import org.thingsboard.server.common.data.id.TenantId; |
23 | import org.thingsboard.server.common.data.page.TextPageLink; | 23 | import org.thingsboard.server.common.data.page.TextPageLink; |
24 | import org.thingsboard.server.common.data.rule.RuleMetaData; | 24 | import org.thingsboard.server.common.data.rule.RuleMetaData; |
25 | -import org.thingsboard.server.dao.nosql.CassandraAbstractSearchTextDao; | ||
26 | import org.thingsboard.server.dao.DaoUtil; | 25 | import org.thingsboard.server.dao.DaoUtil; |
27 | -import org.thingsboard.server.dao.util.NoSqlDao; | ||
28 | import org.thingsboard.server.dao.model.ModelConstants; | 26 | import org.thingsboard.server.dao.model.ModelConstants; |
29 | import org.thingsboard.server.dao.model.nosql.RuleMetaDataEntity; | 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 | import java.util.Arrays; | 31 | import java.util.Arrays; |
32 | import java.util.List; | 32 | import java.util.List; |
@@ -19,10 +19,10 @@ import com.datastax.driver.core.querybuilder.Select.Where; | @@ -19,10 +19,10 @@ import com.datastax.driver.core.querybuilder.Select.Where; | ||
19 | import lombok.extern.slf4j.Slf4j; | 19 | import lombok.extern.slf4j.Slf4j; |
20 | import org.springframework.stereotype.Component; | 20 | import org.springframework.stereotype.Component; |
21 | import org.thingsboard.server.common.data.AdminSettings; | 21 | import org.thingsboard.server.common.data.AdminSettings; |
22 | -import org.thingsboard.server.dao.nosql.CassandraAbstractModelDao; | ||
23 | import org.thingsboard.server.dao.DaoUtil; | 22 | import org.thingsboard.server.dao.DaoUtil; |
24 | -import org.thingsboard.server.dao.util.NoSqlDao; | ||
25 | import org.thingsboard.server.dao.model.nosql.AdminSettingsEntity; | 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 | import static com.datastax.driver.core.querybuilder.QueryBuilder.eq; | 27 | import static com.datastax.driver.core.querybuilder.QueryBuilder.eq; |
28 | import static com.datastax.driver.core.querybuilder.QueryBuilder.select; | 28 | import static com.datastax.driver.core.querybuilder.QueryBuilder.select; |
@@ -28,6 +28,8 @@ import org.thingsboard.server.dao.model.BaseEntity; | @@ -28,6 +28,8 @@ import org.thingsboard.server.dao.model.BaseEntity; | ||
28 | import java.util.List; | 28 | import java.util.List; |
29 | import java.util.UUID; | 29 | import java.util.UUID; |
30 | 30 | ||
31 | +import static org.thingsboard.server.common.data.UUIDConverter.fromTimeUUID; | ||
32 | + | ||
31 | /** | 33 | /** |
32 | * @author Valerii Sosliuk | 34 | * @author Valerii Sosliuk |
33 | */ | 35 | */ |
@@ -38,7 +40,7 @@ public abstract class JpaAbstractDao<E extends BaseEntity<D>, D> | @@ -38,7 +40,7 @@ public abstract class JpaAbstractDao<E extends BaseEntity<D>, D> | ||
38 | 40 | ||
39 | protected abstract Class<E> getEntityClass(); | 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 | protected void setSearchText(E entity) {} | 45 | protected void setSearchText(E entity) {} |
44 | 46 | ||
@@ -64,19 +66,20 @@ public abstract class JpaAbstractDao<E extends BaseEntity<D>, D> | @@ -64,19 +66,20 @@ public abstract class JpaAbstractDao<E extends BaseEntity<D>, D> | ||
64 | @Override | 66 | @Override |
65 | public D findById(UUID key) { | 67 | public D findById(UUID key) { |
66 | log.debug("Get entity by key {}", key); | 68 | log.debug("Get entity by key {}", key); |
67 | - E entity = getCrudRepository().findOne(key); | 69 | + E entity = getCrudRepository().findOne(fromTimeUUID(key)); |
68 | return DaoUtil.getData(entity); | 70 | return DaoUtil.getData(entity); |
69 | } | 71 | } |
70 | 72 | ||
71 | @Override | 73 | @Override |
72 | public ListenableFuture<D> findByIdAsync(UUID key) { | 74 | public ListenableFuture<D> findByIdAsync(UUID key) { |
73 | log.debug("Get entity by key async {}", key); | 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 | @Override | 79 | @Override |
78 | @Transactional | 80 | @Transactional |
79 | - public boolean removeById(UUID key) { | 81 | + public boolean removeById(UUID id) { |
82 | + String key = fromTimeUUID(id); | ||
80 | getCrudRepository().delete(key); | 83 | getCrudRepository().delete(key); |
81 | log.debug("Remove request: {}", key); | 84 | log.debug("Remove request: {}", key); |
82 | return getCrudRepository().findOne(key) == null; | 85 | return getCrudRepository().findOne(key) == null; |
@@ -17,9 +17,9 @@ package org.thingsboard.server.dao.sql; | @@ -17,9 +17,9 @@ package org.thingsboard.server.dao.sql; | ||
17 | 17 | ||
18 | import com.datastax.driver.core.utils.UUIDs; | 18 | import com.datastax.driver.core.utils.UUIDs; |
19 | import org.springframework.data.jpa.domain.Specification; | 19 | import org.springframework.data.jpa.domain.Specification; |
20 | +import org.thingsboard.server.common.data.UUIDConverter; | ||
20 | import org.thingsboard.server.common.data.page.TimePageLink; | 21 | import org.thingsboard.server.common.data.page.TimePageLink; |
21 | import org.thingsboard.server.dao.model.BaseEntity; | 22 | import org.thingsboard.server.dao.model.BaseEntity; |
22 | -import static org.thingsboard.server.dao.model.ModelConstants.*; | ||
23 | 23 | ||
24 | import javax.persistence.criteria.CriteriaBuilder; | 24 | import javax.persistence.criteria.CriteriaBuilder; |
25 | import javax.persistence.criteria.CriteriaQuery; | 25 | import javax.persistence.criteria.CriteriaQuery; |
@@ -41,30 +41,30 @@ public abstract class JpaAbstractSearchTimeDao<E extends BaseEntity<D>, D> exten | @@ -41,30 +41,30 @@ public abstract class JpaAbstractSearchTimeDao<E extends BaseEntity<D>, D> exten | ||
41 | List<Predicate> predicates = new ArrayList<>(); | 41 | List<Predicate> predicates = new ArrayList<>(); |
42 | if (pageLink.isAscOrder()) { | 42 | if (pageLink.isAscOrder()) { |
43 | if (pageLink.getIdOffset() != null) { | 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 | predicates.add(lowerBound); | 45 | predicates.add(lowerBound); |
46 | } else if (pageLink.getStartTime() != null) { | 46 | } else if (pageLink.getStartTime() != null) { |
47 | UUID startOf = UUIDs.startOf(pageLink.getStartTime()); | 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 | predicates.add(lowerBound); | 49 | predicates.add(lowerBound); |
50 | } | 50 | } |
51 | if (pageLink.getEndTime() != null) { | 51 | if (pageLink.getEndTime() != null) { |
52 | UUID endOf = UUIDs.endOf(pageLink.getEndTime()); | 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 | predicates.add(upperBound); | 54 | predicates.add(upperBound); |
55 | } | 55 | } |
56 | } else { | 56 | } else { |
57 | if (pageLink.getIdOffset() != null) { | 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 | predicates.add(lowerBound); | 59 | predicates.add(lowerBound); |
60 | } else if (pageLink.getEndTime() != null) { | 60 | } else if (pageLink.getEndTime() != null) { |
61 | UUID endOf = UUIDs.endOf(pageLink.getEndTime()); | 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 | predicates.add(lowerBound); | 63 | predicates.add(lowerBound); |
64 | } | 64 | } |
65 | if (pageLink.getStartTime() != null) { | 65 | if (pageLink.getStartTime() != null) { |
66 | UUID startOf = UUIDs.startOf(pageLink.getStartTime()); | 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 | predicates.add(upperBound); | 68 | predicates.add(upperBound); |
69 | } | 69 | } |
70 | } | 70 | } |
@@ -20,22 +20,21 @@ import org.springframework.data.jpa.repository.Query; | @@ -20,22 +20,21 @@ import org.springframework.data.jpa.repository.Query; | ||
20 | import org.springframework.data.repository.CrudRepository; | 20 | import org.springframework.data.repository.CrudRepository; |
21 | import org.springframework.data.repository.query.Param; | 21 | import org.springframework.data.repository.query.Param; |
22 | import org.thingsboard.server.common.data.EntityType; | 22 | import org.thingsboard.server.common.data.EntityType; |
23 | -import org.thingsboard.server.dao.util.SqlDao; | ||
24 | import org.thingsboard.server.dao.model.sql.AlarmEntity; | 23 | import org.thingsboard.server.dao.model.sql.AlarmEntity; |
24 | +import org.thingsboard.server.dao.util.SqlDao; | ||
25 | 25 | ||
26 | import java.util.List; | 26 | import java.util.List; |
27 | -import java.util.UUID; | ||
28 | 27 | ||
29 | /** | 28 | /** |
30 | * Created by Valerii Sosliuk on 5/21/2017. | 29 | * Created by Valerii Sosliuk on 5/21/2017. |
31 | */ | 30 | */ |
32 | @SqlDao | 31 | @SqlDao |
33 | -public interface AlarmRepository extends CrudRepository<AlarmEntity, UUID> { | 32 | +public interface AlarmRepository extends CrudRepository<AlarmEntity, String> { |
34 | 33 | ||
35 | @Query("SELECT a FROM AlarmEntity a WHERE a.tenantId = :tenantId AND a.originatorId = :originatorId " + | 34 | @Query("SELECT a FROM AlarmEntity a WHERE a.tenantId = :tenantId AND a.originatorId = :originatorId " + |
36 | "AND a.originatorType = :entityType AND a.type = :alarmType ORDER BY a.type ASC, a.id DESC") | 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 | @Param("entityType") EntityType entityType, | 38 | @Param("entityType") EntityType entityType, |
40 | @Param("alarmType") String alarmType, | 39 | @Param("alarmType") String alarmType, |
41 | Pageable pageable); | 40 | Pageable pageable); |
@@ -24,8 +24,8 @@ import org.springframework.beans.factory.annotation.Autowired; | @@ -24,8 +24,8 @@ import org.springframework.beans.factory.annotation.Autowired; | ||
24 | import org.springframework.data.domain.PageRequest; | 24 | import org.springframework.data.domain.PageRequest; |
25 | import org.springframework.data.repository.CrudRepository; | 25 | import org.springframework.data.repository.CrudRepository; |
26 | import org.springframework.stereotype.Component; | 26 | import org.springframework.stereotype.Component; |
27 | -import org.springframework.transaction.annotation.Transactional; | ||
28 | import org.thingsboard.server.common.data.EntityType; | 27 | import org.thingsboard.server.common.data.EntityType; |
28 | +import org.thingsboard.server.common.data.UUIDConverter; | ||
29 | import org.thingsboard.server.common.data.alarm.Alarm; | 29 | import org.thingsboard.server.common.data.alarm.Alarm; |
30 | import org.thingsboard.server.common.data.alarm.AlarmInfo; | 30 | import org.thingsboard.server.common.data.alarm.AlarmInfo; |
31 | import org.thingsboard.server.common.data.alarm.AlarmQuery; | 31 | import org.thingsboard.server.common.data.alarm.AlarmQuery; |
@@ -37,17 +37,15 @@ import org.thingsboard.server.common.data.relation.RelationTypeGroup; | @@ -37,17 +37,15 @@ import org.thingsboard.server.common.data.relation.RelationTypeGroup; | ||
37 | import org.thingsboard.server.dao.DaoUtil; | 37 | import org.thingsboard.server.dao.DaoUtil; |
38 | import org.thingsboard.server.dao.alarm.AlarmDao; | 38 | import org.thingsboard.server.dao.alarm.AlarmDao; |
39 | import org.thingsboard.server.dao.alarm.BaseAlarmService; | 39 | import org.thingsboard.server.dao.alarm.BaseAlarmService; |
40 | -import org.thingsboard.server.dao.util.SqlDao; | ||
41 | import org.thingsboard.server.dao.model.sql.AlarmEntity; | 40 | import org.thingsboard.server.dao.model.sql.AlarmEntity; |
42 | import org.thingsboard.server.dao.relation.RelationDao; | 41 | import org.thingsboard.server.dao.relation.RelationDao; |
43 | import org.thingsboard.server.dao.sql.JpaAbstractDao; | 42 | import org.thingsboard.server.dao.sql.JpaAbstractDao; |
43 | +import org.thingsboard.server.dao.util.SqlDao; | ||
44 | 44 | ||
45 | import java.util.ArrayList; | 45 | import java.util.ArrayList; |
46 | import java.util.List; | 46 | import java.util.List; |
47 | import java.util.UUID; | 47 | import java.util.UUID; |
48 | 48 | ||
49 | -import static org.springframework.transaction.annotation.Propagation.REQUIRES_NEW; | ||
50 | - | ||
51 | /** | 49 | /** |
52 | * Created by Valerii Sosliuk on 5/19/2017. | 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,7 +66,7 @@ public class JpaAlarmDao extends JpaAbstractDao<AlarmEntity, Alarm> implements A | ||
68 | } | 66 | } |
69 | 67 | ||
70 | @Override | 68 | @Override |
71 | - protected CrudRepository<AlarmEntity, UUID> getCrudRepository() { | 69 | + protected CrudRepository<AlarmEntity, String> getCrudRepository() { |
72 | return alarmRepository; | 70 | return alarmRepository; |
73 | } | 71 | } |
74 | 72 | ||
@@ -76,8 +74,8 @@ public class JpaAlarmDao extends JpaAbstractDao<AlarmEntity, Alarm> implements A | @@ -76,8 +74,8 @@ public class JpaAlarmDao extends JpaAbstractDao<AlarmEntity, Alarm> implements A | ||
76 | public ListenableFuture<Alarm> findLatestByOriginatorAndType(TenantId tenantId, EntityId originator, String type) { | 74 | public ListenableFuture<Alarm> findLatestByOriginatorAndType(TenantId tenantId, EntityId originator, String type) { |
77 | return service.submit(() -> { | 75 | return service.submit(() -> { |
78 | List<AlarmEntity> latest = alarmRepository.findLatestByOriginatorAndType( | 76 | List<AlarmEntity> latest = alarmRepository.findLatestByOriginatorAndType( |
79 | - tenantId.getId(), | ||
80 | - originator.getId(), | 77 | + UUIDConverter.fromTimeUUID(tenantId.getId()), |
78 | + UUIDConverter.fromTimeUUID(originator.getId()), | ||
81 | originator.getEntityType(), | 79 | originator.getEntityType(), |
82 | type, | 80 | type, |
83 | new PageRequest(0, 1)); | 81 | new PageRequest(0, 1)); |
@@ -24,57 +24,56 @@ import org.thingsboard.server.dao.model.sql.AssetEntity; | @@ -24,57 +24,56 @@ import org.thingsboard.server.dao.model.sql.AssetEntity; | ||
24 | import org.thingsboard.server.dao.util.SqlDao; | 24 | import org.thingsboard.server.dao.util.SqlDao; |
25 | 25 | ||
26 | import java.util.List; | 26 | import java.util.List; |
27 | -import java.util.UUID; | ||
28 | 27 | ||
29 | /** | 28 | /** |
30 | * Created by Valerii Sosliuk on 5/21/2017. | 29 | * Created by Valerii Sosliuk on 5/21/2017. |
31 | */ | 30 | */ |
32 | @SqlDao | 31 | @SqlDao |
33 | -public interface AssetRepository extends CrudRepository<AssetEntity, UUID> { | 32 | +public interface AssetRepository extends CrudRepository<AssetEntity, String> { |
34 | 33 | ||
35 | @Query("SELECT a FROM AssetEntity a WHERE a.tenantId = :tenantId " + | 34 | @Query("SELECT a FROM AssetEntity a WHERE a.tenantId = :tenantId " + |
36 | "AND LOWER(a.searchText) LIKE LOWER(CONCAT(:textSearch, '%')) " + | 35 | "AND LOWER(a.searchText) LIKE LOWER(CONCAT(:textSearch, '%')) " + |
37 | "AND a.id > :idOffset ORDER BY a.id") | 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 | @Param("textSearch") String textSearch, | 38 | @Param("textSearch") String textSearch, |
40 | - @Param("idOffset") UUID idOffset, | 39 | + @Param("idOffset") String idOffset, |
41 | Pageable pageable); | 40 | Pageable pageable); |
42 | 41 | ||
43 | @Query("SELECT a FROM AssetEntity a WHERE a.tenantId = :tenantId " + | 42 | @Query("SELECT a FROM AssetEntity a WHERE a.tenantId = :tenantId " + |
44 | "AND a.customerId = :customerId " + | 43 | "AND a.customerId = :customerId " + |
45 | "AND LOWER(a.searchText) LIKE LOWER(CONCAT(:textSearch, '%')) " + | 44 | "AND LOWER(a.searchText) LIKE LOWER(CONCAT(:textSearch, '%')) " + |
46 | "AND a.id > :idOffset ORDER BY a.id") | 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 | @Param("textSearch") String textSearch, | 48 | @Param("textSearch") String textSearch, |
50 | - @Param("idOffset") UUID idOffset, | 49 | + @Param("idOffset") String idOffset, |
51 | Pageable pageable); | 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 | @Query("SELECT a FROM AssetEntity a WHERE a.tenantId = :tenantId " + | 58 | @Query("SELECT a FROM AssetEntity a WHERE a.tenantId = :tenantId " + |
60 | "AND a.type = :type " + | 59 | "AND a.type = :type " + |
61 | "AND LOWER(a.searchText) LIKE LOWER(CONCAT(:textSearch, '%')) " + | 60 | "AND LOWER(a.searchText) LIKE LOWER(CONCAT(:textSearch, '%')) " + |
62 | "AND a.id > :idOffset ORDER BY a.id") | 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 | @Param("type") String type, | 63 | @Param("type") String type, |
65 | @Param("textSearch") String textSearch, | 64 | @Param("textSearch") String textSearch, |
66 | - @Param("idOffset") UUID idOffset, | 65 | + @Param("idOffset") String idOffset, |
67 | Pageable pageable); | 66 | Pageable pageable); |
68 | 67 | ||
69 | @Query("SELECT a FROM AssetEntity a WHERE a.tenantId = :tenantId " + | 68 | @Query("SELECT a FROM AssetEntity a WHERE a.tenantId = :tenantId " + |
70 | "AND a.customerId = :customerId AND a.type = :type " + | 69 | "AND a.customerId = :customerId AND a.type = :type " + |
71 | "AND LOWER(a.searchText) LIKE LOWER(CONCAT(:textSearch, '%')) " + | 70 | "AND LOWER(a.searchText) LIKE LOWER(CONCAT(:textSearch, '%')) " + |
72 | "AND a.id > :idOffset ORDER BY a.id") | 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 | @Param("type") String type, | 74 | @Param("type") String type, |
76 | @Param("textSearch") String textSearch, | 75 | @Param("textSearch") String textSearch, |
77 | - @Param("idOffset") UUID idOffset, | 76 | + @Param("idOffset") String idOffset, |
78 | Pageable pageable); | 77 | Pageable pageable); |
79 | 78 | ||
80 | @Query("SELECT NEW org.thingsboard.server.common.data.asset.TenantAssetType(a.type, a.tenantId) FROM AssetEntity a GROUP BY a.tenantId, a.type") | 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,17 +24,19 @@ import org.thingsboard.server.common.data.asset.Asset; | ||
24 | import org.thingsboard.server.common.data.asset.TenantAssetType; | 24 | import org.thingsboard.server.common.data.asset.TenantAssetType; |
25 | import org.thingsboard.server.common.data.page.TextPageLink; | 25 | import org.thingsboard.server.common.data.page.TextPageLink; |
26 | import org.thingsboard.server.dao.DaoUtil; | 26 | import org.thingsboard.server.dao.DaoUtil; |
27 | -import org.thingsboard.server.dao.util.SqlDao; | ||
28 | import org.thingsboard.server.dao.asset.AssetDao; | 27 | import org.thingsboard.server.dao.asset.AssetDao; |
29 | import org.thingsboard.server.dao.model.sql.AssetEntity; | 28 | import org.thingsboard.server.dao.model.sql.AssetEntity; |
30 | import org.thingsboard.server.dao.sql.JpaAbstractSearchTextDao; | 29 | import org.thingsboard.server.dao.sql.JpaAbstractSearchTextDao; |
30 | +import org.thingsboard.server.dao.util.SqlDao; | ||
31 | 31 | ||
32 | import java.util.List; | 32 | import java.util.List; |
33 | import java.util.Objects; | 33 | import java.util.Objects; |
34 | import java.util.Optional; | 34 | import java.util.Optional; |
35 | import java.util.UUID; | 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 | * Created by Valerii Sosliuk on 5/19/2017. | 42 | * Created by Valerii Sosliuk on 5/19/2017. |
@@ -52,7 +54,7 @@ public class JpaAssetDao extends JpaAbstractSearchTextDao<AssetEntity, Asset> im | @@ -52,7 +54,7 @@ public class JpaAssetDao extends JpaAbstractSearchTextDao<AssetEntity, Asset> im | ||
52 | } | 54 | } |
53 | 55 | ||
54 | @Override | 56 | @Override |
55 | - protected CrudRepository<AssetEntity, UUID> getCrudRepository() { | 57 | + protected CrudRepository<AssetEntity, String> getCrudRepository() { |
56 | return assetRepository; | 58 | return assetRepository; |
57 | } | 59 | } |
58 | 60 | ||
@@ -60,38 +62,38 @@ public class JpaAssetDao extends JpaAbstractSearchTextDao<AssetEntity, Asset> im | @@ -60,38 +62,38 @@ public class JpaAssetDao extends JpaAbstractSearchTextDao<AssetEntity, Asset> im | ||
60 | public List<Asset> findAssetsByTenantId(UUID tenantId, TextPageLink pageLink) { | 62 | public List<Asset> findAssetsByTenantId(UUID tenantId, TextPageLink pageLink) { |
61 | return DaoUtil.convertDataList(assetRepository | 63 | return DaoUtil.convertDataList(assetRepository |
62 | .findByTenantId( | 64 | .findByTenantId( |
63 | - tenantId, | 65 | + fromTimeUUID(tenantId), |
64 | Objects.toString(pageLink.getTextSearch(), ""), | 66 | Objects.toString(pageLink.getTextSearch(), ""), |
65 | - pageLink.getIdOffset() == null ? NULL_UUID : pageLink.getIdOffset(), | 67 | + pageLink.getIdOffset() == null ? NULL_UUID_STR : fromTimeUUID(pageLink.getIdOffset()), |
66 | new PageRequest(0, pageLink.getLimit()))); | 68 | new PageRequest(0, pageLink.getLimit()))); |
67 | } | 69 | } |
68 | 70 | ||
69 | @Override | 71 | @Override |
70 | public ListenableFuture<List<Asset>> findAssetsByTenantIdAndIdsAsync(UUID tenantId, List<UUID> assetIds) { | 72 | public ListenableFuture<List<Asset>> findAssetsByTenantIdAndIdsAsync(UUID tenantId, List<UUID> assetIds) { |
71 | return service.submit(() -> | 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 | @Override | 77 | @Override |
76 | public List<Asset> findAssetsByTenantIdAndCustomerId(UUID tenantId, UUID customerId, TextPageLink pageLink) { | 78 | public List<Asset> findAssetsByTenantIdAndCustomerId(UUID tenantId, UUID customerId, TextPageLink pageLink) { |
77 | return DaoUtil.convertDataList(assetRepository | 79 | return DaoUtil.convertDataList(assetRepository |
78 | .findByTenantIdAndCustomerId( | 80 | .findByTenantIdAndCustomerId( |
79 | - tenantId, | ||
80 | - customerId, | 81 | + fromTimeUUID(tenantId), |
82 | + fromTimeUUID(customerId), | ||
81 | Objects.toString(pageLink.getTextSearch(), ""), | 83 | Objects.toString(pageLink.getTextSearch(), ""), |
82 | - pageLink.getIdOffset() == null ? NULL_UUID : pageLink.getIdOffset(), | 84 | + pageLink.getIdOffset() == null ? NULL_UUID_STR : fromTimeUUID(pageLink.getIdOffset()), |
83 | new PageRequest(0, pageLink.getLimit()))); | 85 | new PageRequest(0, pageLink.getLimit()))); |
84 | } | 86 | } |
85 | 87 | ||
86 | @Override | 88 | @Override |
87 | public ListenableFuture<List<Asset>> findAssetsByTenantIdAndCustomerIdAndIdsAsync(UUID tenantId, UUID customerId, List<UUID> assetIds) { | 89 | public ListenableFuture<List<Asset>> findAssetsByTenantIdAndCustomerIdAndIdsAsync(UUID tenantId, UUID customerId, List<UUID> assetIds) { |
88 | return service.submit(() -> | 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 | @Override | 94 | @Override |
93 | public Optional<Asset> findAssetsByTenantIdAndName(UUID tenantId, String name) { | 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 | return Optional.ofNullable(asset); | 97 | return Optional.ofNullable(asset); |
96 | } | 98 | } |
97 | 99 | ||
@@ -99,10 +101,10 @@ public class JpaAssetDao extends JpaAbstractSearchTextDao<AssetEntity, Asset> im | @@ -99,10 +101,10 @@ public class JpaAssetDao extends JpaAbstractSearchTextDao<AssetEntity, Asset> im | ||
99 | public List<Asset> findAssetsByTenantIdAndType(UUID tenantId, String type, TextPageLink pageLink) { | 101 | public List<Asset> findAssetsByTenantIdAndType(UUID tenantId, String type, TextPageLink pageLink) { |
100 | return DaoUtil.convertDataList(assetRepository | 102 | return DaoUtil.convertDataList(assetRepository |
101 | .findByTenantIdAndType( | 103 | .findByTenantIdAndType( |
102 | - tenantId, | 104 | + fromTimeUUID(tenantId), |
103 | type, | 105 | type, |
104 | Objects.toString(pageLink.getTextSearch(), ""), | 106 | Objects.toString(pageLink.getTextSearch(), ""), |
105 | - pageLink.getIdOffset() == null ? NULL_UUID : pageLink.getIdOffset(), | 107 | + pageLink.getIdOffset() == null ? NULL_UUID_STR : fromTimeUUID(pageLink.getIdOffset()), |
106 | new PageRequest(0, pageLink.getLimit()))); | 108 | new PageRequest(0, pageLink.getLimit()))); |
107 | } | 109 | } |
108 | 110 | ||
@@ -110,11 +112,11 @@ public class JpaAssetDao extends JpaAbstractSearchTextDao<AssetEntity, Asset> im | @@ -110,11 +112,11 @@ public class JpaAssetDao extends JpaAbstractSearchTextDao<AssetEntity, Asset> im | ||
110 | public List<Asset> findAssetsByTenantIdAndCustomerIdAndType(UUID tenantId, UUID customerId, String type, TextPageLink pageLink) { | 112 | public List<Asset> findAssetsByTenantIdAndCustomerIdAndType(UUID tenantId, UUID customerId, String type, TextPageLink pageLink) { |
111 | return DaoUtil.convertDataList(assetRepository | 113 | return DaoUtil.convertDataList(assetRepository |
112 | .findByTenantIdAndCustomerIdAndType( | 114 | .findByTenantIdAndCustomerIdAndType( |
113 | - tenantId, | ||
114 | - customerId, | 115 | + fromTimeUUID(tenantId), |
116 | + fromTimeUUID(customerId), | ||
115 | type, | 117 | type, |
116 | Objects.toString(pageLink.getTextSearch(), ""), | 118 | Objects.toString(pageLink.getTextSearch(), ""), |
117 | - pageLink.getIdOffset() == null ? NULL_UUID : pageLink.getIdOffset(), | 119 | + pageLink.getIdOffset() == null ? NULL_UUID_STR : fromTimeUUID(pageLink.getIdOffset()), |
118 | new PageRequest(0, pageLink.getLimit()))); | 120 | new PageRequest(0, pageLink.getLimit()))); |
119 | } | 121 | } |
120 | 122 |
@@ -17,18 +17,17 @@ package org.thingsboard.server.dao.sql.attributes; | @@ -17,18 +17,17 @@ package org.thingsboard.server.dao.sql.attributes; | ||
17 | 17 | ||
18 | import org.springframework.data.repository.CrudRepository; | 18 | import org.springframework.data.repository.CrudRepository; |
19 | import org.thingsboard.server.common.data.EntityType; | 19 | import org.thingsboard.server.common.data.EntityType; |
20 | -import org.thingsboard.server.dao.util.SqlDao; | ||
21 | import org.thingsboard.server.dao.model.sql.AttributeKvCompositeKey; | 20 | import org.thingsboard.server.dao.model.sql.AttributeKvCompositeKey; |
22 | import org.thingsboard.server.dao.model.sql.AttributeKvEntity; | 21 | import org.thingsboard.server.dao.model.sql.AttributeKvEntity; |
22 | +import org.thingsboard.server.dao.util.SqlDao; | ||
23 | 23 | ||
24 | import java.util.List; | 24 | import java.util.List; |
25 | -import java.util.UUID; | ||
26 | 25 | ||
27 | @SqlDao | 26 | @SqlDao |
28 | public interface AttributeKvRepository extends CrudRepository<AttributeKvEntity, AttributeKvCompositeKey> { | 27 | public interface AttributeKvRepository extends CrudRepository<AttributeKvEntity, AttributeKvCompositeKey> { |
29 | 28 | ||
30 | List<AttributeKvEntity> findAllByEntityTypeAndEntityIdAndAttributeType(EntityType entityType, | 29 | List<AttributeKvEntity> findAllByEntityTypeAndEntityIdAndAttributeType(EntityType entityType, |
31 | - UUID entityId, | 30 | + String entityId, |
32 | String attributeType); | 31 | String attributeType); |
33 | } | 32 | } |
34 | 33 |
@@ -20,20 +20,23 @@ import com.google.common.util.concurrent.ListenableFuture; | @@ -20,20 +20,23 @@ import com.google.common.util.concurrent.ListenableFuture; | ||
20 | import lombok.extern.slf4j.Slf4j; | 20 | import lombok.extern.slf4j.Slf4j; |
21 | import org.springframework.beans.factory.annotation.Autowired; | 21 | import org.springframework.beans.factory.annotation.Autowired; |
22 | import org.springframework.stereotype.Component; | 22 | import org.springframework.stereotype.Component; |
23 | +import org.thingsboard.server.common.data.UUIDConverter; | ||
23 | import org.thingsboard.server.common.data.id.EntityId; | 24 | import org.thingsboard.server.common.data.id.EntityId; |
24 | import org.thingsboard.server.common.data.kv.AttributeKvEntry; | 25 | import org.thingsboard.server.common.data.kv.AttributeKvEntry; |
25 | import org.thingsboard.server.dao.DaoUtil; | 26 | import org.thingsboard.server.dao.DaoUtil; |
26 | -import org.thingsboard.server.dao.util.SqlDao; | ||
27 | import org.thingsboard.server.dao.attributes.AttributesDao; | 27 | import org.thingsboard.server.dao.attributes.AttributesDao; |
28 | import org.thingsboard.server.dao.model.sql.AttributeKvCompositeKey; | 28 | import org.thingsboard.server.dao.model.sql.AttributeKvCompositeKey; |
29 | import org.thingsboard.server.dao.model.sql.AttributeKvEntity; | 29 | import org.thingsboard.server.dao.model.sql.AttributeKvEntity; |
30 | import org.thingsboard.server.dao.sql.JpaAbstractDaoListeningExecutorService; | 30 | import org.thingsboard.server.dao.sql.JpaAbstractDaoListeningExecutorService; |
31 | +import org.thingsboard.server.dao.util.SqlDao; | ||
31 | 32 | ||
32 | import java.util.Collection; | 33 | import java.util.Collection; |
33 | import java.util.List; | 34 | import java.util.List; |
34 | import java.util.Optional; | 35 | import java.util.Optional; |
35 | import java.util.stream.Collectors; | 36 | import java.util.stream.Collectors; |
36 | 37 | ||
38 | +import static org.thingsboard.server.common.data.UUIDConverter.fromTimeUUID; | ||
39 | + | ||
37 | @Component | 40 | @Component |
38 | @Slf4j | 41 | @Slf4j |
39 | @SqlDao | 42 | @SqlDao |
@@ -45,11 +48,7 @@ public class JpaAttributeDao extends JpaAbstractDaoListeningExecutorService impl | @@ -45,11 +48,7 @@ public class JpaAttributeDao extends JpaAbstractDaoListeningExecutorService impl | ||
45 | @Override | 48 | @Override |
46 | public ListenableFuture<Optional<AttributeKvEntry>> find(EntityId entityId, String attributeType, String attributeKey) { | 49 | public ListenableFuture<Optional<AttributeKvEntry>> find(EntityId entityId, String attributeType, String attributeKey) { |
47 | AttributeKvCompositeKey compositeKey = | 50 | AttributeKvCompositeKey compositeKey = |
48 | - new AttributeKvCompositeKey( | ||
49 | - entityId.getEntityType(), | ||
50 | - entityId.getId(), | ||
51 | - attributeType, | ||
52 | - attributeKey); | 51 | + getAttributeKvCompositeKey(entityId, attributeType, attributeKey); |
53 | return service.submit(() -> | 52 | return service.submit(() -> |
54 | Optional.of(DaoUtil.getData(attributeKvRepository.findOne(compositeKey)))); | 53 | Optional.of(DaoUtil.getData(attributeKvRepository.findOne(compositeKey)))); |
55 | } | 54 | } |
@@ -60,11 +59,7 @@ public class JpaAttributeDao extends JpaAbstractDaoListeningExecutorService impl | @@ -60,11 +59,7 @@ public class JpaAttributeDao extends JpaAbstractDaoListeningExecutorService impl | ||
60 | attributeKeys | 59 | attributeKeys |
61 | .stream() | 60 | .stream() |
62 | .map(attributeKey -> | 61 | .map(attributeKey -> |
63 | - new AttributeKvCompositeKey( | ||
64 | - entityId.getEntityType(), | ||
65 | - entityId.getId(), | ||
66 | - attributeType, | ||
67 | - attributeKey)) | 62 | + getAttributeKvCompositeKey(entityId, attributeType, attributeKey)) |
68 | .collect(Collectors.toList()); | 63 | .collect(Collectors.toList()); |
69 | return service.submit(() -> | 64 | return service.submit(() -> |
70 | DaoUtil.convertDataList(Lists.newArrayList(attributeKvRepository.findAll(compositeKeys)))); | 65 | DaoUtil.convertDataList(Lists.newArrayList(attributeKvRepository.findAll(compositeKeys)))); |
@@ -76,7 +71,7 @@ public class JpaAttributeDao extends JpaAbstractDaoListeningExecutorService impl | @@ -76,7 +71,7 @@ public class JpaAttributeDao extends JpaAbstractDaoListeningExecutorService impl | ||
76 | DaoUtil.convertDataList(Lists.newArrayList( | 71 | DaoUtil.convertDataList(Lists.newArrayList( |
77 | attributeKvRepository.findAllByEntityTypeAndEntityIdAndAttributeType( | 72 | attributeKvRepository.findAllByEntityTypeAndEntityIdAndAttributeType( |
78 | entityId.getEntityType(), | 73 | entityId.getEntityType(), |
79 | - entityId.getId(), | 74 | + UUIDConverter.fromTimeUUID(entityId.getId()), |
80 | attributeType)))); | 75 | attributeType)))); |
81 | } | 76 | } |
82 | 77 | ||
@@ -84,7 +79,7 @@ public class JpaAttributeDao extends JpaAbstractDaoListeningExecutorService impl | @@ -84,7 +79,7 @@ public class JpaAttributeDao extends JpaAbstractDaoListeningExecutorService impl | ||
84 | public ListenableFuture<Void> save(EntityId entityId, String attributeType, AttributeKvEntry attribute) { | 79 | public ListenableFuture<Void> save(EntityId entityId, String attributeType, AttributeKvEntry attribute) { |
85 | AttributeKvEntity entity = new AttributeKvEntity(); | 80 | AttributeKvEntity entity = new AttributeKvEntity(); |
86 | entity.setEntityType(entityId.getEntityType()); | 81 | entity.setEntityType(entityId.getEntityType()); |
87 | - entity.setEntityId(entityId.getId()); | 82 | + entity.setEntityId(fromTimeUUID(entityId.getId())); |
88 | entity.setAttributeType(attributeType); | 83 | entity.setAttributeType(attributeType); |
89 | entity.setAttributeKey(attribute.getKey()); | 84 | entity.setAttributeKey(attribute.getKey()); |
90 | entity.setLastUpdateTs(attribute.getLastUpdateTs()); | 85 | entity.setLastUpdateTs(attribute.getLastUpdateTs()); |
@@ -105,7 +100,7 @@ public class JpaAttributeDao extends JpaAbstractDaoListeningExecutorService impl | @@ -105,7 +100,7 @@ public class JpaAttributeDao extends JpaAbstractDaoListeningExecutorService impl | ||
105 | .map(key -> { | 100 | .map(key -> { |
106 | AttributeKvEntity entityToDelete = new AttributeKvEntity(); | 101 | AttributeKvEntity entityToDelete = new AttributeKvEntity(); |
107 | entityToDelete.setEntityType(entityId.getEntityType()); | 102 | entityToDelete.setEntityType(entityId.getEntityType()); |
108 | - entityToDelete.setEntityId(entityId.getId()); | 103 | + entityToDelete.setEntityId(fromTimeUUID(entityId.getId())); |
109 | entityToDelete.setAttributeType(attributeType); | 104 | entityToDelete.setAttributeType(attributeType); |
110 | entityToDelete.setAttributeKey(key); | 105 | entityToDelete.setAttributeKey(key); |
111 | return entityToDelete; | 106 | return entityToDelete; |
@@ -116,4 +111,12 @@ public class JpaAttributeDao extends JpaAbstractDaoListeningExecutorService impl | @@ -116,4 +111,12 @@ public class JpaAttributeDao extends JpaAbstractDaoListeningExecutorService impl | ||
116 | return null; | 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,8 +21,8 @@ import org.springframework.data.repository.CrudRepository; | ||
21 | import org.springframework.data.repository.query.Param; | 21 | import org.springframework.data.repository.query.Param; |
22 | import org.thingsboard.server.common.data.plugin.ComponentScope; | 22 | import org.thingsboard.server.common.data.plugin.ComponentScope; |
23 | import org.thingsboard.server.common.data.plugin.ComponentType; | 23 | import org.thingsboard.server.common.data.plugin.ComponentType; |
24 | -import org.thingsboard.server.dao.util.SqlDao; | ||
25 | import org.thingsboard.server.dao.model.sql.ComponentDescriptorEntity; | 24 | import org.thingsboard.server.dao.model.sql.ComponentDescriptorEntity; |
25 | +import org.thingsboard.server.dao.util.SqlDao; | ||
26 | 26 | ||
27 | import java.util.List; | 27 | import java.util.List; |
28 | import java.util.UUID; | 28 | import java.util.UUID; |
@@ -31,7 +31,7 @@ import java.util.UUID; | @@ -31,7 +31,7 @@ import java.util.UUID; | ||
31 | * Created by Valerii Sosliuk on 5/6/2017. | 31 | * Created by Valerii Sosliuk on 5/6/2017. |
32 | */ | 32 | */ |
33 | @SqlDao | 33 | @SqlDao |
34 | -public interface ComponentDescriptorRepository extends CrudRepository<ComponentDescriptorEntity, UUID> { | 34 | +public interface ComponentDescriptorRepository extends CrudRepository<ComponentDescriptorEntity, String> { |
35 | 35 | ||
36 | ComponentDescriptorEntity findByClazz(String clazz); | 36 | ComponentDescriptorEntity findByClazz(String clazz); |
37 | 37 | ||
@@ -40,7 +40,7 @@ public interface ComponentDescriptorRepository extends CrudRepository<ComponentD | @@ -40,7 +40,7 @@ public interface ComponentDescriptorRepository extends CrudRepository<ComponentD | ||
40 | "AND cd.id > :idOffset ORDER BY cd.id") | 40 | "AND cd.id > :idOffset ORDER BY cd.id") |
41 | List<ComponentDescriptorEntity> findByType(@Param("type") ComponentType type, | 41 | List<ComponentDescriptorEntity> findByType(@Param("type") ComponentType type, |
42 | @Param("textSearch") String textSearch, | 42 | @Param("textSearch") String textSearch, |
43 | - @Param("idOffset") UUID idOffset, | 43 | + @Param("idOffset") String idOffset, |
44 | Pageable pageable); | 44 | Pageable pageable); |
45 | 45 | ||
46 | @Query("SELECT cd FROM ComponentDescriptorEntity cd WHERE cd.type = :type " + | 46 | @Query("SELECT cd FROM ComponentDescriptorEntity cd WHERE cd.type = :type " + |
@@ -49,7 +49,7 @@ public interface ComponentDescriptorRepository extends CrudRepository<ComponentD | @@ -49,7 +49,7 @@ public interface ComponentDescriptorRepository extends CrudRepository<ComponentD | ||
49 | List<ComponentDescriptorEntity> findByScopeAndType(@Param("type") ComponentType type, | 49 | List<ComponentDescriptorEntity> findByScopeAndType(@Param("type") ComponentType type, |
50 | @Param("scope") ComponentScope scope, | 50 | @Param("scope") ComponentScope scope, |
51 | @Param("textSearch") String textSearch, | 51 | @Param("textSearch") String textSearch, |
52 | - @Param("idOffset") UUID idOffset, | 52 | + @Param("idOffset") String idOffset, |
53 | Pageable pageable); | 53 | Pageable pageable); |
54 | 54 | ||
55 | void deleteByClazz(String clazz); | 55 | void deleteByClazz(String clazz); |
@@ -20,23 +20,23 @@ import org.springframework.beans.factory.annotation.Autowired; | @@ -20,23 +20,23 @@ import org.springframework.beans.factory.annotation.Autowired; | ||
20 | import org.springframework.data.domain.PageRequest; | 20 | import org.springframework.data.domain.PageRequest; |
21 | import org.springframework.data.repository.CrudRepository; | 21 | import org.springframework.data.repository.CrudRepository; |
22 | import org.springframework.stereotype.Component; | 22 | import org.springframework.stereotype.Component; |
23 | +import org.thingsboard.server.common.data.UUIDConverter; | ||
23 | import org.thingsboard.server.common.data.id.ComponentDescriptorId; | 24 | import org.thingsboard.server.common.data.id.ComponentDescriptorId; |
24 | import org.thingsboard.server.common.data.page.TextPageLink; | 25 | import org.thingsboard.server.common.data.page.TextPageLink; |
25 | import org.thingsboard.server.common.data.plugin.ComponentDescriptor; | 26 | import org.thingsboard.server.common.data.plugin.ComponentDescriptor; |
26 | import org.thingsboard.server.common.data.plugin.ComponentScope; | 27 | import org.thingsboard.server.common.data.plugin.ComponentScope; |
27 | import org.thingsboard.server.common.data.plugin.ComponentType; | 28 | import org.thingsboard.server.common.data.plugin.ComponentType; |
28 | import org.thingsboard.server.dao.DaoUtil; | 29 | import org.thingsboard.server.dao.DaoUtil; |
29 | -import org.thingsboard.server.dao.util.SqlDao; | ||
30 | import org.thingsboard.server.dao.component.ComponentDescriptorDao; | 30 | import org.thingsboard.server.dao.component.ComponentDescriptorDao; |
31 | import org.thingsboard.server.dao.model.sql.ComponentDescriptorEntity; | 31 | import org.thingsboard.server.dao.model.sql.ComponentDescriptorEntity; |
32 | import org.thingsboard.server.dao.sql.JpaAbstractSearchTextDao; | 32 | import org.thingsboard.server.dao.sql.JpaAbstractSearchTextDao; |
33 | +import org.thingsboard.server.dao.util.SqlDao; | ||
33 | 34 | ||
34 | import java.util.List; | 35 | import java.util.List; |
35 | import java.util.Objects; | 36 | import java.util.Objects; |
36 | import java.util.Optional; | 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 | * Created by Valerii Sosliuk on 5/6/2017. | 42 | * Created by Valerii Sosliuk on 5/6/2017. |
@@ -55,7 +55,7 @@ public class JpaBaseComponentDescriptorDao extends JpaAbstractSearchTextDao<Comp | @@ -55,7 +55,7 @@ public class JpaBaseComponentDescriptorDao extends JpaAbstractSearchTextDao<Comp | ||
55 | } | 55 | } |
56 | 56 | ||
57 | @Override | 57 | @Override |
58 | - protected CrudRepository<ComponentDescriptorEntity, UUID> getCrudRepository() { | 58 | + protected CrudRepository<ComponentDescriptorEntity, String> getCrudRepository() { |
59 | return componentDescriptorRepository; | 59 | return componentDescriptorRepository; |
60 | } | 60 | } |
61 | 61 | ||
@@ -64,8 +64,7 @@ public class JpaBaseComponentDescriptorDao extends JpaAbstractSearchTextDao<Comp | @@ -64,8 +64,7 @@ public class JpaBaseComponentDescriptorDao extends JpaAbstractSearchTextDao<Comp | ||
64 | if (component.getId() == null) { | 64 | if (component.getId() == null) { |
65 | component.setId(new ComponentDescriptorId(UUIDs.timeBased())); | 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 | return Optional.of(save(component)); | 68 | return Optional.of(save(component)); |
70 | } | 69 | } |
71 | return Optional.empty(); | 70 | return Optional.empty(); |
@@ -87,7 +86,7 @@ public class JpaBaseComponentDescriptorDao extends JpaAbstractSearchTextDao<Comp | @@ -87,7 +86,7 @@ public class JpaBaseComponentDescriptorDao extends JpaAbstractSearchTextDao<Comp | ||
87 | .findByType( | 86 | .findByType( |
88 | type, | 87 | type, |
89 | Objects.toString(pageLink.getTextSearch(), ""), | 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 | new PageRequest(0, pageLink.getLimit()))); | 90 | new PageRequest(0, pageLink.getLimit()))); |
92 | } | 91 | } |
93 | 92 | ||
@@ -98,7 +97,7 @@ public class JpaBaseComponentDescriptorDao extends JpaAbstractSearchTextDao<Comp | @@ -98,7 +97,7 @@ public class JpaBaseComponentDescriptorDao extends JpaAbstractSearchTextDao<Comp | ||
98 | type, | 97 | type, |
99 | scope, | 98 | scope, |
100 | Objects.toString(pageLink.getTextSearch(), ""), | 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 | new PageRequest(0, pageLink.getLimit()))); | 101 | new PageRequest(0, pageLink.getLimit()))); |
103 | } | 102 | } |
104 | 103 |
@@ -19,26 +19,25 @@ import org.springframework.data.domain.Pageable; | @@ -19,26 +19,25 @@ import org.springframework.data.domain.Pageable; | ||
19 | import org.springframework.data.jpa.repository.Query; | 19 | import org.springframework.data.jpa.repository.Query; |
20 | import org.springframework.data.repository.CrudRepository; | 20 | import org.springframework.data.repository.CrudRepository; |
21 | import org.springframework.data.repository.query.Param; | 21 | import org.springframework.data.repository.query.Param; |
22 | -import org.thingsboard.server.dao.util.SqlDao; | ||
23 | import org.thingsboard.server.dao.model.sql.CustomerEntity; | 22 | import org.thingsboard.server.dao.model.sql.CustomerEntity; |
23 | +import org.thingsboard.server.dao.util.SqlDao; | ||
24 | 24 | ||
25 | import java.util.List; | 25 | import java.util.List; |
26 | -import java.util.UUID; | ||
27 | 26 | ||
28 | /** | 27 | /** |
29 | * Created by Valerii Sosliuk on 5/6/2017. | 28 | * Created by Valerii Sosliuk on 5/6/2017. |
30 | */ | 29 | */ |
31 | @SqlDao | 30 | @SqlDao |
32 | -public interface CustomerRepository extends CrudRepository<CustomerEntity, UUID> { | 31 | +public interface CustomerRepository extends CrudRepository<CustomerEntity, String> { |
33 | 32 | ||
34 | @Query("SELECT c FROM CustomerEntity c WHERE c.tenantId = :tenantId " + | 33 | @Query("SELECT c FROM CustomerEntity c WHERE c.tenantId = :tenantId " + |
35 | "AND LOWER(c.searchText) LIKE LOWER(CONCAT(:textSearch, '%')) " + | 34 | "AND LOWER(c.searchText) LIKE LOWER(CONCAT(:textSearch, '%')) " + |
36 | "AND c.id > :idOffset ORDER BY c.id") | 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 | @Param("textSearch") String textSearch, | 37 | @Param("textSearch") String textSearch, |
39 | - @Param("idOffset") UUID idOffset, | 38 | + @Param("idOffset") String idOffset, |
40 | Pageable pageable); | 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,19 +20,20 @@ import org.springframework.data.domain.PageRequest; | ||
20 | import org.springframework.data.repository.CrudRepository; | 20 | import org.springframework.data.repository.CrudRepository; |
21 | import org.springframework.stereotype.Component; | 21 | import org.springframework.stereotype.Component; |
22 | import org.thingsboard.server.common.data.Customer; | 22 | import org.thingsboard.server.common.data.Customer; |
23 | +import org.thingsboard.server.common.data.UUIDConverter; | ||
23 | import org.thingsboard.server.common.data.page.TextPageLink; | 24 | import org.thingsboard.server.common.data.page.TextPageLink; |
24 | import org.thingsboard.server.dao.DaoUtil; | 25 | import org.thingsboard.server.dao.DaoUtil; |
25 | -import org.thingsboard.server.dao.util.SqlDao; | ||
26 | import org.thingsboard.server.dao.customer.CustomerDao; | 26 | import org.thingsboard.server.dao.customer.CustomerDao; |
27 | import org.thingsboard.server.dao.model.sql.CustomerEntity; | 27 | import org.thingsboard.server.dao.model.sql.CustomerEntity; |
28 | import org.thingsboard.server.dao.sql.JpaAbstractSearchTextDao; | 28 | import org.thingsboard.server.dao.sql.JpaAbstractSearchTextDao; |
29 | +import org.thingsboard.server.dao.util.SqlDao; | ||
29 | 30 | ||
30 | import java.util.List; | 31 | import java.util.List; |
31 | import java.util.Objects; | 32 | import java.util.Objects; |
32 | import java.util.Optional; | 33 | import java.util.Optional; |
33 | import java.util.UUID; | 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 | * Created by Valerii Sosliuk on 5/6/2017. | 39 | * Created by Valerii Sosliuk on 5/6/2017. |
@@ -50,22 +51,22 @@ public class JpaCustomerDao extends JpaAbstractSearchTextDao<CustomerEntity, Cus | @@ -50,22 +51,22 @@ public class JpaCustomerDao extends JpaAbstractSearchTextDao<CustomerEntity, Cus | ||
50 | } | 51 | } |
51 | 52 | ||
52 | @Override | 53 | @Override |
53 | - protected CrudRepository<CustomerEntity, UUID> getCrudRepository() { | 54 | + protected CrudRepository<CustomerEntity, String> getCrudRepository() { |
54 | return customerRepository; | 55 | return customerRepository; |
55 | } | 56 | } |
56 | 57 | ||
57 | @Override | 58 | @Override |
58 | public List<Customer> findCustomersByTenantId(UUID tenantId, TextPageLink pageLink) { | 59 | public List<Customer> findCustomersByTenantId(UUID tenantId, TextPageLink pageLink) { |
59 | return DaoUtil.convertDataList(customerRepository.findByTenantId( | 60 | return DaoUtil.convertDataList(customerRepository.findByTenantId( |
60 | - tenantId, | 61 | + UUIDConverter.fromTimeUUID(tenantId), |
61 | Objects.toString(pageLink.getTextSearch(), ""), | 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 | new PageRequest(0, pageLink.getLimit()))); | 64 | new PageRequest(0, pageLink.getLimit()))); |
64 | } | 65 | } |
65 | 66 | ||
66 | @Override | 67 | @Override |
67 | public Optional<Customer> findCustomersByTenantIdAndTitle(UUID tenantId, String title) { | 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 | return Optional.ofNullable(customer); | 70 | return Optional.ofNullable(customer); |
70 | } | 71 | } |
71 | } | 72 | } |
@@ -19,8 +19,8 @@ import org.springframework.data.domain.Pageable; | @@ -19,8 +19,8 @@ import org.springframework.data.domain.Pageable; | ||
19 | import org.springframework.data.jpa.repository.Query; | 19 | import org.springframework.data.jpa.repository.Query; |
20 | import org.springframework.data.repository.CrudRepository; | 20 | import org.springframework.data.repository.CrudRepository; |
21 | import org.springframework.data.repository.query.Param; | 21 | import org.springframework.data.repository.query.Param; |
22 | -import org.thingsboard.server.dao.util.SqlDao; | ||
23 | import org.thingsboard.server.dao.model.sql.DashboardInfoEntity; | 22 | import org.thingsboard.server.dao.model.sql.DashboardInfoEntity; |
23 | +import org.thingsboard.server.dao.util.SqlDao; | ||
24 | 24 | ||
25 | import java.util.List; | 25 | import java.util.List; |
26 | import java.util.UUID; | 26 | import java.util.UUID; |
@@ -29,22 +29,22 @@ import java.util.UUID; | @@ -29,22 +29,22 @@ import java.util.UUID; | ||
29 | * Created by Valerii Sosliuk on 5/6/2017. | 29 | * Created by Valerii Sosliuk on 5/6/2017. |
30 | */ | 30 | */ |
31 | @SqlDao | 31 | @SqlDao |
32 | -public interface DashboardInfoRepository extends CrudRepository<DashboardInfoEntity, UUID> { | 32 | +public interface DashboardInfoRepository extends CrudRepository<DashboardInfoEntity, String> { |
33 | 33 | ||
34 | @Query("SELECT di FROM DashboardInfoEntity di WHERE di.tenantId = :tenantId " + | 34 | @Query("SELECT di FROM DashboardInfoEntity di WHERE di.tenantId = :tenantId " + |
35 | "AND LOWER(di.searchText) LIKE LOWER(CONCAT(:searchText, '%')) " + | 35 | "AND LOWER(di.searchText) LIKE LOWER(CONCAT(:searchText, '%')) " + |
36 | "AND di.id > :idOffset ORDER BY di.id") | 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 | @Param("searchText") String searchText, | 38 | @Param("searchText") String searchText, |
39 | - @Param("idOffset") UUID idOffset, | 39 | + @Param("idOffset") String idOffset, |
40 | Pageable pageable); | 40 | Pageable pageable); |
41 | 41 | ||
42 | @Query("SELECT di FROM DashboardInfoEntity di WHERE di.tenantId = :tenantId " + | 42 | @Query("SELECT di FROM DashboardInfoEntity di WHERE di.tenantId = :tenantId " + |
43 | "AND di.customerId = :customerId AND LOWER(di.searchText) LIKE LOWER(CONCAT(:searchText, '%')) " + | 43 | "AND di.customerId = :customerId AND LOWER(di.searchText) LIKE LOWER(CONCAT(:searchText, '%')) " + |
44 | "AND di.id > :idOffset ORDER BY di.id") | 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 | @Param("searchText") String searchText, | 47 | @Param("searchText") String searchText, |
48 | - @Param("idOffset") UUID idOffset, | 48 | + @Param("idOffset") String idOffset, |
49 | Pageable pageable); | 49 | Pageable pageable); |
50 | } | 50 | } |
@@ -16,14 +16,12 @@ | @@ -16,14 +16,12 @@ | ||
16 | package org.thingsboard.server.dao.sql.dashboard; | 16 | package org.thingsboard.server.dao.sql.dashboard; |
17 | 17 | ||
18 | import org.springframework.data.repository.CrudRepository; | 18 | import org.springframework.data.repository.CrudRepository; |
19 | -import org.thingsboard.server.dao.util.SqlDao; | ||
20 | import org.thingsboard.server.dao.model.sql.DashboardEntity; | 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 | * Created by Valerii Sosliuk on 5/6/2017. | 23 | * Created by Valerii Sosliuk on 5/6/2017. |
26 | */ | 24 | */ |
27 | @SqlDao | 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,12 +19,10 @@ import org.springframework.beans.factory.annotation.Autowired; | ||
19 | import org.springframework.data.repository.CrudRepository; | 19 | import org.springframework.data.repository.CrudRepository; |
20 | import org.springframework.stereotype.Component; | 20 | import org.springframework.stereotype.Component; |
21 | import org.thingsboard.server.common.data.Dashboard; | 21 | import org.thingsboard.server.common.data.Dashboard; |
22 | -import org.thingsboard.server.dao.util.SqlDao; | ||
23 | import org.thingsboard.server.dao.dashboard.DashboardDao; | 22 | import org.thingsboard.server.dao.dashboard.DashboardDao; |
24 | import org.thingsboard.server.dao.model.sql.DashboardEntity; | 23 | import org.thingsboard.server.dao.model.sql.DashboardEntity; |
25 | import org.thingsboard.server.dao.sql.JpaAbstractSearchTextDao; | 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 | * Created by Valerii Sosliuk on 5/6/2017. | 28 | * Created by Valerii Sosliuk on 5/6/2017. |
@@ -42,7 +40,7 @@ public class JpaDashboardDao extends JpaAbstractSearchTextDao<DashboardEntity, D | @@ -42,7 +40,7 @@ public class JpaDashboardDao extends JpaAbstractSearchTextDao<DashboardEntity, D | ||
42 | } | 40 | } |
43 | 41 | ||
44 | @Override | 42 | @Override |
45 | - protected CrudRepository<DashboardEntity, UUID> getCrudRepository() { | 43 | + protected CrudRepository<DashboardEntity, String> getCrudRepository() { |
46 | return dashboardRepository; | 44 | return dashboardRepository; |
47 | } | 45 | } |
48 | } | 46 | } |
@@ -20,18 +20,19 @@ import org.springframework.data.domain.PageRequest; | @@ -20,18 +20,19 @@ import org.springframework.data.domain.PageRequest; | ||
20 | import org.springframework.data.repository.CrudRepository; | 20 | import org.springframework.data.repository.CrudRepository; |
21 | import org.springframework.stereotype.Component; | 21 | import org.springframework.stereotype.Component; |
22 | import org.thingsboard.server.common.data.DashboardInfo; | 22 | import org.thingsboard.server.common.data.DashboardInfo; |
23 | +import org.thingsboard.server.common.data.UUIDConverter; | ||
23 | import org.thingsboard.server.common.data.page.TextPageLink; | 24 | import org.thingsboard.server.common.data.page.TextPageLink; |
24 | import org.thingsboard.server.dao.DaoUtil; | 25 | import org.thingsboard.server.dao.DaoUtil; |
25 | -import org.thingsboard.server.dao.util.SqlDao; | ||
26 | import org.thingsboard.server.dao.dashboard.DashboardInfoDao; | 26 | import org.thingsboard.server.dao.dashboard.DashboardInfoDao; |
27 | import org.thingsboard.server.dao.model.sql.DashboardInfoEntity; | 27 | import org.thingsboard.server.dao.model.sql.DashboardInfoEntity; |
28 | import org.thingsboard.server.dao.sql.JpaAbstractSearchTextDao; | 28 | import org.thingsboard.server.dao.sql.JpaAbstractSearchTextDao; |
29 | +import org.thingsboard.server.dao.util.SqlDao; | ||
29 | 30 | ||
30 | import java.util.List; | 31 | import java.util.List; |
31 | import java.util.Objects; | 32 | import java.util.Objects; |
32 | import java.util.UUID; | 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 | * Created by Valerii Sosliuk on 5/6/2017. | 38 | * Created by Valerii Sosliuk on 5/6/2017. |
@@ -57,9 +58,9 @@ public class JpaDashboardInfoDao extends JpaAbstractSearchTextDao<DashboardInfoE | @@ -57,9 +58,9 @@ public class JpaDashboardInfoDao extends JpaAbstractSearchTextDao<DashboardInfoE | ||
57 | public List<DashboardInfo> findDashboardsByTenantId(UUID tenantId, TextPageLink pageLink) { | 58 | public List<DashboardInfo> findDashboardsByTenantId(UUID tenantId, TextPageLink pageLink) { |
58 | return DaoUtil.convertDataList(dashboardInfoRepository | 59 | return DaoUtil.convertDataList(dashboardInfoRepository |
59 | .findByTenantId( | 60 | .findByTenantId( |
60 | - tenantId, | 61 | + UUIDConverter.fromTimeUUID(tenantId), |
61 | Objects.toString(pageLink.getTextSearch(), ""), | 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 | new PageRequest(0, pageLink.getLimit()))); | 64 | new PageRequest(0, pageLink.getLimit()))); |
64 | } | 65 | } |
65 | 66 | ||
@@ -67,10 +68,10 @@ public class JpaDashboardInfoDao extends JpaAbstractSearchTextDao<DashboardInfoE | @@ -67,10 +68,10 @@ public class JpaDashboardInfoDao extends JpaAbstractSearchTextDao<DashboardInfoE | ||
67 | public List<DashboardInfo> findDashboardsByTenantIdAndCustomerId(UUID tenantId, UUID customerId, TextPageLink pageLink) { | 68 | public List<DashboardInfo> findDashboardsByTenantIdAndCustomerId(UUID tenantId, UUID customerId, TextPageLink pageLink) { |
68 | return DaoUtil.convertDataList(dashboardInfoRepository | 69 | return DaoUtil.convertDataList(dashboardInfoRepository |
69 | .findByTenantIdAndCustomerId( | 70 | .findByTenantIdAndCustomerId( |
70 | - tenantId, | ||
71 | - customerId, | 71 | + UUIDConverter.fromTimeUUID(tenantId), |
72 | + UUIDConverter.fromTimeUUID(customerId), | ||
72 | Objects.toString(pageLink.getTextSearch(), ""), | 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 | new PageRequest(0, pageLink.getLimit()))); | 75 | new PageRequest(0, pageLink.getLimit()))); |
75 | } | 76 | } |
76 | } | 77 | } |
@@ -16,18 +16,16 @@ | @@ -16,18 +16,16 @@ | ||
16 | package org.thingsboard.server.dao.sql.device; | 16 | package org.thingsboard.server.dao.sql.device; |
17 | 17 | ||
18 | import org.springframework.data.repository.CrudRepository; | 18 | import org.springframework.data.repository.CrudRepository; |
19 | -import org.thingsboard.server.dao.util.SqlDao; | ||
20 | import org.thingsboard.server.dao.model.sql.DeviceCredentialsEntity; | 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 | * Created by Valerii Sosliuk on 5/6/2017. | 23 | * Created by Valerii Sosliuk on 5/6/2017. |
26 | */ | 24 | */ |
27 | @SqlDao | 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 | DeviceCredentialsEntity findByCredentialsId(String credentialsId); | 30 | DeviceCredentialsEntity findByCredentialsId(String credentialsId); |
33 | } | 31 | } |
@@ -19,46 +19,45 @@ import org.springframework.data.domain.Pageable; | @@ -19,46 +19,45 @@ import org.springframework.data.domain.Pageable; | ||
19 | import org.springframework.data.jpa.repository.Query; | 19 | import org.springframework.data.jpa.repository.Query; |
20 | import org.springframework.data.repository.CrudRepository; | 20 | import org.springframework.data.repository.CrudRepository; |
21 | import org.springframework.data.repository.query.Param; | 21 | import org.springframework.data.repository.query.Param; |
22 | -import org.thingsboard.server.dao.util.SqlDao; | ||
23 | import org.thingsboard.server.dao.model.sql.DeviceEntity; | 22 | import org.thingsboard.server.dao.model.sql.DeviceEntity; |
24 | import org.thingsboard.server.dao.model.sql.TenantDeviceTypeEntity; | 23 | import org.thingsboard.server.dao.model.sql.TenantDeviceTypeEntity; |
24 | +import org.thingsboard.server.dao.util.SqlDao; | ||
25 | 25 | ||
26 | import java.util.List; | 26 | import java.util.List; |
27 | -import java.util.UUID; | ||
28 | 27 | ||
29 | /** | 28 | /** |
30 | * Created by Valerii Sosliuk on 5/6/2017. | 29 | * Created by Valerii Sosliuk on 5/6/2017. |
31 | */ | 30 | */ |
32 | @SqlDao | 31 | @SqlDao |
33 | -public interface DeviceRepository extends CrudRepository<DeviceEntity, UUID> { | 32 | +public interface DeviceRepository extends CrudRepository<DeviceEntity, String> { |
34 | 33 | ||
35 | 34 | ||
36 | @Query("SELECT d FROM DeviceEntity d WHERE d.tenantId = :tenantId " + | 35 | @Query("SELECT d FROM DeviceEntity d WHERE d.tenantId = :tenantId " + |
37 | "AND d.customerId = :customerId " + | 36 | "AND d.customerId = :customerId " + |
38 | "AND LOWER(d.searchText) LIKE LOWER(CONCAT(:searchText, '%')) " + | 37 | "AND LOWER(d.searchText) LIKE LOWER(CONCAT(:searchText, '%')) " + |
39 | "AND d.id > :idOffset ORDER BY d.id") | 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 | @Param("searchText") String searchText, | 41 | @Param("searchText") String searchText, |
43 | - @Param("idOffset") UUID idOffset, | 42 | + @Param("idOffset") String idOffset, |
44 | Pageable pageable); | 43 | Pageable pageable); |
45 | 44 | ||
46 | @Query("SELECT d FROM DeviceEntity d WHERE d.tenantId = :tenantId " + | 45 | @Query("SELECT d FROM DeviceEntity d WHERE d.tenantId = :tenantId " + |
47 | "AND LOWER(d.searchText) LIKE LOWER(CONCAT(:textSearch, '%')) " + | 46 | "AND LOWER(d.searchText) LIKE LOWER(CONCAT(:textSearch, '%')) " + |
48 | "AND d.id > :idOffset ORDER BY d.id") | 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 | @Param("textSearch") String textSearch, | 49 | @Param("textSearch") String textSearch, |
51 | - @Param("idOffset") UUID idOffset, | 50 | + @Param("idOffset") String idOffset, |
52 | Pageable pageable); | 51 | Pageable pageable); |
53 | 52 | ||
54 | @Query("SELECT d FROM DeviceEntity d WHERE d.tenantId = :tenantId " + | 53 | @Query("SELECT d FROM DeviceEntity d WHERE d.tenantId = :tenantId " + |
55 | "AND d.type = :type " + | 54 | "AND d.type = :type " + |
56 | "AND LOWER(d.searchText) LIKE LOWER(CONCAT(:textSearch, '%')) " + | 55 | "AND LOWER(d.searchText) LIKE LOWER(CONCAT(:textSearch, '%')) " + |
57 | "AND d.id > :idOffset ORDER BY d.id") | 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 | @Param("type") String type, | 58 | @Param("type") String type, |
60 | @Param("textSearch") String textSearch, | 59 | @Param("textSearch") String textSearch, |
61 | - @Param("idOffset") UUID idOffset, | 60 | + @Param("idOffset") String idOffset, |
62 | Pageable pageable); | 61 | Pageable pageable); |
63 | 62 | ||
64 | @Query("SELECT d FROM DeviceEntity d WHERE d.tenantId = :tenantId " + | 63 | @Query("SELECT d FROM DeviceEntity d WHERE d.tenantId = :tenantId " + |
@@ -66,19 +65,19 @@ public interface DeviceRepository extends CrudRepository<DeviceEntity, UUID> { | @@ -66,19 +65,19 @@ public interface DeviceRepository extends CrudRepository<DeviceEntity, UUID> { | ||
66 | "AND d.type = :type " + | 65 | "AND d.type = :type " + |
67 | "AND LOWER(d.searchText) LIKE LOWER(CONCAT(:textSearch, '%')) " + | 66 | "AND LOWER(d.searchText) LIKE LOWER(CONCAT(:textSearch, '%')) " + |
68 | "AND d.id > :idOffset ORDER BY d.id") | 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 | @Param("type") String type, | 70 | @Param("type") String type, |
72 | @Param("textSearch") String textSearch, | 71 | @Param("textSearch") String textSearch, |
73 | - @Param("idOffset") UUID idOffset, | 72 | + @Param("idOffset") String idOffset, |
74 | Pageable pageable); | 73 | Pageable pageable); |
75 | 74 | ||
76 | @Query("SELECT DISTINCT NEW org.thingsboard.server.dao.model.sql.TenantDeviceTypeEntity(d.tenantId, d.type) FROM DeviceEntity d") | 75 | @Query("SELECT DISTINCT NEW org.thingsboard.server.dao.model.sql.TenantDeviceTypeEntity(d.tenantId, d.type) FROM DeviceEntity d") |
77 | List<TenantDeviceTypeEntity> findTenantDeviceTypes(); | 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,12 +18,13 @@ package org.thingsboard.server.dao.sql.device; | ||
18 | import org.springframework.beans.factory.annotation.Autowired; | 18 | import org.springframework.beans.factory.annotation.Autowired; |
19 | import org.springframework.data.repository.CrudRepository; | 19 | import org.springframework.data.repository.CrudRepository; |
20 | import org.springframework.stereotype.Component; | 20 | import org.springframework.stereotype.Component; |
21 | +import org.thingsboard.server.common.data.UUIDConverter; | ||
21 | import org.thingsboard.server.common.data.security.DeviceCredentials; | 22 | import org.thingsboard.server.common.data.security.DeviceCredentials; |
22 | import org.thingsboard.server.dao.DaoUtil; | 23 | import org.thingsboard.server.dao.DaoUtil; |
23 | -import org.thingsboard.server.dao.util.SqlDao; | ||
24 | import org.thingsboard.server.dao.device.DeviceCredentialsDao; | 24 | import org.thingsboard.server.dao.device.DeviceCredentialsDao; |
25 | import org.thingsboard.server.dao.model.sql.DeviceCredentialsEntity; | 25 | import org.thingsboard.server.dao.model.sql.DeviceCredentialsEntity; |
26 | import org.thingsboard.server.dao.sql.JpaAbstractDao; | 26 | import org.thingsboard.server.dao.sql.JpaAbstractDao; |
27 | +import org.thingsboard.server.dao.util.SqlDao; | ||
27 | 28 | ||
28 | import java.util.UUID; | 29 | import java.util.UUID; |
29 | 30 | ||
@@ -43,13 +44,13 @@ public class JpaDeviceCredentialsDao extends JpaAbstractDao<DeviceCredentialsEnt | @@ -43,13 +44,13 @@ public class JpaDeviceCredentialsDao extends JpaAbstractDao<DeviceCredentialsEnt | ||
43 | } | 44 | } |
44 | 45 | ||
45 | @Override | 46 | @Override |
46 | - protected CrudRepository<DeviceCredentialsEntity, UUID> getCrudRepository() { | 47 | + protected CrudRepository<DeviceCredentialsEntity, String> getCrudRepository() { |
47 | return deviceCredentialsRepository; | 48 | return deviceCredentialsRepository; |
48 | } | 49 | } |
49 | 50 | ||
50 | @Override | 51 | @Override |
51 | public DeviceCredentials findByDeviceId(UUID deviceId) { | 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 | @Override | 56 | @Override |
@@ -22,18 +22,21 @@ import org.springframework.data.repository.CrudRepository; | @@ -22,18 +22,21 @@ import org.springframework.data.repository.CrudRepository; | ||
22 | import org.springframework.stereotype.Component; | 22 | import org.springframework.stereotype.Component; |
23 | import org.thingsboard.server.common.data.Device; | 23 | import org.thingsboard.server.common.data.Device; |
24 | import org.thingsboard.server.common.data.TenantDeviceType; | 24 | import org.thingsboard.server.common.data.TenantDeviceType; |
25 | +import org.thingsboard.server.common.data.UUIDConverter; | ||
25 | import org.thingsboard.server.common.data.id.TenantId; | 26 | import org.thingsboard.server.common.data.id.TenantId; |
26 | import org.thingsboard.server.common.data.page.TextPageLink; | 27 | import org.thingsboard.server.common.data.page.TextPageLink; |
27 | import org.thingsboard.server.dao.DaoUtil; | 28 | import org.thingsboard.server.dao.DaoUtil; |
28 | -import org.thingsboard.server.dao.util.SqlDao; | ||
29 | import org.thingsboard.server.dao.device.DeviceDao; | 29 | import org.thingsboard.server.dao.device.DeviceDao; |
30 | import org.thingsboard.server.dao.model.sql.DeviceEntity; | 30 | import org.thingsboard.server.dao.model.sql.DeviceEntity; |
31 | import org.thingsboard.server.dao.model.sql.TenantDeviceTypeEntity; | 31 | import org.thingsboard.server.dao.model.sql.TenantDeviceTypeEntity; |
32 | import org.thingsboard.server.dao.sql.JpaAbstractSearchTextDao; | 32 | import org.thingsboard.server.dao.sql.JpaAbstractSearchTextDao; |
33 | +import org.thingsboard.server.dao.util.SqlDao; | ||
33 | 34 | ||
34 | import java.util.*; | 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 | * Created by Valerii Sosliuk on 5/6/2017. | 42 | * Created by Valerii Sosliuk on 5/6/2017. |
@@ -51,7 +54,7 @@ public class JpaDeviceDao extends JpaAbstractSearchTextDao<DeviceEntity, Device> | @@ -51,7 +54,7 @@ public class JpaDeviceDao extends JpaAbstractSearchTextDao<DeviceEntity, Device> | ||
51 | } | 54 | } |
52 | 55 | ||
53 | @Override | 56 | @Override |
54 | - protected CrudRepository<DeviceEntity, UUID> getCrudRepository() { | 57 | + protected CrudRepository<DeviceEntity, String> getCrudRepository() { |
55 | return deviceRepository; | 58 | return deviceRepository; |
56 | } | 59 | } |
57 | 60 | ||
@@ -59,37 +62,37 @@ public class JpaDeviceDao extends JpaAbstractSearchTextDao<DeviceEntity, Device> | @@ -59,37 +62,37 @@ public class JpaDeviceDao extends JpaAbstractSearchTextDao<DeviceEntity, Device> | ||
59 | public List<Device> findDevicesByTenantId(UUID tenantId, TextPageLink pageLink) { | 62 | public List<Device> findDevicesByTenantId(UUID tenantId, TextPageLink pageLink) { |
60 | return DaoUtil.convertDataList( | 63 | return DaoUtil.convertDataList( |
61 | deviceRepository.findByTenantId( | 64 | deviceRepository.findByTenantId( |
62 | - tenantId, | 65 | + fromTimeUUID(tenantId), |
63 | Objects.toString(pageLink.getTextSearch(), ""), | 66 | Objects.toString(pageLink.getTextSearch(), ""), |
64 | - pageLink.getIdOffset() == null ? NULL_UUID : pageLink.getIdOffset(), | 67 | + pageLink.getIdOffset() == null ? NULL_UUID_STR : fromTimeUUID(pageLink.getIdOffset()), |
65 | new PageRequest(0, pageLink.getLimit()))); | 68 | new PageRequest(0, pageLink.getLimit()))); |
66 | } | 69 | } |
67 | 70 | ||
68 | @Override | 71 | @Override |
69 | public ListenableFuture<List<Device>> findDevicesByTenantIdAndIdsAsync(UUID tenantId, List<UUID> deviceIds) { | 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 | @Override | 76 | @Override |
74 | public List<Device> findDevicesByTenantIdAndCustomerId(UUID tenantId, UUID customerId, TextPageLink pageLink) { | 77 | public List<Device> findDevicesByTenantIdAndCustomerId(UUID tenantId, UUID customerId, TextPageLink pageLink) { |
75 | return DaoUtil.convertDataList( | 78 | return DaoUtil.convertDataList( |
76 | deviceRepository.findByTenantIdAndCustomerId( | 79 | deviceRepository.findByTenantIdAndCustomerId( |
77 | - tenantId, | ||
78 | - customerId, | 80 | + fromTimeUUID(tenantId), |
81 | + fromTimeUUID(customerId), | ||
79 | Objects.toString(pageLink.getTextSearch(), ""), | 82 | Objects.toString(pageLink.getTextSearch(), ""), |
80 | - pageLink.getIdOffset() == null ? NULL_UUID : pageLink.getIdOffset(), | 83 | + pageLink.getIdOffset() == null ? NULL_UUID_STR : fromTimeUUID(pageLink.getIdOffset()), |
81 | new PageRequest(0, pageLink.getLimit()))); | 84 | new PageRequest(0, pageLink.getLimit()))); |
82 | } | 85 | } |
83 | 86 | ||
84 | @Override | 87 | @Override |
85 | public ListenableFuture<List<Device>> findDevicesByTenantIdCustomerIdAndIdsAsync(UUID tenantId, UUID customerId, List<UUID> deviceIds) { | 88 | public ListenableFuture<List<Device>> findDevicesByTenantIdCustomerIdAndIdsAsync(UUID tenantId, UUID customerId, List<UUID> deviceIds) { |
86 | return service.submit(() -> DaoUtil.convertDataList( | 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 | @Override | 93 | @Override |
91 | public Optional<Device> findDeviceByTenantIdAndName(UUID tenantId, String name) { | 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 | return Optional.ofNullable(device); | 96 | return Optional.ofNullable(device); |
94 | } | 97 | } |
95 | 98 | ||
@@ -97,10 +100,10 @@ public class JpaDeviceDao extends JpaAbstractSearchTextDao<DeviceEntity, Device> | @@ -97,10 +100,10 @@ public class JpaDeviceDao extends JpaAbstractSearchTextDao<DeviceEntity, Device> | ||
97 | public List<Device> findDevicesByTenantIdAndType(UUID tenantId, String type, TextPageLink pageLink) { | 100 | public List<Device> findDevicesByTenantIdAndType(UUID tenantId, String type, TextPageLink pageLink) { |
98 | return DaoUtil.convertDataList( | 101 | return DaoUtil.convertDataList( |
99 | deviceRepository.findByTenantIdAndType( | 102 | deviceRepository.findByTenantIdAndType( |
100 | - tenantId, | 103 | + fromTimeUUID(tenantId), |
101 | type, | 104 | type, |
102 | Objects.toString(pageLink.getTextSearch(), ""), | 105 | Objects.toString(pageLink.getTextSearch(), ""), |
103 | - pageLink.getIdOffset() == null ? NULL_UUID : pageLink.getIdOffset(), | 106 | + pageLink.getIdOffset() == null ? NULL_UUID_STR : fromTimeUUID(pageLink.getIdOffset()), |
104 | new PageRequest(0, pageLink.getLimit()))); | 107 | new PageRequest(0, pageLink.getLimit()))); |
105 | } | 108 | } |
106 | 109 | ||
@@ -108,11 +111,11 @@ public class JpaDeviceDao extends JpaAbstractSearchTextDao<DeviceEntity, Device> | @@ -108,11 +111,11 @@ public class JpaDeviceDao extends JpaAbstractSearchTextDao<DeviceEntity, Device> | ||
108 | public List<Device> findDevicesByTenantIdAndCustomerIdAndType(UUID tenantId, UUID customerId, String type, TextPageLink pageLink) { | 111 | public List<Device> findDevicesByTenantIdAndCustomerIdAndType(UUID tenantId, UUID customerId, String type, TextPageLink pageLink) { |
109 | return DaoUtil.convertDataList( | 112 | return DaoUtil.convertDataList( |
110 | deviceRepository.findByTenantIdAndCustomerIdAndType( | 113 | deviceRepository.findByTenantIdAndCustomerIdAndType( |
111 | - tenantId, | ||
112 | - customerId, | 114 | + fromTimeUUID(tenantId), |
115 | + fromTimeUUID(customerId), | ||
113 | type, | 116 | type, |
114 | Objects.toString(pageLink.getTextSearch(), ""), | 117 | Objects.toString(pageLink.getTextSearch(), ""), |
115 | - pageLink.getIdOffset() == null ? NULL_UUID : pageLink.getIdOffset(), | 118 | + pageLink.getIdOffset() == null ? NULL_UUID_STR : fromTimeUUID(pageLink.getIdOffset()), |
116 | new PageRequest(0, pageLink.getLimit()))); | 119 | new PageRequest(0, pageLink.getLimit()))); |
117 | } | 120 | } |
118 | 121 | ||
@@ -126,7 +129,7 @@ public class JpaDeviceDao extends JpaAbstractSearchTextDao<DeviceEntity, Device> | @@ -126,7 +129,7 @@ public class JpaDeviceDao extends JpaAbstractSearchTextDao<DeviceEntity, Device> | ||
126 | if (entities != null && !entities.isEmpty()) { | 129 | if (entities != null && !entities.isEmpty()) { |
127 | list = new ArrayList<>(); | 130 | list = new ArrayList<>(); |
128 | for (TenantDeviceTypeEntity entity : entities) { | 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 | return list; | 135 | return list; |
@@ -21,21 +21,19 @@ import org.thingsboard.server.common.data.EntityType; | @@ -21,21 +21,19 @@ import org.thingsboard.server.common.data.EntityType; | ||
21 | import org.thingsboard.server.dao.model.sql.EventEntity; | 21 | import org.thingsboard.server.dao.model.sql.EventEntity; |
22 | import org.thingsboard.server.dao.util.SqlDao; | 22 | import org.thingsboard.server.dao.util.SqlDao; |
23 | 23 | ||
24 | -import java.util.UUID; | ||
25 | - | ||
26 | /** | 24 | /** |
27 | * Created by Valerii Sosliuk on 5/3/2017. | 25 | * Created by Valerii Sosliuk on 5/3/2017. |
28 | */ | 26 | */ |
29 | @SqlDao | 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 | EntityType entityType, | 31 | EntityType entityType, |
34 | - UUID entityId, | 32 | + String entityId, |
35 | String eventType, | 33 | String eventType, |
36 | String eventUid); | 34 | String eventUid); |
37 | 35 | ||
38 | - EventEntity findByTenantIdAndEntityTypeAndEntityId(UUID tenantId, | 36 | + EventEntity findByTenantIdAndEntityTypeAndEntityId(String tenantId, |
39 | EntityType entityType, | 37 | EntityType entityType, |
40 | - UUID entityId); | 38 | + String entityId); |
41 | } | 39 | } |