// Coipyright 2002-2007, FreeHEP.
package hep.aida.ref.xml;
import org.xml.sax.Attributes;
import org.xml.sax.ContentHandler;
import org.xml.sax.EntityResolver;
import org.xml.sax.ErrorHandler;
import org.xml.sax.InputSource;
import org.xml.sax.Locator;
import org.xml.sax.SAXException;
import org.xml.sax.SAXParseException;
import org.xml.sax.XMLReader;
/**
* The class reads ASCII XML documents according to specified DTD and
* translates all related events into AidaHandler events.
* <p>Usage sample:
* <pre>
* AidaParser parser = new AidaParser(...);
* parser.parse(new InputSource("..."));
* </pre>
* <p><b>Warning:</b> the class is machine generated. DO NOT MODIFY</p>
*
* @author tonyj
* @version $Id: AidaParser.java 10722 2007-05-03 18:23:39Z serbo $
*/
public class AidaParser implements ContentHandler
{
private java.lang.StringBuffer buffer;
private AidaHandler handler;
private java.util.Stack context;
private boolean validate;
private EntityResolver resolver;
/**
* Creates a parser instance.
* @param handler handler interface implementation (never <code>null</code>
* @param resolver SAX entity resolver implementation or <code>null</code>.
* It is recommended that it could be able to resolve at least the DTD.
*/
public AidaParser(final AidaHandler handler, final EntityResolver resolver)
{
this.handler = handler;
this.resolver = resolver;
buffer = new StringBuffer(111);
context = new java.util.Stack();
}
/**
* This SAX interface method is implemented by the parser.
*
*/
public final void setDocumentLocator(Locator locator)
{
}
/**
* This SAX interface method is implemented by the parser.
*
*/
public final void startDocument() throws SAXException
{
}
/**
* This SAX interface method is implemented by the parser.
*
*/
public final void endDocument() throws SAXException
{
}
/**
* This SAX interface method is implemented by the parser.
*
*/
public final void startElement(java.lang.String ns, java.lang.String name, java.lang.String qname, Attributes attrs) throws SAXException
{
qname.intern();
dispatch(true);
context.push(new Object[]{qname, new org.xml.sax.helpers.AttributesImpl(attrs)});
if (qname == "item" ) handler.handle_item(attrs);
else if (qname == "entries1d" ) handler.start_entries1d(attrs);
else if (qname == "argument" ) handler.start_argument(attrs);
else if (qname == "data1d" ) handler.start_data1d(attrs);
else if (qname == "bin1d" ) handler.handle_bin1d(attrs);
else if (qname == "entryITuple" ) handler.start_entryITuple(attrs);
else if (qname == "column" ) handler.handle_column(attrs);
else if (qname == "tuple" ) handler.start_tuple(attrs);
else if (qname == "function" ) handler.start_function(attrs);
else if (qname == "columns" ) handler.start_columns(attrs);
else if (qname == "dataPointSet" ) handler.start_dataPointSet(attrs);
else if (qname == "dataPoint" ) handler.start_dataPoint(attrs);
else if (qname == "implementation" ) handler.handle_implementation(attrs);
else if (qname == "entry1d" ) handler.handle_entry1d(attrs);
else if (qname == "cloud1d" ) handler.start_cloud1d(attrs);
else if (qname == "row" ) handler.start_row(attrs);
else if (qname == "annotation" ) handler.start_annotation(attrs);
else if (qname == "entry3d" ) handler.handle_entry3d(attrs);
else if (qname == "histogram3d" ) handler.start_histogram3d(attrs);
else if (qname == "aida" ) handler.start_aida(attrs);
else if (qname == "entry" ) handler.handle_entry(attrs);
else if (qname == "data2d" ) handler.start_data2d(attrs);
else if (qname == "bin3d" ) handler.handle_bin3d(attrs);
else if (qname == "parameter" ) handler.handle_parameter(attrs);
else if (qname == "arguments" ) handler.start_arguments(attrs);
else if (qname == "parameters" ) handler.start_parameters(attrs);
else if (qname == "rows" ) handler.start_rows(attrs);
else if (qname == "histogram1d" ) handler.start_histogram1d(attrs);
else if (qname == "axis" ) handler.start_axis(attrs);
else if (qname == "cloud3d" ) handler.start_cloud3d(attrs);
else if (qname == "binBorder" ) handler.handle_binBorder(attrs);
else if (qname == "range" ) handler.handle_range(attrs);
else if (qname == "measurement" ) handler.handle_measurement(attrs);
else if (qname == "data3d" ) handler.start_data3d(attrs);
else if (qname == "entry2d" ) handler.handle_entry2d(attrs);
else if (qname == "profile1d" ) handler.start_profile1d(attrs);
else if (qname == "entries2d" ) handler.start_entries2d(attrs);
else if (qname == "entries3d" ) handler.start_entries3d(attrs);
else if (qname == "bin2d" ) handler.handle_bin2d(attrs);
else if (qname == "statistics" ) handler.start_statistics(attrs);
else if (qname == "profile2d" ) handler.start_profile2d(attrs);
else if (qname == "cloud2d" ) handler.start_cloud2d(attrs);
else if (qname == "statistic" ) handler.handle_statistic(attrs);
else if (qname == "histogram2d" ) handler.start_histogram2d(attrs);
else if (qname == "fitResult" ) handler.start_fitResult(attrs);
else if (qname == "fittedParameter" ) handler.handle_fittedParameter(attrs);
else if (qname == "covarianceMatrix") handler.start_covarianceMatrix(attrs);
else if (qname == "matrixElement" ) handler.handle_matrixElement(attrs);
else if (qname == "fitConstraint" ) handler.handle_fitConstraint(attrs);
}
/**
* This SAX interface method is implemented by the parser.
*
*/
public final void endElement(java.lang.String ns, java.lang.String name, java.lang.String qname) throws SAXException
{
qname.intern();
dispatch(false);
context.pop();
if (qname == "entries1d" ) handler.end_entries1d();
else if (qname == "argument" ) handler.end_argument();
else if (qname == "data1d" ) handler.end_data1d();
else if (qname == "entryITuple" ) handler.end_entryITuple();
else if (qname == "tuple" ) handler.end_tuple();
else if (qname == "function" ) handler.end_function();
else if (qname == "columns" ) handler.end_columns();
else if (qname == "dataPointSet" ) handler.end_dataPointSet();
else if (qname == "dataPoint" ) handler.end_dataPoint();
else if (qname == "cloud1d" ) handler.end_cloud1d();
else if (qname == "row" ) handler.end_row();
else if (qname == "annotation" ) handler.end_annotation();
else if (qname == "histogram3d" ) handler.end_histogram3d();
else if (qname == "aida" ) handler.end_aida();
else if (qname == "data2d" ) handler.end_data2d();
else if (qname == "arguments" ) handler.end_arguments();
else if (qname == "parameters" ) handler.end_parameters();
else if (qname == "rows" ) handler.end_rows();
else if (qname == "histogram1d" ) handler.end_histogram1d();
else if (qname == "axis" ) handler.end_axis();
else if (qname == "cloud3d" ) handler.end_cloud3d();
else if (qname == "data3d" ) handler.end_data3d();
else if (qname == "profile1d" ) handler.end_profile1d();
else if (qname == "entries2d" ) handler.end_entries2d();
else if (qname == "entries3d" ) handler.end_entries3d();
else if (qname == "statistics" ) handler.end_statistics();
else if (qname == "profile2d" ) handler.end_profile2d();
else if (qname == "cloud2d" ) handler.end_cloud2d();
else if (qname == "histogram2d" ) handler.end_histogram2d();
else if (qname == "fitResult" ) handler.end_fitResult();
else if (qname == "covarianceMatrix") handler.end_covarianceMatrix();
}
/**
* This SAX interface method is implemented by the parser.
*
*/
public final void characters(char[] chars, int start, int len) throws SAXException
{
buffer.append(chars, start, len);
}
/**
* This SAX interface method is implemented by the parser.
*
*/
public final void ignorableWhitespace(char[] chars, int start, int len) throws SAXException
{
}
/**
* This SAX interface method is implemented by the parser.
*
*/
public final void processingInstruction(java.lang.String target, java.lang.String data) throws SAXException
{
}
/**
* This SAX interface method is implemented by the parser.
*
*/
public final void startPrefixMapping(final java.lang.String prefix, final java.lang.String uri) throws SAXException
{
}
/**
* This SAX interface method is implemented by the parser.
*
*/
public final void endPrefixMapping(final java.lang.String prefix) throws SAXException
{
}
/**
* This SAX interface method is implemented by the parser.
*
*/
public final void skippedEntity(java.lang.String name) throws SAXException
{
}
private void dispatch(final boolean fireOnlyIfMixed) throws SAXException
{
if (fireOnlyIfMixed && buffer.length() == 0) return; //skip it
Object[] ctx = (Object[]) context.peek();
String here = (String) ctx[0];
Attributes attrs = (Attributes) ctx[1];
if ("codelet" == here)
{
if (fireOnlyIfMixed) throw new IllegalStateException("Unexpected characters() event! (Missing DTD?)");
handler.handle_codelet(buffer.length() == 0 ? null : buffer.toString(), attrs);
} else
{
//do not care
}
buffer.delete(0, buffer.length());
}
/**
* The recognizer entry method taking an InputSource.
* @param input InputSource to be parsed.
* @throws java.io.IOException on I/O error.
* @throws SAXException propagated exception thrown by a DocumentHandler.
* @throws javax.xml.parsers.ParserConfigurationException a parser satisfining requested configuration can not be created.
* @throws javax.xml.parsers.FactoryConfigurationRrror if the implementation can not be instantiated.
*
*/
public void parse(final InputSource input) throws SAXException, javax.xml.parsers.ParserConfigurationException, java.io.IOException
{
parse(input, this);
}
/**
* The recognizer entry method taking a URL.
* @param url URL source to be parsed.
* @throws java.io.IOException on I/O error.
* @throws SAXException propagated exception thrown by a DocumentHandler.
* @throws javax.xml.parsers.ParserConfigurationException a parser satisfining requested configuration can not be created.
* @throws javax.xml.parsers.FactoryConfigurationRrror if the implementation can not be instantiated.
*
*/
public void parse(final java.net.URL url) throws SAXException, javax.xml.parsers.ParserConfigurationException, java.io.IOException
{
parse(new InputSource(url.toExternalForm()), this);
}
/**
* The recognizer entry method taking an Inputsource.
* @param input InputSource to be parsed.
* @throws java.io.IOException on I/O error.
* @throws SAXException propagated exception thrown by a DocumentHandler.
* @throws javax.xml.parsers.ParserConfigurationException a parser satisfining requested configuration can not be created.
* @throws javax.xml.parsers.FactoryConfigurationRrror if the implementation can not be instantiated.
*
*/
public static void parse(final InputSource input, final AidaHandler handler) throws SAXException, javax.xml.parsers.ParserConfigurationException, java.io.IOException
{
parse(input, new AidaParser(handler, null));
}
/**
* The recognizer entry method taking a URL.
* @param url URL source to be parsed.
* @throws java.io.IOException on I/O error.
* @throws SAXException propagated exception thrown by a DocumentHandler.
* @throws javax.xml.parsers.ParserConfigurationException a parser satisfining requested configuration can not be created.
* @throws javax.xml.parsers.FactoryConfigurationRrror if the implementation can not be instantiated.
*
*/
public static void parse(final java.net.URL url, final AidaHandler handler) throws SAXException, javax.xml.parsers.ParserConfigurationException, java.io.IOException
{
parse(new InputSource(url.toExternalForm()), handler);
}
public void setValidate(boolean validate)
{
this.validate = validate;
}
private static void parse(final InputSource input, final AidaParser recognizer) throws SAXException, javax.xml.parsers.ParserConfigurationException, java.io.IOException
{
javax.xml.parsers.SAXParserFactory factory = javax.xml.parsers.SAXParserFactory.newInstance();
factory.setValidating(recognizer.validate);
factory.setNamespaceAware(false); //the code was generated according DTD
XMLReader parser = factory.newSAXParser().getXMLReader();
parser.setContentHandler(recognizer);
parser.setErrorHandler(recognizer.getDefaultErrorHandler());
if (recognizer.resolver != null) parser.setEntityResolver(recognizer.resolver);
parser.parse(input);
}
/**
* Creates default error handler used by this parser.
* @return org.xml.sax.ErrorHandler implementation
*
*/
protected ErrorHandler getDefaultErrorHandler()
{
return new ErrorHandler()
{
public void error(SAXParseException ex) throws SAXException
{
if (context.isEmpty()) System.err.println("Missing DOCTYPE.");
throw ex;
}
public void fatalError(SAXParseException ex) throws SAXException
{
throw ex;
}
public void warning(SAXParseException ex) throws SAXException
{
// ignore
}
};
}
}