package com.plectix.simulator.parser.abstractmodel.reader;
import com.plectix.simulator.parser.DocumentFormatException;
import com.plectix.simulator.parser.KappaFileLine;
import com.plectix.simulator.parser.KappaFileParagraph;
import com.plectix.simulator.parser.ParseErrorException;
import com.plectix.simulator.parser.abstractmodel.observables.ModelObservables;
import com.plectix.simulator.parser.util.AgentFactory;
import com.plectix.simulator.simulator.SimulationArguments;
/*package*/ final class ObservablesParagraphReader extends KappaParagraphReader<ModelObservables> {
public ObservablesParagraphReader(SimulationArguments simulationArguments,
AgentFactory agentFactory) {
super(simulationArguments, agentFactory);
}
public final ModelObservables readComponent(KappaFileParagraph observablesParagraph)
throws ParseErrorException, DocumentFormatException {
ModelObservables observables = new ModelObservables();
int observableId = 0;
for (KappaFileLine observableLine : observablesParagraph.getLines()) {
String line = observableLine.getLine().trim();
try {
String name = null;
if (line.indexOf("'") != -1) {
line = line.substring(line.indexOf("'") + 1);
int index = line.indexOf("'");
if (index != -1) {
name = line.substring(0, index).trim();
line = line.substring(index + 1, line.length()).trim();
}
}
if (line.length() == 0) {
//TODO
observables.addRuleName(name, observableId, observableLine);
} else
observables.addComponent(parseAgents(line), name, line,
observableId);//, getArguments().isOcamlStyleObservableNames());
observableId++;
} catch (ParseErrorException e) {
e.setLineDescription(observableLine);
throw e;
}
}
return observables;
}
}