com.revusky.niggle.data
Interface MutableDataSource

All Superinterfaces:
DataSource, java.rmi.Remote
All Known Subinterfaces:
TransactionalDataSource
All Known Implementing Classes:
AbstractMutableDataSource

public interface MutableDataSource
extends DataSource

Interface implemented by objects that manage a collection of records.

Author:
Jonathan Revusky

Method Summary
 void addDataListener(DataListener dl)
          Add a listener that gets notified if ever a record is inserted, updated or deleted.
 void delete(Record rec)
          Delete a record given its primary lookup key.
 void insert(Record rec)
          Adds a new record to the managed pool.
 void removeDataListener(DataListener dl)
          Remove a listener that gets notified if ever a record is inserted, updated or deleted.
 java.util.List select(RecordFilter filter)
          This is equivalent to select(null, filter)
 java.util.List select(java.lang.String type, RecordFilter filter)
          Fetches a list of records matching filter.
 void update(Record oldRec, Record newRec)
          Replaces an existing version of a record with a new updated version.
 void wipeCache()
          If this data source is backed by some external mechanism, like an RDBMS, wipes the in-memory cache, if one is being maintained.
 
Methods inherited from interface com.revusky.niggle.data.DataSource
close, get, get, getName, getRecords, init, keys, keys
 

Method Detail

insert

public void insert(Record rec)
            throws java.io.IOException
Adds a new record to the managed pool.
Parameters:
rec - the record to add
Throws:
DuplicateRecordException - if another record already exists with same primary key as 'rec'.
java.io.IOException - if the record cannot be initialized (i.e. has missing fields or invalid field values, etc.), or in case of a low-level error.

update

public void update(Record oldRec,
                   Record newRec)
            throws java.io.IOException
Replaces an existing version of a record with a new updated version. Automatically replaces the previous version if it has not been modified since the object was taken from the data source. A ModifiedRecordException is thrown otherwise.

Not all underlying storage mediums will be able to support these semantics. Check your implementation carefully.

Parameters:
oldRec - the record to replace.
newRec - the new record.
Throws:
ModifiedRecordException - thrown if the record was modified by another process since rec was requested from a data source.
java.io.IOException - thrown in case of any other database or communication error.

delete

public void delete(Record rec)
            throws java.io.IOException
Delete a record given its primary lookup key.
Parameters:
the - record to delete.

select

public java.util.List select(RecordFilter filter)
                      throws java.io.IOException
This is equivalent to select(null, filter)

select

public java.util.List select(java.lang.String type,
                             RecordFilter filter)
                      throws java.io.IOException
Fetches a list of records matching filter. If filter is null, returns all the records of the given type in the container.
Parameters:
the - type of record we are interested in, possibly null
filter - the record filter, or null.
Returns:
a List of all the records that are an instance of a given class. If no records match the filter, an empty List.

wipeCache

public void wipeCache()
               throws java.io.IOException
If this data source is backed by some external mechanism, like an RDBMS, wipes the in-memory cache, if one is being maintained. Otherwise, it does nothing.

addDataListener

public void addDataListener(DataListener dl)
                     throws java.io.IOException
Add a listener that gets notified if ever a record is inserted, updated or deleted.
Parameters:
dl - the listener

removeDataListener

public void removeDataListener(DataListener dl)
                        throws java.io.IOException
Remove a listener that gets notified if ever a record is inserted, updated or deleted.
Parameters:
dl - the listener