Support TOSCA functions in Node Filters
[sdc.git] / catalog-ui / src / app / models / tosca-concat-function.ts
index 9656d8d..74fe7f6 100644 (file)
@@ -22,6 +22,9 @@
 import {ToscaFunction} from "./tosca-function";
 import {ToscaFunctionType} from "./tosca-function-type.enum";
 import {ToscaFunctionParameter} from "./tosca-function-parameter";
+import {ToscaGetFunction} from "./tosca-get-function";
+import {YamlFunction} from "./yaml-function";
+import {ToscaStringParameter} from "./tosca-string-parameter";
 
 export class ToscaConcatFunction implements ToscaFunction, ToscaFunctionParameter {
     type = ToscaFunctionType.CONCAT;
@@ -33,6 +36,39 @@ export class ToscaConcatFunction implements ToscaFunction, ToscaFunctionParamete
             return;
         }
         this.value = toscaConcatFunction.value;
+        if (toscaConcatFunction.parameters) {
+            toscaConcatFunction.parameters.forEach(parameter => {
+                switch (parameter.type) {
+                    case ToscaFunctionType.GET_INPUT:
+                    case ToscaFunctionType.GET_ATTRIBUTE:
+                    case ToscaFunctionType.GET_PROPERTY:
+                        this.parameters.push(new ToscaGetFunction(<ToscaGetFunction>parameter));
+                        break;
+                    case ToscaFunctionType.CONCAT:
+                        this.parameters.push(new ToscaConcatFunction(<ToscaConcatFunction>parameter));
+                        break;
+                    case ToscaFunctionType.YAML:
+                        this.parameters.push(new YamlFunction(<YamlFunction>parameter));
+                        break;
+                    case ToscaFunctionType.STRING:
+                        this.parameters.push(new ToscaStringParameter(<ToscaStringParameter>parameter));
+                        break;
+                    default:
+                        console.error(`Unsupported parameter type "${parameter.type}"`);
+                        this.parameters.push(parameter);
+                }
+            });
+        }
+    }
+
+    public buildValueString(): string {
+        return JSON.stringify(this.buildValueObject());
+    }
+
+    public buildValueObject(): Object {
+        return {
+            [this.type.toLowerCase()]: this.parameters.map(parameter => parameter.buildValueObject())
+        }
     }
 
 }
\ No newline at end of file