2 * Copyright 2016 [ZTE] and others.
\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
8 * http://www.apache.org/licenses/LICENSE-2.0
\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
16 package org.openo.commontosca.catalog.model.wrapper;
\r
18 import java.util.ArrayList;
\r
19 import java.util.Arrays;
\r
20 import java.util.List;
\r
22 import org.openo.commontosca.catalog.model.entity.ServiceTemplateOperation;
\r
23 import org.openo.commontosca.catalog.resources.CatalogBadRequestException;
\r
24 import org.openo.commontosca.catalog.common.ToolUtil;
\r
25 import org.openo.commontosca.catalog.db.entity.NodeTemplateData;
\r
26 import org.openo.commontosca.catalog.db.entity.PackageData;
\r
27 import org.openo.commontosca.catalog.db.entity.ServiceTemplateData;
\r
28 import org.openo.commontosca.catalog.db.entity.ServiceTemplateMappingData;
\r
29 import org.openo.commontosca.catalog.db.exception.CatalogResourceException;
\r
30 import org.openo.commontosca.catalog.db.resource.TemplateManager;
\r
31 import org.openo.commontosca.catalog.model.common.TemplateDataHelper;
\r
32 import org.openo.commontosca.catalog.model.entity.InputParameter;
\r
33 import org.openo.commontosca.catalog.model.entity.NfvTemplate;
\r
34 import org.openo.commontosca.catalog.model.entity.NodeTemplate;
\r
35 import org.openo.commontosca.catalog.model.entity.QueryRawDataCondition;
\r
36 import org.openo.commontosca.catalog.model.entity.ServiceTemplate;
\r
37 import org.openo.commontosca.catalog.model.entity.ServiceTemplateRawData;
\r
38 import org.openo.commontosca.catalog.model.entity.SubstitutionMapping;
\r
39 import org.slf4j.Logger;
\r
40 import org.slf4j.LoggerFactory;
\r
47 public class ServiceTemplateWrapper {
\r
48 private static ServiceTemplateWrapper instance;
\r
49 private static final Logger logger = LoggerFactory.getLogger(ServiceTemplateWrapper.class);
\r
51 public static ServiceTemplateWrapper getInstance() {
\r
52 if (instance == null) {
\r
53 instance = new ServiceTemplateWrapper();
\r
60 * @param serviceTemplateId
\r
62 * @throws CatalogResourceException
\r
64 public ServiceTemplate getServiceTemplateById(String serviceTemplateId)
\r
65 throws CatalogResourceException {
\r
66 logger.info("getServiceTemplateById. serviceTemplateId = "
\r
67 + serviceTemplateId);
\r
69 List<ServiceTemplateData> stdList = TemplateManager.getInstance()
\r
70 .queryServiceTemplateById(serviceTemplateId);
\r
71 if (stdList == null || stdList.isEmpty()) {
\r
72 throw new CatalogResourceException("Can't find this servcie template");
\r
75 return TemplateDataHelper.convert2ServiceTemplate(stdList.get(0));
\r
82 * @param deletionPending
\r
84 * @throws CatalogResourceException
\r
86 public ServiceTemplate[] getServiceTemplates(String status,
\r
87 boolean deletionPending) throws CatalogResourceException {
\r
88 PackageData pd = new PackageData();
\r
89 pd.setUsageState(status);
\r
90 pd.setDeletionPending(String.valueOf(deletionPending));
\r
92 List<ServiceTemplateData> stdList = TemplateManager.getInstance()
\r
93 .queryServiceTemplateByCsarPackageInfo(pd);
\r
95 return TemplateDataHelper.convert2ServiceTemplates(stdList);
\r
100 * @param nodeTypeIds
\r
102 * @throws CatalogResourceException
\r
104 public ServiceTemplate[] getNestingServiceTemplate(String[] nodeTypeIds)
\r
105 throws CatalogResourceException {
\r
106 ServiceTemplate[] sts = new ServiceTemplate[nodeTypeIds.length];
\r
107 for (int i = 0; i < nodeTypeIds.length; i++) {
\r
108 SubstitutionMapping stm = getSubstitutionMappingsByNodeTypeId(nodeTypeIds[i]);
\r
112 sts[i] = getServiceTemplateById(stm.getServiceTemplateId());
\r
120 * @param nodeTypeId
\r
122 * @throws CatalogResourceException
\r
124 private SubstitutionMapping getSubstitutionMappingsByNodeTypeId(
\r
125 String nodeTypeId) throws CatalogResourceException {
\r
126 List<ServiceTemplateMappingData> stmDataList = TemplateManager
\r
127 .getInstance().queryServiceTemplateMapping(nodeTypeId, null);
\r
128 if (stmDataList == null || stmDataList.isEmpty()) {
\r
132 return TemplateDataHelper.convert2SubstitutionMapping(stmDataList
\r
138 * @param queryCondition
\r
140 * @throws CatalogResourceException
\r
141 * @throws CatalogBadRequestException
\r
143 public ServiceTemplateRawData getServiceTemplateRawData(
\r
144 QueryRawDataCondition queryCondition)
\r
145 throws CatalogResourceException, CatalogBadRequestException {
\r
146 if (ToolUtil.isTrimedEmptyString(queryCondition.getCsarId())) {
\r
147 throw new CatalogBadRequestException("CsarId is null.");
\r
149 PackageData pd = new PackageData();
\r
150 pd.setCsarId(queryCondition.getCsarId());
\r
152 List<ServiceTemplateData> stdList = TemplateManager.getInstance()
\r
153 .queryServiceTemplateByCsarPackageInfo(pd);
\r
155 if (stdList == null || stdList.isEmpty()) {
\r
156 throw new CatalogResourceException(
\r
157 "Can't find this servcie template");
\r
160 return new ServiceTemplateRawData(stdList.get(0).getRowData());
\r
165 * @param serviceTemplateId
\r
167 * @throws CatalogResourceException
\r
169 public InputParameter[] getServiceTemplateParameters(
\r
170 String serviceTemplateId) throws CatalogResourceException {
\r
171 ServiceTemplate st = getServiceTemplateById(serviceTemplateId);
\r
172 return st.getInputs();
\r
177 * @param serviceTemplateId
\r
180 public ServiceTemplateOperation[] getTemplateOperations(
\r
181 String serviceTemplateId) throws CatalogResourceException {
\r
182 ServiceTemplate st = getServiceTemplateById(serviceTemplateId);
\r
184 if (st.getOperations() == null) {
\r
185 return new ServiceTemplateOperation[0];
\r
187 return st.getOperations();
\r
191 * @param serviceTemplateId
\r
192 * @param operationName
\r
194 * @throws CatalogResourceException
\r
196 public InputParameter[] getParametersByOperationName(
\r
197 String serviceTemplateId, String operationName)
\r
198 throws CatalogResourceException {
\r
199 if (ToolUtil.isTrimedEmptyString(operationName)) {
\r
200 throw new CatalogResourceException("Operation Name is null.");
\r
203 ServiceTemplateOperation[] operations = getTemplateOperations(serviceTemplateId);
\r
204 for (int i = 0; i < operations.length; i++) {
\r
205 if (operationName.equals(operations[i].getName())) {
\r
206 return operations[i].getInputs();
\r
210 throw new CatalogResourceException("Can't find this operation.");
\r
215 * @param serviceTemplateId
\r
216 * @param nodeTemplateId
\r
218 * @throws CatalogResourceException
\r
220 public NodeTemplate getNodeTemplateById(String serviceTemplateId,
\r
221 String nodeTemplateId) throws CatalogResourceException {
\r
222 List<NodeTemplateData> ntdList = TemplateManager.getInstance()
\r
223 .queryNodeTemplateById(serviceTemplateId, nodeTemplateId);
\r
225 if (ntdList == null || ntdList.isEmpty()) {
\r
226 throw new CatalogResourceException("Can't find this node template.");
\r
229 return TemplateDataHelper.convert2NodeTemplate(ntdList.get(0));
\r
233 * @param serviceTemplateId
\r
236 * @throws CatalogResourceException
\r
238 public NodeTemplate[] getNodeTemplates(String serviceTemplateId,
\r
239 String[] types) throws CatalogResourceException {
\r
240 List<NodeTemplateData> ntdList = TemplateManager.getInstance()
\r
241 .queryNodeTemplateBySeriviceTemplateId(serviceTemplateId);
\r
242 if (ntdList == null || ntdList.isEmpty()) {
\r
243 return new NodeTemplate[0];
\r
246 if (ToolUtil.isTrimedEmptyArray(types)) { // return all node templates
\r
247 return TemplateDataHelper.convert2NodeTemplates(ntdList);
\r
250 List<NodeTemplate> ntList = new ArrayList<>();
\r
251 for (String type : types) {
\r
252 if (!ToolUtil.isTrimedEmptyString(type)) {
\r
253 List<NodeTemplateData> typedNtdList = filterNodeTemplateDataListByType(
\r
255 ntList.addAll(Arrays
\r
256 .asList(TemplateDataHelper
\r
257 .convert2NodeTemplates(typedNtdList)));
\r
260 return ntList.toArray(new NodeTemplate[0]);
\r
268 private List<NodeTemplateData> filterNodeTemplateDataListByType(
\r
269 List<NodeTemplateData> ntdList, String type) {
\r
270 List<NodeTemplateData> retList = new ArrayList<>();
\r
271 for (NodeTemplateData ntd : ntdList) {
\r
272 if (type.equals(ntd.getType())) {
\r
281 * @param serviceTemlateId
\r
283 * @throws CatalogResourceException
\r
285 public NfvTemplate getNfvTemplate(String serviceTemlateId)
\r
286 throws CatalogResourceException {
\r
287 NodeTemplate[] nts = getNodeTemplates(serviceTemlateId, null);
\r
289 List<NodeTemplate> vduNodes = new ArrayList<>();
\r
290 List<NodeTemplate> networkNodes = new ArrayList<>();
\r
291 List<NodeTemplate> vnfcNodes = new ArrayList<>();
\r
292 List<NodeTemplate> vnfNodes = new ArrayList<>();
\r
293 for (NodeTemplate nt : nts) {
\r
294 if (isVduNode(nt.getType())) {
\r
299 if (isNetworkNode(nt.getType())) {
\r
300 networkNodes.add(nt);
\r
304 if (isVnfcNode(nt.getType())) {
\r
309 if (isVnfNode(nt.getType())) {
\r
315 return new NfvTemplate(vduNodes, networkNodes, vnfcNodes, vnfNodes);
\r
322 private boolean isVnfNode(String type) {
\r
323 return type.toUpperCase().indexOf(".VNF") > 0;
\r
330 private boolean isVnfcNode(String type) {
\r
331 return type.toUpperCase().indexOf(".VNFC") > 0;
\r
338 private boolean isNetworkNode(String type) {
\r
339 return type.toUpperCase().indexOf(".VL") > 0
\r
340 || type.toUpperCase().indexOf(".VIRTUALLINK") > 0;
\r
347 private boolean isVduNode(String type) {
\r
348 return type.toUpperCase().indexOf(".VDU") > 0;
\r