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
17 package org.openo.commontosca.catalog.model.wrapper;
\r
19 import org.openo.commontosca.catalog.common.ToolUtil;
\r
20 import org.openo.commontosca.catalog.db.entity.NodeTemplateData;
\r
21 import org.openo.commontosca.catalog.db.entity.PackageData;
\r
22 import org.openo.commontosca.catalog.db.entity.ServiceTemplateData;
\r
23 import org.openo.commontosca.catalog.db.entity.ServiceTemplateMappingData;
\r
24 import org.openo.commontosca.catalog.db.exception.CatalogResourceException;
\r
25 import org.openo.commontosca.catalog.db.resource.TemplateManager;
\r
26 import org.openo.commontosca.catalog.model.common.TemplateDataHelper;
\r
27 import org.openo.commontosca.catalog.model.entity.InputParameter;
\r
28 import org.openo.commontosca.catalog.model.entity.NfvTemplate;
\r
29 import org.openo.commontosca.catalog.model.entity.NodeTemplate;
\r
30 import org.openo.commontosca.catalog.model.entity.Parameters;
\r
31 import org.openo.commontosca.catalog.model.entity.QueryRawDataCondition;
\r
32 import org.openo.commontosca.catalog.model.entity.ServiceTemplate;
\r
33 import org.openo.commontosca.catalog.model.entity.ServiceTemplateOperation;
\r
34 import org.openo.commontosca.catalog.model.entity.ServiceTemplateRawData;
\r
35 import org.openo.commontosca.catalog.model.entity.SubstitutionMapping;
\r
36 import org.openo.commontosca.catalog.resources.CatalogBadRequestException;
\r
37 import org.slf4j.Logger;
\r
38 import org.slf4j.LoggerFactory;
\r
40 import java.util.ArrayList;
\r
41 import java.util.Arrays;
\r
42 import java.util.List;
\r
45 public class ServiceTemplateWrapper {
\r
46 private static ServiceTemplateWrapper instance;
\r
47 private static final Logger logger = LoggerFactory.getLogger(ServiceTemplateWrapper.class);
\r
50 * get service template wrapper instance.
\r
51 * @return ServiceTemplateWrapper instance
\r
53 public static ServiceTemplateWrapper getInstance() {
\r
54 if (instance == null) {
\r
55 instance = new ServiceTemplateWrapper();
\r
61 * get service template by id.
\r
62 * @param serviceTemplateId service template id
\r
63 * @return service template
\r
64 * @throws CatalogResourceException e1
\r
66 public ServiceTemplate getServiceTemplateById(String serviceTemplateId)
\r
67 throws CatalogResourceException {
\r
68 logger.info("getServiceTemplateById. serviceTemplateId = " + serviceTemplateId);
\r
70 List<ServiceTemplateData> stdList =
\r
71 TemplateManager.getInstance().queryServiceTemplateById(serviceTemplateId);
\r
72 if (stdList == null || stdList.isEmpty()) {
\r
73 throw new CatalogResourceException("Can't find this servcie template");
\r
76 return TemplateDataHelper.convert2ServiceTemplate(stdList.get(0));
\r
81 * get service templates.
\r
82 * @param status usage status
\r
83 * @param deletionPending package's deletionPending
\r
84 * @return service template list
\r
85 * @throws CatalogResourceException e
\r
87 public ServiceTemplate[] getServiceTemplates(String status, boolean deletionPending)
\r
88 throws CatalogResourceException {
\r
89 PackageData pd = new PackageData();
\r
90 pd.setUsageState(status);
\r
91 pd.setDeletionPending(String.valueOf(deletionPending));
\r
93 List<ServiceTemplateData> stdList =
\r
94 TemplateManager.getInstance().queryServiceTemplateByCsarPackageInfo(pd);
\r
96 return TemplateDataHelper.convert2ServiceTemplates(stdList);
\r
101 * get nesting service template.
\r
102 * @param nodeTypeIds nodeType id list
\r
103 * @return service template list
\r
104 * @throws CatalogResourceException e
\r
106 public ServiceTemplate[] getNestingServiceTemplate(String[] nodeTypeIds)
\r
107 throws CatalogResourceException {
\r
108 ServiceTemplate[] sts = new ServiceTemplate[nodeTypeIds.length];
\r
109 for (int i = 0; i < nodeTypeIds.length; i++) {
\r
110 SubstitutionMapping stm = getSubstitutionMappingsByNodeTypeId(nodeTypeIds[i]);
\r
114 sts[i] = getServiceTemplateById(stm.getServiceTemplateId());
\r
122 * get substitution mappings by nodeTpe id.
\r
123 * @param nodeTypeId nodeType id
\r
124 * @return SubstitutionMapping
\r
125 * @throws CatalogResourceException e
\r
127 private SubstitutionMapping getSubstitutionMappingsByNodeTypeId(String nodeTypeId)
\r
128 throws CatalogResourceException {
\r
129 List<ServiceTemplateMappingData> stmDataList =
\r
130 TemplateManager.getInstance().queryServiceTemplateMapping(nodeTypeId, null);
\r
131 if (stmDataList == null || stmDataList.isEmpty()) {
\r
135 return TemplateDataHelper.convert2SubstitutionMapping(stmDataList.get(0));
\r
140 * get service template raw data.
\r
141 * @param queryCondition query raw data condition
\r
142 * @return ServiceTemplateRawData
\r
143 * @throws CatalogResourceException e1
\r
144 * @throws CatalogBadRequestException e2
\r
146 public ServiceTemplateRawData getServiceTemplateRawData(QueryRawDataCondition queryCondition)
\r
147 throws CatalogResourceException, CatalogBadRequestException {
\r
148 ServiceTemplateData std = getServiceTemplateDataByCsarId(queryCondition.getCsarId());
\r
149 return new ServiceTemplateRawData(std.getRowData());
\r
153 * get service template data by package id.
\r
154 * @param csarId package id
\r
155 * @return ServiceTemplateData
\r
156 * @throws CatalogBadRequestException e1
\r
157 * @throws CatalogResourceException e2
\r
159 private ServiceTemplateData getServiceTemplateDataByCsarId(String csarId)
\r
160 throws CatalogBadRequestException, CatalogResourceException {
\r
161 if (ToolUtil.isTrimedEmptyString(csarId)) {
\r
162 throw new CatalogBadRequestException("CsarId is null.");
\r
164 PackageData pd = new PackageData();
\r
165 pd.setCsarId(csarId);
\r
167 List<ServiceTemplateData> stdList =
\r
168 TemplateManager.getInstance().queryServiceTemplateByCsarPackageInfo(pd);
\r
170 if (stdList == null || stdList.isEmpty()) {
\r
171 throw new CatalogResourceException("Can't find this servcie template");
\r
174 return stdList.get(0);
\r
178 * get service template by package id.
\r
179 * @param packageId package id
\r
180 * @return service template data
\r
181 * @throws CatalogBadRequestException e1
\r
182 * @throws CatalogResourceException e2
\r
184 public ServiceTemplate getServiceTemplateByCsarId(String packageId)
\r
185 throws CatalogBadRequestException, CatalogResourceException {
\r
186 ServiceTemplateData std = getServiceTemplateDataByCsarId(packageId);
\r
187 ServiceTemplate st = TemplateDataHelper.convert2ServiceTemplate(std);
\r
192 * get service template parameters.
\r
193 * @param serviceTemplateId service template id
\r
194 * @return service template parameters
\r
195 * @throws CatalogResourceException e
\r
197 public Parameters getServiceTemplateParameters(String serviceTemplateId)
\r
198 throws CatalogResourceException {
\r
199 ServiceTemplate st = getServiceTemplateById(serviceTemplateId);
\r
200 return new Parameters(st.getInputs(), st.getOutputs());
\r
204 * get template operation.
\r
205 * @param serviceTemplateId service template id
\r
206 * @return service template operations
\r
208 public ServiceTemplateOperation[] getTemplateOperations(String serviceTemplateId)
\r
209 throws CatalogResourceException {
\r
210 ServiceTemplate st = getServiceTemplateById(serviceTemplateId);
\r
212 if (st.getOperations() == null) {
\r
213 return new ServiceTemplateOperation[0];
\r
215 return st.getOperations();
\r
219 * get parameters by operation name.
\r
220 * @param serviceTemplateId service template id
\r
221 * @param operationName operation name
\r
222 * @return InputParameter list
\r
223 * @throws CatalogResourceException e
\r
225 public InputParameter[] getParametersByOperationName(String serviceTemplateId,
\r
226 String operationName) throws CatalogResourceException {
\r
227 if (ToolUtil.isTrimedEmptyString(operationName)) {
\r
228 throw new CatalogResourceException("Operation Name is null.");
\r
231 ServiceTemplateOperation[] operations = getTemplateOperations(serviceTemplateId);
\r
232 for (int i = 0; i < operations.length; i++) {
\r
233 if (operationName.equals(operations[i].getName())) {
\r
234 return operations[i].getInputs();
\r
238 throw new CatalogResourceException("Can't find this operation.");
\r
243 * get nodeTemplate by id.
\r
244 * @param serviceTemplateId service template id
\r
245 * @param nodeTemplateId node template id
\r
246 * @return NodeTemplate
\r
247 * @throws CatalogResourceException e1
\r
249 public NodeTemplate getNodeTemplateById(String serviceTemplateId, String nodeTemplateId)
\r
250 throws CatalogResourceException {
\r
251 List<NodeTemplateData> ntdList =
\r
252 TemplateManager.getInstance().queryNodeTemplateById(serviceTemplateId, nodeTemplateId);
\r
254 if (ntdList == null || ntdList.isEmpty()) {
\r
255 throw new CatalogResourceException("Can't find this node template.");
\r
258 return TemplateDataHelper.convert2NodeTemplate(ntdList.get(0));
\r
262 * get node templates.
\r
263 * @param serviceTemplateId service template id
\r
264 * @param types type list
\r
265 * @return NodeTemplate list
\r
266 * @throws CatalogResourceException e
\r
268 public NodeTemplate[] getNodeTemplates(String serviceTemplateId, String[] types)
\r
269 throws CatalogResourceException {
\r
270 List<NodeTemplateData> ntdList =
\r
271 TemplateManager.getInstance().queryNodeTemplateBySeriviceTemplateId(serviceTemplateId);
\r
272 if (ntdList == null || ntdList.isEmpty()) {
\r
273 return new NodeTemplate[0];
\r
276 if (ToolUtil.isTrimedEmptyArray(types)) { // return all node templates
\r
277 return TemplateDataHelper.convert2NodeTemplates(ntdList);
\r
280 List<NodeTemplate> ntList = new ArrayList<>();
\r
281 for (String type : types) {
\r
282 if (!ToolUtil.isTrimedEmptyString(type)) {
\r
283 List<NodeTemplateData> typedNtdList = filterNodeTemplateDataListByType(ntdList, type);
\r
284 ntList.addAll(Arrays.asList(TemplateDataHelper.convert2NodeTemplates(typedNtdList)));
\r
287 return ntList.toArray(new NodeTemplate[0]);
\r
291 * filter node template data list by type.
\r
292 * @param ntdList nodeTemplate list
\r
293 * @param type node type
\r
294 * @return node template data list
\r
296 private List<NodeTemplateData> filterNodeTemplateDataListByType(List<NodeTemplateData> ntdList,
\r
298 List<NodeTemplateData> retList = new ArrayList<>();
\r
299 for (NodeTemplateData ntd : ntdList) {
\r
300 if (type.equals(ntd.getType())) {
\r
309 * get nfv template.
\r
310 * @param serviceTemlateId service template id
\r
311 * @return NfvTemplate
\r
312 * @throws CatalogResourceException e
\r
314 public NfvTemplate getNfvTemplate(String serviceTemlateId) throws CatalogResourceException {
\r
315 NodeTemplate[] nts = getNodeTemplates(serviceTemlateId, null);
\r
317 List<NodeTemplate> vduNodes = new ArrayList<>();
\r
318 List<NodeTemplate> networkNodes = new ArrayList<>();
\r
319 List<NodeTemplate> vnfcNodes = new ArrayList<>();
\r
320 List<NodeTemplate> vnfNodes = new ArrayList<>();
\r
321 for (NodeTemplate nt : nts) {
\r
322 if (isVduNode(nt.getType())) {
\r
327 if (isNetworkNode(nt.getType())) {
\r
328 networkNodes.add(nt);
\r
332 if (isVnfcNode(nt.getType())) {
\r
337 if (isVnfNode(nt.getType())) {
\r
343 return new NfvTemplate(vduNodes, networkNodes, vnfcNodes, vnfNodes);
\r
346 private boolean isVnfNode(String type) {
\r
347 return type.toUpperCase().indexOf(".VNF") > 0;
\r
350 private boolean isVnfcNode(String type) {
\r
351 return type.toUpperCase().indexOf(".VNFC") > 0;
\r
354 private boolean isNetworkNode(String type) {
\r
355 return type.toUpperCase().indexOf(".VL") > 0 || type.toUpperCase().indexOf(".VIRTUALLINK") > 0;
\r
358 private boolean isVduNode(String type) {
\r
359 return type.toUpperCase().indexOf(".VDU") > 0;
\r