Newer
Older
simple-jdbc-stats / src / nl / astraeus / jdbc / web / page / SettingsOverview.java
package nl.astraeus.jdbc.web.page;

import nl.astraeus.jdbc.Driver;
import nl.astraeus.jdbc.web.model.Settings;
import nl.astraeus.web.page.Message;

/**
 * User: rnentjes
 * Date: 4/17/12
 * Time: 9:19 PM
 */
public class SettingsOverview extends StatsPage {

    @Override
    public void get() {
        set();
    }

    @Override
    public void post() {
        Settings settings = getSettings();

        String nrq = getParameter("queries");
        String pq = getParameter("formattedQueries");
        String rs = getParameter("recordingStacktraces");
        String wsc = getParameter("webServerConnections");
        String wsp = getParameter("webServerPort");
        String pstart = getParameter("packageStart");

        if (wsp != null) {
            try {
                int port = Integer.parseInt(wsp);

                if (port < 1025 || port > 65535) {
                    addMessage(Message.Type.ERROR, "Error!", "Web server port should be a number between 1025 and 65535.");
                } else {
                    settings.setWebServerPort(port);
                }
            } catch (NumberFormatException e) {
                addMessage(Message.Type.ERROR, "Error!", "Web server port should be a number between 1025 and 65535.");
            }
        }

        if (wsc != null) {
            try {
                int nrcon = Integer.parseInt(wsc);

                if (nrcon < 1 || nrcon > 25) {
                    addMessage(Message.Type.ERROR, "Error!", "Number of web server threads should be a number between 1 and 25.");
                } else {
                    settings.setWebServerConnections(nrcon);
                }
            } catch (NumberFormatException e) {
                addMessage(Message.Type.ERROR, "Error!", "Number of web server threads should be a number between 1 and 25.");
            }
        }

        if (nrq != null) {
            try {
                int nrquery = Integer.parseInt(nrq);

                if (nrquery < 1 || nrquery > 25000) {
                   addMessage(Message.Type.ERROR, "Error!", "Number of queries logged should be a number between 1 and 25000.");
                } else {
                    settings.setNumberOfQueries(nrquery);
                }
            } catch (NumberFormatException e) {
                addMessage(Message.Type.ERROR, "Error!", "Number of queries logged should be a number between 1 and 25000.");
            }
        }

        if (pq != null) {
            settings.setFormattedQueries(true);
        } else {
            settings.setFormattedQueries(false);
        }

        if (rs != null) {
            settings.setRecordingStacktraces(true);
        } else {
            settings.setRecordingStacktraces(false);
        }

        if (pstart != null) {
            settings.setPackageStart(pstart);
        }

        if (!hasWarnings()) {
            addMessage(Message.Type.SUCCESS, "Success!", "Settings are successfully saved.");
        }

        set();
    }

    public void set() {
        Settings settings = Driver.get(getServerInfo().port).getSettings();

        int nrq = settings.getNumberOfQueries();
        set("q1000", nrq == 1000);
        set("q2500", nrq == 2500);
        set("q5000", nrq == 5000);
        set("q10000", nrq == 10000);
        set("q15000", nrq == 15000);
        set("q25000", nrq == 25000);

        set("formattedQueries", settings.isFormattedQueries());
        set("recordingStacktraces", settings.isRecordingStacktraces());
        set("webServerConnections", String.valueOf(settings.getWebServerConnections()));
        set("webServerPort", String.valueOf(settings.getWebServerPort()));
        set("packageStart", settings.getPackageStart());

        set("jdbcUrl", settings.isSecure() ?
            "jdbc:secstat:"+settings.getSettings()+":<original jdbc url>" :
            "jdbc:stat:"+settings.getSettings()+":<original jdbc url>");
    }
}