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