package net.sf.openrocket.file.openrocket.importt;
import java.util.HashMap;
import net.sf.openrocket.aerodynamics.WarningSet;
import net.sf.openrocket.document.OpenRocketDocument;
import net.sf.openrocket.file.DocumentLoadingContext;
import net.sf.openrocket.file.simplesax.AbstractElementHandler;
import net.sf.openrocket.file.simplesax.ElementHandler;
import net.sf.openrocket.simulation.customexpression.CustomExpression;
import org.xml.sax.SAXException;
class SimulationsHandler extends AbstractElementHandler {
private final DocumentLoadingContext context;
private final OpenRocketDocument doc;
private SingleSimulationHandler handler;
public SimulationsHandler(OpenRocketDocument doc, DocumentLoadingContext context) {
this.doc = doc;
this.context = context;
}
@Override
public ElementHandler openElement(String element, HashMap<String, String> attributes,
WarningSet warnings) {
if (!element.equals("simulation")) {
warnings.add("Unknown element '" + element + "', ignoring.");
return null;
}
handler = new SingleSimulationHandler(doc, context);
return handler;
}
@Override
public void closeElement(String element, HashMap<String, String> attributes,
String content, WarningSet warnings) throws SAXException {
attributes.remove("status");
//Finished loading. Rebuilding custom expressions in case something has changed such as listener variable come available.
for (CustomExpression exp : doc.getCustomExpressions()){
exp.setExpression(exp.getExpressionString());
}
super.closeElement(element, attributes, content, warnings);
}
}