All Downloads are FREE. Search and download functionalities are using the official Maven repository.

uk.ac.starlink.table.TableSink Maven / Gradle / Ivy

package uk.ac.starlink.table;

import java.io.IOException;

/**
 * Defines a set of callbacks to consume the information held in a 
 * StarTable.  This may be used to transmit a table from one place to
 * another in one go (passing a {@link StarTable} argument may be unsuitable
 * in that it requires the row sequence to be accessible multiple times).
 * Any source which uses this interface must do so in the following sequence:
 * 
    *
  1. Call {@link #acceptMetadata} once *
  2. Call {@link #acceptRow} once for each row in the table *
  3. Call {@link #endRows} once *
* Implementations are under no obligation to behave sensibly if this * sequence is not observed. * * @author Mark Taylor */ public interface TableSink { /** * Takes delivery of a row-less StarTable object which defines * the metadata of the table to be transmitted. * If the number of rows that will be transmitted via subsequent * calls to acceptRow is known, this value should be made * available as the row count of meta * ({@link StarTable#getRowCount}); if it is not known, the row count * should be -1. However, this object should not attempt to read * any of meta's cell data. *

* The data to be transmitted in subsequent calls of acceptRow * must match the metadata transmitted in this call in the same way * that rows of a StarTable must match its own metadata (number and * content clases of columns etc). * If this sink cannot dispose of a table corresponding to meta * then it may throw a TableFormatException - this may be the case * if for instance meta has columns with types that this * sink can't deal with. * * @param meta table metadata object * @throws TableFormatException if this sink cannot accept table rows * matching the given metadata */ void acceptMetadata( StarTable meta ) throws TableFormatException; /** * Takes delivery of one row of data. row is an array of * objects comprising the contents of one row of the table being * transmitted. The number and classes of the elements of row * are described by the metadata object previously accepted. * * @param row table data row */ void acceptRow( Object[] row ) throws IOException; /** * Signals that there are no more rows to be transmitted. */ void endRows() throws IOException; }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy