Blueprint Processor Python Script Components
[ccsdk/cds.git] / components / core / src / main / kotlin / org / onap / ccsdk / apps / controllerblueprints / core / utils / ServiceTemplateUtils.kt
1 /*\r
2  * Copyright © 2017-2018 AT&T Intellectual Property.\r
3  *\r
4  * Licensed under the Apache License, Version 2.0 (the "License");\r
5  * you may not use this file except in compliance with the License.\r
6  * You may obtain a copy of the License at\r
7  *\r
8  *     http://www.apache.org/licenses/LICENSE-2.0\r
9  *\r
10  * Unless required by applicable law or agreed to in writing, software\r
11  * distributed under the License is distributed on an "AS IS" BASIS,\r
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
13  * See the License for the specific language governing permissions and\r
14  * limitations under the License.\r
15  */\r
16 \r
17 package org.onap.ccsdk.apps.controllerblueprints.core.utils\r
18 \r
19 import org.apache.commons.io.FileUtils\r
20 import org.onap.ccsdk.apps.controllerblueprints.core.data.ServiceTemplate\r
21 import org.onap.ccsdk.apps.controllerblueprints.core.data.TopologyTemplate\r
22 import java.io.File\r
23 import java.nio.charset.Charset\r
24 \r
25 /**\r
26  *\r
27  *\r
28  * @author Brinda Santh\r
29  */\r
30 object ServiceTemplateUtils {\r
31 \r
32     @JvmStatic\r
33     fun getServiceTemplate(fileName: String): ServiceTemplate {\r
34         val content: String = FileUtils.readFileToString(File(fileName), Charset.defaultCharset())\r
35         return getServiceTemplateFromContent(content)\r
36     }\r
37 \r
38 \r
39     @JvmStatic\r
40     fun getServiceTemplateFromContent(content: String): ServiceTemplate {\r
41         return JacksonUtils.readValue(content)\r
42     }\r
43 \r
44     fun merge(parentServiceTemplate: ServiceTemplate, toMerge: ServiceTemplate, removeImports: Boolean? = true): ServiceTemplate {\r
45         if (removeImports!!) {\r
46             parentServiceTemplate.imports = null\r
47             toMerge.imports = null\r
48         }\r
49 \r
50         toMerge.metadata?.let {\r
51             parentServiceTemplate.metadata = parentServiceTemplate.metadata ?: hashMapOf()\r
52             parentServiceTemplate.metadata?.putAll(toMerge.metadata as MutableMap)\r
53         }\r
54 \r
55         toMerge.dslDefinitions?.let {\r
56             parentServiceTemplate.dslDefinitions = parentServiceTemplate.dslDefinitions ?: hashMapOf()\r
57             parentServiceTemplate.dslDefinitions?.putAll(toMerge.dslDefinitions as MutableMap)\r
58         }\r
59 \r
60         toMerge.dataTypes?.let {\r
61             parentServiceTemplate.dataTypes = parentServiceTemplate.dataTypes ?: hashMapOf()\r
62             parentServiceTemplate.dataTypes?.putAll(toMerge.dataTypes as MutableMap)\r
63         }\r
64 \r
65         toMerge.nodeTypes?.let {\r
66             parentServiceTemplate.nodeTypes = parentServiceTemplate.nodeTypes ?: hashMapOf()\r
67             parentServiceTemplate.nodeTypes?.putAll(toMerge.nodeTypes as MutableMap)\r
68         }\r
69 \r
70         toMerge.artifactTypes?.let {\r
71             parentServiceTemplate.artifactTypes = parentServiceTemplate.artifactTypes ?: hashMapOf()\r
72             parentServiceTemplate.artifactTypes?.putAll(toMerge.artifactTypes as MutableMap)\r
73         }\r
74 \r
75         toMerge.repositories?.let {\r
76             parentServiceTemplate.repositories = parentServiceTemplate.repositories ?: hashMapOf()\r
77             parentServiceTemplate.repositories?.putAll(toMerge.repositories as MutableMap)\r
78         }\r
79 \r
80         parentServiceTemplate.topologyTemplate = parentServiceTemplate.topologyTemplate ?: TopologyTemplate()\r
81 \r
82         toMerge.topologyTemplate?.inputs?.let {\r
83             parentServiceTemplate.topologyTemplate?.inputs = parentServiceTemplate.topologyTemplate?.inputs ?: hashMapOf()\r
84             parentServiceTemplate.topologyTemplate?.inputs?.putAll(parentServiceTemplate.topologyTemplate?.inputs as MutableMap)\r
85         }\r
86 \r
87         toMerge.topologyTemplate?.nodeTemplates?.let {\r
88             parentServiceTemplate.topologyTemplate?.nodeTemplates = parentServiceTemplate.topologyTemplate?.nodeTemplates ?: hashMapOf()\r
89             parentServiceTemplate.topologyTemplate?.nodeTemplates?.putAll(parentServiceTemplate.topologyTemplate?.nodeTemplates as MutableMap)\r
90         }\r
91 \r
92         toMerge.topologyTemplate?.relationshipTemplates?.let {\r
93             parentServiceTemplate.topologyTemplate?.relationshipTemplates = parentServiceTemplate.topologyTemplate?.relationshipTemplates ?: hashMapOf()\r
94             parentServiceTemplate.topologyTemplate?.relationshipTemplates?.putAll(parentServiceTemplate.topologyTemplate?.relationshipTemplates as MutableMap)\r
95         }\r
96 \r
97         toMerge.topologyTemplate?.policies?.let {\r
98             parentServiceTemplate.topologyTemplate?.policies = parentServiceTemplate.topologyTemplate?.policies ?: hashMapOf()\r
99             parentServiceTemplate.topologyTemplate?.policies?.putAll(parentServiceTemplate.topologyTemplate?.policies as MutableMap)\r
100         }\r
101 \r
102         toMerge.topologyTemplate?.workflows?.let {\r
103             parentServiceTemplate.topologyTemplate?.workflows = parentServiceTemplate.topologyTemplate?.workflows ?: hashMapOf()\r
104             parentServiceTemplate.topologyTemplate?.workflows?.putAll(parentServiceTemplate.topologyTemplate?.workflows as MutableMap)\r
105         }\r
106         return parentServiceTemplate\r
107     }\r
108 \r
109 \r
110 }