Update ASDC References to SDC 1/2
[appc.git] / appc-inbound / appc-artifact-handler / provider / src / main / java / org / openecomp / appc / artifact / handler / node / ArtifactHandlerNode.java
1 /*-
2  * ============LICENSE_START=======================================================
3  * ONAP : APPC
4  * ================================================================================
5  * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
6  * ================================================================================
7  * Copyright (C) 2017 Amdocs
8  * =============================================================================
9  * Licensed under the Apache License, Version 2.0 (the "License");
10  * you may not use this file except in compliance with the License.
11  * You may obtain a copy of the License at
12  * 
13  *      http://www.apache.org/licenses/LICENSE-2.0
14  * 
15  * Unless required by applicable law or agreed to in writing, software
16  * distributed under the License is distributed on an "AS IS" BASIS,
17  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
18  * See the License for the specific language governing permissions and
19  * limitations under the License.
20  * 
21  * ECOMP is a trademark and service mark of AT&T Intellectual Property.
22  * ============LICENSE_END=========================================================
23  */
24
25 package org.openecomp.appc.artifact.handler.node;
26
27 import java.io.ByteArrayOutputStream;
28 import java.io.OutputStream;
29 import java.util.Map;
30
31 import org.apache.commons.lang.StringUtils;
32 import org.json.JSONArray;
33 import org.json.JSONObject;
34 import org.openecomp.appc.artifact.handler.dbservices.DBService;
35 import org.openecomp.appc.artifact.handler.utils.ArtifactHandlerProviderUtil;
36 import org.openecomp.appc.artifact.handler.utils.SdcArtifactHandlerConstants;
37 import org.openecomp.appc.yang.YANGGenerator;
38 import org.openecomp.appc.yang.impl.YANGGeneratorFactory;
39 import org.openecomp.sdnc.config.params.transformer.tosca.ArtifactProcessorImpl;
40 import org.openecomp.sdnc.sli.SvcLogicContext;
41 import org.openecomp.sdnc.sli.SvcLogicException;
42 import org.openecomp.sdnc.sli.SvcLogicJavaPlugin;
43
44 import com.att.eelf.configuration.EELFLogger;
45 import com.att.eelf.configuration.EELFManager;
46
47
48
49 public class ArtifactHandlerNode implements SvcLogicJavaPlugin {
50
51     private static final EELFLogger log = EELFManager.getInstance().getLogger(ArtifactHandlerNode.class);
52     public void processArtifact(Map<String, String> inParams, SvcLogicContext ctx) throws Exception 
53     {
54         String responsePrefix = inParams.get("response_prefix");        
55         try{
56             if(inParams != null && !inParams.isEmpty() && inParams.get("postData") !=null ){
57                 log.info("Received request for process Artifact with params: " + inParams.toString());                        
58                 String postData = inParams.get("postData");
59                 JSONObject input = new JSONObject(postData).getJSONObject("input");
60                 responsePrefix = StringUtils.isNotBlank(responsePrefix) ? (responsePrefix+".") : "";
61                 storeUpdateSdcArtifacts(input);
62             }
63         }
64         catch(Exception e){
65             e.printStackTrace();
66             throw e;
67         }
68     }
69
70     private boolean storeUpdateSdcArtifacts(JSONObject postDataJson) throws Exception {
71         log.info("Starting processing of SDC Artifacs into Handler with Data : " + postDataJson.toString());
72         try{
73             JSONObject request_information = (JSONObject)postDataJson.get(SdcArtifactHandlerConstants.REQUEST_INFORMATION);
74             JSONObject document_information =(JSONObject)postDataJson.get(SdcArtifactHandlerConstants.DOCUMENT_PARAMETERS);
75             String artifact_name = document_information.getString(SdcArtifactHandlerConstants.ARTIFACT_NAME);
76             if(artifact_name !=null){
77                 updateStoreArtifacts(request_information, document_information );
78                 if(artifact_name.toLowerCase().startsWith(SdcArtifactHandlerConstants.REFERENCE))
79                     return storeReferenceData(request_information, document_information );
80                 else if (artifact_name.toLowerCase().startsWith(SdcArtifactHandlerConstants.PD))
81                     return createDataForPD(request_information, document_information );
82
83             }
84             else
85                 throw new Exception("Missing Artifact Name for Request : "  + request_information.getString(SdcArtifactHandlerConstants.REQUETS_ID));
86         }
87         catch(Exception e){
88             e.printStackTrace();
89             throw new Exception("Error while processing Request ID : " + ((JSONObject)postDataJson.get(SdcArtifactHandlerConstants.REQUEST_INFORMATION)).getString(SdcArtifactHandlerConstants.REQUETS_ID) + e.getMessage());
90         }
91         return false;        
92
93     }
94     private boolean createDataForPD(JSONObject request_information, JSONObject document_information) throws Exception {
95
96         String fn = "ArtifactHandlerNode.createReferenceDataForPD";
97         String artifact_name = document_information.getString(SdcArtifactHandlerConstants.ARTIFACT_NAME);
98         log.info(fn + "Received PD File Name: " + artifact_name + " and suffix lenght " + SdcArtifactHandlerConstants.PD.length());
99         try {
100
101             String suffix = artifact_name.substring(SdcArtifactHandlerConstants.PD.length());
102             createArtifactRecords(request_information, document_information, suffix);
103         } catch (Exception e) {
104             e.printStackTrace();
105             throw new Exception("Error while createing PD data records " + e.getMessage());
106         }        
107         return true;
108     }
109
110     private void createArtifactRecords(JSONObject request_information, JSONObject document_information, String suffix) throws Exception {
111
112         log.info("Creating Tosca Records and storing into SDC Artifacs");
113         String [] docs = {"Tosca", "Yang"};    
114         ArtifactHandlerProviderUtil ahpUtil = new ArtifactHandlerProviderUtil();
115         String PDFileContents = document_information.getString(SdcArtifactHandlerConstants.ARTIFACT_CONTENTS);
116
117         //Tosca generation
118         OutputStream toscaStream = new ByteArrayOutputStream();
119         String toscaContents = null;
120         ArtifactProcessorImpl toscaGenerator = new ArtifactProcessorImpl();
121         toscaGenerator.generateArtifact(PDFileContents,toscaStream);
122         if(toscaStream != null)
123             toscaContents = toscaStream.toString();
124         log.info("Generated Tosca File : " + toscaContents);
125
126         //Yang generation
127         //String yangContents = "Dummay Yang, Yang contents will be available after IST Integration";
128
129         String yangContents = "YANG generation is in Progress";
130         String yangName = null;
131
132         for(String doc : docs){
133             document_information.put(SdcArtifactHandlerConstants.ARTIFACT_TYPE, doc.concat("Type"));
134             document_information.put(SdcArtifactHandlerConstants.ARTIFACT_DESRIPTION, doc.concat("Model"));
135             if(doc.equals("Tosca"))
136                 document_information.put(SdcArtifactHandlerConstants.ARTIFACT_CONTENTS, ahpUtil.escapeSql(toscaContents));
137             else if (doc.equals("Yang"))
138                 document_information.put(SdcArtifactHandlerConstants.ARTIFACT_CONTENTS, ahpUtil.escapeSql(yangContents));
139             document_information.put(SdcArtifactHandlerConstants.ARTIFACT_NAME, doc.concat(suffix));
140             yangName = doc.concat(suffix);
141             updateStoreArtifacts(request_information, document_information);
142         }    
143
144         String artifactId = getArtifactID(yangName);
145         OutputStream yangStream = new ByteArrayOutputStream();
146         YANGGenerator yangGenerator = YANGGeneratorFactory.getYANGGenerator();
147         yangGenerator.generateYANG(artifactId , toscaContents, yangStream);
148         if(yangStream != null)
149             yangContents = yangStream.toString();
150
151         if(yangContents !=null ){
152             updateYangContents(artifactId, ahpUtil.escapeSql(yangContents));
153         }
154
155     }
156
157     private void updateYangContents(String artifactId, String yangContents) throws SvcLogicException {
158         SvcLogicContext context = new SvcLogicContext();
159         DBService dbservice = DBService.initialise();
160         dbservice.updateYangContents(context, artifactId, yangContents);    
161     }
162
163     private String getArtifactID(String yangName) throws SvcLogicException {        
164         SvcLogicContext context = new SvcLogicContext();
165         DBService dbservice = DBService.initialise();
166         return dbservice.getArtifactID(context, yangName);    
167     }
168
169     private boolean updateStoreArtifacts(JSONObject request_information, JSONObject document_information ) throws Exception {
170         log.info("UpdateStoreArtifactsStarted storing of SDC Artifacs ");
171
172         SvcLogicContext context = new SvcLogicContext();
173         DBService dbservice = DBService.initialise();
174         ArtifactHandlerProviderUtil ahpUtil = new ArtifactHandlerProviderUtil();
175         int intversion = 0;
176         context.setAttribute("artifact_name",document_information.getString(SdcArtifactHandlerConstants.ARTIFACT_NAME));
177         String internal_version = dbservice.getInternalVersionNumber(context, document_information.getString(SdcArtifactHandlerConstants.ARTIFACT_NAME), null);
178         log.info("Internal Version number received from Database : " + internal_version);
179         if(internal_version != null){
180             intversion = Integer.parseInt(internal_version);
181             intversion++ ;
182         }        
183         context.setAttribute(SdcArtifactHandlerConstants.SERVICE_UUID, document_information.getString(SdcArtifactHandlerConstants.SERVICE_UUID));
184         context.setAttribute(SdcArtifactHandlerConstants.DISTRIBUTION_ID, document_information.getString(SdcArtifactHandlerConstants.DISTRIBUTION_ID));
185         context.setAttribute(SdcArtifactHandlerConstants.SERVICE_NAME, document_information.getString(SdcArtifactHandlerConstants.SERVICE_NAME));
186         context.setAttribute(SdcArtifactHandlerConstants.SERVICE_DESCRIPTION, document_information.getString(SdcArtifactHandlerConstants.SERVICE_DESCRIPTION));
187         context.setAttribute(SdcArtifactHandlerConstants.RESOURCE_UUID, document_information.getString(SdcArtifactHandlerConstants.RESOURCE_UUID));
188         context.setAttribute(SdcArtifactHandlerConstants.RESOURCE_INSTANCE_NAME,document_information.getString(SdcArtifactHandlerConstants.RESOURCE_INSTANCE_NAME));
189         context.setAttribute(SdcArtifactHandlerConstants.RESOURCE_VERSOIN, document_information.getString(SdcArtifactHandlerConstants.RESOURCE_VERSOIN));
190         context.setAttribute(SdcArtifactHandlerConstants.RESOURCE_TYPE, document_information.getString(SdcArtifactHandlerConstants.RESOURCE_TYPE));
191         context.setAttribute(SdcArtifactHandlerConstants.ARTIFACT_UUID, document_information.getString(SdcArtifactHandlerConstants.ARTIFACT_UUID));
192         context.setAttribute(SdcArtifactHandlerConstants.ARTIFACT_TYPE,document_information.getString(SdcArtifactHandlerConstants.ARTIFACT_TYPE));
193         context.setAttribute(SdcArtifactHandlerConstants.ARTIFACT_VERSOIN,document_information.getString(SdcArtifactHandlerConstants.ARTIFACT_VERSOIN));
194         context.setAttribute(SdcArtifactHandlerConstants.ARTIFACT_DESRIPTION,document_information.getString(SdcArtifactHandlerConstants.ARTIFACT_DESRIPTION));
195         context.setAttribute(SdcArtifactHandlerConstants.ARTIFACT_CONTENTS,ahpUtil.escapeSql(document_information.getString(SdcArtifactHandlerConstants.ARTIFACT_CONTENTS)));
196         context.setAttribute(SdcArtifactHandlerConstants.ARTIFACT_NAME,document_information.getString(SdcArtifactHandlerConstants.ARTIFACT_NAME));
197         dbservice.saveArtifacts(context, intversion);
198         return true;            
199
200     }
201
202     public boolean storeReferenceData(JSONObject request_information, JSONObject document_information) throws Exception {    
203         log.info("Started storing of SDC Artifacs into Handler" );
204         try{
205             boolean updateRequired = false;
206             boolean pdFile = false;
207             String suffix = null;
208             String categorySuffix = null;
209             DBService dbservice = DBService.initialise();
210             ArtifactHandlerProviderUtil ahpUtil = new ArtifactHandlerProviderUtil();
211             String contentString =  ahpUtil.escapeSql(document_information.getString(SdcArtifactHandlerConstants.ARTIFACT_CONTENTS))    ;
212             String artifactName=ahpUtil.escapeSql(document_information.getString(SdcArtifactHandlerConstants.ARTIFACT_NAME));
213             String capabilityArtifactName=StringUtils.replace(artifactName, SdcArtifactHandlerConstants.ARTIFACT_NAME_REFERENCE, SdcArtifactHandlerConstants.ARTIFACT_NAME_CAPABILITY);
214             JSONObject capabilities = new JSONObject();
215             JSONArray vnfActionList = new JSONArray();
216             JSONArray vfModuleActionList = new JSONArray();
217             JSONArray vnfcActionList = new JSONArray();
218             JSONArray vmActionList = new JSONArray();
219             String vnfType=null;
220             JSONObject contentObject = new JSONObject(contentString);
221             JSONArray contentArray= contentObject.getJSONArray("reference_data");
222             for(int a=0; a<contentArray.length() ; a++){
223                 
224                 JSONObject content = (JSONObject) contentArray.get(a);
225                 log.info("contentString =" + content.toString());
226                 JSONObject scope = content.getJSONObject("scope");
227                 log.info("scope :" + scope);
228                 SvcLogicContext context = new SvcLogicContext();
229                 vnfType=scope.getString(SdcArtifactHandlerConstants.VNF_TYPE);
230                 context.setAttribute(SdcArtifactHandlerConstants.VNF_TYPE, scope.getString(SdcArtifactHandlerConstants.VNF_TYPE));
231                 context.setAttribute(SdcArtifactHandlerConstants.ACTION, content.getString(SdcArtifactHandlerConstants.ACTION));
232                 String actionLevel=content.getString(SdcArtifactHandlerConstants.ACTION_LEVEL);
233                 context.setAttribute(SdcArtifactHandlerConstants.ACTION_LEVEL, content.getString(SdcArtifactHandlerConstants.ACTION_LEVEL));
234                 if ((null != actionLevel) && actionLevel.equalsIgnoreCase(SdcArtifactHandlerConstants.ACTION_LEVEL_VNFC)) {
235                     vnfcActionList.put(content.getString(SdcArtifactHandlerConstants.ACTION));
236                 }
237                 if (null != actionLevel && actionLevel.equalsIgnoreCase(SdcArtifactHandlerConstants.ACTION_LEVEL_VF_MODULE)) {
238                     vfModuleActionList.put(content.getString(SdcArtifactHandlerConstants.ACTION));
239                 }
240                 if (null != actionLevel && actionLevel.equalsIgnoreCase(SdcArtifactHandlerConstants.ACTION_LEVEL_VNF)) {
241                     vnfActionList.put(content.getString(SdcArtifactHandlerConstants.ACTION));
242                 }
243                 if (null != actionLevel && actionLevel.equalsIgnoreCase(SdcArtifactHandlerConstants.ACTION_LEVEL_VM)) {
244                     vmActionList.put(content.getString(SdcArtifactHandlerConstants.ACTION));
245                 }
246                 if(scope.has(SdcArtifactHandlerConstants.VNFC_TYPE) && !scope.isNull(SdcArtifactHandlerConstants.VNFC_TYPE) )
247                     context.setAttribute(SdcArtifactHandlerConstants.VNFC_TYPE, scope.getString(SdcArtifactHandlerConstants.VNFC_TYPE));
248                 else
249                     context.setAttribute(SdcArtifactHandlerConstants.VNFC_TYPE,null);
250                 if (content.has(SdcArtifactHandlerConstants.DEVICE_PROTOCOL))
251                     context.setAttribute(SdcArtifactHandlerConstants.DEVICE_PROTOCOL, content.getString(SdcArtifactHandlerConstants.DEVICE_PROTOCOL));
252                 if (content.has(SdcArtifactHandlerConstants.USER_NAME))
253                     context.setAttribute(SdcArtifactHandlerConstants.USER_NAME, content.getString(SdcArtifactHandlerConstants.USER_NAME));
254                 if (content.has(SdcArtifactHandlerConstants.PORT_NUMBER))
255                     context.setAttribute(SdcArtifactHandlerConstants.PORT_NUMBER, content.getString(SdcArtifactHandlerConstants.PORT_NUMBER));
256                 context.setAttribute(SdcArtifactHandlerConstants.ARTIFACT_TYPE, "");
257                 if(content.has("artifact-list") && content.get("artifact-list") instanceof JSONArray){                
258                     JSONArray artifactLists = (JSONArray)content.get("artifact-list"); 
259                     for(int i=0;i<artifactLists.length();i++){
260                         JSONObject artifact=(JSONObject)artifactLists.get(i);
261                         log.info("artifact is " + artifact);
262                         context.setAttribute(SdcArtifactHandlerConstants.ARTIFACT_NAME, artifact.getString(SdcArtifactHandlerConstants.ARTIFACT_NAME));
263                         context.setAttribute(SdcArtifactHandlerConstants.FILE_CATEGORY, artifact.getString(SdcArtifactHandlerConstants.ARTIFACT_TYPE));
264
265                         if(artifact.getString(SdcArtifactHandlerConstants.ARTIFACT_NAME) !=null &&
266                                 artifact.getString(SdcArtifactHandlerConstants.ARTIFACT_NAME).toLowerCase().startsWith(SdcArtifactHandlerConstants.PD))
267                         {
268                             suffix = artifact.getString(SdcArtifactHandlerConstants.ARTIFACT_NAME).substring(SdcArtifactHandlerConstants.PD.length());
269                             categorySuffix = artifact.getString(SdcArtifactHandlerConstants.ARTIFACT_TYPE).substring(SdcArtifactHandlerConstants.PD.length());
270                             pdFile = true;
271                         }
272
273                         dbservice.processSdcReferences(context, dbservice.isArtifactUpdateRequired(context, SdcArtifactHandlerConstants.DB_SDC_REFERENCE));
274
275                         cleanArtifactInstanceData(context);
276                     }
277
278                     if(pdFile)
279                     {
280                         context.setAttribute(SdcArtifactHandlerConstants.ARTIFACT_NAME, "Tosca".concat(suffix));
281                         context.setAttribute(SdcArtifactHandlerConstants.FILE_CATEGORY, SdcArtifactHandlerConstants.TOSCA_MODEL);
282                         dbservice.processSdcReferences(context, dbservice.isArtifactUpdateRequired(context, SdcArtifactHandlerConstants.DB_SDC_REFERENCE));
283                         context.setAttribute(SdcArtifactHandlerConstants.ARTIFACT_NAME, "Yang".concat(suffix));
284                         context.setAttribute(SdcArtifactHandlerConstants.FILE_CATEGORY, SdcArtifactHandlerConstants.PARAMETER_YANG);
285                         dbservice.processSdcReferences(context, dbservice.isArtifactUpdateRequired(context, SdcArtifactHandlerConstants.DB_SDC_REFERENCE));
286                     }
287                 }
288                 if (content.getString(SdcArtifactHandlerConstants.ACTION).equals("Configure")) {
289                     if(content.has(SdcArtifactHandlerConstants.DOWNLOAD_DG_REFERENCE) && content.getString(SdcArtifactHandlerConstants.DOWNLOAD_DG_REFERENCE).length() > 0){
290                         context.setAttribute(SdcArtifactHandlerConstants.DOWNLOAD_DG_REFERENCE, content.getString(SdcArtifactHandlerConstants.DOWNLOAD_DG_REFERENCE));
291                         dbservice.processDownloadDgReference(context, dbservice.isArtifactUpdateRequired(context, SdcArtifactHandlerConstants.DB_DOWNLOAD_DG_REFERENCE));
292                     }
293     
294                     dbservice.processConfigActionDg(context, dbservice.isArtifactUpdateRequired(context, SdcArtifactHandlerConstants.DB_CONFIG_ACTION_DG));
295                     dbservice.processDeviceInterfaceProtocol(context, dbservice.isArtifactUpdateRequired(context, SdcArtifactHandlerConstants.DB_DEVICE_INTERFACE_PROTOCOL));
296                     dbservice.processDeviceAuthentication(context, dbservice.isArtifactUpdateRequired(context, SdcArtifactHandlerConstants.DB_DEVICE_AUTHENTICATION));
297                     
298                 }
299                 
300                 
301                 populateProtocolReference(dbservice, content);
302                 
303                 context.setAttribute(SdcArtifactHandlerConstants.VNFC_TYPE, null);
304                 
305                 if( content.has(SdcArtifactHandlerConstants.VM)  && content.get(SdcArtifactHandlerConstants.VM) instanceof JSONArray){
306                     JSONArray vmList = (JSONArray)content.get(SdcArtifactHandlerConstants.VM);
307                     for(int i=0;i<vmList.length();i++){
308                         JSONObject vmInstance=(JSONObject)vmList.get(i);    
309                         context.setAttribute(SdcArtifactHandlerConstants.VM_INSTANCE, String.valueOf(vmInstance.getInt(SdcArtifactHandlerConstants.VM_INSTANCE)));
310                         log.info("VALUE = " + context.getAttribute(SdcArtifactHandlerConstants.VM_INSTANCE));
311                         if(vmInstance.get(SdcArtifactHandlerConstants.VNFC) instanceof JSONArray){
312                             JSONArray vnfcInstanceList = (JSONArray)vmInstance.get(SdcArtifactHandlerConstants.VNFC);
313                             for(int k=0;k<vnfcInstanceList.length();k++){
314                                 JSONObject vnfcInstance = (JSONObject)vnfcInstanceList.get(k);
315                                 context.setAttribute(SdcArtifactHandlerConstants.VNFC_INSTANCE, String.valueOf(vnfcInstance.getInt(SdcArtifactHandlerConstants.VNFC_INSTANCE)));
316                                 context.setAttribute(SdcArtifactHandlerConstants.VNFC_TYPE, vnfcInstance.getString(SdcArtifactHandlerConstants.VNFC_TYPE));
317                                 context.setAttribute(SdcArtifactHandlerConstants.VNFC_FUNCTION_CODE, vnfcInstance.getString(SdcArtifactHandlerConstants.VNFC_FUNCTION_CODE));
318                                 if(vnfcInstance.has(SdcArtifactHandlerConstants.IPADDRESS_V4_OAM_VIP))
319                                     context.setAttribute(SdcArtifactHandlerConstants.IPADDRESS_V4_OAM_VIP, vnfcInstance.getString(SdcArtifactHandlerConstants.IPADDRESS_V4_OAM_VIP));
320                                 if(vnfcInstance.has(SdcArtifactHandlerConstants.GROUP_NOTATION_TYPE))
321                                     context.setAttribute(SdcArtifactHandlerConstants.GROUP_NOTATION_TYPE, vnfcInstance.getString(SdcArtifactHandlerConstants.GROUP_NOTATION_TYPE));
322                                 if(vnfcInstance.has(SdcArtifactHandlerConstants.GROUP_NOTATION_VALUE))
323                                     context.setAttribute(SdcArtifactHandlerConstants.GROUP_NOTATION_VALUE, vnfcInstance.getString(SdcArtifactHandlerConstants.GROUP_NOTATION_VALUE));
324                                 dbservice.processVnfcReference(context, dbservice.isArtifactUpdateRequired(context, SdcArtifactHandlerConstants.DB_VNFC_REFERENCE));
325                                 cleanVnfcInstance(context);
326                             }
327                             context.setAttribute(SdcArtifactHandlerConstants.VM_INSTANCE,null);
328                         }
329                     }        
330                 } 
331                 
332                                 
333             }
334             capabilities.put("vnf",vnfActionList );     
335             capabilities.put("vf-module", vfModuleActionList);
336             capabilities.put("vnfc", vnfcActionList);
337             capabilities.put("vm", vmActionList);
338             processAndStoreCapablitiesArtifact(dbservice, document_information, capabilities,capabilityArtifactName,vnfType );
339             
340         }
341             catch(Exception e)
342             {
343                 e.printStackTrace();
344                 throw new Exception("Error While Storing :  " + e.getMessage());            
345             }
346         
347             return true;            
348         }
349
350         
351         
352
353
354         private void cleanArtifactInstanceData(SvcLogicContext context)
355         {
356             context.setAttribute(SdcArtifactHandlerConstants.ARTIFACT_NAME, null);
357             context.setAttribute(SdcArtifactHandlerConstants.FILE_CATEGORY, null);
358         }
359
360         private void cleanVnfcInstance(SvcLogicContext context) {
361
362             context.setAttribute(SdcArtifactHandlerConstants.VNFC_INSTANCE, null);
363             context.setAttribute(SdcArtifactHandlerConstants.VNFC_TYPE, null);
364             context.setAttribute(SdcArtifactHandlerConstants.VNFC_FUNCTION_CODE, null);
365             context.setAttribute(SdcArtifactHandlerConstants.IPADDRESS_V4_OAM_VIP, null);
366             context.setAttribute(SdcArtifactHandlerConstants.GROUP_NOTATION_TYPE, null);
367             context.setAttribute(SdcArtifactHandlerConstants.GROUP_NOTATION_VALUE, null);
368
369         }
370
371         private void processAndStoreCapablitiesArtifact (DBService dbservice , JSONObject document_information, 
372         JSONObject capabilities, String capabilityArtifactName, String vnfType) throws Exception {
373             log.info("Begin-->processAndStoreCapablitiesArtifact ");
374
375             try {
376                 
377                 JSONObject newCapabilitiesObject=new JSONObject();
378                 newCapabilitiesObject.put("capabilities", capabilities);
379                 SvcLogicContext context = new SvcLogicContext();
380                 context.setAttribute(SdcArtifactHandlerConstants.ARTIFACT_NAME,capabilityArtifactName);
381                 context.setAttribute(SdcArtifactHandlerConstants.FILE_CATEGORY, SdcArtifactHandlerConstants.CAPABILITY);
382                 context.setAttribute(SdcArtifactHandlerConstants.ACTION, null);
383                 context.setAttribute(SdcArtifactHandlerConstants.VNFC_TYPE, null);
384                 context.setAttribute(SdcArtifactHandlerConstants.ARTIFACT_TYPE, null);
385                 context.setAttribute(SdcArtifactHandlerConstants.VNF_TYPE,vnfType);
386                 context.setAttribute(SdcArtifactHandlerConstants.ARTIFACT_CONTENTS,newCapabilitiesObject.toString());
387                 dbservice.processSdcReferences(context, dbservice.isArtifactUpdateRequired(context, SdcArtifactHandlerConstants.DB_SDC_REFERENCE));
388                 int intversion = 0;
389                 
390                 String internal_version = dbservice.getInternalVersionNumber(context, context.getAttribute(SdcArtifactHandlerConstants.ARTIFACT_NAME), null);
391                 log.info("Internal Version number received from Database : " + internal_version);
392                 if(internal_version != null){
393                     intversion = Integer.parseInt(internal_version);
394                     intversion++ ;
395                 }        
396                 context.setAttribute(SdcArtifactHandlerConstants.SERVICE_UUID, document_information.getString(SdcArtifactHandlerConstants.SERVICE_UUID));
397                 context.setAttribute(SdcArtifactHandlerConstants.DISTRIBUTION_ID, document_information.getString(SdcArtifactHandlerConstants.DISTRIBUTION_ID));
398                 context.setAttribute(SdcArtifactHandlerConstants.SERVICE_NAME, document_information.getString(SdcArtifactHandlerConstants.SERVICE_NAME));
399                 context.setAttribute(SdcArtifactHandlerConstants.SERVICE_DESCRIPTION, document_information.getString(SdcArtifactHandlerConstants.SERVICE_DESCRIPTION));
400                 context.setAttribute(SdcArtifactHandlerConstants.RESOURCE_UUID, document_information.getString(SdcArtifactHandlerConstants.RESOURCE_UUID));
401                 context.setAttribute(SdcArtifactHandlerConstants.RESOURCE_INSTANCE_NAME,document_information.getString(SdcArtifactHandlerConstants.RESOURCE_INSTANCE_NAME));
402                 context.setAttribute(SdcArtifactHandlerConstants.RESOURCE_VERSOIN, document_information.getString(SdcArtifactHandlerConstants.RESOURCE_VERSOIN));
403                 context.setAttribute(SdcArtifactHandlerConstants.RESOURCE_TYPE, document_information.getString(SdcArtifactHandlerConstants.RESOURCE_TYPE));
404                 context.setAttribute(SdcArtifactHandlerConstants.ARTIFACT_UUID, document_information.getString(SdcArtifactHandlerConstants.ARTIFACT_UUID));
405                 context.setAttribute(SdcArtifactHandlerConstants.ARTIFACT_VERSOIN,document_information.getString(SdcArtifactHandlerConstants.ARTIFACT_VERSOIN));
406                 context.setAttribute(SdcArtifactHandlerConstants.ARTIFACT_DESRIPTION,document_information.getString(SdcArtifactHandlerConstants.ARTIFACT_DESRIPTION));
407                 
408                 
409                 dbservice.saveArtifacts(context, intversion);
410                 return ;            
411             }
412             catch (Exception e) {
413                 log.error("Error saving capabilities artifact to DB: "+ e.toString());
414                 throw e;
415             }
416             finally {
417                 log.info("End-->processAndStoreCapablitiesArtifact ");
418             }
419         
420             }
421         
422
423             private void populateProtocolReference(DBService dbservice, JSONObject content)  throws Exception{
424                 log.info("Begin-->populateProtocolReference ");
425                 try {
426                     SvcLogicContext context = new SvcLogicContext();
427                     JSONObject scope = content.getJSONObject("scope");
428                     String vnfType=null,protocol=null,action=null,actionLevel=null,template=null;
429                     if(scope.has(SdcArtifactHandlerConstants.VNF_TYPE) && !scope.isNull(SdcArtifactHandlerConstants.VNF_TYPE))
430                         vnfType=scope.getString(SdcArtifactHandlerConstants.VNF_TYPE);
431                     if (content.has(SdcArtifactHandlerConstants.DEVICE_PROTOCOL))
432                         protocol=content.getString(SdcArtifactHandlerConstants.DEVICE_PROTOCOL);
433                     if (content.has(SdcArtifactHandlerConstants.ACTION))
434                         action= content.getString(SdcArtifactHandlerConstants.ACTION);
435                     if (content.has(SdcArtifactHandlerConstants.ACTION_LEVEL))
436                         actionLevel=content.getString(SdcArtifactHandlerConstants.ACTION_LEVEL);
437                     if (content.has(SdcArtifactHandlerConstants.TEMPLATE) && !content.isNull(SdcArtifactHandlerConstants.TEMPLATE))
438                         template=content.getString(SdcArtifactHandlerConstants.TEMPLATE);
439                     dbservice.insertProtocolReference(context, vnfType,protocol,action,actionLevel,template);
440                 }
441                 catch (Exception e) {
442                     log.error("Error inserting record into protocolReference: "+e.toString());
443                     throw e;
444                 }
445                 finally {
446                     log.info("End-->populateProtocolReference ");
447                 }
448             }
449
450     }