uk.org.ogsadai.dataresource
Class FilesDataResourceAccessor

java.lang.Object
  |
  +--uk.org.ogsadai.dataresource.FilesDataResourceAccessor
All Implemented Interfaces:
DataResourceAccessor, FileAccessProvider, PersistInFiles

public class FilesDataResourceAccessor
extends java.lang.Object
implements DataResourceAccessor, PersistInFiles, FileAccessProvider

A data resource accessor that provides access to file system data resources.

The configuration file is named dataResourceConfig.xml and is assumed to reside in the configuration files directory for the data service resource that owns this data resource accessor.

Author:
The OGSA-DAI Project Team

Field Summary
private static java.lang.String COPYRIGHT_NOTICE
           
private static DAILogger LOG
           
private static java.lang.String MAIN_CONFIG_FILE_NAME
           
private  java.io.File mDirectory
           
private  Property[] mProperties
           
private  java.lang.String mResourceName
           
 
Constructor Summary
FilesDataResourceAccessor()
           
 
Method Summary
 boolean canReadFile(java.lang.String userCredential, java.io.File file)
          Determines whether the user is allowed to read the specified file or directory.
 boolean canWriteFile(java.lang.String userCredential, java.io.File file)
          Determines whether the user is allowed to write the specified file or directory.
private  org.w3c.dom.Document getConfigAsDOM(java.lang.String name, java.io.File dir)
          Reads the data resource accessor configuration file and converts it to DOM.
private  java.io.File getDirectory(java.lang.String name, java.lang.String path)
          Returns the directory corresponding to the given path.
 java.io.File getHomeDirectory(java.lang.String userCredential)
          Gets the file data resource directory for a specified user.
private  Property[] getMetaData(java.lang.String name, org.w3c.dom.Document configDoc)
          Extract meta data from the data resource accessor configuration and convert to properties.
 Property[] getProperties()
          Gets the resource properties associated with the data resource accessor.
private  java.lang.String getRootDirectory(org.w3c.dom.Document configDoc)
          Returns the root directory of the file data resource.
 void restoreFromConfig(java.io.File directory)
          Configures the data resource accessor by reading any relevant configuration files in the given directory.
 void setResourceName(java.lang.String resourceName)
          Sets the name of the resource.
 void validateReadFile(java.lang.String userCredential, java.io.File file)
          Determines whether the user is allowed to read the specified file or directory.
 void validateWriteFile(java.lang.String userCredential, java.io.File file)
          Determines whether the user is allowed to write the specified file or directory.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

COPYRIGHT_NOTICE

private static final java.lang.String COPYRIGHT_NOTICE
See Also:
Constant Field Values

LOG

private static DAILogger LOG

MAIN_CONFIG_FILE_NAME

private static final java.lang.String MAIN_CONFIG_FILE_NAME
See Also:
Constant Field Values

mProperties

private Property[] mProperties

mResourceName

private java.lang.String mResourceName

mDirectory

private java.io.File mDirectory
Constructor Detail

FilesDataResourceAccessor

public FilesDataResourceAccessor()
Method Detail

setResourceName

public void setResourceName(java.lang.String resourceName)
Description copied from interface: DataResourceAccessor
Sets the name of the resource. This method will be called one before any other methods in this interface are called. Data resource accessors are not required to do anything with this name although it is sometimes useful to include it in any error messages.

Specified by:
setResourceName in interface DataResourceAccessor
Parameters:
resourceName - Name of the data service resource which will use this data resource accessor to mediate access to a data resource.

restoreFromConfig

public void restoreFromConfig(java.io.File directory)
                       throws DataResourceAccessorConfigException,
                              DataResourceAccessorMetaDataException,
                              DataResourceAccessorSetupException,
                              java.lang.IllegalArgumentException
Description copied from interface: PersistInFiles
Configures the data resource accessor by reading any relevant configuration files in the given directory.

If a data service resource is being constructed by reading from a configuration file this method will be called once immediately after the setName method is called. The data resource accessor should read its configuration from the files in the given directory of the data service resource which uses it.

Data resource accessors are free to add, amend or delete files in the given directory at any time throughout their lifetime. The exception to this rule is the dataResourceClassConfig.xml file which must be left unaltered since this specifies the data resource accessor class name.

Specified by:
restoreFromConfig in interface PersistInFiles
Parameters:
directory - Directory containing the data service resource configuration files. This includes the data resource accessor configuration files.
Throws:
java.lang.IllegalArgumentException - if the directory argument is null or is not a directory.
DataResourceAccessorSetupException - if an error occurs when setting up the data resource accessor after having read the configuration files.
DataResourceAccessorConfigException - if an error occurs reading the configuration files.
DataResourceAccessorMetaDataException - if an error occurs when constructing data resource accessor meta data properties.

getConfigAsDOM

private org.w3c.dom.Document getConfigAsDOM(java.lang.String name,
                                            java.io.File dir)
                                     throws DataResourceAccessorConfigException
