# Interface MultiTableBuilder

All Superinterfaces:
  `TableBuilder`

All Known Implementing Classes:
  `VerTableBuilder`

public interface MultiTableBuilder extends TableBuilder
Interface for objects which can construct an array of StarTables from a data resource. In most cases, this interface should be implemented by objects which also implement `TableBuilder`, but which additionally know how to read more than one table at a time.

Since:
  22 Oct 2009
Author:
  Mark Taylor

## Method Summary

Modifier and Type
Method
Description
`TableSequence`
`makeStarTables(uk.ac.starlink.util.DataSource datsrc, StoragePolicy storagePolicy)`
Constructs a sequence of StarTables based on a given DataSource.

### Methods inherited from interface TableBuilder

`canImport, getFormatName, looksLikeFile, makeStarTable, streamStarTable`

## Method Details

### makeStarTables

TableSequence makeStarTables(uk.ac.starlink.util.DataSource datsrc, StoragePolicy storagePolicy) throws IOException
Constructs a sequence of StarTables based on a given DataSource. If the source is not recognised or this object does not know how to make tables from it, then a `TableFormatException` should be thrown. If this builder thinks it should be able to handle the source but an error occurs during processing, an `IOException` can be thrown.

If the `position` of the data source is not null, then this method should return a sequence containing a single table, the one which would be returned by the `makeStarTable` method with that position.

Parameters:
  `datsrc` - the DataSource containing the table resource
  `storagePolicy` - a StoragePolicy object which may be used to supply scratch storage if the builder needs it
Returns:
  an array of StarTables read from `datsrc`
Throws:
  `TableFormatException` - if the table is not of a kind that can be handled by this handler
  `IOException` - if an unexpected I/O error occurs during processing