## gate.persist
Class SerialDataStore

    java.lang.Object
      |
      +--gate.util.AbstractFeatureBearer
            |
            +--gate.persist.SerialDataStore

All Implemented Interfaces:
  DataStore, FeatureBearer, NameBearer, Serializable

public class SerialDataStore
extends AbstractFeatureBearer
implements DataStore

A data store based on Java serialisation.

See Also:
  Serialized Form

Fields inherited from interface gate.DataStore
`DATASTORE_FEATURE_NAME, LR_ID_FEATURE_NAME`

Constructor Summary
`SerialDataStore()` Default construction.
`SerialDataStore(String storageDirUrl)` Construction requires a file protocol URL pointing to the storage directory used for the serialised classes.

Method Summary
`void` `addDatastoreListener(DatastoreListener l)` Registers a new `DatastoreListener` with this datastore
`LanguageResource` `adopt(LanguageResource lr, SecurityInfo secInfo)` Adopt a resource for persistence.
`boolean` `canReadLR(Object lrID)` Checks if the user (identified by the sessionID) has read access to the LR
`boolean` `canWriteLR(Object lrID)` Checks if the user (identified by the sessionID) has write access to the LR
`void` `close()` Close the data store.
`void` `create()` Create a new data store.
`void` `delete()` Delete the data store.
`void` `delete(String lrClassName, Object lrPersistenceId)` Delete a resource from the data store.
`boolean` `equals(Object other)` Equality: based on storage dir of other.
`String` `getComment()` Returns the comment displayed by the GUI for this DataStore
`String` `getIconName()` Returns the name of the icon to be used when this datastore is displayed in the GUI
`LanguageResource` `getLr(String lrClassName, Object lrPersistenceId)` Get a resource from the persistent store.
`List` `getLrIds(String lrType)` Get a list of the IDs of LRs of a particular type that are present.
`String` `getLrName(Object lrId)` Get the name of an LR from its ID.
`List` `getLrNames(String lrType)` Get a list of the names of LRs of a particular type that are present.
`List` `getLrTypes()` Get a list of the types of LR that are present in the data store.
`String` `getName()` Returns the name of this resource
`SecurityInfo` `getSecurityInfo(LanguageResource lr)` get security information for LR .
`Session` `getSession(Session s)` identify user using this datastore
`File` `getStorageDir()` Get method for storage URL
`String` `getStorageUrl()` Get the URL for the underlying storage mechanism.
`int` `hashCode()` Calculate a hash code based on the class and the storage dir.
`boolean` `isAutoSaving()` Get the autosaving behaviour of the LR.
`boolean` `lockLr(LanguageResource lr)` Try to acquire exlusive lock on a resource from the persistent store.
`void` `open()` Open a connection to the data store.
`void` `removeDatastoreListener(DatastoreListener l)` Removes a a previously registered `DatastoreListener` from the list listeners for this datastore
`void` `setAutoSaving(boolean autoSaving)` Set method for the autosaving behaviour of the data store.
`void` `setName(String name)` Sets the name of this resource
`void` `setSecurityInfo(LanguageResource lr, SecurityInfo si)` set security information for LR .
`void` `setSession(Session s)` identify user using this datastore
`void` `setStorageDir(File storageDir)` Set method for storage URL
`void` `setStorageUrl(String urlString)` Set the URL for the underlying storage mechanism.
`void` `sync(LanguageResource lr)` Save: synchonise the in-memory image of the LR with the persistent image.
`String` `toString()` String representation
`void` `unlockLr(LanguageResource lr)` Releases the exlusive lock on a resource from the persistent store.

Methods inherited from class gate.util.AbstractFeatureBearer
`getFeatures, setFeatures`

Methods inherited from class java.lang.Object
`getClass, notify, notifyAll, wait, wait, wait`

Methods inherited from interface gate.util.FeatureBearer
`getFeatures, setFeatures`

Constructor Detail

### SerialDataStore

    public SerialDataStore(String storageDirUrl)
                    throws PersistenceException

  Construction requires a file protocol URL pointing to the storage directory used for the serialised classes. NOTE: should not be called except by GATE code.

### SerialDataStore

    public SerialDataStore()

  Default construction. NOTE: should not be called except by GATE code.

Method Detail

### setStorageDir

    public void setStorageDir(File storageDir)

  Set method for storage URL

### getStorageDir

    public File getStorageDir()

  Get method for storage URL

### setStorageUrl

    public void setStorageUrl(String urlString)
                       throws PersistenceException

  Set the URL for the underlying storage mechanism.
  Specified by:
    `setStorageUrl` in interface `DataStore`

### getStorageUrl

    public String getStorageUrl()

  Get the URL for the underlying storage mechanism.
  Specified by:
    `getStorageUrl` in interface `DataStore`

### create

    public void create()
                throws PersistenceException

  Create a new data store. This tries to create a directory in the local file system. If the directory already exists and is non-empty, or is a file, or cannot be created, PersistenceException is thrown.
  Specified by:
    `create` in interface `DataStore`

### delete

    public void delete()
                throws PersistenceException

  Delete the data store.
  Specified by:
    `delete` in interface `DataStore`

### delete

    public void delete(String lrClassName,
                       Object lrPersistenceId)
                throws PersistenceException

  Delete a resource from the data store.
  Specified by:
    `delete` in interface `DataStore`
  Following copied from interface: `gate.DataStore`
  Parameters:
    `lrId` - a data-store specific unique identifier for the resource
    `lrClassName` - class name of the type of resource

