Change the header to SO
[so.git] / asdc-controller / src / main / java / org / openecomp / mso / asdc / installer / heat / ToscaResourceInstaller.java
1 /*-\r
2  * ============LICENSE_START=======================================================\r
3  * ONAP - SO\r
4  * ================================================================================\r
5  * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.\r
6  * ================================================================================\r
7  * Licensed under the Apache License, Version 2.0 (the "License");\r
8  * you may not use this file except in compliance with the License.\r
9  * You may obtain a copy of the License at\r
10  * \r
11  *      http://www.apache.org/licenses/LICENSE-2.0\r
12  * \r
13  * Unless required by applicable law or agreed to in writing, software\r
14  * distributed under the License is distributed on an "AS IS" BASIS,\r
15  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
16  * See the License for the specific language governing permissions and\r
17  * limitations under the License.\r
18  * ============LICENSE_END=========================================================\r
19  */\r
20 \r
21 package org.openecomp.mso.asdc.installer.heat;\r
22 \r
23 import java.sql.Timestamp;\r
24 import java.text.SimpleDateFormat;\r
25 import java.util.ArrayList;\r
26 import java.util.Date;\r
27 import java.util.HashMap;\r
28 import java.util.Iterator;\r
29 import java.util.LinkedHashMap;\r
30 import java.util.List;\r
31 import java.util.Map;\r
32 import java.util.Set;\r
33 import java.util.regex.Pattern;\r
34 import java.util.Collections;\r
35 import java.util.regex.Matcher;\r
36 import java.util.Comparator;\r
37 \r
38 import org.hibernate.exception.ConstraintViolationException;\r
39 import org.hibernate.exception.LockAcquisitionException;\r
40 //import org.openecomp.generic.tosca.parser.model.Metadata;\r
41 //import org.openecomp.generic.tosca.parser.model.NodeTemplate;\r
42 import org.openecomp.sdc.api.notification.IArtifactInfo;\r
43 import org.openecomp.sdc.api.notification.IVfModuleMetadata;\r
44 import org.openecomp.sdc.tosca.parser.impl.SdcPropertyNames;\r
45 import org.openecomp.sdc.toscaparser.api.Group;\r
46 import org.openecomp.sdc.toscaparser.api.NodeTemplate;\r
47 import org.openecomp.sdc.toscaparser.api.Property;\r
48 import org.openecomp.sdc.toscaparser.api.elements.Metadata;\r
49 import org.openecomp.sdc.toscaparser.api.parameters.Input;\r
50 import org.openecomp.mso.asdc.client.ASDCConfiguration;\r
51 import org.openecomp.mso.asdc.client.exceptions.ArtifactInstallerException;\r
52 import org.openecomp.mso.asdc.installer.ASDCElementInfo;\r
53 import org.openecomp.mso.asdc.installer.BigDecimalVersion;\r
54 import org.openecomp.mso.asdc.installer.IVfModuleData;\r
55 import org.openecomp.mso.asdc.installer.IVfResourceInstaller;\r
56 import org.openecomp.mso.asdc.installer.ToscaResourceStructure;\r
57 import org.openecomp.mso.asdc.installer.VfModuleArtifact;\r
58 import org.openecomp.mso.asdc.installer.VfModuleStructure;\r
59 import org.openecomp.mso.asdc.installer.VfResourceStructure;\r
60 import org.openecomp.mso.asdc.util.YamlEditor;\r
61 import org.openecomp.mso.db.catalog.CatalogDatabase;\r
62 import org.openecomp.mso.db.catalog.beans.AllottedResource;\r
63 import org.openecomp.mso.db.catalog.beans.HeatEnvironment;\r
64 import org.openecomp.mso.db.catalog.beans.HeatFiles;\r
65 import org.openecomp.mso.db.catalog.beans.HeatTemplate;\r
66 import org.openecomp.mso.db.catalog.beans.HeatTemplateParam;\r
67 import org.openecomp.mso.db.catalog.beans.NetworkResource;\r
68 import org.openecomp.mso.db.catalog.beans.NetworkResourceCustomization;\r
69 import org.openecomp.mso.db.catalog.beans.AllottedResourceCustomization;\r
70 import org.openecomp.mso.db.catalog.beans.Service;\r
71 import org.openecomp.mso.db.catalog.beans.ServiceToAllottedResources;\r
72 import org.openecomp.mso.db.catalog.beans.ServiceToNetworks;\r
73 import org.openecomp.mso.db.catalog.beans.ServiceToResourceCustomization;\r
74 import org.openecomp.mso.db.catalog.beans.TempNetworkHeatTemplateLookup;\r
75 import org.openecomp.mso.db.catalog.beans.ToscaCsar;\r
76 import org.openecomp.mso.db.catalog.beans.VfModule;\r
77 import org.openecomp.mso.db.catalog.beans.VfModuleCustomization;\r
78 import org.openecomp.mso.db.catalog.beans.VfModuleToHeatFiles;\r
79 import org.openecomp.mso.db.catalog.beans.VnfResCustomToVfModuleCustom;\r
80 import org.openecomp.mso.db.catalog.beans.VnfResource;\r
81 import org.openecomp.mso.db.catalog.beans.VnfResourceCustomization;\r
82 import org.openecomp.mso.logger.MessageEnum;\r
83 import org.openecomp.mso.logger.MsoLogger;\r
84 \r
85 public class ToscaResourceInstaller {// implements IVfResourceInstaller {\r
86 \r
87         private MsoLogger logger;\r
88         \r
89         private Service catalogService;\r
90         \r
91         private static final Pattern lastDigit = Pattern.compile("(\\d+)$");\r
92 \r
93         public ToscaResourceInstaller()  {\r
94                 logger = MsoLogger.getMsoLogger(MsoLogger.Catalog.ASDC);\r
95         }\r
96 \r
97         //@Override\r
98         public boolean isResourceAlreadyDeployed(VfResourceStructure vfResourceStruct)\r
99                         throws ArtifactInstallerException {\r
100                 CatalogDatabase db = CatalogDatabase.getInstance();\r
101                 boolean status = false;\r
102                 VfResourceStructure vfResourceStructure = (VfResourceStructure)vfResourceStruct;\r
103                 \r
104                 try {\r
105                         \r
106                         String serviceUUID = vfResourceStruct.getNotification().getServiceUUID();                       \r
107 \r
108                         if (status) {\r
109                                 logger.info(MessageEnum.ASDC_ARTIFACT_ALREADY_DEPLOYED_DETAIL,\r
110                                                 vfResourceStructure.getResourceInstance().getResourceInstanceName(),\r
111                                                 vfResourceStructure.getResourceInstance().getResourceCustomizationUUID(),\r
112                                                 vfResourceStructure.getNotification().getServiceName(),\r
113                                                 BigDecimalVersion.castAndCheckNotificationVersionToString(\r
114                                                                 vfResourceStructure.getNotification().getServiceVersion()),\r
115                                                 vfResourceStructure.getNotification().getServiceUUID(),\r
116                                                 vfResourceStructure.getResourceInstance().getResourceName(),"", "");\r
117                         } else {\r
118                                 logger.info(MessageEnum.ASDC_ARTIFACT_NOT_DEPLOYED_DETAIL,\r
119                                                 vfResourceStructure.getResourceInstance().getResourceInstanceName(),\r
120                                                 vfResourceStructure.getResourceInstance().getResourceCustomizationUUID(),\r
121                                                 vfResourceStructure.getNotification().getServiceName(),\r
122                                                 BigDecimalVersion.castAndCheckNotificationVersionToString(\r
123                                                                 vfResourceStructure.getNotification().getServiceVersion()),\r
124                                                 vfResourceStructure.getNotification().getServiceUUID(), \r
125                                                 vfResourceStructure.getResourceInstance().getResourceName(),"", "");\r
126                         }\r
127 \r
128                         return status;\r
129 \r
130                 } catch (Exception e) {\r
131                         logger.error(MessageEnum.ASDC_ARTIFACT_CHECK_EXC, "", "", MsoLogger.ErrorCode.SchemaError, "Exception - isResourceAlreadyDeployed");\r
132                         throw new ArtifactInstallerException("Exception caught during checking existence of the VNF Resource.", e);\r
133                 }\r
134         }\r
135 \r
136         //@Override\r
137         public void installTheResource(ToscaResourceStructure toscaResourceStruct, VfResourceStructure vfResourceStruct) throws ArtifactInstallerException {\r
138                 \r
139                 logger.debug("installTheResource is called");\r
140                 \r
141                 VfResourceStructure vfResourceStructure = (VfResourceStructure)vfResourceStruct;\r
142 \r
143                 for (VfModuleArtifact vfModuleArtifact : vfResourceStructure.getArtifactsMapByUUID().values()) {\r
144 \r
145                         switch (vfModuleArtifact.getArtifactInfo().getArtifactType()) {\r
146                         case ASDCConfiguration.HEAT:\r
147                         case ASDCConfiguration.HEAT_VOL:\r
148                         case ASDCConfiguration.HEAT_NESTED:\r
149                                 ToscaResourceInstaller.createHeatTemplateFromArtifact(vfResourceStructure, toscaResourceStruct, vfModuleArtifact);\r
150                                 break;\r
151                         case ASDCConfiguration.HEAT_ENV:\r
152                                 ToscaResourceInstaller.createHeatEnvFromArtifact(vfResourceStructure, vfModuleArtifact);\r
153                                 break;\r
154                         case ASDCConfiguration.HEAT_ARTIFACT:\r
155                                 ToscaResourceInstaller.createHeatFileFromArtifact(vfResourceStructure, vfModuleArtifact, toscaResourceStruct);\r
156                                 break;\r
157                         case ASDCConfiguration.HEAT_NET:\r
158                         case ASDCConfiguration.OTHER:\r
159                                 logger.warn(MessageEnum.ASDC_ARTIFACT_TYPE_NOT_SUPPORT, vfModuleArtifact.getArtifactInfo().getArtifactType()+"(Artifact Name:"+vfModuleArtifact.getArtifactInfo().getArtifactName()+")", "", "", MsoLogger.ErrorCode.DataError, "Artifact type not supported");\r
160                                 break;\r
161                         default:\r
162                                 break;\r
163 \r
164                         }\r
165                 }\r
166                 // Those objects could be reused by different VfModule\r
167                 \r
168 \r
169                 \r
170                 // PCLO: in case of deployment failure, use a string that will represent the type of artifact that failed...\r
171                 List<ASDCElementInfo> artifactListForLogging = new ArrayList<>();\r
172                 \r
173                 CatalogDatabase catalogDB = CatalogDatabase.getInstance();\r
174                 // 2. Create the VFModules/VNFResource objects by linking them to the\r
175                 // objects created before and store them in Resource/module structure\r
176                 // Opening a DB transaction, starting from here\r
177                 try {\r
178 \r
179                         \r
180                         String vfModuleModelUUID = null;\r
181                         \r
182                         createToscaCsar(toscaResourceStruct);\r
183                         \r
184                         catalogDB.saveToscaCsar(toscaResourceStruct.getCatalogToscaCsar());\r
185                         \r
186                         ToscaResourceInstaller.createService(toscaResourceStruct);\r
187                         \r
188                         catalogDB.saveService(toscaResourceStruct.getCatalogService());\r
189 \r
190                         \r
191                         /* VNF POPULATION\r
192                          * ************************************************************************************************************\r
193                          */\r
194                         \r
195             // Ingest (VNF) Data - 1707\r
196             List<NodeTemplate> vfNodeTemplatesList = toscaResourceStruct.getSdcCsarHelper().getServiceVfList();\r
197             int outerLoop = 0;\r
198             logger.debug("**vfMondeTEmplatesList.size()=" + vfNodeTemplatesList.size());\r
199             for (NodeTemplate nodeTemplate :  vfNodeTemplatesList) {\r
200                 logger.debug("nodeTemplate outerLoop=" + outerLoop++);\r
201                 // extract VF metadata\r
202                 \r
203                                         Metadata metadata = nodeTemplate.getMetaData();\r
204 \r
205                                         String vfCustomizationUUID = toscaResourceStruct.getSdcCsarHelper().getMetadataPropertyValue(metadata, SdcPropertyNames.PROPERTY_NAME_CUSTOMIZATIONUUID);\r
206                                         logger.debug("vfCustomizationUUID=" + vfCustomizationUUID);\r
207 \r
208                         \r
209                         /* HEAT TABLE POPULATION\r
210                          * *******************************************************************************************************\r
211                          */\r
212                         \r
213                                 int nextLoop = 0;\r
214                         for (VfModuleStructure vfModuleStructure : vfResourceStructure.getVfModuleStructure()) {\r
215                                 logger.debug("vfResourceStructure.getVfMOduleStructure() loop, nextLoop = " + nextLoop++);\r
216                                 logger.debug("vfModuleStructure:" + vfModuleStructure.toString());\r
217                                 \r
218                                 // Here we set the right db structure according to the Catalog\r
219                                 // DB\r
220 \r
221                                 // We expect only one MAIN HEAT per VFMODULE\r
222                                 // we can also obtain from it the Env ArtifactInfo, that's why\r
223                                 // we\r
224                                 // get the Main IArtifactInfo\r
225 \r
226                                 HeatTemplate heatMainTemplate = null;\r
227                                 HeatEnvironment heatEnv = null;\r
228                                 \r
229                                 HeatTemplate heatVolumeTemplate = null;\r
230                                 HeatEnvironment heatVolumeEnv = null;\r
231                                 \r
232                                 \r
233                                 IVfModuleData vfMetadata = vfModuleStructure.getVfModuleMetadata();\r
234                                                         \r
235                                 \r
236                                 if (vfModuleStructure.getArtifactsMap().containsKey(ASDCConfiguration.HEAT)) {\r
237                                         \r
238                                         List<VfModuleArtifact> artifacts = vfModuleStructure.getArtifactsMap().get(ASDCConfiguration.HEAT);\r
239                                         logger.debug("there are " + artifacts.size() + " artifacts");\r
240                                         IArtifactInfo mainEnvArtifactInfo = null;\r
241                                         for (VfModuleArtifact vfma : artifacts) {\r
242                                                 logger.debug("vmfa=" + vfma.toString());\r
243                                                 mainEnvArtifactInfo = \r
244                                                                 vfma.getArtifactInfo().getGeneratedArtifact();\r
245                                                 \r
246                                                 // MAIN HEAT\r
247                                                 heatMainTemplate = (HeatTemplate) vfma.getCatalogObject(); \r
248                                                 \r
249                                                 // Set HeatTemplateArtifactUUID to use later when setting the VfModule and NetworkResource\r
250                                                 toscaResourceStruct.setHeatTemplateUUID(heatMainTemplate.getArtifactUuid());\r
251 \r
252                                                 // Add this one for logging\r
253                                                 artifactListForLogging.add(ASDCElementInfo\r
254                                                                 .createElementFromVfArtifactInfo(vfma.getArtifactInfo()));\r
255                                                 \r
256                                                 catalogDB.saveHeatTemplate(heatMainTemplate, heatMainTemplate.getParameters());\r
257                                                 // Indicate we have deployed it in the DB\r
258                                                 vfma.incrementDeployedInDB();\r
259                                         }\r
260                                         \r
261                                         \r
262                                         // VOLUME HEAT\r
263                                         // We expect only one VOL HEAT per VFMODULE\r
264                                         // we can also obtain from it the Env ArtifactInfo, that's why\r
265                                         // we get the Volume IArtifactInfo\r
266                                 \r
267                                         if (vfModuleStructure.getArtifactsMap().containsKey(ASDCConfiguration.HEAT_VOL)) {\r
268                                                 IArtifactInfo volEnvArtifactInfo = vfModuleStructure.getArtifactsMap().get(ASDCConfiguration.HEAT_VOL).get(0)\r
269                                                                 .getArtifactInfo().getGeneratedArtifact();\r
270                 \r
271                                                 heatVolumeTemplate = (HeatTemplate) vfModuleStructure.getArtifactsMap()\r
272                                                                 .get(ASDCConfiguration.HEAT_VOL).get(0).getCatalogObject();\r
273                                                 \r
274                                                 // Set VolHeatTemplate ArtifactUUID to use later when setting the VfModule \r
275                                                 toscaResourceStruct.setVolHeatTemplateUUID(heatVolumeTemplate.getArtifactUuid());\r
276                                                 \r
277                                                 \r
278                                                 // Add this one for logging\r
279                                                 artifactListForLogging.add(ASDCElementInfo.createElementFromVfArtifactInfo(vfModuleStructure.getArtifactsMap().get(ASDCConfiguration.HEAT_VOL).get(0).getArtifactInfo()));\r
280 \r
281                                                 catalogDB.saveHeatTemplate(heatVolumeTemplate, heatVolumeTemplate.getParameters());\r
282                                                 // Indicate we have deployed it in the DB\r
283                                                 vfModuleStructure.getArtifactsMap().get(ASDCConfiguration.HEAT_VOL).get(0).incrementDeployedInDB();\r
284                                                 \r
285                                                 if (volEnvArtifactInfo != null) {\r
286                                                         heatVolumeEnv = (HeatEnvironment) vfResourceStructure.getArtifactsMapByUUID()\r
287                                                                         .get(volEnvArtifactInfo.getArtifactUUID()).getCatalogObject();\r
288                                                         \r
289                                                         // Set VolHeatTemplate ArtifactUUID to use later when setting the VfModule \r
290                                                         toscaResourceStruct.setVolHeatEnvTemplateUUID(heatVolumeEnv.getArtifactUuid());\r
291 \r
292                                                         // Add this one for logging\r
293                                                         artifactListForLogging.add(ASDCElementInfo.createElementFromVfArtifactInfo(volEnvArtifactInfo));\r
294                                                                                                                 \r
295                                                         catalogDB.saveHeatEnvironment(heatVolumeEnv);\r
296                                                         // Indicate we have deployed it in the DB\r
297                                                         vfResourceStructure.getArtifactsMapByUUID().get(volEnvArtifactInfo.getArtifactUUID()).incrementDeployedInDB();\r
298                                                 }\r
299                                                 \r
300                                         }\r
301                                         \r
302                                         // NESTED HEAT\r
303                                         // Here we expect many HEAT_NESTED template to be there\r
304                                         // XXX FIX BY PCLO: Defect# -36643 -US666034 - check first if we really have nested heat templates\r
305                                         if (vfModuleStructure.getArtifactsMap().containsKey(ASDCConfiguration.HEAT_NESTED)) {\r
306                                                 for (VfModuleArtifact heatNestedArtifact : vfModuleStructure.getArtifactsMap()\r
307                                                                 .get(ASDCConfiguration.HEAT_NESTED)) {\r
308         \r
309                                                         // Check if this nested is well referenced by the MAIN HEAT\r
310                                                         String parentArtifactType = ToscaResourceInstaller.identifyParentOfNestedTemplate(vfModuleStructure,heatNestedArtifact);\r
311                                                         HeatTemplate heatNestedTemplate = (HeatTemplate) heatNestedArtifact.getCatalogObject();\r
312                                                         \r
313                                                         if (parentArtifactType != null) {\r
314                                                                                                                 \r
315                                                                 switch (parentArtifactType) {\r
316                                                                         case ASDCConfiguration.HEAT:\r
317                                                                                 \r
318                                                                                 // Add this one for logging\r
319                                                                                 artifactListForLogging.add(ASDCElementInfo.createElementFromVfArtifactInfo(heatNestedArtifact.getArtifactInfo()));\r
320                                                                 \r
321                                                                                 catalogDB.saveNestedHeatTemplate (heatMainTemplate.getArtifactUuid(), heatNestedTemplate, heatNestedTemplate.getTemplateName());\r
322                                                                                 // Indicate we have deployed it in the DB\r
323                                                                                 heatNestedArtifact.incrementDeployedInDB();\r
324                                                                                 break;\r
325                                                                         case ASDCConfiguration.HEAT_VOL:\r
326                                                                                 \r
327                                                                                 // Add this one for logging\r
328                                                                                 artifactListForLogging.add(ASDCElementInfo.createElementFromVfArtifactInfo(heatNestedArtifact.getArtifactInfo()));\r
329                                                                                 catalogDB.saveNestedHeatTemplate (heatVolumeTemplate.getArtifactUuid(), heatNestedTemplate, heatNestedTemplate.getTemplateName());\r
330                                                                                 // Indicate we have deployed it in the DB\r
331                                                                                 heatNestedArtifact.incrementDeployedInDB();\r
332                                                                                 break;\r
333                                                                                 \r
334                                                                         default:\r
335                                                                                 break;\r
336 \r
337                                                                 }\r
338                                                         } else { // Assume it belongs to HEAT MAIN\r
339                                                                 // Add this one for logging\r
340                                                                 artifactListForLogging.add(ASDCElementInfo.createElementFromVfArtifactInfo(heatNestedArtifact.getArtifactInfo()));\r
341                                                 \r
342                                                                 catalogDB.saveNestedHeatTemplate (heatMainTemplate.getArtifactUuid(), heatNestedTemplate, heatNestedTemplate.getTemplateName());\r
343                                                                 // Indicate we have deployed it in the DB\r
344                                                                 heatNestedArtifact.incrementDeployedInDB();\r
345                                                         }\r
346                                                 }\r
347                                         }\r
348                                         \r
349                                         if (mainEnvArtifactInfo != null) {\r
350                                                 heatEnv = (HeatEnvironment) vfResourceStructure.getArtifactsMapByUUID()\r
351                                                                 .get(mainEnvArtifactInfo.getArtifactUUID()).getCatalogObject();\r
352                                                 \r
353                                                 // Set HeatEnvironmentArtifactUUID to use later when setting the VfModule \r
354                                                 toscaResourceStruct.setEnvHeatTemplateUUID(heatEnv.getArtifactUuid());\r
355 \r
356                                                 // Add this one for logging\r
357                                                 artifactListForLogging.add(ASDCElementInfo.createElementFromVfArtifactInfo(mainEnvArtifactInfo));\r
358                                                                                                 \r
359                                                 catalogDB.saveHeatEnvironment(heatEnv);\r
360                                                 // Indicate we have deployed it in the DB\r
361                                                 vfResourceStructure.getArtifactsMapByUUID().get(mainEnvArtifactInfo.getArtifactUUID()).incrementDeployedInDB();\r
362                                         }\r
363                                         \r
364                                         // here we expect one VFModule to be there\r
365                                         //VfResourceInstaller.createVfModule(vfModuleStructure,heatMainTemplate, heatVolumeTemplate, heatEnv, heatVolumeEnv);\r
366                                         //VfModule vfModule = vfModuleStructure.getCatalogVfModule();\r
367 \r
368                                         // Add this one for logging\r
369                                         //artifactListForLogging.add(ASDCElementInfo.createElementFromVfModuleStructure(vfModuleStructure));\r
370                                         \r
371                                         //catalogDB.saveOrUpdateVfModule(vfModule);\r
372                                         \r
373                                         \r
374                         // extract VF metadata                  \r
375                                         createVnfResource(nodeTemplate, toscaResourceStruct);\r
376                                         \r
377                                 // check for duplicate record already in the database\r
378                                         VnfResource vnfResource = catalogDB.getVnfResource(toscaResourceStruct.getCatalogVnfResource().getModelName(),\r
379                                                         BigDecimalVersion.castAndCheckNotificationVersionToString(\r
380                                                                         toscaResourceStruct.getCatalogVnfResource().getVersion()));\r
381 \r
382                                         if (vnfResource != null) {\r
383                                                 toscaResourceStruct.setVnfAlreadyInstalled(true);\r
384                                         }\r
385                         \r
386                         \r
387                                         if(!toscaResourceStruct.isVnfAlreadyInstalled()) {\r
388                     \r
389                                                  catalogDB.saveOrUpdateVnfResource(toscaResourceStruct.getCatalogVnfResource());\r
390                                                 \r
391                                         }\r
392                                         \r
393                                                                 \r
394                                         boolean saveVnfCustomization = catalogDB.saveVnfResourceCustomization(toscaResourceStruct.getCatalogVnfResourceCustomization());\r
395                                                 \r
396                                         if(saveVnfCustomization){\r
397                                                 catalogDB.saveServiceToResourceCustomization(toscaResourceStruct.getCatalogVfServiceToResourceCustomization());\r
398                                         }\r
399                                         \r
400                                                 List<org.openecomp.sdc.toscaparser.api.Group> vfGroups = toscaResourceStruct.getSdcCsarHelper().getVfModulesByVf(vfCustomizationUUID);\r
401                                                 logger.debug("vfGroups:" + vfGroups.toString());\r
402                                                 \r
403                                                 Collections.sort(vfGroups, new Comparator<org.openecomp.sdc.toscaparser.api.Group>() {\r
404                                                         @Override\r
405                                                         public int compare(org.openecomp.sdc.toscaparser.api.Group group1, org.openecomp.sdc.toscaparser.api.Group group2) {\r
406                                                                 \r
407                                                                 //Field name1Field = group1.class.getDeclaredField("name");\r
408                                                                 //name1Field.setAccessible(true);\r
409                                                                 String thisName = group1.getName(); //(String) name1Field.get(group1);\r
410                                                                 String thatName = group2.getName(); // (String) name1Field.get(group2);\r
411                                                                 \r
412                                                                 Matcher m = lastDigit.matcher(thisName);\r
413                                                                 Matcher m2 = lastDigit.matcher(thatName);\r
414                                                                 \r
415                                                                 String thisDigit = "0";\r
416                                                                 String thatDigit = "0";\r
417                                                                 if (m.find()) {\r
418                                                                         thisDigit = m.group();\r
419                                                                 } else {\r
420                                                                         return -1;\r
421                                                                 }\r
422                                                                 if (m2.find()) {\r
423                                                                         thatDigit = m2.group();\r
424                                                                 } else {\r
425                                                                         return 1;\r
426                                                                 }\r
427                                                                 \r
428                                                                 return new Integer(thisDigit).compareTo(new Integer(thatDigit));\r
429 \r
430                                                         }\r
431                                                         });\r
432                                                 \r
433                                                 logger.debug("vfGroupsAfter:" + vfGroups.toString());\r
434 \r
435                                                 \r
436                                                 for(Group group : vfGroups){\r
437                                                         \r
438                                 \r
439                                                         //boolean saveVFModule = createVFModule(group, nodeTemplate, toscaResourceStruct, vfMetadata);\r
440                                                         if (vfMetadata.getVfModuleModelCustomizationUUID() == null) {\r
441                                                                 logger.debug("NULL 1");\r
442                                                         } else {\r
443                                                                 logger.debug("vfMetadata.getMCU=" + vfMetadata.getVfModuleModelCustomizationUUID());\r
444                                                         }\r
445                                                         if (group.getMetadata() == null) {\r
446                                                                 logger.debug("NULL 3");\r
447                                                         } else {\r
448                                                                 logger.debug("group.getMetadata().getValue() = " + group.getMetadata().getValue("vfModuleModelCustomizationUUID"));\r
449                                                         }\r
450                                                         if (vfMetadata.getVfModuleModelCustomizationUUID().equals(group.getMetadata().getValue("vfModuleModelCustomizationUUID"))) {\r
451                                                                 logger.debug("Found a match at " + vfMetadata.getVfModuleModelCustomizationUUID());\r
452                                                            createVFModule(group, nodeTemplate, toscaResourceStruct, vfResourceStructure, vfMetadata);\r
453                                 \r
454                                                                 catalogDB.saveOrUpdateVfModule(toscaResourceStruct.getCatalogVfModule());\r
455                                 \r
456                                                                 catalogDB.saveOrUpdateVfModuleCustomization(toscaResourceStruct.getCatalogVfModuleCustomization());\r
457                                                                 \r
458                                                                 catalogDB.saveVnfResourceToVfModuleCustomization(toscaResourceStruct.getCatalogVnfResourceCustomization(), toscaResourceStruct.getCatalogVfModuleCustomization());\r
459                                 \r
460 \r
461                                                         } else {\r
462                                                                 if(toscaResourceStruct.getCatalogVfModuleCustomization() != null){\r
463                                                                         logger.debug("No match for " + toscaResourceStruct.getCatalogVfModuleCustomization().getModelCustomizationUuid());\r
464                                                                 } else {\r
465                                                                         logger.debug("No match for vfModuleModelCustomizationUUID");\r
466                                                                 }\r
467                                                         }\r
468                                 \r
469                                                 }\r
470                                                            \r
471                                         } //Commented out to process VFModules each time \r
472                                         \r
473 \r
474                                         \r
475                                         // Here we expect many HEAT_TEMPLATE files to be there\r
476                                         if (vfModuleStructure.getArtifactsMap().containsKey(ASDCConfiguration.HEAT_ARTIFACT)) {\r
477                                                 for (VfModuleArtifact heatArtifact : vfModuleStructure.getArtifactsMap()\r
478                                                                 .get(ASDCConfiguration.HEAT_ARTIFACT)) {\r
479                 \r
480                                                         HeatFiles heatFile = (HeatFiles) heatArtifact.getCatalogObject();\r
481                                                                                                 \r
482                                                         // Add this one for logging\r
483                                                         artifactListForLogging.add(ASDCElementInfo.createElementFromVfArtifactInfo(heatArtifact.getArtifactInfo()));\r
484                                                 \r
485                                                         if(toscaResourceStruct.getCatalogVfModule() != null && heatFile != null){\r
486                                                                 catalogDB.saveVfModuleToHeatFiles (toscaResourceStruct.getCatalogVfModule().getModelUUID(), heatFile);\r
487                                                         }\r
488                                                         // Indicate we will deploy it in the DB\r
489                                                         heatArtifact.incrementDeployedInDB();\r
490                                                 }\r
491                                         }\r
492                                         \r
493                                 }\r
494 \r
495                 }\r
496                                 \r
497                                 /* END OF HEAT TABLE POPULATION\r
498                                  * ***************************************************************************************************\r
499                                  */\r
500             \r
501             \r
502           //  throw new ArtifactInstallerException("TESTING");\r
503             \r
504             \r
505             List<NodeTemplate> allottedResourceList = toscaResourceStruct.getSdcCsarHelper().getAllottedResources();\r
506                 \r
507                         if(allottedResourceList != null){\r
508                         \r
509                                 for(NodeTemplate allottedNode : allottedResourceList){\r
510                                         \r
511                                         createAllottedResource(allottedNode, toscaResourceStruct);\r
512                                         \r
513                                         catalogDB.saveAllottedResource(toscaResourceStruct.getAllottedResource());\r
514                                         \r
515                                         catalogDB.saveAllottedResourceCustomization(toscaResourceStruct.getCatalogAllottedResourceCustomization());\r
516                                         \r
517                                         catalogDB.saveServiceToResourceCustomization(toscaResourceStruct.getCatalogAllottedServiceToResourceCustomization());\r
518                                         \r
519                                 }\r
520                         }\r
521                         \r
522 \r
523                 List<NodeTemplate> nodeTemplatesVLList = toscaResourceStruct.getSdcCsarHelper().getServiceVlList();\r
524                                 \r
525                         if(nodeTemplatesVLList != null){\r
526                                 \r
527                                 for(NodeTemplate vlNode : nodeTemplatesVLList){\r
528                                         \r
529                                         String networkResourceModelName = vlNode.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_NAME).trim();\r
530 \r
531                                         List<TempNetworkHeatTemplateLookup> networkHeatTemplateLookup = catalogDB.getTempNetworkHeatTemplateLookup(networkResourceModelName);\r
532                                         \r
533                                         if(networkHeatTemplateLookup != null && networkHeatTemplateLookup.size() > 0 ){\r
534                                         \r
535                                                 createNetworkResource(vlNode, toscaResourceStruct, networkHeatTemplateLookup.get(0));\r
536                                         \r
537                                         } else {\r
538                                                 throw new ArtifactInstallerException("No NetworkResourceName found in TempNetworkHeatTemplateLookup for " + networkResourceModelName);\r
539                                         }\r
540                                         \r
541                                                                                 \r
542                                                 catalogDB.saveNetworkResource(toscaResourceStruct.getCatalogNetworkResource());\r
543                                                 \r
544                                                 catalogDB.saveNetworkResourceCustomization(toscaResourceStruct.getCatalogNetworkResourceCustomization());\r
545                                                 \r
546                                                 catalogDB.saveServiceToResourceCustomization(toscaResourceStruct.getCatalogVlServiceToResourceCustomization());\r
547 \r
548                                 }\r
549                         }       \r
550             \r
551                 \r
552                    //createServiceToResourceCustomization(toscaResourceStruct.getCatalogService(), toscaResourceStruct.getCatalogVnfResourceCustomization(), toscaResourceStruct);\r
553                    \r
554            // catalogDB.saveToscaCsar(toscaResourceStruct.getCatalogToscaCsar());\r
555                 \r
556  \r
557                         catalogDB.commit();     \r
558                         vfResourceStructure.setSuccessfulDeployment();\r
559                         \r
560                 }catch(Exception e){\r
561                         System.out.println("Exception" + e.getMessage());\r
562                         e.printStackTrace();\r
563                         \r
564                         Throwable dbExceptionToCapture = e;\r
565                         while (!(dbExceptionToCapture instanceof ConstraintViolationException || dbExceptionToCapture instanceof LockAcquisitionException)\r
566                                         && (dbExceptionToCapture.getCause() != null)) {\r
567                                 dbExceptionToCapture = dbExceptionToCapture.getCause();\r
568                         }\r
569 \r
570                         if (dbExceptionToCapture instanceof ConstraintViolationException || dbExceptionToCapture instanceof LockAcquisitionException) {\r
571                                 logger.warn(MessageEnum.ASDC_ARTIFACT_ALREADY_DEPLOYED, vfResourceStructure.getResourceInstance().getResourceName(),\r
572                                                 vfResourceStructure.getNotification().getServiceVersion(), "", "", MsoLogger.ErrorCode.DataError, "Exception - ASCDC Artifact already deployed", e);\r
573                         } else {\r
574                                 String endEvent = "Exception caught during installation of " + vfResourceStructure.getResourceInstance().getResourceName() + ". Transaction rollback.";\r
575                                 String elementToLog = (artifactListForLogging.size() > 0 ? artifactListForLogging.get(artifactListForLogging.size()-1).toString() : "No element listed");\r
576                                 logger.error(MessageEnum.ASDC_ARTIFACT_INSTALL_EXC, elementToLog, "", "", MsoLogger.ErrorCode.DataError, "Exception caught during installation of " + vfResourceStructure.getResourceInstance().getResourceName() + ". Transaction rollback", e);\r
577                                 catalogDB.rollback();\r
578                                 throw new ArtifactInstallerException(\r
579                                                 "Exception caught during installation of " + vfResourceStructure.getResourceInstance().getResourceName() + ". Transaction rollback.", e);\r
580                         }\r
581 \r
582                 }\r
583                                 \r
584         }               \r
585 \r
586                 \r
587         public static String verifyTheFilePrefixInArtifacts(String filebody, VfResourceStructure vfResourceStructure, List<String> listTypes) {\r
588                 String newFileBody = filebody;\r
589                 for (VfModuleArtifact moduleArtifact:vfResourceStructure.getArtifactsMapByUUID().values()) {\r
590                         \r
591                         if (listTypes.contains(moduleArtifact.getArtifactInfo().getArtifactType())) {\r
592                                 \r
593                                 newFileBody = verifyTheFilePrefixInString(newFileBody,moduleArtifact.getArtifactInfo().getArtifactName());\r
594                         }\r
595                 }\r
596                 return newFileBody;\r
597         }\r
598         \r
599         public static String verifyTheFilePrefixInString(final String body, final String filenameToVerify) {\r
600                 \r
601                 String needlePrefix = "file:///";\r
602                 String prefixedFilenameToVerify = needlePrefix+filenameToVerify;\r
603                 \r
604                 if ((body == null) || (body.length() == 0) || (filenameToVerify == null) || (filenameToVerify.length() == 0)) { \r
605                         return body; \r
606                 } \r
607  \r
608                 StringBuffer sb = new StringBuffer(body.length()); \r
609  \r
610                 int currentIndex = 0; \r
611                 int startIndex = 0; \r
612  \r
613                 while (currentIndex != -1) { \r
614                         startIndex = currentIndex; \r
615                         currentIndex = body.indexOf(prefixedFilenameToVerify, startIndex); \r
616  \r
617                         if (currentIndex == -1) { \r
618                                 break; \r
619                         } \r
620  \r
621                         // We append from the startIndex up to currentIndex (start of File Name) \r
622                         sb.append(body.substring(startIndex, currentIndex)); \r
623                         sb.append(filenameToVerify); \r
624  \r
625                         currentIndex += prefixedFilenameToVerify.length(); \r
626                 } \r
627  \r
628                 sb.append(body.substring(startIndex)); \r
629  \r
630                 return sb.toString();\r
631         }\r
632         \r
633         \r
634         private static void createHeatTemplateFromArtifact(VfResourceStructure vfResourceStructure,ToscaResourceStructure toscaResourceStruct,\r
635                         VfModuleArtifact vfModuleArtifact) {\r
636                 HeatTemplate heatTemplate = new HeatTemplate();\r
637 \r
638                 // TODO Set the label\r
639 //              heatTemplate.setAsdcLabel("label");\r
640                 // Use the ResourceName of the ASDC template because the HEAT could be\r
641                 // reused\r
642 //              heatTemplate.setAsdcResourceName(vfResourceStructure.getResourceInstance().getResourceName());\r
643                 heatTemplate.setAsdcUuid(vfModuleArtifact.getArtifactInfo().getArtifactUUID());\r
644                 \r
645                 List<String> typeList = new ArrayList<String>();\r
646                 typeList.add(ASDCConfiguration.HEAT_NESTED);\r
647                 typeList.add(ASDCConfiguration.HEAT_ARTIFACT);\r
648                 \r
649                 heatTemplate.setTemplateBody(verifyTheFilePrefixInArtifacts(vfModuleArtifact.getResult(),vfResourceStructure,typeList));\r
650                 heatTemplate.setTemplateName(vfModuleArtifact.getArtifactInfo().getArtifactName());\r
651 \r
652                 if (vfModuleArtifact.getArtifactInfo().getArtifactTimeout() != null) {\r
653                         heatTemplate.setTimeoutMinutes(vfModuleArtifact.getArtifactInfo().getArtifactTimeout());\r
654                 } else {\r
655                         heatTemplate.setTimeoutMinutes(240);\r
656                 }\r
657                 \r
658                 //toscaResourceStruct.setHeatFilesUUID(vfModuleArtifact.getArtifactInfo().getArtifactUUID());\r
659 \r
660                 heatTemplate.setDescription(vfModuleArtifact.getArtifactInfo().getArtifactDescription());\r
661                 heatTemplate.setVersion(BigDecimalVersion\r
662                                 .castAndCheckNotificationVersionToString(vfModuleArtifact.getArtifactInfo().getArtifactVersion()));\r
663                 heatTemplate.setArtifactUuid(vfModuleArtifact.getArtifactInfo().getArtifactUUID());\r
664                 \r
665                 if(vfModuleArtifact.getArtifactInfo().getArtifactChecksum() != null){\r
666                         heatTemplate.setArtifactChecksum(vfModuleArtifact.getArtifactInfo().getArtifactChecksum());\r
667                 } else {\r
668                         heatTemplate.setArtifactChecksum("MANUAL_RECORD");\r
669                 }\r
670                 \r
671                 Set<HeatTemplateParam> heatParam = ToscaResourceInstaller\r
672                                 .extractHeatTemplateParameters(vfModuleArtifact.getResult(), vfModuleArtifact.getArtifactInfo().getArtifactUUID());\r
673                 heatTemplate.setParameters(heatParam);\r
674                 //heatTemplate.setCreated(getCurrentTimeStamp());\r
675 \r
676                 vfModuleArtifact.setCatalogObject(heatTemplate);\r
677         }\r
678 \r
679         private static void createHeatEnvFromArtifact(VfResourceStructure vfResourceStructure,\r
680                         VfModuleArtifact vfModuleArtifact) {\r
681                 HeatEnvironment heatEnvironment = new HeatEnvironment();\r
682 \r
683                 heatEnvironment.setName(vfModuleArtifact.getArtifactInfo().getArtifactName());\r
684                 // TODO Set the label\r
685 //              heatEnvironment.setAsdcLabel("Label");\r
686                 \r
687                 List<String> typeList = new ArrayList<String>();\r
688                 typeList.add(ASDCConfiguration.HEAT);\r
689                 typeList.add(ASDCConfiguration.HEAT_VOL);\r
690                 \r
691                 heatEnvironment.setEnvironment(verifyTheFilePrefixInArtifacts(vfModuleArtifact.getResult(),vfResourceStructure,typeList));\r
692 //              heatEnvironment.setAsdcUuid(vfModuleArtifact.getArtifactInfo().getArtifactUUID());\r
693                 heatEnvironment.setDescription(vfModuleArtifact.getArtifactInfo().getArtifactDescription());\r
694                 heatEnvironment.setVersion(BigDecimalVersion\r
695                                 .castAndCheckNotificationVersionToString(vfModuleArtifact.getArtifactInfo().getArtifactVersion()));\r
696 //              heatEnvironment.setAsdcResourceName(VfResourceInstaller.createVNFName(vfResourceStructure));\r
697                 heatEnvironment.setArtifactUuid(vfModuleArtifact.getArtifactInfo().getArtifactUUID());\r
698                 \r
699                 if(vfModuleArtifact.getArtifactInfo().getArtifactChecksum() != null){\r
700                         heatEnvironment.setArtifactChecksum(vfModuleArtifact.getArtifactInfo().getArtifactChecksum());\r
701                 } else{\r
702                         heatEnvironment.setArtifactChecksum("MANUAL_RECORD");\r
703                 }\r
704                 //heatEnvironment.setCreated(getCurrentTimeStamp());\r
705 \r
706                 vfModuleArtifact.setCatalogObject(heatEnvironment);\r
707                 \r
708         }\r
709 \r
710         private static void createHeatFileFromArtifact(VfResourceStructure vfResourceStructure,\r
711                         VfModuleArtifact vfModuleArtifact, ToscaResourceStructure toscaResourceStruct) {\r
712 \r
713                 HeatFiles heatFile = new HeatFiles();\r
714                 // TODO Set the label\r
715 //              heatFile.setAsdcLabel("Label");\r
716                 heatFile.setAsdcUuid(vfModuleArtifact.getArtifactInfo().getArtifactUUID());\r
717                 heatFile.setDescription(vfModuleArtifact.getArtifactInfo().getArtifactDescription());\r
718                 heatFile.setFileBody(vfModuleArtifact.getResult());\r
719                 heatFile.setFileName(vfModuleArtifact.getArtifactInfo().getArtifactName());\r
720                 heatFile.setVersion(BigDecimalVersion\r
721                                 .castAndCheckNotificationVersionToString(vfModuleArtifact.getArtifactInfo().getArtifactVersion()));\r
722                 \r
723                 toscaResourceStruct.setHeatFilesUUID(vfModuleArtifact.getArtifactInfo().getArtifactUUID());\r
724                 //heatFile.setCreated(getCurrentTimeStamp());\r
725 \r
726 //              heatFile.setAsdcResourceName(vfResourceStructure.getResourceInstance().getResourceName());\r
727                 \r
728                 \r
729                 if(vfModuleArtifact.getArtifactInfo().getArtifactChecksum() != null){\r
730                         heatFile.setArtifactChecksum(vfModuleArtifact.getArtifactInfo().getArtifactChecksum());\r
731                 } else {\r
732                         heatFile.setArtifactChecksum("MANUAL_RECORD");\r
733                 }\r
734                 \r
735                 vfModuleArtifact.setCatalogObject(heatFile);\r
736                 \r
737         }\r
738 \r
739         private static void createService(ToscaResourceStructure toscaResourceStructure) {\r
740                 \r
741                 toscaResourceStructure.getServiceMetadata();\r
742                 \r
743                 Metadata serviceMetadata = toscaResourceStructure.getServiceMetadata();\r
744                         \r
745                 Service service = new Service();\r
746                 \r
747                 //  Service     \r
748                 if(serviceMetadata != null){    \r
749                         \r
750                         if(toscaResourceStructure.getServiceVersion() != null){\r
751                                 service.setVersion(toscaResourceStructure.getServiceVersion());\r
752                         }\r
753                         \r
754                         service.setServiceType(toscaResourceStructure.getSdcCsarHelper().getMetadataPropertyValue(serviceMetadata, "serviceType"));\r
755                         service.setServiceRole(toscaResourceStructure.getSdcCsarHelper().getMetadataPropertyValue(serviceMetadata, "serviceRole"));\r
756                         \r
757                         service.setDescription(serviceMetadata.getValue(SdcPropertyNames.PROPERTY_NAME_DESCRIPTION));\r
758                         service.setModelName(serviceMetadata.getValue(SdcPropertyNames.PROPERTY_NAME_NAME));\r
759                         service.setModelUUID(serviceMetadata.getValue(SdcPropertyNames.PROPERTY_NAME_UUID));\r
760                         //service.setVersion(serviceMetadata.getValue(SdcPropertyNames.PROPERTY_NAME_VERSION));\r
761                         service.setModelInvariantUUID(serviceMetadata.getValue(SdcPropertyNames.PROPERTY_NAME_INVARIANTUUID));\r
762                         service.setToscaCsarArtifactUUID(toscaResourceStructure.getToscaArtifact().getArtifactUUID());\r
763                         //service.setCreated(getCurrentTimeStamp());\r
764                 }\r
765                                 \r
766                 toscaResourceStructure.setCatalogService(service);\r
767         }\r
768         \r
769         private static void createToscaCsar(ToscaResourceStructure toscaResourceStructure) {\r
770                 \r
771                 ToscaCsar toscaCsar = new ToscaCsar();\r
772                 if(toscaResourceStructure.getToscaArtifact().getArtifactChecksum() != null){\r
773                         toscaCsar.setArtifactChecksum(toscaResourceStructure.getToscaArtifact().getArtifactChecksum());\r
774                 } else {\r
775                         toscaCsar.setArtifactChecksum("MANUAL_RECORD");\r
776                 }\r
777                 toscaCsar.setArtifactUUID(toscaResourceStructure.getToscaArtifact().getArtifactUUID());\r
778                 toscaCsar.setName(toscaResourceStructure.getToscaArtifact().getArtifactName());\r
779                 toscaCsar.setVersion(toscaResourceStructure.getToscaArtifact().getArtifactVersion());\r
780                 toscaCsar.setDescription(toscaResourceStructure.getToscaArtifact().getArtifactDescription());\r
781                 toscaCsar.setUrl(toscaResourceStructure.getToscaArtifact().getArtifactURL());\r
782                                 \r
783                 toscaResourceStructure.setCatalogToscaCsar(toscaCsar);\r
784         }\r
785         \r
786         private static void createNetworkResource(NodeTemplate networkNodeTemplate, ToscaResourceStructure toscaResourceStructure, TempNetworkHeatTemplateLookup networkHeatTemplateLookup) {\r
787                 NetworkResourceCustomization networkResourceCustomization = new NetworkResourceCustomization();\r
788                 \r
789                 NetworkResource networkResource = new NetworkResource();\r
790                 \r
791                 String providerNetwork = toscaResourceStructure.getSdcCsarHelper().getNodeTemplatePropertyLeafValue(networkNodeTemplate, SdcPropertyNames.PROPERTY_NAME_PROVIDERNETWORK_ISPROVIDERNETWORK);\r
792                 \r
793                 if(providerNetwork != null && providerNetwork.equalsIgnoreCase("true")){\r
794                         networkResource.setNeutronNetworkType("PROVIDER");\r
795                 } else {\r
796                         networkResource.setNeutronNetworkType("BASIC");\r
797                 }\r
798                 \r
799                 networkResource.setModelName(testNull(networkNodeTemplate.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_NAME).trim()));\r
800                 \r
801                 networkResource.setModelInvariantUUID(testNull(networkNodeTemplate.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_INVARIANTUUID)));\r
802                 networkResource.setModelUUID(testNull(networkNodeTemplate.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_UUID)));\r
803                 networkResource.setModelVersion(testNull(networkNodeTemplate.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_VERSION)));\r
804                 \r
805                 networkResource.setAicVersionMax(testNull(networkNodeTemplate.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_MAXINSTANCES)));\r
806                 networkResource.setAicVersionMin(networkHeatTemplateLookup.getAicVersionMin());\r
807                 networkResource.setToscaNodeType(networkNodeTemplate.getType());\r
808                 networkResource.setDescription(testNull(networkNodeTemplate.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_DESCRIPTION)));\r
809                 networkResource.setOrchestrationMode("HEAT");\r
810                 networkResource.setHeatTemplateArtifactUUID(networkHeatTemplateLookup.getHeatTemplateArtifactUuid());\r
811                         \r
812                 toscaResourceStructure.setCatalogNetworkResource(networkResource); \r
813                 \r
814                 networkResourceCustomization.setModelInstanceName(testNull(networkNodeTemplate.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_NAME).trim()));\r
815                 networkResourceCustomization.setModelCustomizationUuid(testNull(networkNodeTemplate.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_CUSTOMIZATIONUUID).trim()));\r
816                 networkResourceCustomization.setNetworkResourceModelUuid(testNull(networkNodeTemplate.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_UUID).trim()));\r
817                 \r
818                                 \r
819                 networkResourceCustomization.setNetworkTechnology(testNull(toscaResourceStructure.getSdcCsarHelper().getNodeTemplatePropertyLeafValue(networkNodeTemplate, SdcPropertyNames.PROPERTY_NAME_NETWORKTECHNOLOGY)).trim());\r
820                 networkResourceCustomization.setNetworkType(testNull(toscaResourceStructure.getSdcCsarHelper().getNodeTemplatePropertyLeafValue(networkNodeTemplate, SdcPropertyNames.PROPERTY_NAME_NETWORKTYPE)).trim());\r
821                 networkResourceCustomization.setNetworkRole(testNull(toscaResourceStructure.getSdcCsarHelper().getNodeTemplatePropertyLeafValue(networkNodeTemplate, SdcPropertyNames.PROPERTY_NAME_NETWORKSCOPE)).trim());\r
822                 networkResourceCustomization.setNetworkScope(testNull(toscaResourceStructure.getSdcCsarHelper().getNodeTemplatePropertyLeafValue(networkNodeTemplate, SdcPropertyNames.PROPERTY_NAME_NETWORKSCOPE)).trim());\r
823                         \r
824                 toscaResourceStructure.setCatalogNetworkResourceCustomization(networkResourceCustomization);\r
825                 \r
826                 ServiceToResourceCustomization serviceToResourceCustomization = new ServiceToResourceCustomization();\r
827                 serviceToResourceCustomization.setServiceModelUUID(toscaResourceStructure.getCatalogService().getModelUUID());\r
828                 serviceToResourceCustomization.setResourceModelCustomizationUUID(testNull(networkNodeTemplate.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_CUSTOMIZATIONUUID).trim()));\r
829                 serviceToResourceCustomization.setModelType("network");\r
830 \r
831                 toscaResourceStructure.setCatalogVlServiceToResourceCustomization(serviceToResourceCustomization);\r
832                 \r
833                 \r
834         }\r
835         \r
836         private static void createVFModule(Group group, NodeTemplate nodeTemplate, ToscaResourceStructure toscaResourceStructure, VfResourceStructure vfResourceStructure, IVfModuleData vfModuleData) {\r
837                 VfModule vfModule = new VfModule();\r
838                 boolean isBase = false;\r
839                 \r
840                 Metadata vfMetadata = group.getMetadata();\r
841                 \r
842                 String vfModuleModelUUID = vfModuleData.getVfModuleModelUUID();\r
843                 \r
844                 \r
845                 if(vfModuleModelUUID != null && vfModuleModelUUID.indexOf(".") > -1){\r
846                         vfModuleModelUUID = vfModuleModelUUID.substring(0, vfModuleModelUUID.indexOf("."));\r
847                 }\r
848                                         \r
849                         \r
850                         for (VfModuleStructure vfModuleStructure : vfResourceStructure.getVfModuleStructure()){\r
851                                 \r
852                                 String vfModelUUID = vfModuleStructure.getVfModuleMetadata().getVfModuleModelUUID();\r
853                                                                                                 \r
854                                 if(vfModelUUID != null && vfModelUUID.equalsIgnoreCase(toscaResourceStructure.getSdcCsarHelper().getMetadataPropertyValue(vfMetadata, SdcPropertyNames.PROPERTY_NAME_VFMODULEMODELUUID))){\r
855                                         \r
856                                         List<String> artifacts = vfModuleStructure.getVfModuleMetadata().getArtifacts();\r
857                                         \r
858                                         for(String artifact: artifacts){\r
859 \r
860                                                 \r
861                                                 for (VfModuleArtifact vfModuleArtifact : vfResourceStructure.getArtifactsMapByUUID().values()) {\r
862                                                         \r
863                                                         \r
864                                                         if(artifact.equals(vfModuleArtifact.getArtifactInfo().getArtifactUUID())){\r
865                                                                 //if(vfModuleArtifact.getArtifactInfo().getArtifactType().equals(ASDCConfiguration.HEAT_ARTIFACT)){\r
866                                                                 if(vfModuleArtifact.getArtifactInfo().getArtifactType().equals(ASDCConfiguration.HEAT)){\r
867                                                                         vfModule.setHeatTemplateArtifactUUId(vfModuleArtifact.getArtifactInfo().getArtifactUUID());\r
868                                                                 }\r
869                                                                 \r
870                                                                 if(vfModuleArtifact.getArtifactInfo().getArtifactType().equals(ASDCConfiguration.HEAT_VOL)){\r
871                                                                         vfModule.setVolHeatTemplateArtifactUUId(vfModuleArtifact.getArtifactInfo().getArtifactUUID());\r
872                                                                         \r
873                                                                 }\r
874                                                         }\r
875                                                         \r
876                                                 }\r
877                                                 \r
878                                                 \r
879                                         }\r
880                                         \r
881         \r
882                                 }\r
883                                 \r
884                                 \r
885                         }\r
886                                                         \r
887                         vfModule.setModelInvariantUuid(testNull(toscaResourceStructure.getSdcCsarHelper().getMetadataPropertyValue(vfMetadata, SdcPropertyNames.PROPERTY_NAME_VFMODULEMODELINVARIANTUUID)));\r
888                         vfModule.setModelName(testNull(toscaResourceStructure.getSdcCsarHelper().getMetadataPropertyValue(vfMetadata, SdcPropertyNames.PROPERTY_NAME_VFMODULEMODELNAME)));\r
889                         vfModule.setModelUUID(testNull(toscaResourceStructure.getSdcCsarHelper().getMetadataPropertyValue(vfMetadata, SdcPropertyNames.PROPERTY_NAME_VFMODULEMODELUUID)));\r
890                         vfModule.setVersion(testNull(toscaResourceStructure.getSdcCsarHelper().getMetadataPropertyValue(vfMetadata, SdcPropertyNames.PROPERTY_NAME_VFMODULEMODELVERSION)));\r
891                         vfModule.setDescription(testNull(toscaResourceStructure.getSdcCsarHelper().getMetadataPropertyValue(vfMetadata, SdcPropertyNames.PROPERTY_NAME_DESCRIPTION)));\r
892                         //vfModule.setHeatTemplateArtifactUUId(toscaResourceStructure.getHeatTemplateUUID());\r
893                         //vfModule.setVolHeatTemplateArtifactUUId(toscaResourceStructure.getVolHeatTemplateUUID());\r
894                                                 \r
895                         vfModule.setVnfResourceModelUUId(toscaResourceStructure.getCatalogVnfResource().getModelUuid());                \r
896                         \r
897                         String vfModuleType = toscaResourceStructure.getSdcCsarHelper().getGroupPropertyLeafValue(group, SdcPropertyNames.PROPERTY_NAME_VFMODULETYPE);\r
898                         if(vfModuleType != null && vfModuleType.equalsIgnoreCase("Base")){\r
899                                 vfModule.setIsBase(1);  \r
900                         }else {\r
901                                 vfModule.setIsBase(0);\r
902                         }\r
903                         \r
904 \r
905                         VfModuleCustomization vfModuleCustomization = new VfModuleCustomization();\r
906                         vfModuleCustomization.setModelCustomizationUuid(vfModuleData.getVfModuleModelCustomizationUUID());\r
907                 \r
908                         \r
909                         vfModuleCustomization.setVfModuleModelUuid(toscaResourceStructure.getSdcCsarHelper().getMetadataPropertyValue(vfMetadata,SdcPropertyNames.PROPERTY_NAME_VFMODULEMODELUUID));\r
910                         \r
911                         vfModuleCustomization.setHeatEnvironmentArtifactUuid(toscaResourceStructure.getEnvHeatTemplateUUID());\r
912                         \r
913 \r
914                         vfModuleCustomization.setVolEnvironmentArtifactUuid(toscaResourceStructure.getVolHeatEnvTemplateUUID());\r
915                         \r
916                         String initialCount = toscaResourceStructure.getSdcCsarHelper().getGroupPropertyLeafValue(group, SdcPropertyNames.PROPERTY_NAME_INITIALCOUNT);\r
917                         if(initialCount != null && initialCount.length() > 0){\r
918                                 vfModuleCustomization.setInitialCount(Integer.valueOf(initialCount));\r
919                         }\r
920                 \r
921                         vfModuleCustomization.setInitialCount(Integer.valueOf(toscaResourceStructure.getSdcCsarHelper().getGroupPropertyLeafValue(group, SdcPropertyNames.PROPERTY_NAME_INITIALCOUNT)));\r
922                         \r
923                         String availabilityZoneCount = toscaResourceStructure.getSdcCsarHelper().getGroupPropertyLeafValue(group, SdcPropertyNames.PROPERTY_NAME_AVAILABILITYZONECOUNT);\r
924                         if(availabilityZoneCount != null && availabilityZoneCount.length() > 0){\r
925                                 vfModuleCustomization.setAvailabilityZoneCount(Integer.valueOf(availabilityZoneCount));\r
926                         }\r
927                         \r
928 \r
929                         vfModuleCustomization.setLabel(toscaResourceStructure.getSdcCsarHelper().getGroupPropertyLeafValue(group, SdcPropertyNames.PROPERTY_NAME_VFMODULELABEL));\r
930                         \r
931                         String maxInstances = toscaResourceStructure.getSdcCsarHelper().getGroupPropertyLeafValue(group, SdcPropertyNames.PROPERTY_NAME_MAXVFMODULEINSTANCES);\r
932                         if(maxInstances != null && maxInstances.length() > 0){\r
933                                 vfModuleCustomization.setMaxInstances(Integer.valueOf(maxInstances));\r
934                         }\r
935                         \r
936                         String minInstances = toscaResourceStructure.getSdcCsarHelper().getGroupPropertyLeafValue(group, SdcPropertyNames.PROPERTY_NAME_MINVFMODULEINSTANCES);\r
937                         if(minInstances != null && minInstances.length() > 0){\r
938                                 vfModuleCustomization.setMinInstances(Integer.valueOf(minInstances));\r
939                         }\r
940         \r
941                         toscaResourceStructure.setCatalogVfModule(vfModule); \r
942                 \r
943                         toscaResourceStructure.setCatalogVfModuleCustomization(vfModuleCustomization);\r
944                         \r
945         }\r
946         \r
947         private static void createVnfResourceToVfModuleCustomization(VnfResourceCustomization vnfResourceCustomization, \r
948                                                                              VfModuleCustomization vfModuleCustomization, \r
949                                                                              ToscaResourceStructure toscaResourceStructure) {\r
950                 \r
951                 VnfResCustomToVfModuleCustom vnfResCustomToVfModuleCustom = new VnfResCustomToVfModuleCustom();\r
952                 \r
953                 vnfResCustomToVfModuleCustom.setVfModuleCustModelCustomizationUuid(vfModuleCustomization.getModelCustomizationUuid());\r
954                 vnfResCustomToVfModuleCustom.setVnfResourceCustModelCustomizationUuid(vnfResourceCustomization.getModelCustomizationUuid());\r
955                 \r
956                 toscaResourceStructure.setCatalogVnfResCustomToVfModuleCustom(vnfResCustomToVfModuleCustom);\r
957                 \r
958 \r
959                         \r
960         }\r
961         \r
962         \r
963         private static void createTempNetworkHeatTemplateLookup(NetworkResource networkResource, \r
964             VfModule vfModule, \r
965             ToscaResourceStructure toscaResourceStructure) {\r
966                 \r
967                         TempNetworkHeatTemplateLookup tempNetworkHeatTemplateLookup = new TempNetworkHeatTemplateLookup();\r
968 \r
969                         tempNetworkHeatTemplateLookup.setNetworkResourceModelName(networkResource.getModelName());\r
970                         tempNetworkHeatTemplateLookup.setHeatTemplateArtifactUuid(vfModule.getHeatTemplateArtifactUUId());\r
971                         tempNetworkHeatTemplateLookup.setAicVersionMin("1");\r
972 \r
973                         toscaResourceStructure.setCatalogTempNetworkHeatTemplateLookup(tempNetworkHeatTemplateLookup);\r
974 \r
975 \r
976 \r
977         }\r
978         \r
979         private static void createVnfResource(NodeTemplate vfNodeTemplate, ToscaResourceStructure toscaResourceStructure) {\r
980                 VnfResource vnfResource = new VnfResource();\r
981                 \r
982                 \r
983                 //toscaResourceStructure.getSdcCsarHelper().getNodeTemplatePropertyLeafValue(nodeTemplate, SdcPropertyNames.PROPERTY_NAME_AVAILABILITYZONECOUNT)\r
984                 \r
985                 vnfResource.setModelInvariantUuid(testNull(vfNodeTemplate.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_INVARIANTUUID).trim()));\r
986                 vnfResource.setModelName(testNull(vfNodeTemplate.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_NAME).trim()));\r
987                 vnfResource.setModelUuid(testNull(vfNodeTemplate.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_UUID).trim()));\r
988 \r
989                 vnfResource.setVersion(testNull(vfNodeTemplate.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_VERSION).trim()));\r
990                 vnfResource.setDescription(testNull(vfNodeTemplate.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_DESCRIPTION).trim()));\r
991                 vnfResource.setOrchestrationMode("HEAT");\r
992                 vnfResource.setToscaNodeType(testNull(vfNodeTemplate.getType()));\r
993                 vnfResource.setAicVersionMax(testNull(vfNodeTemplate.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_MAXINSTANCES).trim()));\r
994                 vnfResource.setAicVersionMin(testNull(vfNodeTemplate.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_MININSTANCES).trim()));\r
995                 //vnfResource.setHeatTemplateArtifactUUId(toscaResourceStructure.getHeatTemplateUUID());\r
996                 \r
997         //      vfNodeTemplate.getProperties()\r
998                 toscaResourceStructure.setCatalogVnfResource(vnfResource); \r
999                 \r
1000                 VnfResourceCustomization vnfResourceCustomization = new VnfResourceCustomization();\r
1001                 vnfResourceCustomization.setModelCustomizationUuid(testNull(vfNodeTemplate.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_CUSTOMIZATIONUUID).trim()));\r
1002                 vnfResourceCustomization.setModelInstanceName(vfNodeTemplate.getName());\r
1003                 \r
1004                 vnfResourceCustomization.setNfFunction(testNull(toscaResourceStructure.getSdcCsarHelper().getNodeTemplatePropertyLeafValue(vfNodeTemplate, SdcPropertyNames.PROPERTY_NAME_NFFUNCTION)).trim());\r
1005                 vnfResourceCustomization.setNfNamingCode(testNull(toscaResourceStructure.getSdcCsarHelper().getNodeTemplatePropertyLeafValue(vfNodeTemplate, SdcPropertyNames.PROPERTY_NAME_NFCODE)).trim());\r
1006                 vnfResourceCustomization.setNfRole(testNull(toscaResourceStructure.getSdcCsarHelper().getNodeTemplatePropertyLeafValue(vfNodeTemplate, SdcPropertyNames.PROPERTY_NAME_NFROLE)).trim());\r
1007                 vnfResourceCustomization.setNfType(testNull(toscaResourceStructure.getSdcCsarHelper().getNodeTemplatePropertyLeafValue(vfNodeTemplate, SdcPropertyNames.PROPERTY_NAME_NFTYPE)).trim());\r
1008                 \r
1009                 \r
1010                 vnfResourceCustomization.setVnfResourceModelUuid(testNull(vfNodeTemplate.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_UUID).trim()));\r
1011                 vnfResourceCustomization.setAvailabilityZoneMaxCount(Integer.getInteger(vfNodeTemplate.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_AVAILABILITYZONECOUNT).trim()));\r
1012 \r
1013                 vnfResourceCustomization.setMaxInstances(Integer.getInteger(vfNodeTemplate.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_MAXINSTANCES).trim()));\r
1014                 vnfResourceCustomization.setMinInstances(Integer.getInteger(vfNodeTemplate.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_MININSTANCES).trim()));\r
1015 \r
1016 \r
1017                 \r
1018                 toscaResourceStructure.setCatalogVnfResourceCustomization(vnfResourceCustomization);\r
1019                 \r
1020                 \r
1021                 ServiceToResourceCustomization serviceToResourceCustomization = new ServiceToResourceCustomization();\r
1022                 serviceToResourceCustomization.setServiceModelUUID(toscaResourceStructure.getCatalogService().getModelUUID());\r
1023                 serviceToResourceCustomization.setResourceModelCustomizationUUID(vfNodeTemplate.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_CUSTOMIZATIONUUID).trim());\r
1024                 serviceToResourceCustomization.setModelType("vnf");\r
1025 \r
1026                 toscaResourceStructure.setCatalogVfServiceToResourceCustomization(serviceToResourceCustomization);\r
1027                 \r
1028                 \r
1029         }\r
1030                 \r
1031         private static void createAllottedResource(NodeTemplate nodeTemplate, ToscaResourceStructure toscaResourceStructure) {\r
1032                 AllottedResource allottedResource = new AllottedResource();\r
1033                 \r
1034                 allottedResource.setModelUuid(testNull(nodeTemplate.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_UUID).trim()));\r
1035                 allottedResource.setModelInvariantUuid(testNull(nodeTemplate.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_INVARIANTUUID).trim()));\r
1036                 allottedResource.setModelName(testNull(nodeTemplate.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_NAME).trim()));\r
1037                 allottedResource.setModelVersion(testNull(nodeTemplate.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_VERSION).trim()));\r
1038                 allottedResource.setToscaNodeType(testNull(nodeTemplate.getType()));\r
1039                 \r
1040                 toscaResourceStructure.setAllottedResource(allottedResource);\r
1041                 \r
1042                 AllottedResourceCustomization allottedResourceCustomization = new AllottedResourceCustomization();\r
1043                 allottedResourceCustomization.setModelCustomizationUuid(testNull(nodeTemplate.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_CUSTOMIZATIONUUID).trim()));\r
1044                 allottedResourceCustomization.setModelInstanceName(nodeTemplate.getName());\r
1045                 allottedResourceCustomization.setArModelUuid(testNull(nodeTemplate.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_UUID).trim()));\r
1046                 \r
1047                 allottedResourceCustomization.setNfFunction(testNull(toscaResourceStructure.getSdcCsarHelper().getNodeTemplatePropertyLeafValue(nodeTemplate, SdcPropertyNames.PROPERTY_NAME_NFFUNCTION)).trim());\r
1048                 allottedResourceCustomization.setNfNamingCode(testNull(toscaResourceStructure.getSdcCsarHelper().getNodeTemplatePropertyLeafValue(nodeTemplate, SdcPropertyNames.PROPERTY_NAME_NFCODE)).trim());\r
1049                 allottedResourceCustomization.setNfRole(testNull(toscaResourceStructure.getSdcCsarHelper().getNodeTemplatePropertyLeafValue(nodeTemplate, SdcPropertyNames.PROPERTY_NAME_NFROLE)).trim());\r
1050                 allottedResourceCustomization.setNfType(testNull(toscaResourceStructure.getSdcCsarHelper().getNodeTemplatePropertyLeafValue(nodeTemplate, SdcPropertyNames.PROPERTY_NAME_NFTYPE)).trim());\r
1051                 \r
1052                 toscaResourceStructure.setCatalogAllottedResourceCustomization(allottedResourceCustomization);\r
1053                 \r
1054                 ServiceToResourceCustomization serviceToResourceCustomization = new ServiceToResourceCustomization();\r
1055                 serviceToResourceCustomization.setServiceModelUUID(toscaResourceStructure.getCatalogService().getModelUUID());\r
1056                 serviceToResourceCustomization.setResourceModelCustomizationUUID(testNull(nodeTemplate.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_CUSTOMIZATIONUUID).trim()));\r
1057                 serviceToResourceCustomization.setModelType("allottedResource");\r
1058 \r
1059                 toscaResourceStructure.setCatalogAllottedServiceToResourceCustomization(serviceToResourceCustomization);\r
1060                 \r
1061         }\r
1062         \r
1063         private static Set<HeatTemplateParam> extractHeatTemplateParameters(String yamlFile, String artifactUUID) {\r
1064 \r
1065                 // Scan the payload downloadResult and extract the HeatTemplate\r
1066                 // parameters\r
1067                 YamlEditor yamlEditor = new YamlEditor(yamlFile.getBytes());\r
1068                 return yamlEditor.getParameterList(artifactUUID);\r
1069 \r
1070         }\r
1071         \r
1072         private static String identifyParentOfNestedTemplate(VfModuleStructure vfModuleStructure,VfModuleArtifact heatNestedArtifact) {\r
1073 \r
1074                 if (vfModuleStructure.getArtifactsMap().get(ASDCConfiguration.HEAT) != null \r
1075                                 && vfModuleStructure.getArtifactsMap().get(ASDCConfiguration.HEAT).get(0).getArtifactInfo().getRelatedArtifacts() != null) {\r
1076                         for (IArtifactInfo unknownArtifact : vfModuleStructure.getArtifactsMap().get(ASDCConfiguration.HEAT).get(0)\r
1077                                         .getArtifactInfo().getRelatedArtifacts()) {\r
1078                                 if (heatNestedArtifact.getArtifactInfo().getArtifactUUID().equals(unknownArtifact.getArtifactUUID())) {\r
1079                                         return ASDCConfiguration.HEAT;\r
1080                                 }\r
1081 \r
1082                         }\r
1083                 } \r
1084                 \r
1085                 if (vfModuleStructure.getArtifactsMap().get(ASDCConfiguration.HEAT_VOL) != null \r
1086                                 && vfModuleStructure.getArtifactsMap().get(ASDCConfiguration.HEAT_VOL).get(0).getArtifactInfo().getRelatedArtifacts() != null) {\r
1087                         for (IArtifactInfo unknownArtifact:vfModuleStructure.getArtifactsMap().get(ASDCConfiguration.HEAT_VOL).get(0).getArtifactInfo().getRelatedArtifacts()) {\r
1088                                 if (heatNestedArtifact.getArtifactInfo().getArtifactUUID().equals(unknownArtifact.getArtifactUUID())) {\r
1089                                         return ASDCConfiguration.HEAT_VOL;\r
1090                                 }\r
1091                         \r
1092                         }\r
1093                 }\r
1094                 \r
1095                 // Does not belong to anything\r
1096                 return null;\r
1097                         \r
1098         }\r
1099         \r
1100         private static String testNull(Object object) {\r
1101                 if (object == null) {\r
1102                         return "";\r
1103                 } else if (object.equals("null")) {\r
1104                         return null;\r
1105                 }else if (object instanceof Integer) {\r
1106                         return object.toString();\r
1107                 } else if (object instanceof String) {\r
1108                         return (String)object;\r
1109                 } else {\r
1110                         return "Type not recognized";\r
1111                 }\r
1112         }\r
1113                 \r
1114         private static String createVNFName(VfResourceStructure vfResourceStructure) {\r
1115 \r
1116                 return vfResourceStructure.getNotification().getServiceName() + "/" + vfResourceStructure.getResourceInstance().getResourceInstanceName();\r
1117         }\r
1118 \r
1119         private static String createVfModuleName(VfModuleStructure vfModuleStructure) {\r
1120                 \r
1121                 return createVNFName(vfModuleStructure.getParentVfResource())+"::"+vfModuleStructure.getVfModuleMetadata().getVfModuleModelName();\r
1122         }\r
1123         \r
1124         \r
1125         private static Timestamp getCurrentTimeStamp() {\r
1126                 \r
1127                 return new Timestamp(new Date().getTime());\r
1128         }\r
1129 \r
1130 }