package com.plectix.simulator.simulator.api.steps; import com.plectix.simulator.io.ConsoleOutputManager; import com.plectix.simulator.parser.KappaFile; import com.plectix.simulator.parser.SimulationDataFormatException; import com.plectix.simulator.parser.abstractmodel.KappaModel; import com.plectix.simulator.parser.abstractmodel.reader.KappaModelCreator; import com.plectix.simulator.simulator.SimulationArguments; import com.plectix.simulator.simulator.SimulationData; import com.plectix.simulator.simulator.SimulationArguments.SimulationType; import com.plectix.simulator.simulator.api.OperationType; import com.plectix.simulator.simulator.api.SimulatorState; import com.plectix.simulator.util.Info.InfoType; public class KappaModelBuildingOperation extends AbstractOperation<KappaModel> { private final SimulationData simulationData; private KappaFile kappaFile; public KappaModelBuildingOperation(SimulationData simulationData, KappaFile kappaFile, InfoType infoType) { super(simulationData, OperationType.KAPPA_MODEL_BUILDING); this.simulationData = simulationData; this.kappaFile = kappaFile; } public KappaModelBuildingOperation(SimulationData simulationData) { super(simulationData, OperationType.KAPPA_MODEL_BUILDING); this.simulationData = simulationData; } protected KappaModel performDry() throws SimulationDataFormatException { if (kappaFile == null) { if (simulationData.getKappaInput() == null) { throw new NoKappaInputException(); } else { this.kappaFile = simulationData.getKappaInput(); } } try { KappaModel model = (new KappaModelCreator(simulationData.getSimulationArguments())).createModel(kappaFile); simulationData.setInitialModel(model); return model; } catch (SimulationDataFormatException e) { ConsoleOutputManager console = simulationData .getConsoleOutputManager(); SimulationArguments simulationArguments = simulationData.getSimulationArguments(); console.println("Error in file \"" + simulationArguments.getInputFileName() + "\" :"); throw e; //TODO HANDLE THIS ERROR /* * return new CompiledKappaFile(kappaFile); + exceptions! */ } } @Override protected boolean noNeedToPerform() { SimulatorState state = simulationData.getKappaSystem().getState(); SimulationType latestType = state.getLatestSimulationType(); SimulationType currentType = simulationData.getSimulationArguments().getSimulationType(); return simulationData.getInitialModel() != null && latestType.hasSimilarCompilationStage(currentType); } @Override protected KappaModel retrievePreparedResult() { return simulationData.getInitialModel(); } }