2 * ============LICENSE_START=======================================================
4 * ================================================================================
5 * Copyright 2019 China Mobile
6 *=================================================================================
7 * Licensed under the Apache License, Version 2.0 (the "License");
8 * you may not use this file except in compliance with the License.
9 * You may obtain a copy of the License at
11 * http://www.apache.org/licenses/LICENSE-2.0
13 * Unless required by applicable law or agreed to in writing, software
14 * distributed under the License is distributed on an "AS IS" BASIS,
15 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 * See the License for the specific language governing permissions and
17 * limitations under the License.
18 * ============LICENSE_END=========================================================
21 package org.onap.datalake.feeder.controller;
23 import org.onap.datalake.feeder.controller.domain.PostReturnBody;
24 import org.onap.datalake.feeder.domain.PortalDesign;
25 import org.onap.datalake.feeder.dto.PortalDesignConfig;
26 import org.onap.datalake.feeder.repository.PortalDesignRepository;
27 import org.onap.datalake.feeder.service.PortalDesignService;
28 import org.slf4j.Logger;
29 import org.slf4j.LoggerFactory;
30 import org.springframework.beans.factory.annotation.Autowired;
31 import org.springframework.http.MediaType;
32 import org.springframework.validation.BindingResult;
33 import org.springframework.web.bind.annotation.*;
35 import io.swagger.annotations.ApiOperation;
37 import java.io.IOException;
38 import java.util.List;
40 import javax.servlet.http.HttpServletResponse;
44 * This controller manages portalDesign settings
49 @RequestMapping(value = "/portalDesigns", produces = MediaType.APPLICATION_JSON_VALUE)
50 public class PortalDesignController {
52 private final Logger log = LoggerFactory.getLogger(this.getClass());
55 private PortalDesignRepository portalDesignRepository;
58 private PortalDesignService portalDesignService;
62 @ApiOperation(value="Create a portalDesign.")
63 public PostReturnBody<PortalDesignConfig> createPortalDesign(@RequestBody PortalDesignConfig portalDesignConfig, BindingResult result, HttpServletResponse response) throws IOException {
65 if (result.hasErrors()) {
66 sendError(response, 400, "Error parsing PortalDesignConfig: "+result.toString());
70 PortalDesign portalDesign = null;
72 portalDesign = portalDesignService.fillPortalDesignConfiguration(portalDesignConfig);
73 } catch (Exception e) {
74 log.debug("FillPortalDesignConfiguration failed", e.getMessage());
75 sendError(response, 400, "Error FillPortalDesignConfiguration: "+e.getMessage());
78 portalDesignRepository.save(portalDesign);
79 log.info("PortalDesign save successed");
80 return mkPostReturnBody(200, portalDesign);
86 @ApiOperation(value="Update a portalDesign.")
87 public PostReturnBody<PortalDesignConfig> updatePortalDesign(@RequestBody PortalDesignConfig portalDesignConfig, BindingResult result, @PathVariable Integer id, HttpServletResponse response) throws IOException {
89 if (result.hasErrors()) {
90 sendError(response, 400, "Error parsing PortalDesignConfig: "+result.toString());
94 PortalDesign portalDesign = portalDesignService.getPortalDesign(id);
95 if (portalDesign != null) {
97 portalDesignService.fillPortalDesignConfiguration(portalDesignConfig, portalDesign);
98 } catch (Exception e) {
99 log.debug("FillPortalDesignConfiguration failed", e.getMessage());
100 sendError(response, 400, "Error FillPortalDesignConfiguration: "+e.getMessage());
103 portalDesignRepository.save(portalDesign);
104 log.info("PortalDesign update successed");
105 return mkPostReturnBody(200, portalDesign);
107 sendError(response, 400, "PortalDesign not found: "+id);
114 @DeleteMapping("/{id}")
116 @ApiOperation(value="delete a portalDesign.")
117 public void deletePortalDesign(@PathVariable("id") Integer id, HttpServletResponse response) throws IOException{
119 PortalDesign oldPortalDesign= portalDesignService.getPortalDesign(id);
120 if (oldPortalDesign == null) {
121 sendError(response, 400, "portalDesign not found "+id);
123 portalDesignRepository.delete(oldPortalDesign);
124 response.setStatus(204);
131 @ApiOperation(value="List all PortalDesigns")
132 public List<PortalDesignConfig> queryAllPortalDesign(){
133 return portalDesignService.queryAllPortalDesign();
137 @PostMapping("/deploy/{id}")
139 @ApiOperation(value="PortalDesign deploy")
140 public void deployPortalDesign(@PathVariable Integer id, HttpServletResponse response) throws IOException {
142 PortalDesign portalDesign = null;
144 portalDesign = portalDesignRepository.findById(id).get();
147 flag = portalDesignService.deploy(portalDesign);
149 portalDesign.setSubmitted(true);
150 portalDesignRepository.save(portalDesign);
151 response.setStatus(204);
153 sendError(response, 400, "DeployPortalDesign failed, id: "+id);
155 } catch (Exception e) {
156 log.debug("The request failed", e.getMessage());
157 sendError(response, 400, "The request failed : "+e.getMessage());
159 } catch (Exception e) {
160 log.debug("PortalDesign is null", e.getMessage());
161 sendError(response, 400, "PortalDesign not found, id: "+id);
167 private PostReturnBody<PortalDesignConfig> mkPostReturnBody(int statusCode, PortalDesign portalDesign) {
168 PostReturnBody<PortalDesignConfig> retBody = new PostReturnBody<>();
169 retBody.setStatusCode(statusCode);
170 retBody.setReturnBody(portalDesign.getPortalDesignConfig());
174 private void sendError(HttpServletResponse response, int sc, String msg) throws IOException {
176 response.sendError(sc, msg);