/* * Data HUb Service (DHuS) - For Space data distribution. * Copyright (C) 2013,2014,2015,2016 European Space Agency (ESA) * Copyright (C) 2013,2014,2015,2016 GAEL Systems * Copyright (C) 2013,2014,2015,2016 Serco Spa * * This file is part of DHuS software sources. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. */ package fr.gael.dhus.server.http.webapp.owc.controller; import java.io.BufferedReader; import java.io.File; import java.io.FileOutputStream; import java.io.FileReader; import java.io.IOException; import java.io.PrintWriter; import java.net.URL; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.json.JSONException; import org.json.JSONObject; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RestController; import fr.gael.dhus.server.http.webapp.owc.data.MenuData; import fr.gael.dhus.server.http.webapp.owc.data.MenuSectionsData; @RestController public class OwcMenuController { private static Log logger = LogFactory.getLog(OwcMenuController.class); @RequestMapping(value = "/settings/menu", method = RequestMethod.GET) public ResponseEntity<?> getMenu() throws JSONException { URL configFile = ClassLoader.getSystemResource("../etc/conf/menu.json"); if (configFile != null) { logger.debug("Loading configuration file " + configFile.getPath()); try { File file = new File(configFile.getPath()); FileReader fileReader = new FileReader(file); BufferedReader bufferedReader = new BufferedReader(fileReader); String line = ""; StringBuffer sb = new StringBuffer(); while ((line = bufferedReader.readLine()) != null) { sb.append(line); } bufferedReader.close(); JSONObject menu = new JSONObject(sb.toString()); return new ResponseEntity<>(menu.toString(), HttpStatus.OK); } catch (IOException e) { logger.error(" Cannot load menu configration file content"); e.printStackTrace(); return new ResponseEntity<>("{\"code\":\"unauthorized\"}", HttpStatus.UNAUTHORIZED); } } else { logger.error(" Cannot get menu configration file "); return new ResponseEntity<>("{\"code\":\"unauthorized\"}", HttpStatus.UNAUTHORIZED); } } @PreAuthorize("isAuthenticated () AND hasRole('ROLE_DATA_MANAGER')") @RequestMapping(value = "/settings/menu", method = RequestMethod.PUT) public ResponseEntity<?> setMenu(@RequestBody MenuData body) throws JSONException { URL configFile = ClassLoader.getSystemResource("../etc/conf/menu.json"); if (configFile != null && body != null) { logger.debug("Loading configuration file " + configFile.getPath()); try { PrintWriter fileWriter = new PrintWriter(new FileOutputStream( configFile.getPath(), false)); fileWriter.println("{\"sections\":["); for (MenuSectionsData section : body.getSections()) { fileWriter.println("{"); if (section.getTitle() != null && !section.getTitle().isEmpty()) fileWriter.println("\"title\":\"" + section.getTitle() + "\","); if (section.getIcon() != null && !section.getIcon().isEmpty()) fileWriter.println("\"icon\":\"" + section.getIcon() + "\","); if (section.getComponent() != null && !section.getComponent().isEmpty()) fileWriter.println("\"component\":\"" + section.getComponent() + "\","); if (section.getWidth() != null && !section.getWidth().isEmpty()) fileWriter.println("\"width\":\"" + section.getWidth() + "\","); if (section.getRemoteUrl() != null && !section.getRemoteUrl().isEmpty()) fileWriter.println("\"remoteUrl\":\"" + section.getRemoteUrl() + "\""); else fileWriter.println("\"remoteUrl\":\"\""); fileWriter.println("},"); } fileWriter.println("]}"); fileWriter.close(); return new ResponseEntity<>("{\"code\":\"success\"}", HttpStatus.OK); } catch (IOException e) { logger.error(" Cannot write menu configration file "); e.printStackTrace(); return new ResponseEntity<>("{\"code\":\"unauthorized\"}", HttpStatus.UNAUTHORIZED); } } else { logger.error(" Cannot get menu configration file "); return new ResponseEntity<>("{\"code\":\"unauthorized\"}", HttpStatus.UNAUTHORIZED); } } }