package com.plectix.simulator.io;
import com.plectix.simulator.parser.KappaFile;
import com.plectix.simulator.parser.abstractmodel.KappaModel;
import com.plectix.simulator.simulator.KappaSystem;
import com.plectix.simulator.simulator.SimulationData;
import com.plectix.simulator.simulator.api.steps.KappaFileCompilationOperation;
import com.plectix.simulator.simulator.api.steps.KappaFileLoadingOperation;
import com.plectix.simulator.simulator.api.steps.KappaModelBuildingOperation;
import com.plectix.simulator.simulator.api.steps.OperationManager;
import com.plectix.simulator.util.Info.InfoType;
public class SimulationDataReader {
private final SimulationData simulationData;
public SimulationDataReader(SimulationData simulationData) {
this.simulationData = simulationData;
}
private final KappaFile readSimulationFile() throws Exception {
OperationManager manager = simulationData.getKappaSystem().getOperationManager();
return manager.perform(new KappaFileLoadingOperation(simulationData));
}
public final KappaSystem compileKappaFile(KappaFile kappaFile, InfoType outputType) throws Exception {
OperationManager manager = simulationData.getKappaSystem().getOperationManager();
KappaModel model = manager.perform(new KappaModelBuildingOperation(simulationData, kappaFile, outputType));
return manager.perform(new KappaFileCompilationOperation(simulationData, model));
}
public final KappaSystem readAndCompile() throws Exception {
KappaFile file = this.readSimulationFile();
return this.compileKappaFile(file, InfoType.INFO);
}
}