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.ArrayList;
 
  39 import java.util.List;
 
  41 import javax.servlet.http.HttpServletResponse;
 
  45  * This controller manages portalDesign settings
 
  49 @CrossOrigin(origins = "*")
 
  51 @RequestMapping(value = "/portalDesigns", produces = MediaType.APPLICATION_JSON_VALUE)
 
  52 public class PortalDesignController {
 
  54     private final Logger log = LoggerFactory.getLogger(this.getClass());
 
  57     private PortalDesignRepository portalDesignRepository;
 
  60     private PortalDesignService portalDesignService;
 
  64         @ApiOperation(value="Create a portalDesign.")
 
  65     public PostReturnBody<PortalDesignConfig> createPortalDesign(@RequestBody PortalDesignConfig portalDesignConfig, BindingResult result, HttpServletResponse response) throws IOException {
 
  67                 if (result.hasErrors()) {
 
  68                         sendError(response, 400, "Error parsing PortalDesignConfig: "+result.toString());
 
  72                 PortalDesign portalDesign = null;
 
  74                         portalDesign = portalDesignService.fillPortalDesignConfiguration(portalDesignConfig);
 
  75                 } catch (Exception e) {
 
  76                         log.debug("FillPortalDesignConfiguration failed", e.getMessage());
 
  77                         sendError(response, 400, "Error FillPortalDesignConfiguration: "+e.getMessage());
 
  80                 portalDesignRepository.save(portalDesign);
 
  81                 log.info("PortalDesign save successed");
 
  82                 return mkPostReturnBody(200, portalDesign);
 
  88         @ApiOperation(value="Update a portalDesign.")
 
  89         public PostReturnBody<PortalDesignConfig> updatePortalDesign(@RequestBody PortalDesignConfig portalDesignConfig, BindingResult result, @PathVariable Integer id, HttpServletResponse response) throws IOException {
 
  91                 if (result.hasErrors()) {
 
  92                         sendError(response, 400, "Error parsing PortalDesignConfig: "+result.toString());
 
  96                 PortalDesign portalDesign = portalDesignService.getPortalDesign(id);
 
  97                 if (portalDesign != null) {
 
  99                                 portalDesignService.fillPortalDesignConfiguration(portalDesignConfig, portalDesign);
 
 100                         } catch (Exception e) {
 
 101                                 log.debug("FillPortalDesignConfiguration failed", e.getMessage());
 
 102                                 sendError(response, 400, "Error FillPortalDesignConfiguration: "+e.getMessage());
 
 105                         portalDesignRepository.save(portalDesign);
 
 106                         log.info("PortalDesign update successed");
 
 107                         return mkPostReturnBody(200, portalDesign);
 
 109                         sendError(response, 400, "PortalDesign not found: "+id);
 
 116         @DeleteMapping("/{id}")
 
 118         @ApiOperation(value="delete a portalDesign.")
 
 119     public void deletePortalDesign(@PathVariable("id") Integer id, HttpServletResponse response) throws IOException{
 
 121                 PortalDesign oldPortalDesign= portalDesignService.getPortalDesign(id);
 
 122                 if (oldPortalDesign == null) {
 
 123                         sendError(response, 400, "portalDesign not found "+id);
 
 125                         portalDesignRepository.delete(oldPortalDesign);
 
 126                         response.setStatus(204);
 
 133         @ApiOperation(value="List all PortalDesigns")
 
 134     public List<PortalDesignConfig> queryAllPortalDesign(){
 
 136                 List<PortalDesign> portalDesignList = null;
 
 137                 List<PortalDesignConfig> portalDesignConfigList = new ArrayList<>();
 
 138                 portalDesignList = (List<PortalDesign>) portalDesignRepository.findAll();
 
 139                 if (portalDesignList != null && portalDesignList.size() > 0) {
 
 140                         log.info("PortalDesignList is not null");
 
 141                         for (PortalDesign portalDesign : portalDesignList) {
 
 142                                 portalDesignConfigList.add(portalDesign.getPortalDesignConfig());
 
 145                 return portalDesignConfigList;
 
 149         @PostMapping("/deploy/{id}")
 
 151         @ApiOperation(value="PortalDesign deploy")
 
 152         public void deployPortalDesign(@PathVariable Integer id, HttpServletResponse response) throws IOException {
 
 154                 PortalDesign portalDesign = null;
 
 156                         portalDesign = portalDesignRepository.findById(id).get();
 
 157                         if (portalDesign.getDesignType() != null && portalDesign.getDesignType().getName().startsWith("Kibana")) {
 
 158                                 boolean flag = portalDesignService.deployKibanaImport(portalDesign);
 
 160                                         sendError(response, 400, "DeployPortalDesign failed, id: "+id);
 
 162                         } else if (portalDesign.getDesignType() != null && portalDesign.getDesignType().getName().startsWith("Elasticsearch")) {
 
 163                                 //TODO Elasticsearch template import
 
 164                                 sendError(response, 400, "DeployPortalDesign failed, id: "+id);
 
 167                                 sendError(response, 400, "DeployPortalDesign failed, id: "+id);
 
 169                         portalDesign.setSubmitted(true);
 
 170                         portalDesignRepository.save(portalDesign);
 
 171                         response.setStatus(204);
 
 172                 } catch (Exception e) {
 
 173                         log.debug("PortalDesign is null", e.getMessage());
 
 174                         sendError(response, 400, "PortalDesign not found, id: "+id);
 
 180         private PostReturnBody<PortalDesignConfig> mkPostReturnBody(int statusCode, PortalDesign portalDesign) {
 
 181                 PostReturnBody<PortalDesignConfig> retBody = new PostReturnBody<>();
 
 182         retBody.setStatusCode(statusCode);
 
 183         retBody.setReturnBody(portalDesign.getPortalDesignConfig());
 
 187         private void sendError(HttpServletResponse response, int sc, String msg) throws IOException {
 
 189                 response.sendError(sc, msg);