Class VOTableBuilder

  • All Implemented Interfaces:
    uk.ac.starlink.table.Documented, uk.ac.starlink.table.formats.DocumentedIOHandler, uk.ac.starlink.table.MultiTableBuilder, uk.ac.starlink.table.TableBuilder

    public class VOTableBuilder
    extends uk.ac.starlink.table.formats.DocumentedTableBuilder
    implements uk.ac.starlink.table.MultiTableBuilder
    Implementation of the TableBuilder interface which gets StarTables from VOTable documents.
    Author:
    Mark Taylor (Starlink)
    • Constructor Summary

      Constructors 
      Constructor Description
      VOTableBuilder()
      Default constructor.
      VOTableBuilder​(boolean strict)
      Constructs a builder with explicit setting of whether VOTable standard interpreation is strict or not.
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      boolean canImport​(java.awt.datatransfer.DataFlavor flavor)
      Returns true for flavors which have MIME types starting text/xml application/xml application/x-votable+xml
      boolean canStream()  
      boolean docIncludesExample()  
      java.lang.String getFormatName()
      Returns the string "VOTable".
      java.lang.String getXmlDescription()  
      uk.ac.starlink.table.StarTable makeStarTable​(uk.ac.starlink.util.DataSource datsrc, boolean wantRandom, uk.ac.starlink.table.StoragePolicy storagePolicy)
      Makes a StarTable out of a DataSource which points to a VOTable.
      uk.ac.starlink.table.TableSequence makeStarTables​(uk.ac.starlink.util.DataSource datsrc, uk.ac.starlink.table.StoragePolicy storagePolicy)  
      void streamStarTable​(java.io.InputStream istrm, uk.ac.starlink.table.TableSink sink, java.lang.String index)
      Acquires the data from a single TABLE element in a VOTable document, writing the result to a sink.
      • Methods inherited from class uk.ac.starlink.table.formats.DocumentedTableBuilder

        getExtensions, looksLikeFile
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
      • Methods inherited from interface uk.ac.starlink.table.formats.DocumentedIOHandler

        readText
      • Methods inherited from interface uk.ac.starlink.table.TableBuilder

        looksLikeFile
    • Constructor Detail

      • VOTableBuilder

        public VOTableBuilder​(boolean strict)
        Constructs a builder with explicit setting of whether VOTable standard interpreation is strict or not.
        Parameters:
        strict - true iff you want strict enforcement of VOTable standard
        See Also:
        VOElementFactory.setStrict(boolean)
    • Method Detail

      • getFormatName

        public java.lang.String getFormatName()
        Returns the string "VOTable".
        Specified by:
        getFormatName in interface uk.ac.starlink.table.TableBuilder
        Returns:
        format name
      • makeStarTable

        public uk.ac.starlink.table.StarTable makeStarTable​(uk.ac.starlink.util.DataSource datsrc,
                                                            boolean wantRandom,
                                                            uk.ac.starlink.table.StoragePolicy storagePolicy)
                                                     throws uk.ac.starlink.table.TableFormatException,
                                                            java.io.IOException
        Makes a StarTable out of a DataSource which points to a VOTable. If the source has a position attribute, it is currently interpreted as an index into a breadth-first list of the TABLE elements in the document pointed to by datsrc, thus it must be a non-negative integer less than the number of TABLE elements. If it has no position attribute, the first TABLE element is used. The interpretation of the position should probably change or be extended in the future to allow XPath expressions.
        Specified by:
        makeStarTable in interface uk.ac.starlink.table.TableBuilder
        Parameters:
        datsrc - the location of the VOTable document to use
        wantRandom - whether, preferentially, a random access table should be returned (doesn't guarantee that it will be random)
        storagePolicy - a StoragePolicy object which may be used to supply scratch storage if the builder needs it
        Returns:
        a StarTable made out of datsrc, or null if this handler can't handle it
        Throws:
        uk.ac.starlink.table.TableFormatException
        java.io.IOException
      • makeStarTables

        public uk.ac.starlink.table.TableSequence makeStarTables​(uk.ac.starlink.util.DataSource datsrc,
                                                                 uk.ac.starlink.table.StoragePolicy storagePolicy)
                                                          throws uk.ac.starlink.table.TableFormatException,
                                                                 java.io.IOException
        Specified by:
        makeStarTables in interface uk.ac.starlink.table.MultiTableBuilder
        Throws:
        uk.ac.starlink.table.TableFormatException
        java.io.IOException
      • canImport

        public boolean canImport​(java.awt.datatransfer.DataFlavor flavor)
        Returns true for flavors which have MIME types starting
        • text/xml
        • application/xml
        • application/x-votable+xml
        Specified by:
        canImport in interface uk.ac.starlink.table.TableBuilder
      • streamStarTable

        public void streamStarTable​(java.io.InputStream istrm,
                                    uk.ac.starlink.table.TableSink sink,
                                    java.lang.String index)
                             throws java.io.IOException
        Acquires the data from a single TABLE element in a VOTable document, writing the result to a sink. This can be used if only one-shot access to the data is required. Invocation of this method should be cheap on memory even for large XML documents and/or tables. Invocation is synchronous, so the method only returns when the streaming has been done (successfully or otherwise).

        Note that only table metadata that precedes the TABLE element in the XML stream can be picked up when using this method. If there are any XML elements following the end of the TABLE whose content would normally show up in table metadata, it will be ignored when using this method.

        For more flexible streamed access to VOTable data, use a TableContentHandler.

        Specified by:
        streamStarTable in interface uk.ac.starlink.table.TableBuilder
        Parameters:
        istrm - stream from which the VOTable document will be supplied
        sink - callback interface into which the table metadata and data will be dumped
        index - if present, a string representation of the index of the table in the document to be read - "0" means the first one encountered, "1" means the second, etc. If it's null or not of numeric form the first table will be used
        Throws:
        java.io.IOException
      • canStream

        public boolean canStream()
        Specified by:
        canStream in class uk.ac.starlink.table.formats.DocumentedTableBuilder
      • docIncludesExample

        public boolean docIncludesExample()
        Specified by:
        docIncludesExample in interface uk.ac.starlink.table.formats.DocumentedIOHandler
      • getXmlDescription

        public java.lang.String getXmlDescription()
        Specified by:
        getXmlDescription in interface uk.ac.starlink.table.Documented