### adopt

    public LanguageResource adopt(LanguageResource lr,
                                  SecurityInfo secInfo)
                           throws PersistenceException,
                                  SecurityException

  Adopt a resource for persistence.
  Specified by:
    `adopt` in interface `DataStore`

### open

    public void open()
              throws PersistenceException

  Open a connection to the data store.
  Specified by:
    `open` in interface `DataStore`

### close

    public void close()
               throws PersistenceException

  Close the data store.
  Specified by:
    `close` in interface `DataStore`

### sync

    public void sync(LanguageResource lr)
              throws PersistenceException

  Save: synchonise the in-memory image of the LR with the persistent image.
  Specified by:
    `sync` in interface `DataStore`

### getLr

    public LanguageResource getLr(String lrClassName,
                                  Object lrPersistenceId)
                           throws PersistenceException,
                                  SecurityException

  Get a resource from the persistent store. Don't use this method - use Factory.createResource with DataStore and DataStoreInstanceId parameters set instead. (Sometimes I wish Java had "friend" declarations...)
  Specified by:
    `getLr` in interface `DataStore`

### getLrTypes

    public List getLrTypes()
                    throws PersistenceException

  Get a list of the types of LR that are present in the data store.
  Specified by:
    `getLrTypes` in interface `DataStore`

### getLrIds

    public List getLrIds(String lrType)
                  throws PersistenceException

  Get a list of the IDs of LRs of a particular type that are present.
  Specified by:
    `getLrIds` in interface `DataStore`

### getLrNames

    public List getLrNames(String lrType)
                    throws PersistenceException

  Get a list of the names of LRs of a particular type that are present.
  Specified by:
    `getLrNames` in interface `DataStore`

### getLrName

    public String getLrName(Object lrId)

  Get the name of an LR from its ID.
  Specified by:
    `getLrName` in interface `DataStore`

### setAutoSaving

    public void setAutoSaving(boolean autoSaving)
                       throws UnsupportedOperationException

  Set method for the autosaving behaviour of the data store. NOTE: this type of datastore has no auto-save function, therefore this method throws an UnsupportedOperationException.
  Specified by:
    `setAutoSaving` in interface `DataStore`

### isAutoSaving

    public boolean isAutoSaving()

  Get the autosaving behaviour of the LR.
  Specified by:
    `isAutoSaving` in interface `DataStore`

### toString

    public String toString()

  String representation
  Overrides:
    `toString` in class `Object`

### hashCode

    public int hashCode()

  Calculate a hash code based on the class and the storage dir.
  Overrides:
    `hashCode` in class `Object`

### equals

    public boolean equals(Object other)

  Equality: based on storage dir of other.
  Overrides:
    `equals` in class `Object`

### removeDatastoreListener

    public void removeDatastoreListener(DatastoreListener l)

  Description copied from interface: `DataStore`
  Removes a a previously registered `DatastoreListener` from the list listeners for this datastore
  Specified by:
    `removeDatastoreListener` in interface `DataStore`

### addDatastoreListener

    public void addDatastoreListener(DatastoreListener l)

  Description copied from interface: `DataStore`
  Registers a new `DatastoreListener` with this datastore
  Specified by:
    `addDatastoreListener` in interface `DataStore`

### getIconName

    public String getIconName()

  Returns the name of the icon to be used when this datastore is displayed in the GUI
  Specified by:
    `getIconName` in interface `DataStore`

### getComment

    public String getComment()

  Returns the comment displayed by the GUI for this DataStore
  Specified by:
    `getComment` in interface `DataStore`

### canReadLR

    public boolean canReadLR(Object lrID)
                      throws PersistenceException,
                             SecurityException

  Checks if the user (identified by the sessionID) has read access to the LR
  Specified by:
    `canReadLR` in interface `DataStore`

### canWriteLR

    public boolean canWriteLR(Object lrID)
                       throws PersistenceException,
                              SecurityException

  Checks if the user (identified by the sessionID) has write access to the LR
  Specified by:
    `canWriteLR` in interface `DataStore`

### setName

    public void setName(String name)

  Sets the name of this resource
  Specified by:
    `setName` in interface `NameBearer`

### getName

    public String getName()

  Returns the name of this resource
  Specified by:
    `getName` in interface `NameBearer`

### getSecurityInfo

    public SecurityInfo getSecurityInfo(LanguageResource lr)
                                 throws PersistenceException

  get security information for LR .
  Specified by:
    `getSecurityInfo` in interface `DataStore`

### setSecurityInfo

    public void setSecurityInfo(LanguageResource lr,
                                SecurityInfo si)
                         throws PersistenceException,
                                SecurityException

  set security information for LR .
  Specified by:
    `setSecurityInfo` in interface `DataStore`

### setSession

    public void setSession(Session s)
                    throws SecurityException

  identify user using this datastore
  Specified by:
    `setSession` in interface `DataStore`

### getSession

    public Session getSession(Session s)
                       throws SecurityException

  identify user using this datastore
  Specified by:
    `getSession` in interface `DataStore`

### lockLr

    public boolean lockLr(LanguageResource lr)
                   throws PersistenceException,
                          SecurityException

  Try to acquire exlusive lock on a resource from the persistent store. Always call unlockLR() when the lock is no longer needed
  Specified by:
    `lockLr` in interface `DataStore`

### unlockLr

    public void unlockLr(LanguageResource lr)
                  throws PersistenceException,
                         SecurityException

  Releases the exlusive lock on a resource from the persistent store.
  Specified by:
    `unlockLr` in interface `DataStore`