uk.ac.starlink.vo
Class DalResultXMLFilter

java.lang.Object
  extended by org.xml.sax.helpers.XMLFilterImpl
      extended by uk.ac.starlink.vo.DalResultXMLFilter
All Implemented Interfaces:
ContentHandler, DTDHandler, EntityResolver, ErrorHandler, XMLFilter, XMLReader

public class DalResultXMLFilter
extends XMLFilterImpl

SAX filter which ignores any tables in a VOTable document, except those in a RESOURCE which has type="results". This is suitable for getting the basic table from the result of an SIA or SSA service. Under some circumstances the results can come with a large amount of non-result information (for instance massive numbers of small footprint tables from http://www.stecf.org/hst-vo/hst_ssa?), which can have a very serious impact on performance when trying to build a DOM. So if all you are interested in is the results table which the SIA/SSA protocol says has to be there, using this filter can save a lot of unnecessary processing.

In many cases, you can just use the getDalResultTable(uk.ac.starlink.votable.VOElementFactory, org.xml.sax.InputSource) utility method.

See Also:
Simple Spectral Access Protocol, Simple Image Access Protocol

Constructor Summary
DalResultXMLFilter(XMLReader parent, Namespacing namespacing)
          Constructor.
 
Method Summary
 void characters(char[] ch, int start, int length)
           
 void endElement(String namespaceURI, String localName, String qName)
           
 void endPrefixMapping(String prefix)
           
static StarTable getDalResultTable(VOElementFactory vofact, InputSource inSrc)
          Utility method which can return the single results table from a DAL-type response.
 void ignorableWhitespace(char[] ch, int start, int length)
           
static VOElement parseDalResult(VOElementFactory vofact, InputSource inSrc)
          Utility method which uses an instance of this class to turn a SAX InputSource into a DOM.
 void processingInstruction(String target, String data)
           
 void skippedEntity(String name)
           
 void startElement(String namespaceURI, String localName, String qName, Attributes atts)
           
 void startPrefixMapping(String prefix, String uri)
           
 
Methods inherited from class org.xml.sax.helpers.XMLFilterImpl
endDocument, error, fatalError, getContentHandler, getDTDHandler, getEntityResolver, getErrorHandler, getFeature, getParent, getProperty, notationDecl, parse, parse, resolveEntity, setContentHandler, setDocumentLocator, setDTDHandler, setEntityResolver, setErrorHandler, setFeature, setParent, setProperty, startDocument, unparsedEntityDecl, warning
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

DalResultXMLFilter

public DalResultXMLFilter(XMLReader parent,
                          Namespacing namespacing)
Constructor.

Parameters:
parent - parent SAX reader
namespacing - VOTable namespacing policy to employ
Method Detail

startElement

public void startElement(String namespaceURI,
                         String localName,
                         String qName,
                         Attributes atts)
                  throws SAXException
Specified by:
startElement in interface ContentHandler
Overrides:
startElement in class XMLFilterImpl
Throws:
SAXException

endElement

public void endElement(String namespaceURI,
                       String localName,
                       String qName)
                throws SAXException
Specified by:
endElement in interface ContentHandler
Overrides:
endElement in class XMLFilterImpl
Throws:
SAXException

startPrefixMapping

public void startPrefixMapping(String prefix,
                               String uri)
                        throws SAXException
Specified by:
startPrefixMapping in interface ContentHandler
Overrides:
startPrefixMapping in class XMLFilterImpl
Throws:
SAXException

endPrefixMapping

public void endPrefixMapping(String prefix)
                      throws SAXException
Specified by:
endPrefixMapping in interface ContentHandler
Overrides:
endPrefixMapping in class XMLFilterImpl
Throws:
SAXException

characters

public void characters(char[] ch,
                       int start,
                       int length)
                throws SAXException
Specified by:
characters in interface ContentHandler
Overrides:
characters in class XMLFilterImpl
Throws:
SAXException

ignorableWhitespace

public void ignorableWhitespace(char[] ch,
                                int start,
                                int length)
                         throws SAXException
Specified by:
ignorableWhitespace in interface ContentHandler
Overrides:
ignorableWhitespace in class XMLFilterImpl
Throws:
SAXException

processingInstruction

public void processingInstruction(String target,
                                  String data)
                           throws SAXException
Specified by:
processingInstruction in interface ContentHandler
Overrides:
processingInstruction in class XMLFilterImpl
Throws:
SAXException

skippedEntity

public void skippedEntity(String name)
                   throws SAXException
Specified by:
skippedEntity in interface ContentHandler
Overrides:
skippedEntity in class XMLFilterImpl
Throws:
SAXException

parseDalResult

public static VOElement parseDalResult(VOElementFactory vofact,
                                       InputSource inSrc)
                                throws IOException
Utility method which uses an instance of this class to turn a SAX InputSource into a DOM. The DOM will lack non-results tables.

Parameters:
vofact - factory which can generate VOTable DOMs
inSrc - source of the SAX stream
Throws:
IOException

getDalResultTable

public static StarTable getDalResultTable(VOElementFactory vofact,
                                          InputSource inSrc)
                                   throws IOException
Utility method which can return the single results table from a DAL-type response. This is the single table within the RESOURCE element marked with type="results", as described by the SIA and SSA standards. The QUERY_STATUS INFO element is checked; in case of ERROR, an exception is thrown.

Parameters:
vofact - factory which can generate VOTable DOMs
inSrc - source of the SAX stream
Returns:
result table, never null
Throws:
IOException - in case of error, including an ERROR-valued QUERY_STATUS in the response, or no suitable table found


Copyright © 2015 Central Laboratory of the Research Councils. All Rights Reserved.