Class VOTableFitsTableWriter

  • All Implemented Interfaces:
    uk.ac.starlink.table.MultiStarTableWriter, uk.ac.starlink.table.StarTableWriter
    Direct Known Subclasses:
    ColFitsPlusTableWriter, FitsPlusTableWriter

    public abstract class VOTableFitsTableWriter
    extends uk.ac.starlink.fits.AbstractFitsTableWriter
    TableWriter which writes table data into the first extension of a FITS file, Unlike FitsTableWriter however, the primary extension is not left contentless, instead it gets the text of a DATA-less VOTable written into it. This VOTable describes the metadata of the table. Tables stored using this (non-standard) mechanism have all the rich metadata associated with VOTables, and benefit from the compactness of FITS tables, withouth the considerable disadvantage of being split into two files.
    Since:
    26 Aug 2004
    Author:
    Mark Taylor (Starlink)
    • Constructor Summary

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

      All Methods Instance Methods Abstract Methods Concrete Methods 
      Modifier and Type Method Description
      protected abstract void customisePrimaryHeader​(nom.tam.fits.Header hdr)
      Hook for adding custom entries to the FITS header which is written to the primary HDU.
      boolean isMagic​(byte[] buffer)
      Determines whether a given byte buffer looks like it contains the start of a primary header written by this writer.
      protected boolean isMagic​(int icard, java.lang.String key, java.lang.String value)
      Tests a header card to see if it looks like part of the magic number for the format written by this handler.
      void setAllowSignedByte​(boolean allowSignedByte)  
      void setVotableVersion​(VOTableVersion votVersion)
      Sets the version of the VOTable standard to use for encoding metadata in the primary HDU.
      void writeStarTables​(uk.ac.starlink.table.TableSequence tableSeq, java.io.OutputStream out)  
      • Methods inherited from class uk.ac.starlink.fits.AbstractFitsTableWriter

        addMetadata, createSerializer, getAllowSignedByte, getAllowZeroLengthString, getConfig, getCurrentDate, getFormatName, getMimeType, getPadCharacter, getWide, getWriteDate, setAllowZeroLengthString, setFormatName, setPadCharacter, setWide, setWriteDate, writePrimaryHDU, writeStarTable, writeStarTables, writeTableHDU
      • Methods inherited from class uk.ac.starlink.table.StreamStarTableWriter

        writeStarTable, 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

      • VOTableFitsTableWriter

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

      • setAllowSignedByte

        public void setAllowSignedByte​(boolean allowSignedByte)
        Overrides:
        setAllowSignedByte in class uk.ac.starlink.fits.AbstractFitsTableWriter
      • writeStarTables

        public void writeStarTables​(uk.ac.starlink.table.TableSequence tableSeq,
                                    java.io.OutputStream out)
                             throws java.io.IOException
        Specified by:
        writeStarTables in interface uk.ac.starlink.table.MultiStarTableWriter
        Overrides:
        writeStarTables in class uk.ac.starlink.fits.AbstractFitsTableWriter
        Throws:
        java.io.IOException
      • setVotableVersion

        public void setVotableVersion​(VOTableVersion votVersion)
        Sets the version of the VOTable standard to use for encoding metadata in the primary HDU.
        Parameters:
        votVersion - VOTable version to use
      • customisePrimaryHeader

        protected abstract void customisePrimaryHeader​(nom.tam.fits.Header hdr)
                                                throws nom.tam.fits.HeaderCardException
        Hook for adding custom entries to the FITS header which is written to the primary HDU. This is called just after the required cards (SIMPLE, BITPIX, NAXIS, NAXIS1 ) are added and just before the EXTEND card.
        Parameters:
        hdr - header
        Throws:
        nom.tam.fits.HeaderCardException
      • isMagic

        public boolean isMagic​(byte[] buffer)
        Determines whether a given byte buffer looks like it contains the start of a primary header written by this writer. Calls the protected isMagic(int,java.lang.String,java.lang.String) method.
        Parameters:
        buffer - start of a file
        Returns:
        true iff buffer looks like it contains a file written by this handler
      • isMagic

        protected boolean isMagic​(int icard,
                                  java.lang.String key,
                                  java.lang.String value)
        Tests a header card to see if it looks like part of the magic number for the format written by this handler. The VOTableFitsTableWriter implementation tests that the first four cards read:
            SIMPLE = T
            BITPIX = 8
            NAXIS  = 1
            NAXIS1 = ???
         
        Subclasses may override this to add tests for later cards (as written in customisePrimaryHeader(nom.tam.fits.Header)).
        Parameters:
        icard - 0-based card index
        key - card name
        value - card value
        Returns:
        true iff the presented card is one that could have been written by this writer