9331613233d7b605872bbb63049350616f2c054f
[ccsdk/cds.git] /
1 /*
2  * Copyright © 2017-2018 AT&T Intellectual Property.
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *     http://www.apache.org/licenses/LICENSE-2.0
9  *
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
17 package org.onap.ccsdk.apps.controllerblueprints.core.utils
18
19 import org.apache.commons.io.FileUtils
20 import org.onap.ccsdk.apps.controllerblueprints.core.data.ServiceTemplate
21 import org.onap.ccsdk.apps.controllerblueprints.core.data.TopologyTemplate
22 import java.io.File
23 import java.nio.charset.Charset
24
25 /**
26  *
27  *
28  * @author Brinda Santh
29  */
30 object ServiceTemplateUtils {
31
32     @JvmStatic
33     fun getServiceTemplate(fileName: String): ServiceTemplate {
34         val content: String = FileUtils.readFileToString(File(fileName), Charset.defaultCharset())
35         return getServiceTemplateFromContent(content)
36     }
37
38
39     @JvmStatic
40     fun getServiceTemplateFromContent(content: String): ServiceTemplate {
41         return JacksonUtils.readValue(content)
42     }
43
44     fun merge(parentServiceTemplate: ServiceTemplate, toMerge: ServiceTemplate, removeImports: Boolean? = true): ServiceTemplate {
45         if (removeImports!!) {
46             parentServiceTemplate.imports = null
47             toMerge.imports = null
48         }
49
50         toMerge.metadata?.let {
51             parentServiceTemplate.metadata = parentServiceTemplate.metadata ?: hashMapOf()
52             parentServiceTemplate.metadata?.putAll(toMerge.metadata as MutableMap)
53         }
54
55         toMerge.dslDefinitions?.let {
56             parentServiceTemplate.dslDefinitions = parentServiceTemplate.dslDefinitions ?: hashMapOf()
57             parentServiceTemplate.dslDefinitions?.putAll(toMerge.dslDefinitions as MutableMap)
58         }
59
60         toMerge.dataTypes?.let {
61             parentServiceTemplate.dataTypes = parentServiceTemplate.dataTypes ?: hashMapOf()
62             parentServiceTemplate.dataTypes?.putAll(toMerge.dataTypes as MutableMap)
63         }
64
65         toMerge.nodeTypes?.let {
66             parentServiceTemplate.nodeTypes = parentServiceTemplate.nodeTypes ?: hashMapOf()
67             parentServiceTemplate.nodeTypes?.putAll(toMerge.nodeTypes as MutableMap)
68         }
69
70         toMerge.artifactTypes?.let {
71             parentServiceTemplate.artifactTypes = parentServiceTemplate.artifactTypes ?: hashMapOf()
72             parentServiceTemplate.artifactTypes?.putAll(toMerge.artifactTypes as MutableMap)
73         }
74
75         toMerge.repositories?.let {
76             parentServiceTemplate.repositories = parentServiceTemplate.repositories ?: hashMapOf()
77             parentServiceTemplate.repositories?.putAll(toMerge.repositories as MutableMap)
78         }
79
80         parentServiceTemplate.topologyTemplate = parentServiceTemplate.topologyTemplate ?: TopologyTemplate()
81
82         toMerge.topologyTemplate?.inputs?.let {
83             parentServiceTemplate.topologyTemplate?.inputs = parentServiceTemplate.topologyTemplate?.inputs ?: hashMapOf()
84             parentServiceTemplate.topologyTemplate?.inputs?.putAll(parentServiceTemplate.topologyTemplate?.inputs as MutableMap)
85         }
86
87         toMerge.topologyTemplate?.nodeTemplates?.let {
88             parentServiceTemplate.topologyTemplate?.nodeTemplates = parentServiceTemplate.topologyTemplate?.nodeTemplates ?: hashMapOf()
89             parentServiceTemplate.topologyTemplate?.nodeTemplates?.putAll(parentServiceTemplate.topologyTemplate?.nodeTemplates as MutableMap)
90         }
91
92         toMerge.topologyTemplate?.relationshipTemplates?.let {
93             parentServiceTemplate.topologyTemplate?.relationshipTemplates = parentServiceTemplate.topologyTemplate?.relationshipTemplates ?: hashMapOf()
94             parentServiceTemplate.topologyTemplate?.relationshipTemplates?.putAll(parentServiceTemplate.topologyTemplate?.relationshipTemplates as MutableMap)
95         }
96
97         toMerge.topologyTemplate?.policies?.let {
98             parentServiceTemplate.topologyTemplate?.policies = parentServiceTemplate.topologyTemplate?.policies ?: hashMapOf()
99             parentServiceTemplate.topologyTemplate?.policies?.putAll(parentServiceTemplate.topologyTemplate?.policies as MutableMap)
100         }
101
102         toMerge.topologyTemplate?.workflows?.let {
103             parentServiceTemplate.topologyTemplate?.workflows = parentServiceTemplate.topologyTemplate?.workflows ?: hashMapOf()
104             parentServiceTemplate.topologyTemplate?.workflows?.putAll(parentServiceTemplate.topologyTemplate?.workflows as MutableMap)
105         }
106         return parentServiceTemplate
107     }
108
109
110 }