package net.sf.openrocket.file.openrocket.importt; import java.util.HashMap; import net.sf.openrocket.aerodynamics.Warning; import net.sf.openrocket.aerodynamics.WarningSet; import net.sf.openrocket.file.DocumentLoadingContext; import net.sf.openrocket.file.simplesax.AbstractElementHandler; import net.sf.openrocket.file.simplesax.ElementHandler; import net.sf.openrocket.file.simplesax.PlainTextHandler; import net.sf.openrocket.rocketcomponent.Rocket; import org.xml.sax.SAXException; class MotorConfigurationHandler extends AbstractElementHandler { @SuppressWarnings("unused") private final DocumentLoadingContext context; private final Rocket rocket; private String name = null; private boolean inNameElement = false; public MotorConfigurationHandler(Rocket rocket, DocumentLoadingContext context) { this.rocket = rocket; this.context = context; } @Override public ElementHandler openElement(String element, HashMap<String, String> attributes, WarningSet warnings) { if (inNameElement || !element.equals("name")) { warnings.add(Warning.FILE_INVALID_PARAMETER); return null; } inNameElement = true; return PlainTextHandler.INSTANCE; } @Override public void closeElement(String element, HashMap<String, String> attributes, String content, WarningSet warnings) { name = content; } @Override public void endHandler(String element, HashMap<String, String> attributes, String content, WarningSet warnings) throws SAXException { String configid = attributes.remove("configid"); if (configid == null || configid.equals("")) { warnings.add(Warning.FILE_INVALID_PARAMETER); return; } if (!rocket.addMotorConfigurationID(configid)) { warnings.add("Duplicate motor configuration ID used."); return; } if (name != null && name.trim().length() > 0) { rocket.setFlightConfigurationName(configid, name); } if ("true".equals(attributes.remove("default"))) { rocket.getDefaultConfiguration().setFlightConfigurationID(configid); } super.closeElement(element, attributes, content, warnings); } }