fr.gael.dhus.server.http.webapp.owc.controller.OwcMenuController.java Source code

Java tutorial

Introduction

Here is the source code for fr.gael.dhus.server.http.webapp.owc.controller.OwcMenuController.java

Source

/*
 * 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);
        }

    }

}