package com.plectix.simulator.parser.abstractmodel.reader; import java.util.Collection; import java.util.List; 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.ModelPerturbation; import com.plectix.simulator.parser.abstractmodel.ModelRule; import com.plectix.simulator.parser.abstractmodel.ModelSolution; import com.plectix.simulator.parser.abstractmodel.ModelStories; import com.plectix.simulator.parser.abstractmodel.observables.ModelObservables; import com.plectix.simulator.parser.util.AgentFactory; import com.plectix.simulator.simulator.SimulationArguments; import com.plectix.simulator.simulator.SimulationArguments.SimulationType; public final class KappaModelCreator { private final SimulationArguments simulationArguments; private final AgentFactory defaultAgentFactory = new AgentFactory(true); private final AgentFactory solutionAgentFactory; public KappaModelCreator(SimulationArguments simulationArguments) { this.simulationArguments = simulationArguments; solutionAgentFactory = new AgentFactory(simulationArguments.incompletesAllowed()); } public final KappaModel createModel(KappaFile kappaFile) throws SimulationDataFormatException { KappaModel model = new KappaModel(); if (simulationArguments.getSimulationType() != SimulationType.GENERATE_MAP) { ModelSolution solution = (new SolutionParagraphReader( simulationArguments, solutionAgentFactory)).readComponent(kappaFile .getSolution()); model.setSolution(solution); } Collection<ModelRule> rules = (new RulesParagraphReader( simulationArguments, defaultAgentFactory)).readComponent(kappaFile.getRules()); model.setRules(rules); ModelStories stories = (new StoriesParagraphReader( simulationArguments, defaultAgentFactory)).readComponent(kappaFile.getStories()); model.setStories(stories); ModelObservables observables = (new ObservablesParagraphReader( simulationArguments, defaultAgentFactory)).readComponent(kappaFile.getObservables()); model.setObservables(observables); List<ModelPerturbation> perturbations = (new PerturbationsParagraphReader( simulationArguments, defaultAgentFactory)).readComponent(kappaFile .getPerturbations()); model.setPerturbations(perturbations); return model; } }