70cee3c9e7f97fc300a7fb9acdbbdfee1051e16f
[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.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 dataDictionaryRepository\r
53      * @param configModelCreateService configModelCreateService\r
54      * @param bluePrintEnhancerService 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 serviceTemplate\r
69      * @return ServiceTemplate\r
70      * @throws BluePrintException 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 serviceTemplate\r
80      * @return ServiceTemplate\r
81      */\r
82     public ServiceTemplate enrichServiceTemplate(ServiceTemplate serviceTemplate) {\r
83         this.bluePrintEnhancerService.enhance(serviceTemplate);\r
84         return serviceTemplate;\r
85     }\r
86 \r
87     /**\r
88      * This is a autoMap method to map the template keys\r
89      *\r
90      * @param resourceAssignments resourceAssignments\r
91      * @return AutoMapResponse\r
92      * @throws BluePrintException BluePrintException\r
93      */\r
94     public AutoMapResponse autoMap(List<ResourceAssignment> resourceAssignments) throws BluePrintException {\r
95         AutoResourceMappingService autoMappingService = new AutoResourceMappingService(dataDictionaryRepository);\r
96         return autoMappingService.autoMap(resourceAssignments);\r
97     }\r
98 \r
99     /**\r
100      * This is a validateResourceAssignments method\r
101      *\r
102      * @param resourceAssignments resourceAssignments\r
103      * @return List<ResourceAssignment>\r
104      * @throws BluePrintException BluePrintException\r
105      */\r
106     public List<ResourceAssignment> validateResourceAssignments(List<ResourceAssignment> resourceAssignments)\r
107             throws BluePrintException {\r
108         try {\r
109             ResourceAssignmentValidator resourceAssignmentValidator =\r
110                     new ResourceAssignmentValidator(resourceAssignments);\r
111             resourceAssignmentValidator.validateResourceAssignment();\r
112         } catch (BluePrintException e) {\r
113             throw new BluePrintException(e.getMessage(), e);\r
114         }\r
115         return resourceAssignments;\r
116     }\r
117 \r
118     /**\r
119      * This is a generateResourceAssignments method\r
120      *\r
121      * @param templateContent templateContent\r
122      * @return List<ResourceAssignment>\r
123      */\r
124     public List<ResourceAssignment> generateResourceAssignments(ConfigModelContent templateContent) {\r
125         List<ResourceAssignment> resourceAssignments = new ArrayList<>();\r
126         if (templateContent != null && StringUtils.isNotBlank(templateContent.getContent())) {\r
127             Pattern p = Pattern.compile("(?<=\\$\\{)([^\\}]+)(?=\\})");\r
128             Matcher m = p.matcher(templateContent.getContent());\r
129             while (m.find()) {\r
130                 ResourceAssignment resourceAssignment = new ResourceAssignment();\r
131                 resourceAssignment.setName(m.group());\r
132                 resourceAssignments.add(resourceAssignment);\r
133             }\r
134         }\r
135         return resourceAssignments;\r
136     }\r
137 \r
138 }\r