uk.ac.starlink.votable
Class FitsPlusTableWriter

java.lang.Object
  extended by uk.ac.starlink.table.StreamStarTableWriter
      extended by uk.ac.starlink.fits.AbstractFitsTableWriter
          extended by uk.ac.starlink.votable.VOTableFitsTableWriter
              extended by uk.ac.starlink.votable.FitsPlusTableWriter
All Implemented Interfaces:
MultiStarTableWriter, StarTableWriter

public class FitsPlusTableWriter
extends VOTableFitsTableWriter

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, as if the DATA element contained a FITS element referencing the first extension HDU of the file. Tables stored in this format have all the rich metadata associated with VOTables, and benefit from the compactness of FITS tables, without the considerable disdvantage of being split into two files.

The header cards in the primary HDU look like this:

     SIMPLE  =                    T / Standard FITS format
     BITPIX  =                    8 / Character data
     NAXIS   =                    1 / Text string
     NAXIS1  =                 nnnn / Number of characters
     VOTMETA =                    T / Table metadata in VOTABLE format
     EXTEND  =                    T / There are standard extensions
 
the VOTMETA card in particular marking that this HDU contains VOTable metadata.

Since:
26 Aug 2004

Constructor Summary
FitsPlusTableWriter()
          Default constructor.
FitsPlusTableWriter(java.lang.String name, WideFits wide)
          Custom constructor.
 
Method Summary
protected  FitsTableSerializer createSerializer(StarTable table)
          Provides a suitable serializer for a given table.
protected  void customisePrimaryHeader(nom.tam.fits.Header hdr)
          Hook for adding custom entries to the FITS header which is written to the primary HDU.
static StarTableWriter[] getStarTableWriters()
          Returns a list of FITS-plus table writers with variant values of attributes.
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.
 boolean looksLikeFile(java.lang.String location)
          Returns true if location ends with something like ".fit" or ".fits".
 
Methods inherited from class uk.ac.starlink.votable.VOTableFitsTableWriter
isMagic, setVotableVersion, writeStarTables
 
Methods inherited from class uk.ac.starlink.fits.AbstractFitsTableWriter
addMetadata, getCurrentDate, getFormatName, getMimeType, setFormatName, writePrimaryHDU, writeStarTable, writeStarTables, writeTableHDU
 
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
writeStarTable
 

Constructor Detail

FitsPlusTableWriter

public FitsPlusTableWriter()
Default constructor.


FitsPlusTableWriter

public FitsPlusTableWriter(java.lang.String name,
                           WideFits wide)
Custom constructor.

Parameters:
name - writer name
wide - convention for representing over-wide tables; null to avoid this convention
Method Detail

looksLikeFile

public boolean looksLikeFile(java.lang.String location)
Returns true if location ends with something like ".fit" or ".fits".

Parameters:
location - filename
Returns:
true if it sounds like a fits file

customisePrimaryHeader

protected void customisePrimaryHeader(nom.tam.fits.Header hdr)
                               throws nom.tam.fits.HeaderCardException
Description copied from class: VOTableFitsTableWriter
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.

Specified by:
customisePrimaryHeader in class VOTableFitsTableWriter
Throws:
nom.tam.fits.HeaderCardException

isMagic

protected boolean isMagic(int icard,
                          java.lang.String key,
                          java.lang.String value)
Description copied from class: VOTableFitsTableWriter
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 VOTableFitsTableWriter.customisePrimaryHeader(nom.tam.fits.Header)).

Overrides:
isMagic in class VOTableFitsTableWriter
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

createSerializer

protected FitsTableSerializer createSerializer(StarTable table)
                                        throws java.io.IOException
Description copied from class: AbstractFitsTableWriter
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.

Specified by:
createSerializer in class AbstractFitsTableWriter
Parameters:
table - table to serialize
Returns:
FITS serializer
Throws:
java.io.IOException - if the table can't be written

getStarTableWriters

public static StarTableWriter[] getStarTableWriters()
Returns a list of FITS-plus table writers with variant values of attributes. In fact this just returns two functionally identical instances but with different format names: one is "fits" and the other is "fits-plus".

Returns:
table writers

Copyright © 2004 CLRC: Central Laboratory of the Research Councils. All rights reserved.