2 * Copyright 2016 ZTE Corporation.
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
8 * 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.
16 package org.openo.commontosca.catalog.model.common;
18 import org.openo.commontosca.catalog.common.ToolUtil;
19 import org.openo.commontosca.catalog.db.entity.NodeTemplateData;
20 import org.openo.commontosca.catalog.db.entity.ServiceTemplateData;
21 import org.openo.commontosca.catalog.db.entity.ServiceTemplateMappingData;
22 import org.openo.commontosca.catalog.db.entity.TemplateData;
23 import org.openo.commontosca.catalog.db.exception.CatalogResourceException;
24 import org.openo.commontosca.catalog.db.resource.TemplateManager;
25 import org.openo.commontosca.catalog.entity.response.CsarFileUriResponse;
26 import org.openo.commontosca.catalog.model.entity.NodeTemplate;
27 import org.openo.commontosca.catalog.model.entity.Parameters;
28 import org.openo.commontosca.catalog.model.entity.RelationShip;
29 import org.openo.commontosca.catalog.model.entity.ServiceTemplate;
30 import org.openo.commontosca.catalog.model.entity.ServiceTemplateOperation;
31 import org.openo.commontosca.catalog.model.entity.SubstitutionMapping;
32 import org.openo.commontosca.catalog.wrapper.PackageWrapper;
34 import com.google.gson.Gson;
35 import com.google.gson.JsonElement;
36 import com.google.gson.JsonObject;
37 import com.google.gson.JsonPrimitive;
39 import java.util.ArrayList;
40 import java.util.Arrays;
41 import java.util.HashMap;
42 import java.util.Iterator;
43 import java.util.List;
45 import java.util.Map.Entry;
47 public class TemplateDataHelper {
50 * convert to template data.
51 * @param st ServiceTemplate
52 * @param ntList NodeTemplate list
53 * @return TemplateData
55 public static TemplateData convert2TemplateData(ServiceTemplate st, String rawData,
56 List<NodeTemplate> ntList) {
57 TemplateData td = new TemplateData();
58 td.setServiceTemplate(convert2ServiceTemplateData(st, rawData));
59 td.setNodeTemplates(convert2NodeTemplateDataList(ntList, st.getServiceTemplateId()));
64 * convert to service template data.
65 * @param st ServiceTemplate
66 * @return ServiceTemplateData
68 private static ServiceTemplateData convert2ServiceTemplateData(ServiceTemplate st,
70 ServiceTemplateData std = new ServiceTemplateData();
71 std.setServiceTemplateId(st.getServiceTemplateId());
72 std.setServiceTemplateOriginalId(st.getId());
73 std.setTemplateName(st.getTemplateName());
74 std.setVendor(st.getVendor());
75 std.setVersion(st.getVersion());
76 std.setCsarId(st.getCsarId());
77 std.setType(st.getType());
78 std.setDownloadUri(st.getDownloadUri());
79 Parameters parameters = new Parameters(st.getInputs(), st.getOutputs());
80 std.setInputs(ToolUtil.toJson(parameters));
81 std.setOperations(ToolUtil.toJson(st.getOperations()));
82 std.setRowData(rawData);
87 * convert to nodeTemplate data list.
88 * @param ntList NodeTemplate list
89 * @param serviceTemplateId service template id
90 * @return NodeTemplateData list
92 private static ArrayList<NodeTemplateData> convert2NodeTemplateDataList(List<NodeTemplate> ntList,
93 String serviceTemplateId) {
94 ArrayList<NodeTemplateData> ntdList = new ArrayList<>();
95 for (NodeTemplate nt : ntList) {
96 ntdList.add(convert2NodeTemplateData(nt, serviceTemplateId));
104 * convert to nodeTemplate data.
105 * @param nt NodeTemplate
106 * @param serviceTemplateId service template id
107 * @return NodeTemplateData
109 private static NodeTemplateData convert2NodeTemplateData(NodeTemplate nt,
110 String serviceTemplateId) {
111 NodeTemplateData ntd = new NodeTemplateData();
113 ntd.setNodeTemplateId(nt.getId());
114 ntd.setName(nt.getName());
115 ntd.setType(nt.getType());
116 ntd.setServiceTemplateId(serviceTemplateId);
117 ntd.setProperties(ToolUtil.toJson(nt.getProperties()));
118 ntd.setRelationShips(ToolUtil.toJson(nt.getRelationShips()));
125 * convert to service templates.
126 * @param stdList ServiceTemplateData list
127 * @return ServiceTemplate list
128 * @throws CatalogResourceException
130 public static ServiceTemplate[] convert2ServiceTemplates(List<ServiceTemplateData> stdList) throws CatalogResourceException {
131 List<ServiceTemplate> stList = new ArrayList<>();
132 for (ServiceTemplateData std : stdList) {
133 stList.add(convert2ServiceTemplate(std));
136 return stList.toArray(new ServiceTemplate[0]);
140 * covert to service template.
141 * @param std ServiceTemplateData
142 * @return ServiceTemplate
143 * @throws CatalogResourceException
145 public static ServiceTemplate convert2ServiceTemplate(ServiceTemplateData std) throws CatalogResourceException {
146 Parameters parameters = ToolUtil.fromJson(std.getInputs(), Parameters.class);
147 ServiceTemplateOperation[] operations =
148 ToolUtil.fromJson(std.getOperations(), ServiceTemplateOperation[].class);
149 String downloadUri = buildSTDownloadUri(std.getCsarId(), std.getDownloadUri());
151 return new ServiceTemplate(std.getServiceTemplateId(), std.getServiceTemplateOriginalId(),
152 std.getTemplateName(), std.getVendor(),
153 std.getVersion(), std.getCsarId(), std.getType(), downloadUri,
154 parameters.getInputs(), parameters.getOutputs(), operations,
155 getSubstitutionMappingsByServiceTemplateId(std.getServiceTemplateId()));
158 private static SubstitutionMapping getSubstitutionMappingsByServiceTemplateId(String serviceTemplateId)
159 throws CatalogResourceException {
160 List<ServiceTemplateMappingData> stmDataList =
161 TemplateManager.getInstance().queryServiceTemplateMapping(null, serviceTemplateId);
162 if (stmDataList == null || stmDataList.isEmpty()) {
166 return convert2SubstitutionMapping(stmDataList.get(0));
169 private static String buildSTDownloadUri(String packageId, String stFileName)
170 throws CatalogResourceException {
171 CsarFileUriResponse stDownloadUri =
172 PackageWrapper.getInstance().getCsarFileDownloadUri(packageId, stFileName);
173 return stDownloadUri.getDownloadUri();
177 * covert to nodeTemplates.
178 * @param ntdList NodeTemplateData list
179 * @return NodeTemplate list
181 public static NodeTemplate[] convert2NodeTemplates(List<NodeTemplateData> ntdList) {
182 List<NodeTemplate> ntList = new ArrayList<>();
183 for (NodeTemplateData ntd : ntdList) {
184 ntList.add(convert2NodeTemplate(ntd));
186 return ntList.toArray(new NodeTemplate[0]);
190 * covert to nodeTemplate.
191 * @param ntd NodeTemplateData
192 * @return NodeTemplate
194 public static NodeTemplate convert2NodeTemplate(NodeTemplateData ntd) {
195 List<RelationShip> relationShips = convert2RelationShipList(ntd.getRelationShips());
196 return new NodeTemplate(ntd.getNodeTemplateId(), ntd.getName(), ntd.getType(),
197 convert2Property(ntd.getProperties()), relationShips);
201 * covert to relationship list.
202 * @param sRelationShips relationships
203 * @return RelationShip list
205 private static List<RelationShip> convert2RelationShipList(String srelationShips) {
206 RelationShip[] relationShips = ToolUtil.fromJson(srelationShips, RelationShip[].class);
207 return Arrays.asList(relationShips);
211 * convert to propterty.
212 * @param properties properties to covert
215 private static Map<String, Object> convert2Property(String properties) {
216 JsonObject jsonObject = new Gson().fromJson(properties, JsonObject.class);
217 return parseMapValue(jsonObject);
220 private static Map<String, Object> parseMapValue(JsonObject jsonObject) {
221 Map<String, Object> map = new HashMap<>();
223 Iterator<Entry<String, JsonElement>> iterator = jsonObject.entrySet().iterator();
224 while (iterator.hasNext()) {
225 Entry<String, JsonElement> next = iterator.next();
226 if (next.getValue() instanceof JsonPrimitive) {
227 map.put(next.getKey(), next.getValue().getAsString());
231 if (next.getValue() instanceof JsonObject) {
232 map.put(next.getKey(), parseMapValue((JsonObject) next.getValue()));
241 * covert to template mapping data.
242 * @param stm data to convert
243 * @return ServiceTemplateMappingData
245 public static ServiceTemplateMappingData convert2TemplateMappingData(SubstitutionMapping stm) {
246 ServiceTemplateMappingData stmd = new ServiceTemplateMappingData();
248 stmd.setMappingId(ToolUtil.generateId());
249 stmd.setServiceTemplateId(stm.getServiceTemplateId());
250 stmd.setNodeType(stm.getNodeType());
251 stmd.setRequirements(ToolUtil.toJson(stm.getRequirements()));
252 stmd.setCapabilities(ToolUtil.toJson(stm.getCapabilities()));
258 * convert to substitution mapping.
259 * @param stmData data to covert
260 * @return SubstitutionMapping
262 public static SubstitutionMapping convert2SubstitutionMapping(
263 ServiceTemplateMappingData stmData) {
264 return new SubstitutionMapping(stmData.getServiceTemplateId(), stmData.getNodeType());