Package org.apache.jackrabbit.core.fs.db
Class DatabaseFileSystem
- java.lang.Object
-
- org.apache.jackrabbit.core.fs.db.DatabaseFileSystem
-
- All Implemented Interfaces:
FileSystem
- Direct Known Subclasses:
DbFileSystem,JNDIDatabaseFileSystem
public abstract class DatabaseFileSystem extends Object implements FileSystem
Base class for database file systems. This class contains common functionality for database file system subclasses that normally differ only in the way the database connection is acquired.See the
DbFileSystemfor a detailed description of the available configuration options and database behaviour.
-
-
Field Summary
Fields Modifier and Type Field Description protected ConnectionHelperconHelpertheConnectionHelperset in theinit()methodprotected StringcopyFileSQLprotected StringcopyFilesSQLprotected StringdeleteFileSQLprotected StringdeleteFolderSQLprotected static intINITIAL_BUFFER_SIZEprotected booleaninitializedprotected StringinsertFileSQLprotected StringinsertFolderSQLprotected Stringschemaprotected StringschemaObjectPrefixprotected StringselectChildCountSQLprotected StringselectDataSQLprotected StringselectExistSQLprotected StringselectFileAndFolderNamesSQLprotected StringselectFileExistSQLprotected StringselectFileNamesSQLprotected StringselectFolderExistSQLprotected StringselectFolderNamesSQLprotected StringselectLastModifiedSQLprotected StringselectLengthSQLprotected StringupdateDataSQLprotected StringupdateLastModifiedSQL-
Fields inherited from interface org.apache.jackrabbit.core.fs.FileSystem
SEPARATOR, SEPARATOR_CHAR
-
-
Constructor Summary
Constructors Constructor Description DatabaseFileSystem()Default constructor
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description protected voidbuildSQLStatements()Builds the SQL statementsvoidclose()Close the file system.protected CheckSchemaOperationcreateCheckSchemaOperation()This method is called frominit()after thecreateConnectionHelper(DataSource)method, and returns a defaultCheckSchemaOperation.protected ConnectionHelpercreateConnectionHelper(DataSource dataSrc)This method is called from theinit()method of this class and returns aConnectionHelperinstance which is assigned to theconHelperfield.protected voidcreateDeepFolder(String folderPath)Creates the specified files system folder entry, recursively creating any non-existing intermediate folder entries.voidcreateFolder(String folderPath)Creates the folder named by this path, including any necessary but nonexistent parent folders.voiddeleteFile(String filePath)Deletes the file denoted by this path.voiddeleteFolder(String folderPath)Deletes the folder denoted by this path.booleanequals(Object obj)booleanexists(String path)Tests whether the file system entry denoted by this path exists.protected abstract DataSourcegetDataSource()InputStreamgetInputStream(String filePath)Returns an input stream of the contents of the file denoted by this path.OutputStreamgetOutputStream(String filePath)Returns an output stream for writing bytes to the file denoted by this path.StringgetSchema()StringgetSchemaObjectPrefix()booleanhasChildren(String path)Tests whether the file system entry denoted by this path has child entries.inthashCode()Returns zero to satisfy the Object equals/hashCode contract.voidinit()Initialize the file systembooleanisFile(String path)Tests whether the file system entry denoted by this path exists and is a file.booleanisFolder(String path)Tests whether the file system entry denoted by this path exists and is a folder.booleanisSchemaCheckEnabled()longlastModified(String path)Returns the time that the file system entry denoted by this path was last modified.longlength(String filePath)Returns the length of the file denoted by this path.String[]list(String folderPath)Returns an array of strings naming the files and folders in the folder denoted by this path.String[]listFiles(String folderPath)Returns an array of strings naming the files in the folder denoted by this path.String[]listFolders(String folderPath)Returns an array of strings naming the folders in the folder denoted by this path.voidsetSchema(String schema)voidsetSchemaCheckEnabled(boolean enabled)voidsetSchemaObjectPrefix(String schemaObjectPrefix)protected voidverifyRootExists()Verifies that the root file system entry exists.
-
-
-
Field Detail
-
initialized
protected boolean initialized
-
schema
protected String schema
-
schemaObjectPrefix
protected String schemaObjectPrefix
-
INITIAL_BUFFER_SIZE
protected static final int INITIAL_BUFFER_SIZE
- See Also:
- Constant Field Values
-
conHelper
protected ConnectionHelper conHelper
theConnectionHelperset in theinit()method
-
selectExistSQL
protected String selectExistSQL
-
selectFileExistSQL
protected String selectFileExistSQL
-
selectFolderExistSQL
protected String selectFolderExistSQL
-
selectChildCountSQL
protected String selectChildCountSQL
-
selectDataSQL
protected String selectDataSQL
-
selectLastModifiedSQL
protected String selectLastModifiedSQL
-
selectLengthSQL
protected String selectLengthSQL
-
selectFileNamesSQL
protected String selectFileNamesSQL
-
selectFolderNamesSQL
protected String selectFolderNamesSQL
-
selectFileAndFolderNamesSQL
protected String selectFileAndFolderNamesSQL
-
deleteFileSQL
protected String deleteFileSQL
-
deleteFolderSQL
protected String deleteFolderSQL
-
insertFileSQL
protected String insertFileSQL
-
insertFolderSQL
protected String insertFolderSQL
-
updateDataSQL
protected String updateDataSQL
-
updateLastModifiedSQL
protected String updateLastModifiedSQL
-
copyFileSQL
protected String copyFileSQL
-
copyFilesSQL
protected String copyFilesSQL
-
-
Method Detail
-
getSchemaObjectPrefix
public String getSchemaObjectPrefix()
-
setSchemaObjectPrefix
public void setSchemaObjectPrefix(String schemaObjectPrefix)
-
getSchema
public String getSchema()
-
setSchema
public void setSchema(String schema)
-
isSchemaCheckEnabled
public final boolean isSchemaCheckEnabled()
- Returns:
- whether the schema check is enabled
-
setSchemaCheckEnabled
public final void setSchemaCheckEnabled(boolean enabled)
- Parameters:
enabled- set whether the schema check is enabled
-
hashCode
public int hashCode()
Returns zero to satisfy the Object equals/hashCode contract. This class is mutable and not meant to be used as a hash key.- Overrides:
hashCodein classObject- Returns:
- always zero
- See Also:
Object.hashCode()
-
init
public void init() throws FileSystemExceptionInitialize the file system- Specified by:
initin interfaceFileSystem- Throws:
FileSystemException- if the file system initialization fails
-
getDataSource
protected abstract DataSource getDataSource() throws Exception
- Returns:
- Throws:
Exception
-
createConnectionHelper
protected ConnectionHelper createConnectionHelper(DataSource dataSrc) throws Exception
This method is called from theinit()method of this class and returns aConnectionHelperinstance which is assigned to theconHelperfield. Subclasses may override it to return a specialized connection helper.- Parameters:
dataSrc- theDataSourceof this persistence manager- Returns:
- a
ConnectionHelper - Throws:
Exception- on error
-
createCheckSchemaOperation
protected CheckSchemaOperation createCheckSchemaOperation()
This method is called frominit()after thecreateConnectionHelper(DataSource)method, and returns a defaultCheckSchemaOperation. Subclasses can overrride this implementation to get a customized implementation.- Returns:
- a new
CheckSchemaOperationinstance
-
close
public void close() throws FileSystemExceptionClose the file system. After calling this method, the file system is no longer accessible.- Specified by:
closein interfaceFileSystem- Throws:
FileSystemException
-
createFolder
public void createFolder(String folderPath) throws FileSystemException
Creates the folder named by this path, including any necessary but nonexistent parent folders. Note that if this operation fails it may have succeeded in creating some of the necessary parent folders.- Specified by:
createFolderin interfaceFileSystem- Parameters:
folderPath- the path of the folder to be created.- Throws:
FileSystemException- if a file system entry denoted by path already exists or if another error occurs.
-
deleteFile
public void deleteFile(String filePath) throws FileSystemException
Deletes the file denoted by this path.- Specified by:
deleteFilein interfaceFileSystem- Parameters:
filePath- the path of the file to be deleted.- Throws:
FileSystemException- if this path does not denote a file or if another error occurs.
-
deleteFolder
public void deleteFolder(String folderPath) throws FileSystemException
Deletes the folder denoted by this path. Any contents of this folder (folders and files) will be deleted recursively.- Specified by:
deleteFolderin interfaceFileSystem- Parameters:
folderPath- the path of the folder to be deleted.- Throws:
FileSystemException- if this path does not denote a folder or if another error occurs.
-
exists
public boolean exists(String path) throws FileSystemException
Tests whether the file system entry denoted by this path exists.- Specified by:
existsin interfaceFileSystem- Parameters:
path- the path of a file system entry.- Returns:
- true if the file system entry at path exists; false otherwise.
- Throws:
FileSystemException
-
isFile
public boolean isFile(String path) throws FileSystemException
Tests whether the file system entry denoted by this path exists and is a file.- Specified by:
isFilein interfaceFileSystem- Parameters:
path- the path of a file system entry.- Returns:
- true if the file system entry at path is a file; false otherwise.
- Throws:
FileSystemException
-
isFolder
public boolean isFolder(String path) throws FileSystemException
Tests whether the file system entry denoted by this path exists and is a folder.- Specified by:
isFolderin interfaceFileSystem- Parameters:
path- the path of a file system entry.- Returns:
- true if the file system entry at path is a folder; false otherwise.
- Throws:
FileSystemException
-
lastModified
public long lastModified(String path) throws FileSystemException
Returns the time that the file system entry denoted by this path was last modified.- Specified by:
lastModifiedin interfaceFileSystem- Parameters:
path- the path of a file system entry.- Returns:
- A long value representing the time the file system entry was last modified, measured in milliseconds since the epoch (00:00:00 GMT, January 1, 1970), or 0L if the modification time can't be determined.
- Throws:
FileSystemException- if the file system entry does not exist.
-
length
public long length(String filePath) throws FileSystemException
Returns the length of the file denoted by this path.- Specified by:
lengthin interfaceFileSystem- Parameters:
filePath- the path of the file.- Returns:
- The length, in bytes, of the file denoted by this path, or -1L if the length can't be determined.
- Throws:
FileSystemException- if the path does not denote an existing file.
-
hasChildren
public boolean hasChildren(String path) throws FileSystemException
Tests whether the file system entry denoted by this path has child entries.- Specified by:
hasChildrenin interfaceFileSystem- Parameters:
path- the path of a file system entry.- Returns:
- true if the file system entry at path has child entries; false otherwise.
- Throws:
FileSystemException
-
list
public String[] list(String folderPath) throws FileSystemException
Returns an array of strings naming the files and folders in the folder denoted by this path.- Specified by:
listin interfaceFileSystem- Parameters:
folderPath- the path of the folder whose contents is to be listed.- Returns:
- an array of strings naming the files and folders in the folder denoted by this path.
- Throws:
FileSystemException- if this path does not denote a folder or if another error occurs.
-
listFiles
public String[] listFiles(String folderPath) throws FileSystemException
Returns an array of strings naming the files in the folder denoted by this path.- Specified by:
listFilesin interfaceFileSystem- Parameters:
folderPath- the path of the folder whose contents is to be listed.- Returns:
- an array of strings naming the files in the folder denoted by this path.
- Throws:
FileSystemException- if this path does not denote a folder or if another error occurs.
-
listFolders
public String[] listFolders(String folderPath) throws FileSystemException
Returns an array of strings naming the folders in the folder denoted by this path.- Specified by:
listFoldersin interfaceFileSystem- Parameters:
folderPath- the path of the folder whose contents is to be listed.- Returns:
- an array of strings naming the folders in the folder denoted by this path.
- Throws:
FileSystemException- if this path does not denote a folder or if another error occurs.
-
getInputStream
public InputStream getInputStream(String filePath) throws FileSystemException
Returns an input stream of the contents of the file denoted by this path.- Specified by:
getInputStreamin interfaceFileSystem- Parameters:
filePath- the path of the file.- Returns:
- an input stream of the contents of the file.
- Throws:
FileSystemException- if the file does not exist or if it cannot be read from
-
getOutputStream
public OutputStream getOutputStream(String filePath) throws FileSystemException
Returns an output stream for writing bytes to the file denoted by this path. The file will be created if it doesn't exist. If the file exists, its contents will be overwritten.- Specified by:
getOutputStreamin interfaceFileSystem- Parameters:
filePath- the path of the file.- Returns:
- an output stream for writing bytes to the file.
- Throws:
FileSystemException- if the file cannot be written to or created
-
buildSQLStatements
protected void buildSQLStatements()
Builds the SQL statements
-
verifyRootExists
protected void verifyRootExists() throws ExceptionVerifies that the root file system entry exists. If it doesn't exist yet it will be automatically created.- Throws:
Exception- if an error occurs
-
createDeepFolder
protected void createDeepFolder(String folderPath) throws FileSystemException
Creates the specified files system folder entry, recursively creating any non-existing intermediate folder entries.- Parameters:
folderPath- folder entry to create- Throws:
FileSystemException- if an error occurs
-
-