package com.plectix.simulator.simulator.api.steps;
import com.plectix.simulator.BuildConstants;
import com.plectix.simulator.controller.SimulatorInputData;
import com.plectix.simulator.io.ConsoleOutputManager;
import com.plectix.simulator.simulator.SimulationArguments;
import com.plectix.simulator.simulator.SimulationData;
import com.plectix.simulator.simulator.Simulator;
import com.plectix.simulator.simulator.api.OperationType;
import com.plectix.simulator.util.Info.InfoType;
public class SimulatorInitializationOperation extends AbstractOperation<Simulator> {
private final SimulatorInputData inputData;
private final Simulator simulator;
private static final String INTRO_MESSAGE = "JSIM: Build on "
+ BuildConstants.BUILD_DATE + " from Revision "
+ BuildConstants.BUILD_SVN_REVISION + ", JRE: "
+ System.getProperty("java.vendor") + " "
+ System.getProperty("java.version");
public SimulatorInitializationOperation(Simulator simulator, SimulatorInputData inputData) {
super(simulator.getSimulationData(), OperationType.SIMULATOR_INITIALIZATION);
this.inputData = inputData;
this.simulator = simulator;
}
protected Simulator performDry() {
SimulationData simulationData = simulator.getSimulationData();
simulationData.setConsolePrintStream(inputData.getPrintStream());
SimulationArguments simulationArguments = inputData.getSimulationArguments();
ConsoleOutputManager consoleOutputManager = simulationData.getConsoleOutputManager();
consoleOutputManager.addAdditionalInfo(InfoType.INFO, INTRO_MESSAGE);
if (simulationArguments.isNoDumpStdoutStderr()) {
consoleOutputManager.setPrintStream(null);
}
// TODO move this code to DumpHelpOperation
// PrintStream printStream = consoleOutputManager.getPrintStream();
// // do not print anything above because the line above might have turned
// // the printing off...
//
// if (simulationArguments.needToDumpHelp()) {
// if (printStream != null) {
// PrintWriter printWriter = new PrintWriter(printStream);
// HelpFormatter formatter = new HelpFormatter();
// formatter.printHelp(printWriter, HelpFormatter.DEFAULT_WIDTH,
// SimulationMain.COMMAND_LINE_SYNTAX, null,
// OptionsSetSingleton.getInstance(),
// HelpFormatter.DEFAULT_LEFT_PAD,
// HelpFormatter.DEFAULT_DESC_PAD, null, false);
// printWriter.flush();
// }
// }
simulationData.setSimulationArguments(InfoType.OUTPUT, simulationArguments);
return simulator;
}
/**
* Anyway, we must reload inputData each time
*/
@Override
protected boolean noNeedToPerform() {
return false;
}
@Override
protected Simulator retrievePreparedResult() {
return null;
}
}