57096c7fddc89b299f0ecf1274cb16a909ec703c
[ccsdk/cds.git] /
1 /*\r
2  * Copyright © 2017-2018 AT&T Intellectual Property.\r
3  *\r
4  * Licensed under the Apache License, Version 2.0 (the "License");\r
5  * you may not use this file except in compliance with the License.\r
6  * You may obtain a copy of the License at\r
7  *\r
8  *     http://www.apache.org/licenses/LICENSE-2.0\r
9  *\r
10  * Unless required by applicable law or agreed to in writing, software\r
11  * distributed under the License is distributed on an "AS IS" BASIS,\r
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
13  * See the License for the specific language governing permissions and\r
14  * limitations under the License.\r
15  */\r
16 \r
17 package org.onap.ccsdk.apps.controllerblueprints.service;\r
18 \r
19 import org.apache.commons.lang3.StringUtils;\r
20 import org.onap.ccsdk.apps.controllerblueprints.core.BluePrintException;\r
21 import org.onap.ccsdk.apps.controllerblueprints.core.data.ServiceTemplate;\r
22 import org.onap.ccsdk.apps.controllerblueprints.resource.dict.ResourceAssignment;\r
23 import org.onap.ccsdk.apps.controllerblueprints.service.domain.ConfigModelContent;\r
24 import org.onap.ccsdk.apps.controllerblueprints.service.model.AutoMapResponse;\r
25 import org.onap.ccsdk.apps.controllerblueprints.service.repository.ResourceDictionaryRepository;\r
26 import org.springframework.stereotype.Service;\r
27 \r
28 import java.util.ArrayList;\r
29 import java.util.List;\r
30 import java.util.regex.Matcher;\r
31 import java.util.regex.Pattern;\r
32 \r
33 /**\r
34  * ServiceTemplateService.java Purpose: Provide Service Template Create Service processing ServiceTemplateService\r
35  *\r
36  * @author Brinda Santh\r
37  * @version 1.0\r
38  */\r
39 \r
40 @Service\r
41 public class ServiceTemplateService {\r
42 \r
43     private ResourceDictionaryRepository dataDictionaryRepository;\r
44 \r
45     private ConfigModelCreateService configModelCreateService;\r
46     private ResourceAssignmentValidationService resourceAssignmentValidationService;\r
47 \r
48     /**\r
49      * This is a SchemaGeneratorService constructor\r
50      *\r
51      * @param dataDictionaryRepository            dataDictionaryRepository\r
52      * @param configModelCreateService            configModelCreateService\r
53      * @param resourceAssignmentValidationService resourceAssignmentValidationService\r
54      */\r
55     public ServiceTemplateService(ResourceDictionaryRepository dataDictionaryRepository,\r
56                                   ConfigModelCreateService configModelCreateService,\r
57                                   ResourceAssignmentValidationService resourceAssignmentValidationService) {\r
58         this.dataDictionaryRepository = dataDictionaryRepository;\r
59         this.configModelCreateService = configModelCreateService;\r
60         this.resourceAssignmentValidationService = resourceAssignmentValidationService;\r
61     }\r
62 \r
63     /**\r
64      * This is a validateServiceTemplate method\r
65      *\r
66      * @param serviceTemplate serviceTemplate\r
67      * @return ServiceTemplate\r
68      * @throws BluePrintException BluePrintException\r
69      */\r
70     public ServiceTemplate validateServiceTemplate(ServiceTemplate serviceTemplate) throws BluePrintException {\r
71         return this.configModelCreateService.validateServiceTemplate(serviceTemplate);\r
72     }\r
73 \r
74     /**\r
75      * This is a enrichServiceTemplate method\r
76      *\r
77      * @param serviceTemplate serviceTemplate\r
78      * @return ServiceTemplate\r
79      */\r
80     public ServiceTemplate enrichServiceTemplate(ServiceTemplate serviceTemplate) throws BluePrintException {\r
81         //FIXME("Connect New Enrichment service")\r
82         return serviceTemplate;\r
83     }\r
84 \r
85     /**\r
86      * This is a autoMap method to map the template keys\r
87      *\r
88      * @param resourceAssignments resourceAssignments\r
89      * @return AutoMapResponse\r
90      * @throws BluePrintException BluePrintException\r
91      */\r
92     public AutoMapResponse autoMap(List<ResourceAssignment> resourceAssignments) throws BluePrintException {\r
93         AutoResourceMappingService autoMappingService = new AutoResourceMappingService(dataDictionaryRepository);\r
94         return autoMappingService.autoMap(resourceAssignments);\r
95     }\r
96 \r
97     /**\r
98      * This is a validateResourceAssignments method\r
99      *\r
100      * @param resourceAssignments resourceAssignments\r
101      * @return List<ResourceAssignment>\r
102      * @throws BluePrintException BluePrintException\r
103      */\r
104     public List<ResourceAssignment> validateResourceAssignments(List<ResourceAssignment> resourceAssignments)\r
105             throws BluePrintException {\r
106         resourceAssignmentValidationService.validate(resourceAssignments);\r
107         return resourceAssignments;\r
108     }\r
109 \r
110     /**\r
111      * This is a generateResourceAssignments method\r
112      *\r
113      * @param templateContent templateContent\r
114      * @return List<ResourceAssignment>\r
115      */\r
116     public List<ResourceAssignment> generateResourceAssignments(ConfigModelContent templateContent) {\r
117         List<ResourceAssignment> resourceAssignments = new ArrayList<>();\r
118         if (templateContent != null && StringUtils.isNotBlank(templateContent.getContent())) {\r
119             Pattern p = Pattern.compile("(?<=\\$\\{)([^\\}]+)(?=\\})");\r
120             Matcher m = p.matcher(templateContent.getContent());\r
121             while (m.find()) {\r
122                 ResourceAssignment resourceAssignment = new ResourceAssignment();\r
123                 resourceAssignment.setName(m.group());\r
124                 resourceAssignments.add(resourceAssignment);\r
125             }\r
126         }\r
127         return resourceAssignments;\r
128     }\r
129 \r
130 }\r