# Interface DataStoreFactory

All Known Implementing Classes:
  `CachedDataStoreFactory, PersistentDataStoreFactory, SimpleDataStoreFactory, WrapperDataStoreFactory`

public interface DataStoreFactory
Provides a data-bearing object capable of providing the actual data for a number of data specifications.

Since:
  11 Feb 2013
Author:
  Mark Taylor

## Method Summary

Modifier and Type
Method
Description
`DataStore`
`readDataStore(DataSpec[] specs, DataStore prevStore)`
Generates a DataStore capable of supplying the data for a given list of DataSpec objects.

## Method Details

### readDataStore

@Slow DataStore readDataStore(DataSpec[] specs, DataStore prevStore) throws IOException, InterruptedException
Generates a DataStore capable of supplying the data for a given list of DataSpec objects. The `prevStore` argument may optionally supply the result of a previous invocation of this method. The implementation may choose to make use of the internal state of such an instance for efficiency, for instance by re-using data that has already been read.

Since the bulk data is managed by the DataStore object, care should be taken about what happens to the DataStore objects supplied to and returned from this method. In particular, code both invoking and implementing this method should usually make sure not to keep a reference to the `prevStore` argument.

This method may perform the actual reading, and therefore take time. It is not intended to be invoked on the event dispatch thread.

Parameters:
  `specs` - data specifications; some elements may be null
  `prevStore` - previously obtained DataStore, or null
Returns:
  new data store
Throws:
  `IOException`
  `InterruptedException`