Commit 4c2effd9bef1653b9861fd244a17b3a07c6e888e

Authored by deaflynx
1 parent a52b8880

Fix import with rule chain type

@@ -14,8 +14,8 @@ @@ -14,8 +14,8 @@
14 * limitations under the License. 14 * limitations under the License.
15 */ 15 */
16 16
17 -const forwardUrl = "http://localhost:8080";  
18 -const wsForwardUrl = "ws://localhost:8080"; 17 +const forwardUrl = "http://localhost:8081";
  18 +const wsForwardUrl = "ws://localhost:8081";
19 const ruleNodeUiforwardUrl = forwardUrl; 19 const ruleNodeUiforwardUrl = forwardUrl;
20 20
21 const PROXY_CONFIG = { 21 const PROXY_CONFIG = {
@@ -324,9 +324,8 @@ export class RuleChainService { @@ -324,9 +324,8 @@ export class RuleChainService {
324 return this.http.get<Array<RuleChain>>(`/api/ruleChain/defaultEdgeRuleChains`, defaultHttpOptionsFromConfig(config)); 324 return this.http.get<Array<RuleChain>>(`/api/ruleChain/defaultEdgeRuleChains`, defaultHttpOptionsFromConfig(config));
325 } 325 }
326 326
327 - public setEdgeRootRuleChain(edgeId: string, ruleChainId: string, config?: RequestConfig): Observable<Edge> { //TODO deaflynx EdgeInfo vs. Edge check usage  
328 - return this.http.post<Edge>(`/api/edge/${edgeId}/${ruleChainId}/root`,  
329 - defaultHttpOptionsFromConfig(config)); 327 + public setEdgeRootRuleChain(edgeId: string, ruleChainId: string, config?: RequestConfig): Observable<Edge> {
  328 + return this.http.post<Edge>(`/api/edge/${edgeId}/${ruleChainId}/root`, defaultHttpOptionsFromConfig(config));
330 } 329 }
331 330
332 } 331 }
@@ -52,7 +52,13 @@ import { NULL_UUID } from '@shared/models/id/has-uuid'; @@ -52,7 +52,13 @@ import { NULL_UUID } from '@shared/models/id/has-uuid';
52 import { WidgetsBundle } from '@shared/models/widgets-bundle.model'; 52 import { WidgetsBundle } from '@shared/models/widgets-bundle.model';
53 import { ImportEntitiesResultInfo, ImportEntityData } from '@shared/models/entity.models'; 53 import { ImportEntitiesResultInfo, ImportEntityData } from '@shared/models/entity.models';
54 import { RequestConfig } from '@core/http/http-utils'; 54 import { RequestConfig } from '@core/http/http-utils';
55 -import { RuleChain, RuleChainImport, RuleChainMetaData } from '@shared/models/rule-chain.models'; 55 +import {
  56 + RuleChain,
  57 + RuleChainImport,
  58 + RuleChainMetaData,
  59 + RuleChainType,
  60 + ruleChainType
  61 +} from '@shared/models/rule-chain.models';
