uk.ac.starlink.table.formats
Class AbstractTextTableWriter

java.lang.Object
  extended by uk.ac.starlink.table.StreamStarTableWriter
      extended by uk.ac.starlink.table.formats.AbstractTextTableWriter
All Implemented Interfaces:
StarTableWriter
Direct Known Subclasses:
AsciiTableWriter, TextTableWriter

public abstract class AbstractTextTableWriter
extends StreamStarTableWriter

A StarTableWriter which outputs text to a human-readable text file. Table parameters (per-table metadata) can optionally be output as well as the table data themselves.


Constructor Summary
protected AbstractTextTableWriter(boolean writeParams)
          Constructor.
 
Method Summary
protected abstract  String formatValue(Object val, ValueInfo vinfo, int width)
          Formats a data value for output.
protected static byte[] getBytes(String str)
          Returns a byte array corresponding to a given string.
 String getFormatName()
          Returns "text";
abstract  int getMaxWidth()
          Returns the maximum width for a given column.
 String getMimeType()
          Returns a string suitable for use as the value of a MIME Content-Type header.
 int getSampledRows()
          Returns the number of columns which will be sampled to work out the column width.
 boolean getWriteParameters()
          Finds out whether the output will include table parameters.
protected abstract  void printColumnHeads(OutputStream strm, int[] colwidths, ColumnInfo[] cinfos)
          Outputs headings for the table columns.
protected abstract  void printLine(OutputStream strm, int[] colwidths, String[] data)
          Outputs a line of table data.
protected abstract  void printParam(OutputStream strm, String name, String value)
          Outputs a parameter and its value.
protected abstract  void printSeparator(OutputStream strm, int[] colwidths)
          Outputs a decorative separator line, of the sort you might find between the column headings and the table data.
 void setWriteParameters(boolean writeParams)
          Set whether the output should include table parameters.
 void writeStarTable(StarTable startab, OutputStream strm)
          Writes a StarTable object to a given output stream.
 
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
 

Constructor Detail

AbstractTextTableWriter

protected AbstractTextTableWriter(boolean writeParams)
Constructor.

Parameters:
writeParams - whether parameters will be written by default
Method Detail

getFormatName

public String getFormatName()
Returns "text";

Returns:
"text"

getMimeType

public String getMimeType()
Description copied from interface: StarTableWriter
Returns a string suitable for use as the value of a MIME Content-Type header. If no suitable MIME type is available or known, one of "application/octet-stream" (for binary formats) or "text/plain" for ASCII ones) is recommended.

Returns:
MIME content type

writeStarTable

public void writeStarTable(StarTable startab,
                           OutputStream strm)
                    throws IOException
Description copied from interface: StarTableWriter
Writes a StarTable object to a given output stream. The implementation can assume that out is suitable for direct writing (for instance it should not normally wrap it in a BufferedOutputStream), and should not close it at the end of the call.

Not all table writers are capable of writing to a stream; an implementation may throw a TableFormatException to indicate that it cannot do so.

Parameters:
startab - the table to write
strm - the output stream to which startab should be written
Throws:
TableFormatException - if this table cannot be written to a stream
IOException - if there is some I/O error

setWriteParameters

public void setWriteParameters(boolean writeParams)
Set whether the output should include table parameters. If so they are written as name:value pairs one per line before the start of the table proper.

Parameters:
writeParams - true iff you want table parameters to be output as well as the table data

getWriteParameters

public boolean getWriteParameters()
Finds out whether the output will include table parameters.

Returns:
true iff the table parameters will be output as well as the table data

getMaxWidth

public abstract int getMaxWidth()
Returns the maximum width for a given column. Values longer than this may be truncated.

Returns:
maximum permitted column width in characters

getSampledRows

public int getSampledRows()
Returns the number of columns which will be sampled to work out the column width.

Returns:
number of rows scanned

formatValue

protected abstract String formatValue(Object val,
                                      ValueInfo vinfo,
                                      int width)
Formats a data value for output.

Parameters:
val - the value
vinfo - the metadata object describing val's type
width - maximum preferred width into which the value should be formatted
Returns:
formatted string meaning value, preferably no longer than width characters

printSeparator

protected abstract void printSeparator(OutputStream strm,
                                       int[] colwidths)
                                throws IOException
Outputs a decorative separator line, of the sort you might find between the column headings and the table data.

Parameters:
strm - stream to write into
colwidths - column widths in characters
Throws:
IOException

printColumnHeads

protected abstract void printColumnHeads(OutputStream strm,
                                         int[] colwidths,
                                         ColumnInfo[] cinfos)
                                  throws IOException
Outputs headings for the table columns.

Parameters:
strm - stream to write into
colwidths - column widths in characters
cinfos - array of column headings
Throws:
IOException

printLine

protected abstract void printLine(OutputStream strm,
                                  int[] colwidths,
                                  String[] data)
                           throws IOException
Outputs a line of table data.

Parameters:
strm - stream to write into
colwidths - column widths in characters
data - array of strings to be output, one per column
Throws:
IOException

printParam

protected abstract void printParam(OutputStream strm,
                                   String name,
                                   String value)
                            throws IOException
Outputs a parameter and its value.

Parameters:
strm - stream to write into
name - parameter name
value - formatted parameter value
Throws:
IOException

getBytes

protected static byte[] getBytes(String str)
Returns a byte array corresponding to a given string.

Parameters:
str - string to decode

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