psiprobe.controllers.DecoratorController.java Source code

Java tutorial

Introduction

Here is the source code for psiprobe.controllers.DecoratorController.java

Source

/**
 * Licensed under the GPL License. You may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *   http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
 *
 * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
 * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
 * PURPOSE.
 */
package psiprobe.controllers;

import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.ParameterizableViewController;

import psiprobe.Utils;

import java.lang.management.ManagementFactory;
import java.net.InetAddress;
import java.net.UnknownHostException;
import java.util.List;
import java.util.Locale;
import java.util.Properties;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * The Class DecoratorController.
 *
 * @author Vlad Ilyushchenko
 */
public class DecoratorController extends ParameterizableViewController {

    /** The messages basename. */
    private String messagesBasename;

    /**
     * Gets the messages basename.
     *
     * @return the messages basename
     */
    public String getMessagesBasename() {
        return messagesBasename;
    }

    /**
     * Sets the messages basename.
     *
     * @param messagesBasename the new messages basename
     */
    public void setMessagesBasename(String messagesBasename) {
        this.messagesBasename = messagesBasename;
    }

    @Override
    protected ModelAndView handleRequestInternal(HttpServletRequest request, HttpServletResponse response)
            throws Exception {

        try {
            request.setAttribute("hostname", InetAddress.getLocalHost().getHostName());
        } catch (UnknownHostException e) {
            request.setAttribute("hostname", "unknown");
            logger.trace("", e);
        }

        Properties version = (Properties) getApplicationContext().getBean("version");
        request.setAttribute("version", version.getProperty("probe.version"));

        long uptimeStartValue = ManagementFactory.getRuntimeMXBean().getStartTime();
        long uptime = System.currentTimeMillis() - uptimeStartValue;
        long uptimeDays = uptime / (1000 * 60 * 60 * 24);

        uptime = uptime % (1000 * 60 * 60 * 24);
        long uptimeHours = uptime / (1000 * 60 * 60);

        uptime = uptime % (1000 * 60 * 60);
        long uptimeMins = uptime / (1000 * 60);

        request.setAttribute("uptime_days", uptimeDays);
        request.setAttribute("uptime_hours", uptimeHours);
        request.setAttribute("uptime_mins", uptimeMins);
        //
        // Work out the language of the interface by matching resource files that we have
        // to the request locale.
        //
        String lang = "en";
        for (String fileName : getMessageFileNamesForLocale(request.getLocale())) {
            if (getServletContext().getResource(fileName + ".properties") != null) {
                lang = fileName.substring(messagesBasename.length() + 1);
                break;
            }
        }

        request.setAttribute("lang", lang);

        return super.handleRequestInternal(request, response);
    }

    /**
     * Gets the message file names for locale.
     *
     * @param locale the locale
     * @return the message file names for locale
     */
    private List<String> getMessageFileNamesForLocale(Locale locale) {
        return Utils.getNamesForLocale(messagesBasename, locale);
    }
}