Class BintableStarTable

  • All Implemented Interfaces:
    java.io.Closeable, java.lang.AutoCloseable, uk.ac.starlink.table.StarTable

    public abstract class BintableStarTable
    extends uk.ac.starlink.table.AbstractStarTable
    implements java.io.Closeable
    An implementation of the StarTable interface which uses a FITS BINTABLE extension. The nom.tam.fits classes are used for header parsing, but not for data access.

    The implementation varies according to whether random or sequential-only access is provided by the underlying data access. A factory method is provided to create an appropriate instance.

    Some instances of this class hang on to file descriptors. If you are in danger of running out of that resource before insstances are garbage collected, you can call the Closeable.close() method to release them. Attempting to read data following such a call may result in an exception.

    Limited support is provided for the HEALPix-FITS convention; the relevant HealpixTableInfo table parameters are added, but any BAD_DATA keyword value is ignored, and the 1024-element array-valued column variant of the format is not understood.

    Author:
    Mark Taylor
    • Field Summary

      Fields 
      Modifier and Type Field Description
      static uk.ac.starlink.table.ValueInfo LONGOFF_INFO
      Column aux metadata key for stringified longs offset.
      static uk.ac.starlink.table.ValueInfo TBCOL_INFO
      Column aux metadata key for TBCOLn cards.
      static uk.ac.starlink.table.ValueInfo TDISP_INFO
      Column aux metadata key for TDISPn cards.
      static uk.ac.starlink.table.ValueInfo TFORM_INFO
      Column aux metadata key for TFORMn cards.
      static uk.ac.starlink.table.ValueInfo TNULL_INFO
      Column aux metadata key for TNULLn cards.
      static uk.ac.starlink.table.ValueInfo TSCAL_INFO
      Column aux metadata key for TSCALn cards.
      static uk.ac.starlink.table.ValueInfo TZERO_INFO
      Column aux metadata key for TZEROn cards.
    • Constructor Summary

      Constructors 
      Modifier Constructor Description
      protected BintableStarTable​(nom.tam.fits.Header hdr, boolean isRandom, WideFits wide)
      Constructor.
    • Method Summary

      All Methods Static Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      static BintableStarTable createTable​(nom.tam.fits.Header hdr, InputFactory inputFact, WideFits wide)
      Returns an instance of this class given a data access instance.
      java.util.List<uk.ac.starlink.table.ValueInfo> getColumnAuxDataInfos()  
      int getColumnCount()  
      uk.ac.starlink.table.ColumnInfo getColumnInfo​(int icol)  
      protected int[] getColumnOffsets()
      Returns the array of byte offsets from the start of the row at which each column starts.
      long getRowCount()  
      protected int getRowLength()
      Returns the number of bytes occupied in the data stream by a single row of the table.
      protected java.lang.Object readCell​(BasicInput stream, int icol)
      Reads a cell from a given column from the current position in a stream.
      protected java.lang.Object[] readRow​(BasicInput stream)
      Reads a whole row of the table from the current position in a stream, returning a new Object[] array.
      static void streamStarTable​(nom.tam.fits.Header hdr, BasicInput input, WideFits wide, uk.ac.starlink.table.TableSink sink)
      Reads a BINTABLE extension from a stream and writes the result to a table sink.
      • Methods inherited from class uk.ac.starlink.table.AbstractStarTable

        checkedLongToInt, getCell, getName, getParameterByName, getParameters, getRow, getRowSequence, getURL, isRandom, setName, setParameter, setParameters, setURL
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
      • Methods inherited from interface java.io.Closeable

        close
    • Field Detail

      • TNULL_INFO

        public static final uk.ac.starlink.table.ValueInfo TNULL_INFO
        Column aux metadata key for TNULLn cards.
      • TSCAL_INFO

        public static final uk.ac.starlink.table.ValueInfo TSCAL_INFO
        Column aux metadata key for TSCALn cards.
      • TZERO_INFO

        public static final uk.ac.starlink.table.ValueInfo TZERO_INFO
        Column aux metadata key for TZEROn cards.
      • TDISP_INFO

        public static final uk.ac.starlink.table.ValueInfo TDISP_INFO
        Column aux metadata key for TDISPn cards.
      • TBCOL_INFO

        public static final uk.ac.starlink.table.ValueInfo TBCOL_INFO
        Column aux metadata key for TBCOLn cards.
      • TFORM_INFO

        public static final uk.ac.starlink.table.ValueInfo TFORM_INFO
        Column aux metadata key for TFORMn cards.
      • LONGOFF_INFO

        public static final uk.ac.starlink.table.ValueInfo LONGOFF_INFO
        Column aux metadata key for stringified longs offset.
    • Constructor Detail

      • BintableStarTable

        protected BintableStarTable​(nom.tam.fits.Header hdr,
                                    boolean isRandom,
                                    WideFits wide)
                             throws nom.tam.fits.FitsException
        Constructor.
        Parameters:
        hdr - FITS header cards
        isRandom - true if the data access will be random-access, false for sequential-only
        wide - convention for representing extended columns; use null to avoid use of extended columns
        Throws:
        nom.tam.fits.FitsException
    • Method Detail

      • getRowCount

        public long getRowCount()
        Specified by:
        getRowCount in interface uk.ac.starlink.table.StarTable
        Specified by:
        getRowCount in class uk.ac.starlink.table.AbstractStarTable
      • getColumnCount

        public int getColumnCount()
        Specified by:
        getColumnCount in interface uk.ac.starlink.table.StarTable
        Specified by:
        getColumnCount in class uk.ac.starlink.table.AbstractStarTable
      • getColumnInfo

        public uk.ac.starlink.table.ColumnInfo getColumnInfo​(int icol)
        Specified by:
        getColumnInfo in interface uk.ac.starlink.table.StarTable
        Specified by:
        getColumnInfo in class uk.ac.starlink.table.AbstractStarTable
      • getColumnAuxDataInfos

        public java.util.List<uk.ac.starlink.table.ValueInfo> getColumnAuxDataInfos()
        Specified by:
        getColumnAuxDataInfos in interface uk.ac.starlink.table.StarTable
        Overrides:
        getColumnAuxDataInfos in class uk.ac.starlink.table.AbstractStarTable
      • readCell

        protected java.lang.Object readCell​(BasicInput stream,
                                            int icol)
                                     throws java.io.IOException
        Reads a cell from a given column from the current position in a stream.
        Parameters:
        icol - the column index corresponding to the cell to be read
        stream - a stream containing the byte data, positioned to the right place
        Throws:
        java.io.IOException
      • readRow

        protected java.lang.Object[] readRow​(BasicInput stream)
                                      throws java.io.IOException
        Reads a whole row of the table from the current position in a stream, returning a new Object[] array.
        Parameters:
        stream - a stream containing the byte data, positioned to the right place
        Returns:
        ncol-element array of cells for this row
        Throws:
        java.io.IOException
      • getRowLength

        protected int getRowLength()
        Returns the number of bytes occupied in the data stream by a single row of the table. This is equal to the sum of the column offsets array.
        Returns:
        row length in bytes
      • getColumnOffsets

        protected int[] getColumnOffsets()
        Returns the array of byte offsets from the start of the row at which each column starts.
        Returns:
        ncol-element array of byte offsets
      • createTable

        public static BintableStarTable createTable​(nom.tam.fits.Header hdr,
                                                    InputFactory inputFact,
                                                    WideFits wide)
                                             throws java.io.IOException,
                                                    nom.tam.fits.FitsException
        Returns an instance of this class given a data access instance.
        Parameters:
        hdr - FITS header cards
        inputFact - factory for access to the data part of the HDU representing a FITS BINTABLE extension
        wide - convention for representing extended columns; use null to avoid use of extended columns
        Returns:
        StarTable instance; it will be random-access according to whether the input factory is
        Throws:
        java.io.IOException
        nom.tam.fits.FitsException
      • streamStarTable

        public static void streamStarTable​(nom.tam.fits.Header hdr,
                                           BasicInput input,
                                           WideFits wide,
                                           uk.ac.starlink.table.TableSink sink)
                                    throws nom.tam.fits.FitsException,
                                           java.io.IOException
        Reads a BINTABLE extension from a stream and writes the result to a table sink.
        Parameters:
        hdr - FITS header object describing the BINTABLE extension
        input - input stream positioned at the start of the data part of the BINTABLE extension
        wide - convention for representing extended columns; use null to avoid use of extended columns
        sink - destination for the table
        Throws:
        nom.tam.fits.FitsException
        java.io.IOException