3e3c8e28613687f774fea9e47087b5e9b3d1da9e
[ccsdk/apps.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.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 BluePrintEnhancerService bluePrintEnhancerService;\r
47     private ResourceAssignmentValidationService resourceAssignmentValidationService;\r
48 \r
49     /**\r
50      * This is a SchemaGeneratorService constructor\r
51      *\r
52      * @param dataDictionaryRepository            dataDictionaryRepository\r
53      * @param configModelCreateService            configModelCreateService\r
54      * @param bluePrintEnhancerService            bluePrintEnhancerService\r
55      * @param resourceAssignmentValidationService resourceAssignmentValidationService\r
56      */\r
57     public ServiceTemplateService(ResourceDictionaryRepository dataDictionaryRepository,\r
58                                   ConfigModelCreateService configModelCreateService,\r
59                                   BluePrintEnhancerService bluePrintEnhancerService,\r
60                                   ResourceAssignmentValidationService resourceAssignmentValidationService) {\r
61         this.dataDictionaryRepository = dataDictionaryRepository;\r
62         this.configModelCreateService = configModelCreateService;\r
63         this.bluePrintEnhancerService = bluePrintEnhancerService;\r
64         this.resourceAssignmentValidationService = resourceAssignmentValidationService;\r
65     }\r
66 \r
67     /**\r
68      * This is a validateServiceTemplate method\r
69      *\r
70      * @param serviceTemplate serviceTemplate\r
71      * @return ServiceTemplate\r
72      * @throws BluePrintException BluePrintException\r
73      */\r
74     public ServiceTemplate validateServiceTemplate(ServiceTemplate serviceTemplate) throws BluePrintException {\r
75         return this.configModelCreateService.validateServiceTemplate(serviceTemplate);\r
76     }\r
77 \r
78     /**\r
79      * This is a enrichServiceTemplate method\r
80      *\r
81      * @param serviceTemplate serviceTemplate\r
82      * @return ServiceTemplate\r
83      */\r
84     public ServiceTemplate enrichServiceTemplate(ServiceTemplate serviceTemplate) {\r
85         this.bluePrintEnhancerService.enhance(serviceTemplate);\r
86         return serviceTemplate;\r
87     }\r
88 \r
89     /**\r
90      * This is a autoMap method to map the template keys\r
91      *\r
92      * @param resourceAssignments resourceAssignments\r
93      * @return AutoMapResponse\r
94      * @throws BluePrintException BluePrintException\r
95      */\r
96     public AutoMapResponse autoMap(List<ResourceAssignment> resourceAssignments) throws BluePrintException {\r
97         AutoResourceMappingService autoMappingService = new AutoResourceMappingService(dataDictionaryRepository);\r
98         return autoMappingService.autoMap(resourceAssignments);\r
99     }\r
100 \r
101     /**\r
102      * This is a validateResourceAssignments method\r
103      *\r
104      * @param resourceAssignments resourceAssignments\r
105      * @return List<ResourceAssignment>\r
106      * @throws BluePrintException BluePrintException\r
107      */\r
108     public List<ResourceAssignment> validateResourceAssignments(List<ResourceAssignment> resourceAssignments)\r
109             throws BluePrintException {\r
110         resourceAssignmentValidationService.validate(resourceAssignments);\r
111         return resourceAssignments;\r
112     }\r
113 \r
114     /**\r
115      * This is a generateResourceAssignments method\r
116      *\r
117      * @param templateContent templateContent\r
118      * @return List<ResourceAssignment>\r
119      */\r
120     public List<ResourceAssignment> generateResourceAssignments(ConfigModelContent templateContent) {\r
121         List<ResourceAssignment> resourceAssignments = new ArrayList<>();\r
122         if (templateContent != null && StringUtils.isNotBlank(templateContent.getContent())) {\r
123             Pattern p = Pattern.compile("(?<=\\$\\{)([^\\}]+)(?=\\})");\r
124             Matcher m = p.matcher(templateContent.getContent());\r
125             while (m.find()) {\r
126                 ResourceAssignment resourceAssignment = new ResourceAssignment();\r
127                 resourceAssignment.setName(m.group());\r
128                 resourceAssignments.add(resourceAssignment);\r
129             }\r
130         }\r
131         return resourceAssignments;\r
132     }\r
133 \r
134 }\r