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);