Controller Blueprints MS
[ccsdk/cds.git] / ms / controllerblueprints / modules / service / src / main / java / org / onap / ccsdk / apps / controllerblueprints / service / ServiceTemplateService.java
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.resource.dict.validator.ResourceAssignmentValidator;\r
24 import org.onap.ccsdk.apps.controllerblueprints.service.domain.ConfigModelContent;\r
25 import org.onap.ccsdk.apps.controllerblueprints.service.model.AutoMapResponse;\r
26 import org.onap.ccsdk.apps.controllerblueprints.service.repository.ResourceDictionaryRepository;\r
27 import org.springframework.stereotype.Service;\r
28 \r
29 import java.util.ArrayList;\r
30 import java.util.List;\r
31 import java.util.regex.Matcher;\r
32 import java.util.regex.Pattern;\r
33 \r
34 /**\r
35  * ServiceTemplateService.java Purpose: Provide Service Template Create Service processing ServiceTemplateService\r
36  *\r
37  * @author Brinda Santh\r
38  * @version 1.0\r
39  */\r
40 \r
41 @Service\r
42 public class ServiceTemplateService {\r
43 \r
44     private ResourceDictionaryRepository dataDictionaryRepository;\r
45 \r
46     private ConfigModelCreateService configModelCreateService;\r
47     private BluePrintEnhancerService bluePrintEnhancerService;\r
48 \r
49     /**\r
50      * This is a SchemaGeneratorService constructor\r
51      *\r
52      * @param dataDictionaryRepository\r
53      * @param configModelCreateService\r
54      * @param bluePrintEnhancerService\r
55      */\r
56     public ServiceTemplateService(ResourceDictionaryRepository dataDictionaryRepository,\r
57                                   ConfigModelCreateService configModelCreateService,\r
58                                   BluePrintEnhancerService bluePrintEnhancerService) {\r
59         this.dataDictionaryRepository = dataDictionaryRepository;\r
60         this.configModelCreateService = configModelCreateService;\r
61         this.bluePrintEnhancerService = bluePrintEnhancerService;\r
62 \r
63     }\r
64 \r
65     /**\r
66      * This is a validateServiceTemplate method\r
67      *\r
68      * @param serviceTemplate\r
69      * @return ServiceTemplate\r
70      * @throws BluePrintException\r
71      */\r
72     public ServiceTemplate validateServiceTemplate(ServiceTemplate serviceTemplate) throws BluePrintException {\r
73         return this.configModelCreateService.validateServiceTemplate(serviceTemplate);\r
74     }\r
75 \r
76     /**\r
77      * This is a enrichServiceTemplate method\r
78      *\r
79      * @param serviceTemplate\r
80      * @return ServiceTemplate\r
81      * @throws BluePrintException\r
82      */\r
83     public ServiceTemplate enrichServiceTemplate(ServiceTemplate serviceTemplate) throws BluePrintException {\r
84         this.bluePrintEnhancerService.enhance(serviceTemplate);\r
85         return serviceTemplate;\r
86     }\r
87 \r
88     /**\r
89      * This is a autoMap method to map the template keys\r
90      *\r
91      * @param resourceAssignments\r
92      * @return AutoMapResponse\r
93      * @throws BluePrintException\r
94      */\r
95     public AutoMapResponse autoMap(List<ResourceAssignment> resourceAssignments) throws BluePrintException {\r
96         AutoResourceMappingService autoMappingService = new AutoResourceMappingService(dataDictionaryRepository);\r
97         AutoMapResponse autoMapResponse = autoMappingService.autoMap(resourceAssignments);\r
98         return autoMapResponse;\r
99     }\r
100 \r
101     /**\r
102      * This is a validateResourceAssignments method\r
103      *\r
104      * @param resourceAssignments\r
105      * @return List<ResourceAssignment>\r
106      * @throws BluePrintException\r
107      */\r
108     public List<ResourceAssignment> validateResourceAssignments(List<ResourceAssignment> resourceAssignments)\r
109             throws BluePrintException {\r
110         try {\r
111             ResourceAssignmentValidator resourceAssignmentValidator =\r
112                     new ResourceAssignmentValidator(resourceAssignments);\r
113             resourceAssignmentValidator.validateResourceAssignment();\r
114         } catch (BluePrintException e) {\r
115             throw new BluePrintException(e.getMessage(), e);\r
116         }\r
117         return resourceAssignments;\r
118     }\r
119 \r
120     /**\r
121      * This is a generateResourceAssignments method\r
122      *\r
123      * @param templateContent\r
124      * @return List<ResourceAssignment>\r
125      */\r
126     public List<ResourceAssignment> generateResourceAssignments(ConfigModelContent templateContent) {\r
127         List<ResourceAssignment> resourceAssignments = new ArrayList<>();\r
128         if (templateContent != null && StringUtils.isNotBlank(templateContent.getContent())) {\r
129             Pattern p = Pattern.compile("(?<=\\$\\{)([^\\}]+)(?=\\})");\r
130             Matcher m = p.matcher(templateContent.getContent());\r
131             while (m.find()) {\r
132                 ResourceAssignment resourceAssignment = new ResourceAssignment();\r
133                 resourceAssignment.setName(m.group());\r
134                 resourceAssignments.add(resourceAssignment);\r
135             }\r
136         }\r
137         return resourceAssignments;\r
138     }\r
139 \r
140 }\r