evaluation.simulator.core.statistics.plotEngine.PlotScript.java Source code

Java tutorial

Introduction

Here is the source code for evaluation.simulator.core.statistics.plotEngine.PlotScript.java

Source

/*******************************************************************************
 * gMix open source project - https://svs.informatik.uni-hamburg.de/gmix/
 * Copyright (C) 2014  SVS
 *
 * This program is free software: you can redistribute it and/or modify 
 * it under the terms of the GNU 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 General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License 
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 *******************************************************************************/
package evaluation.simulator.core.statistics.plotEngine;

import org.apache.commons.lang3.StringEscapeUtils;
import org.apache.log4j.Level;
import org.apache.log4j.Logger;

import evaluation.simulator.Simulator;
import evaluation.simulator.core.binding.gMixBinding;
import evaluation.simulator.core.statistics.ResultSet;
import evaluation.simulator.gui.launcher.GuiLauncher;
import framework.core.config.Paths;
import framework.core.util.Util;

public class PlotScript {

    private static Logger logger = Logger.getLogger(PlotScript.class);

    private String plotScript;
    private final String resultFileName;
    private final String plotScriptFileName;
    private final String resultDiagramFileName;
    private final String gnuplotConsoleOutputFileName;

    public PlotScript(String plotName, ResultSet resultSet) {
        if (GuiLauncher.guiActive)
            this.plotScript = Util.getFileContent(Paths.SIM_PLOTSCRIPT_FOLDER_PATH + "simguiPlotScript.txt");
        else
            this.plotScript = Util.getFileContent(
                    Paths.SIM_PLOTSCRIPT_FOLDER_PATH + Simulator.settings.getProperty("NAME_OF_PLOT_SCRIPT"));
        this.resultFileName = resultSet.ep.experimentStart + "-" + plotName + "-results.txt";
        this.plotScriptFileName = resultSet.ep.experimentStart + "-" + plotName + "-plotScript.txt";
        this.resultDiagramFileName = resultSet.ep.experimentStart + "-" + plotName + "-diagram";
        this.gnuplotConsoleOutputFileName = resultSet.ep.experimentStart + "-" + plotName + "-gnuPlotConsoleOutput";
        this.setInputFile(this.resultFileName);
    }

    public String getResultFileName() {
        return this.resultFileName;
    }

    public String getPlotScriptFileName() {
        return this.plotScriptFileName;
    }

    public void setTitle(String title) {
        this.plotScript = this.plotScript.replace("varTitle = \"WILL_BE_SET_AUTOMATICALLY\"",
                "varTitle = \"" + title + "\"");
    }

    public void setXlabel(String xLabel) {
        this.plotScript = this.plotScript.replace("varXLabel = \"WILL_BE_SET_AUTOMATICALLY\"",
                "varXLabel = \"" + xLabel + "\"");
    }

    public void setYlabel(String yLabel) {
        this.plotScript = this.plotScript.replace("varYLabel = \"WILL_BE_SET_AUTOMATICALLY\"",
                "varYLabel = \"" + yLabel + "\"");
    }

    public void setScale(PlotScale scale) {
        if (!scale.getGnuplotCommand().equals("")) {
            this.plotScript = this.plotScript.replace("#_VAR", "#_VAR\n" + scale.getGnuplotCommand());
        }
    }

    public void setOverwritableParameter(String parameter) {
        this.plotScript = this.plotScript.replace("#_OVERWRITABLE_PARAMETERS",
                parameter + "\n#_OVERWRITABLE_PARAMETERS");
    }

    public void setNoneOverwritableParameter(String parameter) {
        this.plotScript = this.plotScript.replace("#_NONE_OVERWRITABLE_PARAMETERS",
                parameter + "\n#_NONE_OVERWRITABLE_PARAMETERS");
    }

    private void setInputFile(String inputFile) {
        this.plotScript = this.plotScript.replace("varInputFile = \"WILL_BE_SET_AUTOMATICALLY\"",
                "varInputFile = \"" + inputFile + "\"");
        this.plotScript = this.plotScript.replace("set output \"1WILL_BE_SET_AUTOMATICALLY\"",
                "set output \"" + this.resultDiagramFileName + ".svg\"");
        this.plotScript = this.plotScript.replace("set output \"2WILL_BE_SET_AUTOMATICALLY\"",
                "set output \"" + this.resultDiagramFileName + ".png\"");
        this.plotScript = this.plotScript.replace("set output \"3WILL_BE_SET_AUTOMATICALLY\"",
                "set output \"" + this.resultDiagramFileName + ".eps\"");
    }

    public void setPlotCommand(String plotCommand) {
        if (plotCommand.endsWith(",")) {
            plotCommand = plotCommand.substring(0, (plotCommand.length() - 1));
        }
        this.plotScript = this.plotScript.replace("plot \"WILL_BE_SET_AUTOMATICALLY\"", plotCommand);
    }

    public void writeDataFileToDisk(String content) {
        Util.writeToFile(content, Paths.SIM_OUTPUT_FOLDER_PATH + this.resultFileName);
    }

    public void writePlotScriptToDisk() {
        String oParams = Simulator.settings.getProperty("OVERWRITABLE_PARAMETERS");

        if (oParams == null) {
            oParams = "";
        }

        if (!oParams.equals("")) {
            this.setOverwritableParameter(oParams);
        }
        String noParams = Simulator.settings.getProperty("NONE_OVERWRITABLE_PARAMETERS");
        if (!noParams.equals("")) {
            this.setNoneOverwritableParameter(noParams);
        }
        this.plotScript = StringEscapeUtils.unescapeJava(this.plotScript);
        Util.writeToFile(this.plotScript, Paths.SIM_OUTPUT_FOLDER_PATH + this.plotScriptFileName);
    }

    public void plot() {
        logger.log(Level.DEBUG, this.plotScript);
        new GnuPlotTask(this.plotScriptFileName, this.gnuplotConsoleOutputFileName).start();
        if (GuiLauncher.guiActive)
            gMixBinding.getInstance().createResult(this.resultDiagramFileName + ".svg");
        logger.log(Level.DEBUG, "SVG: " + this.resultDiagramFileName);
    }

}