56 import { RuleChainService } from '@core/http/rule-chain.service'; 62 import { RuleChainService } from '@core/http/rule-chain.service';
57 import * as JSZip from 'jszip'; 63 import * as JSZip from 'jszip';
58 import { FiltersInfo } from '@shared/models/query/query.models'; 64 import { FiltersInfo } from '@shared/models/query/query.models';
@@ -397,7 +403,7 @@ export class ImportExportService { @@ -397,7 +403,7 @@ export class ImportExportService {
397 ); 403 );
398 } 404 }
399 405
400 - public importRuleChain(): Observable<RuleChainImport> { 406 + public importRuleChain(expectedRuleChainType: RuleChainType): Observable<RuleChainImport> {
401 return this.openImportDialog('rulechain.import', 'rulechain.rulechain-file').pipe( 407 return this.openImportDialog('rulechain.import', 'rulechain.rulechain-file').pipe(
402 mergeMap((ruleChainImport: RuleChainImport) => { 408 mergeMap((ruleChainImport: RuleChainImport) => {
403 if (!this.validateImportedRuleChain(ruleChainImport)) { 409 if (!this.validateImportedRuleChain(ruleChainImport)) {
@@ -405,6 +411,11 @@ export class ImportExportService { @@ -405,6 +411,11 @@ export class ImportExportService {
405 {message: this.translate.instant('rulechain.invalid-rulechain-file-error'), 411 {message: this.translate.instant('rulechain.invalid-rulechain-file-error'),
406 type: 'error'})); 412 type: 'error'}));
407 throw new Error('Invalid rule chain file'); 413 throw new Error('Invalid rule chain file');
  414 + } else if (ruleChainImport.ruleChain.type !== expectedRuleChainType) {
  415 + this.store.dispatch(new ActionNotificationShow(
  416 + {message: this.translate.instant('rulechain.invalid-rulechain-type-error', { expectedRuleChainType: expectedRuleChainType }),
  417 + type: 'error'}));
  418 + throw new Error('Invalid rule chain file');
408 } else { 419 } else {
409 return this.ruleChainService.resolveRuleChainMetadata(ruleChainImport.metadata).pipe( 420 return this.ruleChainService.resolveRuleChainMetadata(ruleChainImport.metadata).pipe(
410 map((resolvedMetadata) => { 421 map((resolvedMetadata) => {
@@ -458,6 +469,9 @@ export class ImportExportService { @@ -458,6 +469,9 @@ export class ImportExportService {
458 || isUndefined(ruleChainImport.ruleChain.name)) { 469 || isUndefined(ruleChainImport.ruleChain.name)) {
459 return false; 470 return false;
460 } 471 }
  472 + if (isUndefined(ruleChainImport.ruleChain.type)) {
  473 + ruleChainImport.ruleChain.type = ruleChainType.core;
  474 + }
461 return true; 475 return true;
462 } 476 }
463 477
@@ -14,39 +14,40 @@ @@ -14,39 +14,40 @@
14 /// limitations under the License. 14 /// limitations under the License.
15 /// 15 ///
16 16
17 -import { Injectable } from '@angular/core'; 17 +import {Injectable} from '@angular/core';
18 18
19 -import {ActivatedRouteSnapshot, Resolve, Route, Router} from '@angular/router'; 19 +import {ActivatedRouteSnapshot, Resolve, Router} from '@angular/router';
20 import { 20 import {
21 CellActionDescriptor, 21 CellActionDescriptor,
22 checkBoxCell, 22 checkBoxCell,
23 - DateEntityTableColumn, EntityColumn, 23 + DateEntityTableColumn,
  24 + EntityColumn,
24 EntityTableColumn, 25 EntityTableColumn,
25 EntityTableConfig, 26 EntityTableConfig,
26 - GroupActionDescriptor, HeaderActionDescriptor 27 + GroupActionDescriptor,
  28 + HeaderActionDescriptor
27 } from '@home/models/entity/entities-table-config.models'; 29 } from '@home/models/entity/entities-table-config.models';
28 -import { TranslateService } from '@ngx-translate/core';  
29 -import { DatePipe } from '@angular/common';  
30 -import { EntityType, entityTypeResources, entityTypeTranslations } from '@shared/models/entity-type.models';  
31 -import { EntityAction } from '@home/models/entity/entity-component.models';  
32 -import { RuleChain, ruleChainType } from '@shared/models/rule-chain.models';  
33 -import { RuleChainService } from '@core/http/rule-chain.service';  
34 -import { RuleChainComponent } from '@modules/home/pages/rulechain/rulechain.component';  
35 -import { DialogService } from '@core/services/dialog.service';  
36 -import { RuleChainTabsComponent } from '@home/pages/rulechain/rulechain-tabs.component';  
37 -import { ImportExportService } from '@home/components/import-export/import-export.service';  
38 -import { ItemBufferService } from '@core/services/item-buffer.service';  
39 -import { EdgeService } from "@core/http/edge.service";  
40 -import {map, mergeMap} from "rxjs/operators";  
41 -import { forkJoin, Observable } from "rxjs"; 30 +import {TranslateService} from '@ngx-translate/core';
  31 +import {DatePipe} from '@angular/common';
  32 +import {EntityType, entityTypeResources, entityTypeTranslations} from '@shared/models/entity-type.models';
  33 +import {EntityAction} from '@home/models/entity/entity-component.models';
  34 +import {RuleChain, ruleChainType} from '@shared/models/rule-chain.models';
  35 +import {RuleChainService} from '@core/http/rule-chain.service';
  36 +import {RuleChainComponent} from '@modules/home/pages/rulechain/rulechain.component';
  37 +import {DialogService} from '@core/services/dialog.service';
  38 +import {RuleChainTabsComponent} from '@home/pages/rulechain/rulechain-tabs.component';
  39 +import {ImportExportService} from '@home/components/import-export/import-export.service';
  40 +import {ItemBufferService} from '@core/services/item-buffer.service';
  41 +import {EdgeService} from "@core/http/edge.service";
  42 +import {forkJoin, Observable} from "rxjs";
42 import { 43 import {
43 AddEntitiesToEdgeDialogComponent, 44 AddEntitiesToEdgeDialogComponent,
44 AddEntitiesToEdgeDialogData 45 AddEntitiesToEdgeDialogData
45 } from "@home/dialogs/add-entities-to-edge-dialog.component"; 46 } from "@home/dialogs/add-entities-to-edge-dialog.component";
46 -import { MatDialog } from "@angular/material/dialog";  
47 -import { isDefined, isUndefined } from "@core/utils";  
48 -import { PageLink } from "@shared/models/page/page-link";  
49 -import { Edge } from "@shared/models/edge.models"; 47 +import {MatDialog} from "@angular/material/dialog";
  48 +import {isDefined, isUndefined} from "@core/utils";
  49 +import {PageLink} from "@shared/models/page/page-link";
  50 +import {Edge} from "@shared/models/edge.models";
50 51
51 @Injectable() 52 @Injectable()
52 export class RuleChainsTableConfigResolver implements Resolve<EntityTableConfig<RuleChain>> { 53 export class RuleChainsTableConfigResolver implements Resolve<EntityTableConfig<RuleChain>> {
@@ -267,7 +268,8 @@ export class RuleChainsTableConfigResolver implements Resolve<EntityTableConfig< @@ -267,7 +268,8 @@ export class RuleChainsTableConfigResolver implements Resolve<EntityTableConfig<
267 if ($event) { 268 if ($event) {
268 $event.stopPropagation(); 269 $event.stopPropagation();
269 } 270 }
270 - this.importExport.importRuleChain().subscribe((ruleChainImport) => { 271 + const expectedRuleChainType = this.config.componentsData.ruleChainScope === 'tenant' ? ruleChainType.core : ruleChainType.edge;
  272 + this.importExport.importRuleChain(expectedRuleChainType).subscribe((ruleChainImport) => {
271 if (ruleChainImport) { 273 if (ruleChainImport) {
272 this.itembuffer.storeRuleChainImport(ruleChainImport); 274 this.itembuffer.storeRuleChainImport(ruleChainImport);
273 this.router.navigateByUrl(`${this.router.routerState.snapshot.url}/ruleChain/import`); 275 this.router.navigateByUrl(`${this.router.routerState.snapshot.url}/ruleChain/import`);