2 * ============LICENSE_START=======================================================
4 * ================================================================================
5 * Copyright (C) 2017-2018 AT&T Intellectual Property. All rights
7 * ================================================================================
8 * Licensed under the Apache License, Version 2.0 (the "License");
9 * you may not use this file except in compliance with the License.
10 * You may obtain a copy of the License at
12 * http://www.apache.org/licenses/LICENSE-2.0
14 * Unless required by applicable law or agreed to in writing, software
15 * distributed under the License is distributed on an "AS IS" BASIS,
16 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17 * See the License for the specific language governing permissions and
18 * limitations under the License.
19 * ============LICENSE_END============================================
20 * ===================================================================
24 package org.onap.clamp.clds.service;
26 import java.util.Date;
27 import java.util.List;
29 import javax.annotation.PostConstruct;
30 import javax.servlet.http.HttpServletRequest;
32 import org.onap.clamp.clds.dao.CldsDao;
33 import org.onap.clamp.clds.model.CldsTemplate;
34 import org.onap.clamp.clds.model.ValueItem;
35 import org.onap.clamp.clds.util.LoggingUtils;
36 import org.onap.clamp.clds.util.ONAPLogConstants;
37 import org.slf4j.event.Level;
38 import org.springframework.beans.factory.annotation.Autowired;
39 import org.springframework.beans.factory.annotation.Value;
40 import org.springframework.stereotype.Component;
43 * Service to save and retrieve the CLDS model attributes.
46 public class CldsTemplateService extends SecureServiceBase {
48 @Value("${clamp.config.security.permission.type.template:permission-type-template}")
49 private String cldsPermissionTypeTemplate;
50 @Value("${clamp.config.security.permission.instance:dev}")
51 private String cldsPermissionInstance;
52 private SecureServicePermission permissionReadTemplate;
53 private SecureServicePermission permissionUpdateTemplate;
55 private HttpServletRequest request;
58 private final void afterConstruction() {
59 permissionReadTemplate = SecureServicePermission.create(cldsPermissionTypeTemplate, cldsPermissionInstance,
61 permissionUpdateTemplate = SecureServicePermission.create(cldsPermissionTypeTemplate, cldsPermissionInstance,
66 private CldsDao cldsDao;
67 private LoggingUtils util = new LoggingUtils(logger);
70 * REST service that retrieves BPMN for a CLDS template name from the
71 * database. This is subset of the json getModel. This is only expected to
72 * be used for testing purposes, not by the UI.
74 * @param templateName template name
75 * @return bpmn xml text - content of bpmn given name
77 public String getBpmnTemplate(String templateName) {
78 util.entering(request, "CldsTemplateService: GET template bpmn");
79 Date startTime = new Date();
80 isAuthorized(permissionReadTemplate);
81 logger.info("GET bpmnText for templateName=" + templateName);
82 CldsTemplate template = CldsTemplate.retrieve(cldsDao, templateName, false);
84 LoggingUtils.setTimeContext(startTime, new Date());
85 auditLogger.info("GET template bpmn completed");
86 util.exiting("200", "Get template bpmn success", Level.INFO, ONAPLogConstants.ResponseStatus.COMPLETED);
87 return template.getBpmnText();
91 * REST service that retrieves image for a CLDS template name from the
92 * database. This is subset of the json getModel. This is only expected to
93 * be used for testing purposes, not by the UI.
95 * @param templateName template name
96 * @return image xml text - content of image given name
98 public String getImageXml(String templateName) {
99 util.entering(request, "CldsTemplateService: GET template image");
100 Date startTime = new Date();
101 isAuthorized(permissionReadTemplate);
102 logger.info("GET imageText for templateName=" + templateName);
103 CldsTemplate template = CldsTemplate.retrieve(cldsDao, templateName, false);
105 LoggingUtils.setTimeContext(startTime, new Date());
106 auditLogger.info("GET template image completed");
107 util.exiting("200", "Get template image success", Level.INFO, ONAPLogConstants.ResponseStatus.COMPLETED);
108 return template.getImageText();
112 * REST service that retrieves a CLDS template by name from the database.
114 * @param templateName template name
115 * @return clds template - clds template for the given template name
117 public CldsTemplate getTemplate(String templateName) {
118 util.entering(request, "CldsTemplateService: GET template");
119 Date startTime = new Date();
120 isAuthorized(permissionReadTemplate);
121 logger.info("GET model for templateName=" + templateName);
122 CldsTemplate template = CldsTemplate.retrieve(cldsDao, templateName, false);
123 template.setUserAuthorizedToUpdate(isAuthorizedNoException(permissionUpdateTemplate));
125 LoggingUtils.setTimeContext(startTime, new Date());
126 auditLogger.info("GET template completed");
127 util.exiting("200", "Get template success", Level.INFO, ONAPLogConstants.ResponseStatus.COMPLETED);
132 * REST service that saves a CLDS template by name in the database.
134 * @param templateName template name
135 * @param cldsTemplate clds template
136 * @return The CldsTemplate modified and saved in DB
138 public CldsTemplate putTemplate(String templateName, CldsTemplate cldsTemplate) {
139 util.entering(request, "CldsTemplateService: PUT template");
140 Date startTime = new Date();
141 isAuthorized(permissionUpdateTemplate);
142 logger.info("PUT Template for templateName=" + templateName);
143 logger.info("PUT bpmnText=" + cldsTemplate.getBpmnText());
144 logger.info("PUT propText=" + cldsTemplate.getPropText());
145 logger.info("PUT imageText=" + cldsTemplate.getImageText());
146 cldsTemplate.setName(templateName);
147 cldsTemplate.save(cldsDao, null);
149 LoggingUtils.setTimeContext(startTime, new Date());
150 auditLogger.info("PUT template completed");
151 util.exiting("200", "Put template success", Level.INFO, ONAPLogConstants.ResponseStatus.COMPLETED);
156 * REST service that retrieves a list of CLDS template names.
158 * @return template names in JSON
160 public List<ValueItem> getTemplateNames() {
161 util.entering(request, "CldsTemplateService: GET template names");
162 Date startTime = new Date();
163 isAuthorized(permissionReadTemplate);
164 logger.info("GET list of template names");
165 List<ValueItem> names = cldsDao.getTemplateNames();
167 LoggingUtils.setTimeContext(startTime, new Date());
168 auditLogger.info("GET template names completed");
169 util.exiting("200", "Get template names success", Level.INFO, ONAPLogConstants.ResponseStatus.COMPLETED);
173 // Created for the integration test
174 public void setLoggingUtil(LoggingUtils utilP) {