blob: 9d8ab366a2bf3aed128ca7f0da624ae585c48928 [file] [log] [blame]
aribeiro5c1f5752020-11-19 13:28:43 +00001/*
2 * ============LICENSE_START=======================================================
3 * Copyright (C) 2021 Nordix Foundation
4 * ================================================================================
5 * Licensed under the Apache License, Version 2.0 (the "License");
6 * you may not use this file except in compliance with the License.
7 * You may obtain a copy of the License at
8 *
9 * http://www.apache.org/licenses/LICENSE-2.0
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 * SPDX-License-Identifier: Apache-2.0
17 * ============LICENSE_END=========================================================
18 */
19
20'use strict';
21
aribeiro1de16922021-10-01 11:30:49 +010022import {ArtifactModel} from "./artifacts";
andre.schmidf13f58e2022-02-09 19:00:35 +000023import {SchemaPropertyGroupModel} from "./schema-property";
24import {PROPERTY_DATA, PROPERTY_TYPES} from "../utils/constants";
aribeiro1de16922021-10-01 11:30:49 +010025
aribeiro5c1f5752020-11-19 13:28:43 +000026export class InputOperationParameter {
27 name: string;
28 type: string;
andre.schmidf13f58e2022-02-09 19:00:35 +000029 schema: SchemaPropertyGroupModel;
aribeiro5c1f5752020-11-19 13:28:43 +000030 inputId: string;
31 toscaDefaultValue?: string;
andre.schmidf13f58e2022-02-09 19:00:35 +000032 value?: any;
aribeiro5c1f5752020-11-19 13:28:43 +000033
34 constructor(param?: any) {
35 if (param) {
36 this.name = param.name;
37 this.type = param.type;
andre.schmidf13f58e2022-02-09 19:00:35 +000038 this.schema = param.schema;
aribeiro5c1f5752020-11-19 13:28:43 +000039 this.inputId = param.inputId;
40 this.toscaDefaultValue = param.toscaDefaultValue;
andre.schmidf13f58e2022-02-09 19:00:35 +000041 this.value = param.value;
aribeiro5c1f5752020-11-19 13:28:43 +000042 }
andre.schmidf13f58e2022-02-09 19:00:35 +000043 }
44
45 public getDefaultValue(): any {
46 if (this.isTypeNotSimple()) {
47 if (this.toscaDefaultValue) {
48 this.toscaDefaultValue = JSON.parse(this.toscaDefaultValue);
49 return JSON.parse(this.toscaDefaultValue);
50 }
51 switch (this.type) {
52 case PROPERTY_TYPES.LIST:
53 return [];
54 default:
55 return {};
56 }
57 }
58
59 return this.toscaDefaultValue;
60 }
61
62 private isTypeNotSimple() {
63 return PROPERTY_DATA.SIMPLE_TYPES.indexOf(this.type) == -1;
aribeiro5c1f5752020-11-19 13:28:43 +000064 }
65}
66
aribeiro1de16922021-10-01 11:30:49 +010067export class PropertyOperationParameter {
68 name: string;
69 type: string;
70 value?: string;
71 propertyId: string;
72
73 constructor(param?: any) {
74 if (param) {
75 this.name = param.name;
76 this.type = param.type;
77 this.value = param.value;
78 this.propertyId = param.propertyId;
79 }
80 }
81}
82
aribeiro5c1f5752020-11-19 13:28:43 +000083export interface IOperationParamsList {
84 listToscaDataDefinition: Array<InputOperationParameter>;
85}
86
87export class BEInterfaceOperationModel {
88 name: string;
89 description: string;
90 uniqueId: string;
91 inputs: IOperationParamsList;
aribeiro1de16922021-10-01 11:30:49 +010092 implementation: ArtifactModel;
aribeiro5c1f5752020-11-19 13:28:43 +000093
94 constructor(operation?: any) {
95 if (operation) {
96 this.name = operation.name;
97 this.description = operation.description;
98 this.uniqueId = operation.uniqueId;
99 this.inputs = operation.inputs;
100 this.implementation = operation.implementation;
101 }
102 }
103}
104
105export class InterfaceOperationModel extends BEInterfaceOperationModel {
106 interfaceType: string;
107 interfaceId: string;
108 operationType: string;
109 description: string;
110 uniqueId: string;
aribeiro5c1f5752020-11-19 13:28:43 +0000111 inputParams: IOperationParamsList;
aribeiro1de16922021-10-01 11:30:49 +0100112 implementation: ArtifactModel;
aribeiro5c1f5752020-11-19 13:28:43 +0000113
114 constructor(operation?: any) {
115 super(operation);
116 if (operation) {
117 this.interfaceId = operation.interfaceId;
118 this.interfaceType = operation.interfaceType;
119 this.description = operation.description;
120 this.operationType = operation.operationType;
121 this.uniqueId = operation.uniqueId;
122 this.inputParams = operation.inputParams;
aribeiro1de16922021-10-01 11:30:49 +0100123 this.implementation = operation.implementation;
aribeiro5c1f5752020-11-19 13:28:43 +0000124 }
125 }
126
127 public displayType(): string {
128 return displayType(this.interfaceType);
129 }
130}
131
aribeiro5c1f5752020-11-19 13:28:43 +0000132export class ComponentInstanceInterfaceModel {
133 type: string;
134 uniqueId: string;
135 operations: Array<InterfaceOperationModel>;
136
137 constructor(interfaceOperation?: any) {
138 if (interfaceOperation) {
139 this.type = interfaceOperation.type;
140 this.uniqueId = interfaceOperation.uniqueId;
141 this.operations = interfaceOperation.operations;
142 }
143 }
144
145 public displayType(): string {
146 return displayType(this.type);
147 }
148}
149
150const displayType = (type:string) => type && type.substr(type.lastIndexOf('.') + 1);