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 org.xml.sax.SAXException; class DatatypeHandler extends AbstractElementHandler { private final DocumentLoadingContext context; private final OpenRocketContentHandler contentHandler; private CustomExpressionHandler customExpressionHandler = null; public DatatypeHandler(OpenRocketContentHandler contentHandler, DocumentLoadingContext context) { this.context = context; this.contentHandler = contentHandler; } @Override public ElementHandler openElement(String element, HashMap<String, String> attributes, WarningSet warnings) throws SAXException { if (element.equals("type") && attributes.get("source").equals("customexpression")) { customExpressionHandler = new CustomExpressionHandler(contentHandler, context); return customExpressionHandler; } else { warnings.add(Warning.fromString("Unknown datatype " + element + " defined, ignoring")); } return this; } @Override public void closeElement(String element, HashMap<String, String> attributes, String content, WarningSet warnings) throws SAXException { attributes.remove("source"); super.closeElement(element, attributes, content, warnings); if (customExpressionHandler != null) { contentHandler.getDocument().addCustomExpression(customExpressionHandler.currentExpression); } } }