Class VotCopyHandler

  • All Implemented Interfaces:
    org.xml.sax.ContentHandler, org.xml.sax.ext.LexicalHandler, uk.ac.starlink.votable.TableHandler

    public class VotCopyHandler
    extends java.lang.Object
    implements org.xml.sax.ContentHandler, org.xml.sax.ext.LexicalHandler, uk.ac.starlink.votable.TableHandler
    SAX content handler which takes SAX events and converts them to an output stream in a VOTable-sensitive way. As far as is possible given the SAX model, each input SAX event is sent to the output unchanged apart from events within a DATA element, which are written in one of the VOTable encodings as selected by the user.

    One exception to the rule is that, for implementation-specific reasons, FIELD elements with datatype="bit" are changed to have datatype="boolean" instead.

    Since:
    18 Apr 2005
    Author:
    Mark Taylor (Starlink)
    • Constructor Summary

      Constructors 
      Constructor Description
      VotCopyHandler​(boolean strict, uk.ac.starlink.votable.DataFormat format, uk.ac.starlink.votable.VOTableVersion version, boolean inline, boolean squashMagic, java.lang.String base, boolean cache, uk.ac.starlink.table.StoragePolicy policy)
      Constructor.
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      void characters​(char[] ch, int start, int length)  
      void comment​(char[] ch, int start, int length)  
      void endCDATA()  
      void endDocument()  
      void endDTD()  
      void endElement​(java.lang.String namespaceURI, java.lang.String localName, java.lang.String qName)  
      void endEntity​(java.lang.String name)  
      void endPrefixMapping​(java.lang.String prefix)  
      void endTable()  
      void ignorableWhitespace​(char[] ch, int start, int length)  
      void processingInstruction​(java.lang.String target, java.lang.String data)  
      void rowData​(java.lang.Object[] row)  
      void setDocumentLocator​(org.xml.sax.Locator locator)  
      void setOutput​(java.io.Writer out)
      Sets the output stream for output.
      void skippedEntity​(java.lang.String name)  
      void startCDATA()  
      void startDocument()  
      void startDTD​(java.lang.String name, java.lang.String publicId, java.lang.String systemId)  
      void startElement​(java.lang.String namespaceURI, java.lang.String localName, java.lang.String qName, org.xml.sax.Attributes atts)  
      void startEntity​(java.lang.String name)  
      void startPrefixMapping​(java.lang.String prefix, java.lang.String uri)  
      void startTable​(uk.ac.starlink.table.StarTable meta)  
      void writeDataElement​(uk.ac.starlink.table.StarTable table)
      Outputs a DATA element representing a table to the destination stream according to the current settings.
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Constructor Detail

      • VotCopyHandler

        public VotCopyHandler​(boolean strict,
                              uk.ac.starlink.votable.DataFormat format,
                              uk.ac.starlink.votable.VOTableVersion version,
                              boolean inline,
                              boolean squashMagic,
                              java.lang.String base,
                              boolean cache,
                              uk.ac.starlink.table.StoragePolicy policy)
        Constructor. The copy can be done in either cached or streamed mode, determined by the cache parameter. In streamed mode, each row encountered in the input SAX stream is copied to the output stream as soon as it is encountered. In cached mode, the whole table is assembled first, and then written out at the end of the input. Streamed mode is more efficient, but may not be possible under some circumstances, e.g. for FITS output when the number of rows is not known in advance. If a streamed copy is attempted when it's not possible, it will fail with a UnrepeatableSequenceException (wrapped in a SAXException).
        Parameters:
        strict - whether to effect strict interpretation of the VOTable standard
        format - encoding type for output DATA elements; may be null for DATA-less output
        version - VOTable standard version for output; may be null for unknown or indeterminate, in which case input version will be copied as far as possible
        inline - true for tables written inline, false for tables written to an href-referenced stream
        squashMagic - if true, any VALUES/null attributes are not passed through
        base - base table location; used to construct URIs for out-of-line table streams (only used if inline=false)
        cache - whether tables will be cached prior to writing
        policy - storage policy for cached tables
    • Method Detail

      • setOutput

        public void setOutput​(java.io.Writer out)
        Sets the output stream for output. By default output is written to standard output using the platform's default encoding.
        Parameters:
        out - output writer
      • startTable

        public void startTable​(uk.ac.starlink.table.StarTable meta)
                        throws org.xml.sax.SAXException
        Specified by:
        startTable in interface uk.ac.starlink.votable.TableHandler
        Throws:
        org.xml.sax.SAXException
      • rowData

        public void rowData​(java.lang.Object[] row)
                     throws org.xml.sax.SAXException
        Specified by:
        rowData in interface uk.ac.starlink.votable.TableHandler
        Throws:
        org.xml.sax.SAXException
      • endTable

        public void endTable()
                      throws org.xml.sax.SAXException
        Specified by:
        endTable in interface uk.ac.starlink.votable.TableHandler
        Throws:
        org.xml.sax.SAXException
      • setDocumentLocator

        public void setDocumentLocator​(org.xml.sax.Locator locator)
        Specified by:
        setDocumentLocator in interface org.xml.sax.ContentHandler
      • startDocument

        public void startDocument()
                           throws org.xml.sax.SAXException
        Specified by:
        startDocument in interface org.xml.sax.ContentHandler
        Throws:
        org.xml.sax.SAXException
      • endDocument

        public void endDocument()
                         throws org.xml.sax.SAXException
        Specified by:
        endDocument in interface org.xml.sax.ContentHandler
        Throws:
        org.xml.sax.SAXException
      • startElement

        public void startElement​(java.lang.String namespaceURI,
                                 java.lang.String localName,
                                 java.lang.String qName,
                                 org.xml.sax.Attributes atts)
                          throws org.xml.sax.SAXException
        Specified by:
        startElement in interface org.xml.sax.ContentHandler
        Throws:
        org.xml.sax.SAXException
      • endElement

        public void endElement​(java.lang.String namespaceURI,
                               java.lang.String localName,
                               java.lang.String qName)
                        throws org.xml.sax.SAXException
        Specified by:
        endElement in interface org.xml.sax.ContentHandler
        Throws:
        org.xml.sax.SAXException
      • characters

        public void characters​(char[] ch,
                               int start,
                               int length)
                        throws org.xml.sax.SAXException
        Specified by:
        characters in interface org.xml.sax.ContentHandler
        Throws:
        org.xml.sax.SAXException
      • ignorableWhitespace

        public void ignorableWhitespace​(char[] ch,
                                        int start,
                                        int length)
                                 throws org.xml.sax.SAXException
        Specified by:
        ignorableWhitespace in interface org.xml.sax.ContentHandler
        Throws:
        org.xml.sax.SAXException
      • startPrefixMapping

        public void startPrefixMapping​(java.lang.String prefix,
                                       java.lang.String uri)
                                throws org.xml.sax.SAXException
        Specified by:
        startPrefixMapping in interface org.xml.sax.ContentHandler
        Throws:
        org.xml.sax.SAXException
      • endPrefixMapping

        public void endPrefixMapping​(java.lang.String prefix)
                              throws org.xml.sax.SAXException
        Specified by:
        endPrefixMapping in interface org.xml.sax.ContentHandler
        Throws:
        org.xml.sax.SAXException
      • skippedEntity

        public void skippedEntity​(java.lang.String name)
                           throws org.xml.sax.SAXException
        Specified by:
        skippedEntity in interface org.xml.sax.ContentHandler
        Throws:
        org.xml.sax.SAXException
      • processingInstruction

        public void processingInstruction​(java.lang.String target,
                                          java.lang.String data)
                                   throws org.xml.sax.SAXException
        Specified by:
        processingInstruction in interface org.xml.sax.ContentHandler
        Throws:
        org.xml.sax.SAXException
      • comment

        public void comment​(char[] ch,
                            int start,
                            int length)
                     throws org.xml.sax.SAXException
        Specified by:
        comment in interface org.xml.sax.ext.LexicalHandler
        Throws:
        org.xml.sax.SAXException
      • startCDATA

        public void startCDATA()
                        throws org.xml.sax.SAXException
        Specified by:
        startCDATA in interface org.xml.sax.ext.LexicalHandler
        Throws:
        org.xml.sax.SAXException
      • endCDATA

        public void endCDATA()
                      throws org.xml.sax.SAXException
        Specified by:
        endCDATA in interface org.xml.sax.ext.LexicalHandler
        Throws:
        org.xml.sax.SAXException
      • startDTD

        public void startDTD​(java.lang.String name,
                             java.lang.String publicId,
                             java.lang.String systemId)
                      throws org.xml.sax.SAXException
        Specified by:
        startDTD in interface org.xml.sax.ext.LexicalHandler
        Throws:
        org.xml.sax.SAXException
      • endDTD

        public void endDTD()
                    throws org.xml.sax.SAXException
        Specified by:
        endDTD in interface org.xml.sax.ext.LexicalHandler
        Throws:
        org.xml.sax.SAXException
      • startEntity

        public void startEntity​(java.lang.String name)
                         throws org.xml.sax.SAXException
        Specified by:
        startEntity in interface org.xml.sax.ext.LexicalHandler
        Throws:
        org.xml.sax.SAXException
      • endEntity

        public void endEntity​(java.lang.String name)
                       throws org.xml.sax.SAXException
        Specified by:
        endEntity in interface org.xml.sax.ext.LexicalHandler
        Throws:
        org.xml.sax.SAXException
      • writeDataElement

        public void writeDataElement​(uk.ac.starlink.table.StarTable table)
                              throws java.io.IOException
        Outputs a DATA element representing a table to the destination stream according to the current settings.
        Parameters:
        table - table to write
        Throws:
        java.io.IOException