Class AbstractFitsTableWriter

  • All Implemented Interfaces:
    uk.ac.starlink.table.MultiStarTableWriter, uk.ac.starlink.table.StarTableWriter
    Direct Known Subclasses:
    ColFitsTableWriter, FitsTableWriter, HduFitsTableWriter, HealpixFitsTableWriter, VariableFitsTableWriter

    public abstract class AbstractFitsTableWriter
    extends uk.ac.starlink.table.StreamStarTableWriter
    implements uk.ac.starlink.table.MultiStarTableWriter
    Abstract table writer superclass designed for writing FITS tables.

    A couple of Auxiliary metadata items of the ColumnInfo metadata from written tables are respected:

    • Tables.NULL_VALUE_INFO: sets the value of TNULLn "magic" blank value for integer columns
    • Tables.UBYTE_FLAG_INFO: if set to Boolean.TRUE and if the column has content class Short or short[], the data will be written as unsigned bytes (TFORMn='B') not 16-bit signed integers (TFORMn='I').
    • BintableStarTable.LONGOFF_INFO: if this is set to a string representation of an integer value, and the column has content class String or String[], then the data will be written as long integers (TFORMn='K') with the given offset (TZEROn=...). This option supports round-tripping of offset long values (typically representing unsigned longs) which are converted to strings on read.
    Since:
    27 Jun 2006
    Author:
    Mark Taylor
    • Constructor Summary

      Constructors 
      Modifier Constructor Description
      protected AbstractFitsTableWriter​(java.lang.String formatName)
      Constructor.
    • Method Summary

      All Methods Static Methods Instance Methods Abstract Methods Concrete Methods 
      Modifier and Type Method Description
      protected void addMetadata​(nom.tam.fits.Header hdr)
      Adds some standard metadata header cards to a FITS table header.
      protected abstract FitsTableSerializer createSerializer​(uk.ac.starlink.table.StarTable table)
      Provides a suitable serializer for a given table.
      static java.lang.String getCurrentDate()
      Returns an ISO-8601 data string representing the time at which this method is called.
      java.lang.String getFormatName()  
      java.lang.String getMimeType()
      Returns "application/fits".
      void setFormatName​(java.lang.String formatName)
      Sets the declared format name.
      void writePrimaryHDU​(java.io.DataOutput out)
      Writes the primary HDU.
      void writeStarTable​(uk.ac.starlink.table.StarTable table, java.io.OutputStream out)
      Writes a single table.
      void writeStarTables​(uk.ac.starlink.table.TableSequence tableSeq, java.io.OutputStream out)
      Writes tables.
      void writeStarTables​(uk.ac.starlink.table.TableSequence tableSeq, java.lang.String location, uk.ac.starlink.table.StarTableOutput sto)
      void writeTableHDU​(uk.ac.starlink.table.StarTable table, FitsTableSerializer fitser, java.io.DataOutput out)
      Writes a data HDU.
      • Methods inherited from class uk.ac.starlink.table.StreamStarTableWriter

        writeStarTable
      • 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.StarTableWriter

        looksLikeFile, writeStarTable
    • Constructor Detail

      • AbstractFitsTableWriter

        protected AbstractFitsTableWriter​(java.lang.String formatName)
        Constructor.
        Parameters:
        formatName - format name
    • Method Detail

      • getFormatName

        public java.lang.String getFormatName()
        Specified by:
        getFormatName in interface uk.ac.starlink.table.StarTableWriter
      • setFormatName

        public void setFormatName​(java.lang.String formatName)
        Sets the declared format name.
        Parameters:
        formatName - format name
      • getMimeType

        public java.lang.String getMimeType()
        Returns "application/fits".
        Specified by:
        getMimeType in interface uk.ac.starlink.table.StarTableWriter
        Returns:
        MIME type
      • writeStarTables

        public void writeStarTables​(uk.ac.starlink.table.TableSequence tableSeq,
                                    java.io.OutputStream out)
                             throws java.io.IOException
        Writes tables. Calls writePrimaryHDU(java.io.DataOutput) to write the primary HDU. Subclasses which want to put something related to the input tables into the primary HDU will need to override this method (writeStarTables).
        Specified by:
        writeStarTables in interface uk.ac.starlink.table.MultiStarTableWriter
        Throws:
        java.io.IOException
      • writeStarTables

        public void writeStarTables​(uk.ac.starlink.table.TableSequence tableSeq,
                                    java.lang.String location,
                                    uk.ac.starlink.table.StarTableOutput sto)
                             throws java.io.IOException
        Specified by:
        writeStarTables in interface uk.ac.starlink.table.MultiStarTableWriter
        Throws:
        java.io.IOException
      • writePrimaryHDU

        public void writePrimaryHDU​(java.io.DataOutput out)
                             throws java.io.IOException
        Writes the primary HDU. This cannot contain a table since BINTABLE HDUs can only be extensions. The AbstractFitsTableWriter implementation writes a minimal, data-less HDU.
        Parameters:
        out - destination stream
        Throws:
        java.io.IOException
      • writeTableHDU

        public void writeTableHDU​(uk.ac.starlink.table.StarTable table,
                                  FitsTableSerializer fitser,
                                  java.io.DataOutput out)
                           throws java.io.IOException
        Writes a data HDU.
        Parameters:
        table - the table to be written into the HDU
        fitser - fits serializer initalised from table
        out - destination stream
        Throws:
        java.io.IOException
      • createSerializer

        protected abstract FitsTableSerializer createSerializer​(uk.ac.starlink.table.StarTable table)
                                                         throws java.io.IOException
        Provides a suitable serializer for a given table. Note this should throw an IOException if it can be determined that the submitted table cannot be written by this writer, for instance if it has too many columns.
        Parameters:
        table - table to serialize
        Returns:
        FITS serializer
        Throws:
        java.io.IOException - if the table can't be written
      • addMetadata

        protected void addMetadata​(nom.tam.fits.Header hdr)
        Adds some standard metadata header cards to a FITS table header. This includes date stamp, STIL version, etc.
        Parameters:
        hdr - header to modify
      • getCurrentDate

        public static java.lang.String getCurrentDate()
        Returns an ISO-8601 data string representing the time at which this method is called.
        Returns:
        date string