Reads the data resource accessor configuration file and converts it to DOM.

Parameters:
name - Data service resource name.
dir - Data service resource configuration files directory.
Returns:
DOM representation of data resource accessor configuration file.
Throws:
DataResourceAccessorConfigException - if there is an error in reading the configuration file.

getMetaData

private Property[] getMetaData(java.lang.String name,
                               org.w3c.dom.Document configDoc)
                        throws DataResourceAccessorMetaDataException
Extract meta data from the data resource accessor configuration and convert to properties.

Parameters:
name - Data service resource name.
configDoc - Data resource accessor configuration document.
Returns:
meta data properties
Throws:
DataResourceAccessorMetaDataException - if an error occurs when constructing data resource accessor meta data properties.

getRootDirectory

private java.lang.String getRootDirectory(org.w3c.dom.Document configDoc)
Returns the root directory of the file data resource.

Parameters:
configDoc - Data resource accessor configuration document.
Returns:
the path to the root directory.

getDirectory

private java.io.File getDirectory(java.lang.String name,
                                  java.lang.String path)
                           throws DataResourceAccessorSetupException
Returns the directory corresponding to the given path.

Parameters:
name - Data service resource name.
path - Top-level path name.
Returns:
directory corresponding to path.
Throws:
DataResourceAccessorSetupException - if the directory does not exist is not a directory.

getProperties

public Property[] getProperties()
Description copied from interface: DataResourceAccessor
Gets the resource properties associated with the data resource accessor. These are made available as properties of the data service resource to which the data resource accessor belongs.

This method should be called once after the readConfig method has been called but before any other methods are called.

Specified by:
getProperties in interface DataResourceAccessor
Returns:
The resource proporties. If there are no resource properties then a zero-sized array will be returned.

getHomeDirectory

public java.io.File getHomeDirectory(java.lang.String userCredential)
                              throws DataResourceAuthorizationException,
                                     FilesResourceUseException,
                                     AuthorizationExecutionException
Description copied from interface: FileAccessProvider
Gets the file data resource directory for a specified user. This may be the root file data resource directory or a sub-directory depending upon how authorisation and access has been configured.

Specified by:
getHomeDirectory in interface FileAccessProvider
Parameters:
userCredential - Credentials specifying a user.
Returns:
the directory of the specified user.
Throws:
DataResourceAuthorizationException - if the user is not permitted any access to any part of the file data resource.
AuthorizationExecutionException - if there is a problem when authorizing the request.
FilesResourceUseException - if there is a problem in using the resource.

canReadFile

public boolean canReadFile(java.lang.String userCredential,
                           java.io.File file)
                    throws FilesResourceUseException
Description copied from interface: FileAccessProvider
Determines whether the user is allowed to read the specified file or directory.

Specified by:
canReadFile in interface FileAccessProvider
Parameters:
userCredential - Credentials of the specified user.
file - File or directory. The file need not currently exist.
Returns:
true if the user may attempt to read this file or directory, false otherwise.
Throws:
FilesResourceUseException - if there is a problem in using the resource.

validateReadFile

public void validateReadFile(java.lang.String userCredential,
                             java.io.File file)
                      throws DataResourceAuthorizationException,
                             FilesResourceUseException,
                             AuthorizationExecutionException
Description copied from interface: FileAccessProvider
Determines whether the user is allowed to read the specified file or directory.

Specified by:
validateReadFile in interface FileAccessProvider
Parameters:
userCredential - Credentials of the specified user.
file - File or directory. The file need not currently exist.
Throws:
FilesResourceUseException - if there is a problem in using the resource.
AuthorizationExecutionException - if there is a problem when authorizing the request.
DataResourceAuthorizationException - if the user is not permitted any access to any part of the file data resource.

canWriteFile

public boolean canWriteFile(java.lang.String userCredential,
                            java.io.File file)
                     throws FilesResourceUseException
Description copied from interface: FileAccessProvider
Determines whether the user is allowed to write the specified file or directory.

Specified by:
canWriteFile in interface FileAccessProvider
Parameters:
userCredential - Credentials of the specified user.
file - File or directory. The file need not currently exist.
Returns:
true if the user may attempt to write this file or directory, false otherwise.
Throws:
FilesResourceUseException - if there is a problem in using the resource.

validateWriteFile

public void validateWriteFile(java.lang.String userCredential,
                              java.io.File file)
                       throws DataResourceAuthorizationException,
                              FilesResourceUseException,
                              AuthorizationExecutionException
Description copied from interface: FileAccessProvider
Determines whether the user is allowed to write the specified file or directory.

Specified by:
validateWriteFile in interface FileAccessProvider
Parameters:
userCredential - Credentials of the specified user.
file - File or directory. The file need not currently exist.
Throws:
FilesResourceUseException - if there is a problem in using the resource.
AuthorizationExecutionException - if there is a problem when authorizing the request.
DataResourceAuthorizationException - if the user is not permitted any access to any part of the file data resource.