org.w3c.tools.resources.store
Class ResourceStoreImpl

java.lang.Object
  extended by org.w3c.tools.resources.store.ResourceStoreImpl
All Implemented Interfaces:
ResourceStore

public class ResourceStoreImpl
extends java.lang.Object
implements ResourceStore

A generic resource store that keeps resource in a file using the Serializer interface.


Field Summary
protected  ResourceStoreManager manager
          Our resource store manager.
protected  Serializer serializer
          Our Resource Serializer.
 
Constructor Summary
ResourceStoreImpl()
           
 
Method Summary
 boolean acceptUnload()
          Can this resource store be unloaded now ? This method gets called by the ResourceStoreManager before calling the shutdown method, when possible.
 void addResource(Resource resource)
          Add this resource to this resource store.
 java.util.Enumeration enumerateResourceIdentifiers()
          Enumerate all the resources saved in this store.
 java.lang.String getIdentifier()
          Get the identifier for that store.
 int getVersion()
          Get the version of that resource store.
 boolean hasResource(java.lang.String identifier)
          Check for the existence of a resource in this store.
 void initialize(ResourceStoreManager manager, java.lang.Object token, java.io.File repository, Serializer serializer)
          This resource store is being built, initialize it with the given arg.
protected  void internalSave(boolean unload)
          Internal save: save the repository back to disk.
 Resource loadResource(java.lang.String identifier, java.util.Hashtable defs)
          Restore the resource whose name is given.
protected  void loadResources()
           
 Resource lookupResource(java.lang.String identifier)
          Get this resource, but only if already loaded.
protected  void markModified()
           
 void markModified(Resource resource)
          Mark this resource as modified.
protected  void markUsed()
          Mark the store as having been used recently.
 void removeResource(java.lang.String identifier)
          Remove this resource from the repository.
 void renameResource(java.lang.String oldid, java.lang.String newid)
          Rename a given resource.
 void save()
          Save this store.
 void saveResource(Resource resource)
          Stabilize the given resource.
 void shutdown()
          Shutdown this store.
protected  void warning(java.lang.String msg)
          Emit the given string as a warning, to whoever it is appropriate.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

serializer

protected Serializer serializer
Our Resource Serializer.


manager

protected ResourceStoreManager manager
Our resource store manager.

Constructor Detail

ResourceStoreImpl

public ResourceStoreImpl()
Method Detail

markUsed

protected final void markUsed()
Mark the store as having been used recently.


markModified

protected void markModified()

getVersion

public int getVersion()
Get the version of that resource store. Version numbers are used to distinguish between pickling format. A resource store implementator has the duty of bumping the returned number whenever it's archiving format changes. Resource stores that relies on some external archiving mechanisms (such as a database), may return a constant.

Specified by:
getVersion in interface ResourceStore
Returns:
An integer version number.

getIdentifier

public java.lang.String getIdentifier()
Get the identifier for that store.

Specified by:
getIdentifier in interface ResourceStore
Returns:
A uniq store identifier, as a String.

warning

protected void warning(java.lang.String msg)
Emit the given string as a warning, to whoever it is appropriate.

Parameters:
msg - The warning message.

loadResource

public Resource loadResource(java.lang.String identifier,
                             java.util.Hashtable defs)
                      throws InvalidResourceException
Restore the resource whose name is given. This method doesn't assume that the resource will actually be restored, it can be kept in a cache by the ResourceStore object, and the cached version of the resource may be returned.

Specified by:
loadResource in interface ResourceStore
Parameters:
identifier - The identifier of the resource to restore.
defs - Default attribute values. If the resource needs to be restored from its pickled version, this Hashtable provides a set of default values for some of the attributes.
Returns:
A Resource instance, or null.
Throws:
InvalidResourceException - If the resource could not be restored from the store.

lookupResource

public Resource lookupResource(java.lang.String identifier)
Get this resource, but only if already loaded. The resource store may (recommended) maintain a cache of the resource it loads from its store. If the resource having this identifier has already been loaded, return it, otherwise, return null.

Specified by:
lookupResource in interface ResourceStore
Parameters:
identifier - The resource identifier.
Returns:
A Resource instance, or null.

saveResource

public void saveResource(Resource resource)
Stabilize the given resource.

Specified by:
saveResource in interface ResourceStore
Parameters:
resource - The resource to save.

addResource

public void addResource(Resource resource)
Add this resource to this resource store.

Specified by:
addResource in interface ResourceStore
Parameters:
resource - The resource to be added.

removeResource

public void removeResource(java.lang.String identifier)
Remove this resource from the repository.

Specified by:
removeResource in interface ResourceStore
Parameters:
identifier - The identifier of the resource to be removed.

renameResource

public void renameResource(java.lang.String oldid,
                           java.lang.String newid)
Rename a given resource.

Specified by:
renameResource in interface ResourceStore
Parameters:
oldid - The olde resource identifier.
newid - The new resource identifier.

markModified

public void markModified(Resource resource)
Mark this resource as modified.

Specified by:
markModified in interface ResourceStore
Parameters:
resource - The resource that has changed (and will have to be pickled some time latter).

acceptUnload

public boolean acceptUnload()
Can this resource store be unloaded now ? This method gets called by the ResourceStoreManager before calling the shutdown method, when possible. An implementation of that method is responsible for checking the acceptUnload method of all its loaded resource before returning true, meaning that the resource store can be unloaded.

Specified by:
acceptUnload in interface ResourceStore
Returns:
A boolean true if the resource store can be unloaded.

internalSave

protected void internalSave(boolean unload)
                     throws java.io.IOException
Internal save: save the repository back to disk.

Parameters:
unload - Should we unload any existing resources ?
Throws:
java.io.IOException

shutdown

public void shutdown()
Shutdown this store.

Specified by:
shutdown in interface ResourceStore

save

public void save()
Save this store.

Specified by:
save in interface ResourceStore

enumerateResourceIdentifiers

public java.util.Enumeration enumerateResourceIdentifiers()
Enumerate all the resources saved in this store.

Specified by:
enumerateResourceIdentifiers in interface ResourceStore
Returns:
An enumeration of Strings, giving the identifier for all the resources that this store knows about.

hasResource

public boolean hasResource(java.lang.String identifier)
Check for the existence of a resource in this store.

Specified by:
hasResource in interface ResourceStore
Parameters:
identifier - The identifier of the resource to check.
Returns:
A boolean true if the resource exists in this store, false otherwise.

loadResources

protected void loadResources()

initialize

public void initialize(ResourceStoreManager manager,
                       java.lang.Object token,
                       java.io.File repository,
                       Serializer serializer)
This resource store is being built, initialize it with the given arg.

Specified by:
initialize in interface ResourceStore
Parameters:
manager - The ResourceStoreManager instance that asks yourself to initialize.
token - The resource store manager key to that resource store, this token should be used when calling methods from the manager that are to act on yourself.
repository - A file, giving the location of the associated repository.