4170047e0be9e0047f62918c36e43d9a21f725ef
[so.git] / adapters / mso-catalog-db-adapter / src / main / java / org / onap / so / adapters / catalogdb / catalogrest / QueryServiceVnfs.java
1 /*-
2  * ============LICENSE_START=======================================================
3  * ONAP - SO
4  * ================================================================================
5  * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
6  * ================================================================================
7  * Licensed under the Apache License, Version 2.0 (the "License");
8  * you may not use this file except in compliance with the License.
9  * You may obtain a copy of the License at
10  * 
11  *      http://www.apache.org/licenses/LICENSE-2.0
12  * 
13  * Unless required by applicable law or agreed to in writing, software
14  * distributed under the License is distributed on an "AS IS" BASIS,
15  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16  * See the License for the specific language governing permissions and
17  * limitations under the License.
18  * ============LICENSE_END=========================================================
19  */
20  
21 package org.onap.so.adapters.catalogdb.catalogrest;
22 /* should be called QueryVnfResource.java */
23
24 import java.util.ArrayList;
25 import java.util.HashMap;
26 import java.util.List;
27 import java.util.Map;
28
29 import javax.xml.bind.annotation.XmlRootElement;
30
31 import org.onap.so.db.catalog.beans.VnfResourceCustomization;
32 import org.slf4j.Logger;
33 import org.slf4j.LoggerFactory;
34
35 @XmlRootElement(name = "serviceVnfs")
36 public class QueryServiceVnfs extends CatalogQuery {
37     protected static Logger logger = LoggerFactory.getLogger(QueryServiceVnfs.class);
38     
39         private List<VnfResourceCustomization> serviceVnfs;
40         private static final String TEMPLATE =
41         "\n"+
42         "\t{ \"modelInfo\"                    : {\n"+
43                         "\t\t\"modelName\"              : <MODEL_NAME>,\n"+
44                         "\t\t\"modelUuid\"              : <MODEL_UUID>,\n"+
45                         "\t\t\"modelInvariantUuid\"     : <MODEL_INVARIANT_ID>,\n"+
46                         "\t\t\"modelVersion\"           : <MODEL_VERSION>,\n"+
47                         "\t\t\"modelCustomizationUuid\" : <MODEL_CUSTOMIZATION_UUID>,\n"+
48                         "\t\t\"modelInstanceName\"      : <MODEL_INSTANCE_NAME>\n"+
49         "\t\t},\n"+
50                         "\t\"toscaNodeType\"            : <TOSCA_NODE_TYPE>,\n"+
51                         "\t\"nfFunction\"               : <NF_FUNCTION>,\n"+
52                         "\t\"nfType\"                           : <NF_TYPE>,\n"+
53                         "\t\"nfRole\"                           : <NF_ROLE>,\n"+
54                         "\t\"nfNamingCode\"             : <NF_NAMING_CODE>,\n"+
55                         "\t\"multiStageDesign\"         : <MULTI_STEP_DESIGN>,\n"+
56                         "\t\"resourceInput\"            : <RESOURCE_INPUT>,\n"+
57                         "<_VFMODULES_>\n" + 
58                         "\t}";
59
60         public QueryServiceVnfs() { 
61             super(); 
62             serviceVnfs = new ArrayList<>();
63         }
64         
65         public QueryServiceVnfs(List<VnfResourceCustomization> vlist) { 
66                 serviceVnfs = new ArrayList<>();
67                 for (VnfResourceCustomization o : vlist) {
68                     if(logger.isDebugEnabled())
69                         logger.debug (o.toString());
70                         serviceVnfs.add(o);     
71                 }
72         }
73
74         public List<VnfResourceCustomization> getServiceVnfs(){ return this.serviceVnfs; }
75         public void setServiceVnfs(List<VnfResourceCustomization> v) { this.serviceVnfs = v; }
76
77         @Override
78         public String toString () {
79                 StringBuilder sb = new StringBuilder();
80
81                 boolean first = true;
82                 int i = 1;
83                 for (VnfResourceCustomization o : serviceVnfs) {
84                         sb.append(i).append("\t");
85                         if (!first)
86                             sb.append("\n");
87                         first = false;
88                         sb.append(o);
89                 }
90                 return sb.toString();
91     }
92
93         @Override
94         public String JSON2(boolean isArray, boolean isEmbed) {
95                 StringBuilder sb = new StringBuilder();
96                 if (!isEmbed && isArray)
97                     sb.append("{ ");
98                 if (isArray)
99                     sb.append("\"serviceVnfs\": [");
100                 Map<String, String> valueMap = new HashMap<>();
101                 String sep = "";
102                 boolean first = true;
103
104                 for (VnfResourceCustomization o : serviceVnfs) {
105                         if (first) 
106                             sb.append("\n");
107                         first = false;
108
109                         boolean vrNull = o.getVnfResources() == null ? true : false;
110
111                     put(valueMap, "MODEL_NAME",               vrNull ? null : o.getVnfResources().getModelName());
112                     put(valueMap, "MODEL_UUID",               vrNull ? null : o.getVnfResources().getModelUUID());
113                     put(valueMap, "MODEL_INVARIANT_ID",       vrNull ? null : o.getVnfResources().getModelInvariantId());
114                     put(valueMap, "MODEL_VERSION",            vrNull ? null : o.getVnfResources().getModelVersion());
115                     put(valueMap, "MODEL_CUSTOMIZATION_UUID", o.getModelCustomizationUUID());
116                     put(valueMap, "MODEL_INSTANCE_NAME",      o.getModelInstanceName());
117                     put(valueMap, "TOSCA_NODE_TYPE",          vrNull ? null : o.getVnfResources().getToscaNodeType());
118                     put(valueMap, "NF_FUNCTION",              o.getNfFunction());
119                     put(valueMap, "NF_TYPE",                  o.getNfType());
120                     put(valueMap, "NF_ROLE",                  o.getNfRole());
121                     put(valueMap, "NF_NAMING_CODE",           o.getNfNamingCode());
122                     put(valueMap, "MULTI_STEP_DESIGN",        o.getMultiStageDesign());
123                     put(valueMap, "RESOURCE_INPUT",     o.getResourceInput());
124
125                     String subitem = new QueryVfModule(vrNull ? null : o.getVfModuleCustomizations()).JSON2(true, true); 
126                     valueMap.put("_VFMODULES_",               subitem.replaceAll("(?m)^", "\t\t"));
127
128             sb.append(sep).append(this.setTemplate(TEMPLATE, valueMap));
129             sep = ",\n";
130                 }
131                 if (!first)
132                     sb.append("\n");
133                 if (isArray)
134                     sb.append("]");
135                 if (!isEmbed && isArray)
136                     sb.append("}");
137                 return sb.toString();
138         }
139 }