sdsu.io
Class ASCIIFileRepository

java.lang.Object
  |
  +--sdsu.io.ASCIIFileRepository

public class ASCIIFileRepository
extends java.lang.Object
implements Repository

A Repository is a hashtable like interface to a persistent storage medium. Items are placed into the repository via the put method, retrieved via the get method. The items in the repository are preserved between invocations of the programs that access the repository. Each item in the repository has a key (or label) which identifies the item, and an optional comment. The ASCIIFileRepository stores each item in a separate ASCII file. The name of the file is in the format "key.class", where key = key for the item, class is the short name of the class of the item. Items in an ASCIIFileRepository can be instances of: String, java.util.Properties, sdsu.util.Stringizable (which includes sdsu.util.List, sdsu.util.LabeledData, sdsu.util.Table, sdsu.util.LabeledTable) and any class that implements java.io.Serializable. When created by the ASCIIFileRepository a file contains comments and metadata. Comments are lines starting with '#' and end at the end of the line. Metadata are on lines starting with "#!". Metadata includes the key and class of the item in the file. The file starts with comment lines, then metadata lines, then comment lines, then a string version of the item. If the file is created by hand the comments and metadata are not required.

Version:
0.9 June 1998
Author:
Roger Whitney (whitney@cs.sdsu.edu)

Constructor Summary
ASCIIFileRepository(java.io.File repositoryDirectory)
          Open a ASCIIFileRepository.
ASCIIFileRepository(java.lang.String directoryName)
          Open a ASCIIFileRepository.
 
Method Summary
 boolean containsKey(java.lang.String key)
          Returns true is the repostitory contains data at the given key
 boolean containsSubrepository(java.lang.String name)
          Returns false as does not support subrepositories
 boolean create()
          Create the required storage structures for the repository.
 boolean createSubrepository(java.lang.String name)
          Returns false as does not support subrepositories.
 boolean exists()
          Returns true if the repository exists
 java.lang.Object get(java.lang.String key)
          Retreive the item in the repository stored under the given key.
 java.util.Enumeration getSubrepositories()
          Returns null as does not support subrepositories
 Repository getSubrepository(java.lang.String name)
          Returns a null as subrepository are not supported.
 boolean isEmpty()
          Returns true if the repository contains no keys or values
 java.util.Enumeration keys()
          Returns an enumeration of the keys in the repository
 int length()
          Returns the number of keys in the repository.
 void put(java.lang.String key, java.lang.Object value)
          Add the object "value" to the repository with the given key.
 void put(java.lang.String key, java.lang.Object value, java.lang.String comment)
           
 void putSerializable(java.lang.String key, java.io.Serializable value)
          Add the object "value" to the repository with the given key.
 void putSerializable(java.lang.String key, java.io.Serializable value, java.lang.String comment)
           
 boolean remove(java.lang.String key)
          Removes the given key and corresponding value from the repository.
 void setNameSeparator(char newSeparator)
          The name separator is the char used to separate the name of a Repository and a subrepository or key.
 int size()
          Returns the number of keys in the repository.
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

ASCIIFileRepository

public ASCIIFileRepository(java.lang.String directoryName)
Open a ASCIIFileRepository.
Parameters:
directoryName - The directory containing the repository files.

ASCIIFileRepository

public ASCIIFileRepository(java.io.File repositoryDirectory)
Open a ASCIIFileRepository.
Parameters:
repositoryDirectory - The directory containing the repository files.
Method Detail

exists

public boolean exists()
Returns true if the repository exists
Specified by:
exists in interface Repository

create

public boolean create()
Create the required storage structures for the repository. Returns true if create was successful, false otherwise.
Specified by:
create in interface Repository

createSubrepository

public boolean createSubrepository(java.lang.String name)
Returns false as does not support subrepositories.
Specified by:
createSubrepository in interface Repository

put

public void put(java.lang.String key,
                java.lang.Object value)
         throws java.io.IOException
Add the object "value" to the repository with the given key.
Specified by:
put in interface Repository

put

public void put(java.lang.String key,
                java.lang.Object value,
                java.lang.String comment)
         throws java.io.IOException
Specified by:
put in interface Repository

putSerializable

public void putSerializable(java.lang.String key,
                            java.io.Serializable value)
                     throws java.io.IOException
Add the object "value" to the repository with the given key. Value is stored using java's serialization
Specified by:
putSerializable in interface Repository

putSerializable

public void putSerializable(java.lang.String key,
                            java.io.Serializable value,
                            java.lang.String comment)
                     throws java.io.IOException
Specified by:
putSerializable in interface Repository

get

public java.lang.Object get(java.lang.String key)
                     throws java.io.IOException
Retreive the item in the repository stored under the given key.
Specified by:
get in interface Repository

getSubrepository

public Repository getSubrepository(java.lang.String name)
Returns a null as subrepository are not supported.
Specified by:
getSubrepository in interface Repository

containsKey

public boolean containsKey(java.lang.String key)
Returns true is the repostitory contains data at the given key
Specified by:
containsKey in interface Repository

containsSubrepository

public boolean containsSubrepository(java.lang.String name)
Returns false as does not support subrepositories
Specified by:
containsSubrepository in interface Repository

setNameSeparator

public void setNameSeparator(char newSeparator)
The name separator is the char used to separate the name of a Repository and a subrepository or key. The default char used is a '.'
Specified by:
setNameSeparator in interface Repository

getSubrepositories

public java.util.Enumeration getSubrepositories()
Returns null as does not support subrepositories
Specified by:
getSubrepositories in interface Repository

keys

public java.util.Enumeration keys()
Returns an enumeration of the keys in the repository
Specified by:
keys in interface Repository

isEmpty

public boolean isEmpty()
Returns true if the repository contains no keys or values
Specified by:
isEmpty in interface Repository

size

public int size()
Returns the number of keys in the repository. Same as length
Specified by:
size in interface Repository

length

public int length()
Returns the number of keys in the repository. Same as size.
Specified by:
length in interface Repository

remove

public boolean remove(java.lang.String key)
Removes the given key and corresponding value from the repository.
Specified by:
remove in interface Repository