From a53dbd4f12ddd206c2ce9dc0a8ff14a08aadc1fe Mon Sep 17 00:00:00 2001 From: Lvbo163 Date: Wed, 30 Aug 2017 09:21:09 +0800 Subject: save and query workflow definition add in memory web api to mock backend rest api to save and load workflow definition. Issue-ID: SDC-257 Change-Id: Ibedcbe5db5706773de9f6d1093babbcbd7b73297 Signed-off-by: Lvbo163 --- .../app/services/data-access/catalog.service.ts | 31 ++++++++++++++ .../services/data-access/data-access.service.ts | 27 ++++++++++++ .../services/data-access/in-memory-data.service.ts | 33 +++++++++++++++ .../src/app/services/data-access/sdc.service.ts | 49 ++++++++++++++++++++++ 4 files changed, 140 insertions(+) create mode 100644 sdc-workflow-designer-ui/src/app/services/data-access/catalog.service.ts create mode 100644 sdc-workflow-designer-ui/src/app/services/data-access/data-access.service.ts create mode 100644 sdc-workflow-designer-ui/src/app/services/data-access/in-memory-data.service.ts create mode 100644 sdc-workflow-designer-ui/src/app/services/data-access/sdc.service.ts (limited to 'sdc-workflow-designer-ui/src/app/services/data-access') diff --git a/sdc-workflow-designer-ui/src/app/services/data-access/catalog.service.ts b/sdc-workflow-designer-ui/src/app/services/data-access/catalog.service.ts new file mode 100644 index 00000000..5eaf6351 --- /dev/null +++ b/sdc-workflow-designer-ui/src/app/services/data-access/catalog.service.ts @@ -0,0 +1,31 @@ +/** + * Copyright (c) 2017 ZTE Corporation. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * and the Apache License 2.0 which both accompany this distribution, + * and are available at http://www.eclipse.org/legal/epl-v10.html + * and http://www.apache.org/licenses/LICENSE-2.0 + * + * Contributors: + * ZTE - initial API and implementation and/or initial documentation + */ + +import { Injectable } from '@angular/core'; +import { WorkflowNode } from "../../model/workflow-node"; +import { Observable } from "rxjs/Observable"; +import { HttpService } from "../../util/http.service"; +import { Workflow } from "../../model/workflow"; + +/** + * CatalogService + * provides data access from backend + */ +@Injectable() +export abstract class CatalogService { + + constructor(protected httpService: HttpService) {} + + public abstract loadWorkflow(workflowId: string): Observable; + + public abstract saveWorkflow(workflow: Workflow): Observable; +} diff --git a/sdc-workflow-designer-ui/src/app/services/data-access/data-access.service.ts b/sdc-workflow-designer-ui/src/app/services/data-access/data-access.service.ts new file mode 100644 index 00000000..451d7a2b --- /dev/null +++ b/sdc-workflow-designer-ui/src/app/services/data-access/data-access.service.ts @@ -0,0 +1,27 @@ +/** + * Copyright (c) 2017 ZTE Corporation. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * and the Apache License 2.0 which both accompany this distribution, + * and are available at http://www.eclipse.org/legal/epl-v10.html + * and http://www.apache.org/licenses/LICENSE-2.0 + * + * Contributors: + * ZTE - initial API and implementation and/or initial documentation + */ + +import { Injectable } from '@angular/core'; +import { CatalogService } from "./catalog.service"; +import { SdcService } from "./sdc.service"; +import { HttpService } from "../../util/http.service"; + +/** + * DataAccessService + * provides data access from backend + */ +@Injectable() +export class DataAccessService { + constructor(private httpService: HttpService) {} + + public catalogService: CatalogService = new SdcService(this.httpService); +} diff --git a/sdc-workflow-designer-ui/src/app/services/data-access/in-memory-data.service.ts b/sdc-workflow-designer-ui/src/app/services/data-access/in-memory-data.service.ts new file mode 100644 index 00000000..1609c948 --- /dev/null +++ b/sdc-workflow-designer-ui/src/app/services/data-access/in-memory-data.service.ts @@ -0,0 +1,33 @@ +/** + * Copyright (c) 2017 ZTE Corporation. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * and the Apache License 2.0 which both accompany this distribution, + * and are available at http://www.eclipse.org/legal/epl-v10.html + * and http://www.apache.org/licenses/LICENSE-2.0 + * + * Contributors: + * ZTE - initial API and implementation and/or initial documentation + */ + +import { Injectable } from '@angular/core'; +import { InMemoryDbService } from 'angular-in-memory-web-api'; +/** + * InMemeoryDataService + * Mock backend data + */ +export class InMemoryDataService implements InMemoryDbService { + createDb() { + const workflows = [{ + id: 'workflow1', + name:'workflow1', + nodes: [] + },{ + id:'workflow2', + name: 'workflow2', + nodes: [] + } + ]; + return {workflows}; + } +} diff --git a/sdc-workflow-designer-ui/src/app/services/data-access/sdc.service.ts b/sdc-workflow-designer-ui/src/app/services/data-access/sdc.service.ts new file mode 100644 index 00000000..cec6ae25 --- /dev/null +++ b/sdc-workflow-designer-ui/src/app/services/data-access/sdc.service.ts @@ -0,0 +1,49 @@ +/** + * Copyright (c) 2017 ZTE Corporation. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * and the Apache License 2.0 which both accompany this distribution, + * and are available at http://www.eclipse.org/legal/epl-v10.html + * and http://www.apache.org/licenses/LICENSE-2.0 + * + * Contributors: + * ZTE - initial API and implementation and/or initial documentation + */ + +import { Injectable } from '@angular/core'; +import { CatalogService } from "./catalog.service"; +import { Observable } from "rxjs/Observable"; +import { WorkflowNode } from "../../model/workflow-node"; +import { HttpService } from "../../util/http.service"; +import { Workflow } from "../../model/workflow"; + +/** + * SdcService + * provides data access from sdc + */ +@Injectable() +export class SdcService extends CatalogService { + + constructor(protected httpService: HttpService) { + super(httpService); + } + + public loadWorkflows(): Observable { + // TODO load data from sdc + const url = 'api/workflows'; + return this.httpService.get(url); + } + + public loadWorkflow(workflowId: string): Observable { + // TODO load data from sdc + const url = `api/workflows/${workflowId}`; + return this.httpService.get(url).map(response => response.data); + } + + public saveWorkflow(workflow: Workflow): Observable { + // TODO save workflow design to sdc + const url = `api/workflows/${workflow.id}`; + return this.httpService.put(url, JSON.stringify(workflow)).map(() => true); + } + +} -- cgit 1.2.3-korg