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.wrapper;
18 import java.util.ArrayList;
19 import java.util.Arrays;
20 import java.util.List;
22 import org.openo.commontosca.catalog.common.ToolUtil;
23 import org.openo.commontosca.catalog.db.entity.NodeTemplateData;
24 import org.openo.commontosca.catalog.db.entity.PackageData;
25 import org.openo.commontosca.catalog.db.entity.ServiceTemplateData;
26 import org.openo.commontosca.catalog.db.entity.ServiceTemplateMappingData;
27 import org.openo.commontosca.catalog.db.exception.CatalogResourceException;
28 import org.openo.commontosca.catalog.db.resource.TemplateManager;
29 import org.openo.commontosca.catalog.entity.EnumOperationalState;
30 import org.openo.commontosca.catalog.model.common.TemplateDataHelper;
31 import org.openo.commontosca.catalog.model.entity.InputParameter;
32 import org.openo.commontosca.catalog.model.entity.NfvTemplate;
33 import org.openo.commontosca.catalog.model.entity.NodeTemplate;
34 import org.openo.commontosca.catalog.model.entity.Parameters;
35 import org.openo.commontosca.catalog.model.entity.QueryRawDataCondition;
36 import org.openo.commontosca.catalog.model.entity.ServiceTemplate;
37 import org.openo.commontosca.catalog.model.entity.ServiceTemplateOperation;
38 import org.openo.commontosca.catalog.model.entity.ServiceTemplateRawData;
39 import org.openo.commontosca.catalog.model.entity.SubstitutionMapping;
40 import org.openo.commontosca.catalog.resources.CatalogBadRequestException;
41 import org.slf4j.Logger;
42 import org.slf4j.LoggerFactory;
45 public class ServiceTemplateWrapper {
46 private static ServiceTemplateWrapper instance;
47 private static final Logger logger = LoggerFactory.getLogger(ServiceTemplateWrapper.class);
50 * get service template wrapper instance.
51 * @return ServiceTemplateWrapper instance
53 public static ServiceTemplateWrapper getInstance() {
54 if (instance == null) {
55 instance = new ServiceTemplateWrapper();
61 * get service template by id.
62 * @param serviceTemplateId service template id
63 * @return service template
64 * @throws CatalogResourceException e1
66 public ServiceTemplate getServiceTemplateById(String serviceTemplateId)
67 throws CatalogResourceException {
68 logger.info("getServiceTemplateById. serviceTemplateId = " + serviceTemplateId);
70 List<ServiceTemplateData> stdList =
71 TemplateManager.getInstance().queryServiceTemplateById(serviceTemplateId);
72 if (stdList == null || stdList.isEmpty()) {
73 throw new CatalogResourceException("Can't find this servcie template");
76 return TemplateDataHelper.convert2ServiceTemplate(stdList.get(0));
81 * get service templates.
82 * @param status usage status
83 * @param deletionPending package's deletionPending
84 * @return service template list
85 * @throws CatalogResourceException e
87 public ServiceTemplate[] getServiceTemplates(EnumOperationalState status, boolean deletionPending)
88 throws CatalogResourceException {
89 PackageData pd = new PackageData();
91 pd.setOperationalState(status.toString());
93 pd.setDeletionPending(String.valueOf(deletionPending));
95 List<ServiceTemplateData> stdList =
96 TemplateManager.getInstance().queryServiceTemplateByCsarPackageInfo(pd);
98 return TemplateDataHelper.convert2ServiceTemplates(stdList);
101 public ServiceTemplate[] getServiceTemplates() throws CatalogResourceException {
102 return TemplateDataHelper.convert2ServiceTemplates(
103 TemplateManager.getInstance().queryServiceTemplate(null, null, null));
108 * get nesting service template.
109 * @param nodeTypeIds nodeType id list
110 * @return service template list
111 * @throws CatalogResourceException e
113 public ServiceTemplate[] getNestingServiceTemplate(String[] nodeTypeIds)
114 throws CatalogResourceException {
115 ServiceTemplate[] sts = new ServiceTemplate[nodeTypeIds.length];
116 for (int i = 0; i < nodeTypeIds.length; i++) {
117 SubstitutionMapping stm = getSubstitutionMappingsByNodeTypeId(nodeTypeIds[i]);
122 sts[i] = getServiceTemplate(stm, nodeTypeIds[i]);
128 private ServiceTemplate getServiceTemplate(SubstitutionMapping stm, String nodeTypeId) {
130 return getServiceTemplateById(stm.getServiceTemplateId());
131 } catch (CatalogResourceException e) {
132 logger.warn("Get Nesting ServiceTemplate Failed. NodeTypeIds = " + nodeTypeId, e);
138 * get substitution mappings by nodeTpe id.
139 * @param nodeTypeId nodeType id
140 * @return SubstitutionMapping
141 * @throws CatalogResourceException e
143 private SubstitutionMapping getSubstitutionMappingsByNodeTypeId(String nodeTypeId)
144 throws CatalogResourceException {
145 List<ServiceTemplateMappingData> stmDataList =
146 TemplateManager.getInstance().queryServiceTemplateMapping(nodeTypeId, null);
147 if (stmDataList == null || stmDataList.isEmpty()) {
151 return TemplateDataHelper.convert2SubstitutionMapping(stmDataList.get(0));
156 * get service template raw data.
157 * @param queryCondition query raw data condition
158 * @return ServiceTemplateRawData
159 * @throws CatalogResourceException e1
160 * @throws CatalogBadRequestException e2
162 public ServiceTemplateRawData getServiceTemplateRawData(QueryRawDataCondition queryCondition)
163 throws CatalogResourceException, CatalogBadRequestException {
164 ServiceTemplateData std = getServiceTemplateDataByCsarId(queryCondition.getCsarId());
165 return new ServiceTemplateRawData(std.getRowData());
169 * get service template data by package id.
170 * @param csarId package id
171 * @return ServiceTemplateData
172 * @throws CatalogBadRequestException e1
173 * @throws CatalogResourceException e2
175 private ServiceTemplateData getServiceTemplateDataByCsarId(String csarId)
176 throws CatalogBadRequestException, CatalogResourceException {
177 if (ToolUtil.isTrimedEmptyString(csarId)) {
178 throw new CatalogBadRequestException("CsarId is null.");
180 PackageData pd = new PackageData();
181 pd.setCsarId(csarId);
183 List<ServiceTemplateData> stdList =
184 TemplateManager.getInstance().queryServiceTemplateByCsarPackageInfo(pd);
186 if (stdList == null || stdList.isEmpty()) {
187 throw new CatalogResourceException("Can't find this servcie template");
190 return stdList.get(0);
194 * get service template by package id.
195 * @param packageId package id
196 * @return service template data
197 * @throws CatalogBadRequestException e1
198 * @throws CatalogResourceException e2
200 public ServiceTemplate getServiceTemplateByCsarId(String packageId)
201 throws CatalogBadRequestException, CatalogResourceException {
202 ServiceTemplateData std = getServiceTemplateDataByCsarId(packageId);
203 ServiceTemplate st = TemplateDataHelper.convert2ServiceTemplate(std);
208 * get service template parameters.
209 * @param serviceTemplateId service template id
210 * @return service template parameters
211 * @throws CatalogResourceException e
213 public Parameters getServiceTemplateParameters(String serviceTemplateId)
214 throws CatalogResourceException {
215 ServiceTemplate st = getServiceTemplateById(serviceTemplateId);
216 return new Parameters(st.getInputs(), st.getOutputs());
220 * get template operation.
221 * @param serviceTemplateId service template id
222 * @return service template operations
224 public ServiceTemplateOperation[] getTemplateOperations(String serviceTemplateId)
225 throws CatalogResourceException {
226 ServiceTemplate st = getServiceTemplateById(serviceTemplateId);
228 if (st.getOperations() == null) {
229 return new ServiceTemplateOperation[0];
231 return st.getOperations();
235 * get parameters by operation name.
236 * @param serviceTemplateId service template id
237 * @param operationName operation name
238 * @return InputParameter list
239 * @throws CatalogResourceException e
241 public InputParameter[] getParametersByOperationName(String serviceTemplateId,
242 String operationName) throws CatalogResourceException {
243 if (ToolUtil.isTrimedEmptyString(operationName)) {
244 throw new CatalogResourceException("Operation Name is null.");
247 ServiceTemplateOperation[] operations = getTemplateOperations(serviceTemplateId);
248 for (int i = 0; i < operations.length; i++) {
249 if (operationName.equals(operations[i].getName())) {
250 return operations[i].getInputs();
254 throw new CatalogResourceException("Can't find this operation.");
259 * get nodeTemplate by id.
260 * @param serviceTemplateId service template id
261 * @param nodeTemplateId node template id
262 * @return NodeTemplate
263 * @throws CatalogResourceException e1
265 public NodeTemplate getNodeTemplateById(String serviceTemplateId, String nodeTemplateId)
266 throws CatalogResourceException {
267 List<NodeTemplateData> ntdList =
268 TemplateManager.getInstance().queryNodeTemplateById(serviceTemplateId, nodeTemplateId);
270 if (ntdList == null || ntdList.isEmpty()) {
271 throw new CatalogResourceException("Can't find this node template.");
274 return TemplateDataHelper.convert2NodeTemplate(ntdList.get(0));
278 * get node templates.
279 * @param serviceTemplateId service template id
280 * @param types type list
281 * @return NodeTemplate list
282 * @throws CatalogResourceException e
284 public NodeTemplate[] getNodeTemplates(String serviceTemplateId, String[] types)
285 throws CatalogResourceException {
286 List<NodeTemplateData> ntdList =
287 TemplateManager.getInstance().queryNodeTemplateBySeriviceTemplateId(serviceTemplateId);
288 if (ntdList == null || ntdList.isEmpty()) {
289 return new NodeTemplate[0];
292 if (ToolUtil.isTrimedEmptyArray(types)) { // return all node templates
293 return TemplateDataHelper.convert2NodeTemplates(ntdList);
296 List<NodeTemplate> ntList = new ArrayList<>();
297 for (String type : types) {
298 if (!ToolUtil.isTrimedEmptyString(type)) {
299 List<NodeTemplateData> typedNtdList = filterNodeTemplateDataListByType(ntdList, type);
300 ntList.addAll(Arrays.asList(TemplateDataHelper.convert2NodeTemplates(typedNtdList)));
303 return ntList.toArray(new NodeTemplate[0]);
307 * filter node template data list by type.
308 * @param ntdList nodeTemplate list
309 * @param type node type
310 * @return node template data list
312 private List<NodeTemplateData> filterNodeTemplateDataListByType(List<NodeTemplateData> ntdList,
314 List<NodeTemplateData> retList = new ArrayList<>();
315 for (NodeTemplateData ntd : ntdList) {
316 if (type.equals(ntd.getType())) {
326 * @param serviceTemlateId service template id
327 * @return NfvTemplate
328 * @throws CatalogResourceException e
330 public NfvTemplate getNfvTemplate(String serviceTemlateId) throws CatalogResourceException {
331 NodeTemplate[] nts = getNodeTemplates(serviceTemlateId, null);
333 List<NodeTemplate> vduNodes = new ArrayList<>();
334 List<NodeTemplate> networkNodes = new ArrayList<>();
335 List<NodeTemplate> vnfcNodes = new ArrayList<>();
336 List<NodeTemplate> vnfNodes = new ArrayList<>();
337 for (NodeTemplate nt : nts) {
338 if (isVduNode(nt.getType())) {
343 if (isNetworkNode(nt.getType())) {
344 networkNodes.add(nt);
348 if (isVnfcNode(nt.getType())) {
353 if (isVnfNode(nt.getType())) {
359 return new NfvTemplate(vduNodes, networkNodes, vnfcNodes, vnfNodes);
362 private boolean isVnfNode(String type) {
363 return type.toUpperCase().indexOf(".VNF") > 0;
366 private boolean isVnfcNode(String type) {
367 return type.toUpperCase().indexOf(".VNFC") > 0;
370 private boolean isNetworkNode(String type) {
371 return type.toUpperCase().indexOf(".VL") > 0 || type.toUpperCase().indexOf(".VIRTUALLINK") > 0;
374 private boolean isVduNode(String type) {
375 return type.toUpperCase().indexOf(".VDU") > 0;