Commit 52cbe843dc5871ea0d347a14cbe4831927998601
1 parent
58cdc63a
Fixed import/export rule chain functionality
Showing
6 changed files
with
32 additions
and
11 deletions
... | ... | @@ -29,6 +29,7 @@ import org.thingsboard.server.dao.asset.AssetService; |
29 | 29 | import org.thingsboard.server.dao.customer.CustomerService; |
30 | 30 | import org.thingsboard.server.dao.dashboard.DashboardService; |
31 | 31 | import org.thingsboard.server.dao.device.DeviceService; |
32 | +import org.thingsboard.server.dao.edge.EdgeService; | |
32 | 33 | import org.thingsboard.server.dao.entityview.EntityViewService; |
33 | 34 | import org.thingsboard.server.dao.rule.RuleChainService; |
34 | 35 | import org.thingsboard.server.dao.tenant.TenantService; |
... | ... | @@ -68,6 +69,9 @@ public class BaseEntityService extends AbstractEntityService implements EntitySe |
68 | 69 | @Autowired |
69 | 70 | private RuleChainService ruleChainService; |
70 | 71 | |
72 | + @Autowired | |
73 | + private EdgeService edgeService; | |
74 | + | |
71 | 75 | @Override |
72 | 76 | public void deleteEntityRelations(TenantId tenantId, EntityId entityId) { |
73 | 77 | super.deleteEntityRelations(tenantId, entityId); |
... | ... | @@ -106,6 +110,9 @@ public class BaseEntityService extends AbstractEntityService implements EntitySe |
106 | 110 | case RULE_CHAIN: |
107 | 111 | hasName = ruleChainService.findRuleChainByIdAsync(tenantId, new RuleChainId(entityId.getId())); |
108 | 112 | break; |
113 | + case EDGE: | |
114 | + hasName = edgeService.findEdgeByIdAsync(tenantId, new EdgeId(entityId.getId())); | |
115 | + break; | |
109 | 116 | default: |
110 | 117 | throw new IllegalStateException("Not Implemented!"); |
111 | 118 | } | ... | ... |
... | ... | @@ -252,6 +252,8 @@ export default function ImportExport($log, $translate, $q, $mdDialog, $document, |
252 | 252 | } |
253 | 253 | ruleChain.root = false; |
254 | 254 | delete ruleChain.assignedEdgesText; |
255 | + delete ruleChain.assignedEdges; | |
256 | + delete ruleChain.assignedEdgesIds; | |
255 | 257 | return ruleChain; |
256 | 258 | } |
257 | 259 | |
... | ... | @@ -273,13 +275,16 @@ export default function ImportExport($log, $translate, $q, $mdDialog, $document, |
273 | 275 | toast.showError($translate.instant('rulechain.export-failed-error', {error: message})); |
274 | 276 | } |
275 | 277 | |
276 | - function importRuleChain($event) { | |
278 | + function importRuleChain($event, expectedRuleChainType) { | |
277 | 279 | var deferred = $q.defer(); |
278 | 280 | openImportDialog($event, 'rulechain.import', 'rulechain.rulechain-file').then( |
279 | 281 | function success(ruleChainImport) { |
280 | 282 | if (!validateImportedRuleChain(ruleChainImport)) { |
281 | 283 | toast.showError($translate.instant('rulechain.invalid-rulechain-file-error')); |
282 | 284 | deferred.reject(); |
285 | + } else if (ruleChainImport.ruleChain.type !== expectedRuleChainType) { | |
286 | + toast.showError($translate.instant('rulechain.invalid-rulechain-type-error', {expectedRuleChainType: expectedRuleChainType})); | |
287 | + deferred.reject(); | |
283 | 288 | } else { |
284 | 289 | deferred.resolve(ruleChainImport); |
285 | 290 | } |
... | ... | @@ -301,6 +306,9 @@ export default function ImportExport($log, $translate, $q, $mdDialog, $document, |
301 | 306 | if (angular.isUndefined(ruleChainImport.ruleChain.name)) { |
302 | 307 | return false; |
303 | 308 | } |
309 | + if (angular.isUndefined(ruleChainImport.ruleChain.type)) { | |
310 | + return false; | |
311 | + } | |
304 | 312 | return true; |
305 | 313 | } |
306 | 314 | ... | ... |
... | ... | @@ -1450,7 +1450,8 @@ |
1450 | 1450 | "assigned-to-edges": "Assigned to edges", |
1451 | 1451 | "set-default-root-edge": "Make rule chain default root", |
1452 | 1452 | "set-default-root-edge-rulechain-title": "Are you sure you want to make the rule chain '{{ruleChainName}}' default edge root?", |
1453 | - "set-default-root-edge-rulechain-text": "After the confirmation the rule chain will become default edge root and will handle all incoming transport messages." | |
1453 | + "set-default-root-edge-rulechain-text": "After the confirmation the rule chain will become default edge root and will handle all incoming transport messages.", | |
1454 | + "invalid-rulechain-type-error": "Unable to import rule chain: Invalid rule chain type. Expected type is {{expectedRuleChainType}}." | |
1454 | 1455 | }, |
1455 | 1456 | "rulenode": { |
1456 | 1457 | "details": "Details", | ... | ... |
... | ... | @@ -1269,7 +1269,11 @@ export function RuleChainController($state, $scope, $compile, $q, $mdUtil, $time |
1269 | 1269 | vm.isDirty = false; |
1270 | 1270 | vm.isImport = false; |
1271 | 1271 | $mdUtil.nextTick(() => { |
1272 | - $state.go('home.ruleChains.ruleChain', {ruleChainId: vm.ruleChain.id.id}); | |
1272 | + if (vm.ruleChain.type === vm.types.systemRuleChainType) { | |
1273 | + $state.go('home.ruleChains.system.ruleChain', {ruleChainId: vm.ruleChain.id.id}); | |
1274 | + } else { | |
1275 | + $state.go('home.ruleChains.edge.ruleChain', {ruleChainId: vm.ruleChain.id.id}); | |
1276 | + } | |
1273 | 1277 | }); |
1274 | 1278 | } else { |
1275 | 1279 | prepareRuleChain(); | ... | ... |
... | ... | @@ -56,7 +56,7 @@ export default function RuleChainRoutes($stateProvider, NodeTemplatePathProvider |
56 | 56 | ncyBreadcrumb: { |
57 | 57 | label: '{"icon": "settings_ethernet", "label": "rulechain.system-rulechains"}' |
58 | 58 | } |
59 | - }).state('home.ruleChains.ruleChain', { | |
59 | + }).state('home.ruleChains.system.ruleChain', { | |
60 | 60 | url: '/:ruleChainId', |
61 | 61 | reloadOnSearch: false, |
62 | 62 | module: 'private', |
... | ... | @@ -106,7 +106,8 @@ export default function RuleChainRoutes($stateProvider, NodeTemplatePathProvider |
106 | 106 | } |
107 | 107 | }, |
108 | 108 | params: { |
109 | - ruleChainImport: {} | |
109 | + ruleChainImport: {}, | |
110 | + ruleChainType: {} | |
110 | 111 | }, |
111 | 112 | resolve: { |
112 | 113 | ruleChain: |
... | ... | @@ -122,7 +123,7 @@ export default function RuleChainRoutes($stateProvider, NodeTemplatePathProvider |
122 | 123 | ruleNodeComponents: |
123 | 124 | /*@ngInject*/ |
124 | 125 | function($stateParams, ruleChainService) { |
125 | - return ruleChainService.getRuleNodeComponents(types.systemRuleChainType); | |
126 | + return ruleChainService.getRuleNodeComponents($stateParams.ruleChainType); | |
126 | 127 | } |
127 | 128 | }, |
128 | 129 | data: { | ... | ... |
... | ... | @@ -164,9 +164,9 @@ export default function RuleChainsController(ruleChainService, userService, edge |
164 | 164 | }); |
165 | 165 | vm.ruleChainGridConfig.addItemActions.push({ |
166 | 166 | onAction: function ($event) { |
167 | - importExport.importRuleChain($event).then( | |
167 | + importExport.importRuleChain($event, types.systemRuleChainType).then( | |
168 | 168 | function(ruleChainImport) { |
169 | - $state.go('home.ruleChains.importRuleChain', {ruleChainImport:ruleChainImport}); | |
169 | + $state.go('home.ruleChains.importRuleChain', {ruleChainImport:ruleChainImport, ruleChainType: types.systemRuleChainType}); | |
170 | 170 | } |
171 | 171 | ); |
172 | 172 | }, |
... | ... | @@ -260,9 +260,9 @@ export default function RuleChainsController(ruleChainService, userService, edge |
260 | 260 | }); |
261 | 261 | vm.ruleChainGridConfig.addItemActions.push({ |
262 | 262 | onAction: function ($event) { |
263 | - importExport.importRuleChain($event).then( | |
263 | + importExport.importRuleChain($event, types.edgeRuleChainType).then( | |
264 | 264 | function(ruleChainImport) { |
265 | - $state.go('home.ruleChains.importRuleChain', {ruleChainImport:ruleChainImport}); | |
265 | + $state.go('home.ruleChains.importRuleChain', {ruleChainImport:ruleChainImport, ruleChainType: types.edgeRuleChainType}); | |
266 | 266 | } |
267 | 267 | ); |
268 | 268 | }, |
... | ... | @@ -376,7 +376,7 @@ export default function RuleChainsController(ruleChainService, userService, edge |
376 | 376 | } else if (vm.ruleChainsScope === 'edges') { |
377 | 377 | $state.go('home.ruleChains.edge.ruleChain', {ruleChainId: ruleChain.id.id}); |
378 | 378 | } else { |
379 | - $state.go('home.ruleChains.ruleChain', {ruleChainId: ruleChain.id.id}); | |
379 | + $state.go('home.ruleChains.system.ruleChain', {ruleChainId: ruleChain.id.id}); | |
380 | 380 | } |
381 | 381 | } |
382 | 382 | ... | ... |