sdsu.io
Class LocalRepository

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

public class LocalRepository
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. LocalRepository stores each item in a separate 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. This version of LocalRepository supports 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. If a class supports Serializable and another supported type (string for example) the non-serializable format is selected over serializable. If you wish to force such an object to be saved via serialization, use putSerializable. See sdsu.io.ASCIIFileRepository for file formats of these items. ASCIIFileRepository is designed to support files created by hand for configuration files. These files can contain persistant comments.

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

Constructor Summary
LocalRepository(java.io.File repositoryLocation)
          Open a ASCIIFileRepository.
LocalRepository(java.lang.String directoryName)
          Open a ASCIIFileRepository.
 
Method Summary
 boolean containsKey(java.lang.String key)
          Returns true is the repostitory or a subrepository contains data at the given key
 boolean containsSubrepository(java.lang.String name)
          Returns true if the repostitory contains the given subrepository
 boolean create()
           
 boolean createSubrepository(java.lang.String name)
          Create a subrepository.
 boolean exists()
          Returns true if the repository exists.
 java.lang.Object get(java.lang.String key)
          Retreive the item in the repository or a subrepository stored under the given key.
 java.util.Enumeration getSubrepositories()
          Return an enumeration of the subrepositories.
 Repository getSubrepository(java.lang.String name)
          Return a subrepository.
 boolean isEmpty()
          Returns true if the repository contains no keys or subrepositories
 java.util.Enumeration keys()
          Returns an enumeration of the keys in the top level repository
 int length()
          Returns the number of keys and subrepositories in the repository.
 void put(java.lang.String key, java.lang.Object value)
          Add the object "value" to the repository or a subrepository with the given key.
 void put(java.lang.String key, java.lang.Object value, java.lang.String comment)
          Add the object "value" to the repository or a subrepository with the given key.
 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)
          Add the object "value" to the repository with the given key.
 boolean remove(java.lang.String key)
          Removes the given key and corresponding value from the repository or subrepository.
 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 and subrepositories in the repository.
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

LocalRepository

public LocalRepository(java.lang.String directoryName)
Open a ASCIIFileRepository.
Parameters:
directoryName - The directory containing the repository files. If the directory does not exist, it is not created. In this case You must call create() to create the underlying storage before using the Repository.

LocalRepository

public LocalRepository(java.io.File repositoryLocation)
Open a ASCIIFileRepository.
Parameters:
directoryName - The directory containing the repository files. If the directory does not exist, it is not created. In this case You must call create() to create the underlying storage before using the Repository.
Method Detail

exists

public boolean exists()
Returns true if the repository exists. If repository does not exist, use create to create it.
Specified by:
exists in interface Repository

create

public boolean create()
Specified by:
create in interface Repository

createSubrepository

public boolean createSubrepository(java.lang.String name)
Create a subrepository. Returns true if create was successful, false otherwise.
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 or a subrepository with the given key.
Specified by:
put in interface Repository
Parameters:
value - Currently limited to String, java.util.Properties, sdsu.util.Stringizable (which includes sdsu.util.List, sdsu.util.LabeledData, sdsu.util.Table, sdsu.util.LabeledTable) Will handle all other types, but not very intelligently.
Throws:
java.io.IOException - on any IO error in saving the object

put

public void put(java.lang.String key,
                java.lang.Object value,
                java.lang.String comment)
         throws java.io.IOException
Add the object "value" to the repository or a subrepository with the given key.
Specified by:
put in interface Repository
Parameters:
value - Currently limited to String, java.util.Properties, sdsu.util.Stringizable (which includes sdsu.util.List, sdsu.util.LabeledData, sdsu.util.Table, sdsu.util.LabeledTable) Will handle all other types, but not very intelligently.
key - can contain reference to subrepositories. For example "Roger.Sam.key"
Throws:
java.io.IOException - on any IO error in saving the object

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 process.
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
Add the object "value" to the repository with the given key. The object is stored with the given comment. Value is stored using Java's serialization process.
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 or a subrepository stored under the given key.
Specified by:
get in interface Repository
Parameters:
key - can contain reference to subrepositories. For example "Roger.Sam.key"

getSubrepository

public Repository getSubrepository(java.lang.String name)
Return a subrepository. Returns null if repository does not exist.
Specified by:
getSubrepository in interface Repository
Parameters:
name - can contain reference to subrepositories. For example "Roger.Sam.Pete"

getSubrepositories

public java.util.Enumeration getSubrepositories()
Return an enumeration of the subrepositories. The enumeration does not directly contain sub-subrepositories.
Specified by:
getSubrepositories in interface Repository

containsKey

public boolean containsKey(java.lang.String key)
Returns true is the repostitory or a subrepository contains data at the given key
Specified by:
containsKey in interface Repository
Parameters:
key - can contain reference to subrepositories. For example "Roger.Sam.key"

containsSubrepository

public boolean containsSubrepository(java.lang.String name)
Returns true if the repostitory contains the given subrepository
Specified by:
containsSubrepository in interface Repository
Parameters:
name - can contain reference to subrepositories. For example "Roger.Sam"

keys

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

isEmpty

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

size

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

length

public int length()
Returns the number of keys and subrepositories 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 or subrepository.
Specified by:
remove 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