|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object org.apache.jackrabbit.core.fs.db.DatabaseFileSystem
public class DatabaseFileSystem
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. Subclasses should override
the getConnection()
method to return the configured database
connection.
See the DbFileSystem
for a detailed description of the available
configuration options and database behaviour.
Field Summary | |
---|---|
protected Connection |
con
|
protected String |
copyFileSQL
|
protected String |
copyFilesSQL
|
protected String |
deleteFileSQL
|
protected String |
deleteFolderSQL
|
protected static int |
INITIAL_BUFFER_SIZE
|
protected boolean |
initialized
|
protected String |
insertFileSQL
|
protected String |
insertFolderSQL
|
protected String |
schema
|
protected static String |
SCHEMA_OBJECT_PREFIX_VARIABLE
|
protected String |
schemaObjectPrefix
|
protected String |
selectChildCountSQL
|
protected String |
selectDataSQL
|
protected String |
selectExistSQL
|
protected String |
selectFileAndFolderNamesSQL
|
protected String |
selectFileExistSQL
|
protected String |
selectFileNamesSQL
|
protected String |
selectFolderExistSQL
|
protected String |
selectFolderNamesSQL
|
protected String |
selectLastModifiedSQL
|
protected String |
selectLengthSQL
|
protected static int |
SLEEP_BEFORE_RECONNECT
|
protected String |
updateDataSQL
|
protected String |
updateLastModifiedSQL
|
Fields inherited from interface org.apache.jackrabbit.core.fs.FileSystem |
---|
SEPARATOR, SEPARATOR_CHAR |
Constructor Summary | |
---|---|
DatabaseFileSystem()
Default constructor |
Method Summary | |
---|---|
protected void |
buildSQLStatements()
Builds the SQL statements |
protected void |
checkSchema()
Checks if the required schema objects exist and creates them if they don't exist yet. |
void |
close()
Close the file system. |
protected void |
closeConnection(Connection connection)
Closes the given database connection. |
protected void |
closeResultSet(ResultSet rs)
|
protected void |
closeStatement(Statement stmt)
|
void |
copy(String srcPath,
String destPath)
Copies a file or folder to a new location. |
protected void |
copyDeepFolder(String srcPath,
String destPath)
Recursively copies the given folder to the given destination. |
protected void |
copyFile(String srcPath,
String destPath)
Copies the given file entry to the given destination path. |
protected void |
createDeepFolder(String folderPath)
Creates the specified files system folder entry, recursively creating any non-existing intermediate folder entries. |
void |
createFolder(String folderPath)
Creates the folder named by this path, including any necessary but nonexistent parent folders. |
void |
deleteFile(String filePath)
Deletes the file denoted by this path. |
void |
deleteFolder(String folderPath)
Deletes the folder denoted by this path. |
boolean |
equals(Object obj)
|
protected Statement |
executeStmt(String sql,
Object[] params)
Executes the given SQL statement with the specified parameters. |
boolean |
exists(String path)
Tests whether the file system entry denoted by this path exists. |
protected Connection |
getConnection()
Abstract factory method for creating a new database connection. |
InputStream |
getInputStream(String filePath)
Returns an input stream of the contents of the file denoted by this path. |
OutputStream |
getOutputStream(String filePath)
Returns an output stream for writing bytes to the file denoted by this path. |
RandomAccessOutputStream |
getRandomAccessOutputStream(String filePath)
Returns an output stream for writing bytes to the file denoted by this path. |
String |
getSchema()
|
String |
getSchemaObjectPrefix()
|
boolean |
hasChildren(String path)
Tests whether the file system entry denoted by this path has child entries. |
int |
hashCode()
Returns zero to satisfy the Object equals/hashCode contract. |
void |
init()
Initialize the file system |
protected void |
initConnection()
Initializes the database connection used by this file system. |
protected void |
initPreparedStatements()
Initializes the map of prepared statements. |
boolean |
isFile(String path)
Tests whether the file system entry denoted by this path exists and is a file. |
boolean |
isFolder(String path)
Tests whether the file system entry denoted by this path exists and is a folder. |
long |
lastModified(String path)
Returns the time that the file system entry denoted by this path was last modified. |
long |
length(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. |
void |
move(String srcPath,
String destPath)
Moves a file or folder to a new location. |
protected void |
prepareSchemaObjectPrefix()
Makes sure that schemaObjectPrefix does only consist of
characters that are allowed in names on the target database. |
protected boolean |
reestablishConnection()
Re-establishes the database connection. |
protected void |
resetStatement(PreparedStatement stmt)
Resets the given PreparedStatement by clearing the parameters
and warnings contained. |
void |
setSchema(String schema)
|
void |
setSchemaObjectPrefix(String schemaObjectPrefix)
|
void |
touch(String filePath)
Set the modified time of an existing file to now. |
protected void |
verifyRootExists()
Verifies that the root file system entry exists. |
Methods inherited from class java.lang.Object |
---|
clone, finalize, getClass, notify, notifyAll, toString, wait, wait, wait |
Field Detail |
---|
protected static final String SCHEMA_OBJECT_PREFIX_VARIABLE
protected boolean initialized
protected String schema
protected String schemaObjectPrefix
protected static final int INITIAL_BUFFER_SIZE
protected Connection con
protected static final int SLEEP_BEFORE_RECONNECT
protected String selectExistSQL
protected String selectFileExistSQL
protected String selectFolderExistSQL
protected String selectChildCountSQL
protected String selectDataSQL
protected String selectLastModifiedSQL
protected String selectLengthSQL
protected String selectFileNamesSQL
protected String selectFolderNamesSQL
protected String selectFileAndFolderNamesSQL
protected String deleteFileSQL
protected String deleteFolderSQL
protected String insertFileSQL
protected String insertFolderSQL
protected String updateDataSQL
protected String updateLastModifiedSQL
protected String copyFileSQL
protected String copyFilesSQL
Constructor Detail |
---|
public DatabaseFileSystem()
Method Detail |
---|
public String getSchemaObjectPrefix()
public void setSchemaObjectPrefix(String schemaObjectPrefix)
public String getSchema()
public void setSchema(String schema)
public boolean equals(Object obj)
equals
in class Object
public int hashCode()
hashCode
in class Object
Object.hashCode()
public void init() throws FileSystemException
init
in interface FileSystem
FileSystemException
- if the file system initialization failspublic void close() throws FileSystemException
close
in interface FileSystem
FileSystemException
public void createFolder(String folderPath) throws FileSystemException
createFolder
in interface FileSystem
folderPath
- the path of the folder to be created.
FileSystemException
- if a file system entry denoted by path
already exists or if another error occurs.public void deleteFile(String filePath) throws FileSystemException
deleteFile
in interface FileSystem
filePath
- the path of the file to be deleted.
FileSystemException
- if this path does not denote a file or if
another error occurs.public void deleteFolder(String folderPath) throws FileSystemException
deleteFolder
in interface FileSystem
folderPath
- the path of the folder to be deleted.
FileSystemException
- if this path does not denote a folder or if
another error occurs.public boolean exists(String path) throws FileSystemException
exists
in interface FileSystem
path
- the path of a file system entry.
FileSystemException
public boolean isFile(String path) throws FileSystemException
isFile
in interface FileSystem
path
- the path of a file system entry.
FileSystemException
public boolean isFolder(String path) throws FileSystemException
isFolder
in interface FileSystem
path
- the path of a file system entry.
FileSystemException
public long lastModified(String path) throws FileSystemException
lastModified
in interface FileSystem
path
- the path of a file system entry.
FileSystemException
- if the file system entry does not exist.public long length(String filePath) throws FileSystemException
length
in interface FileSystem
filePath
- the path of the file.
FileSystemException
- if the path does not denote an existing file.public boolean hasChildren(String path) throws FileSystemException
hasChildren
in interface FileSystem
path
- the path of a file system entry.
FileSystemException
public String[] list(String folderPath) throws FileSystemException
list
in interface FileSystem
folderPath
- the path of the folder whose contents is to be listed.
FileSystemException
- if this path does not denote a folder or if
another error occurs.public String[] listFiles(String folderPath) throws FileSystemException
listFiles
in interface FileSystem
folderPath
- the path of the folder whose contents is to be listed.
FileSystemException
- if this path does not denote a folder or if
another error occurs.public String[] listFolders(String folderPath) throws FileSystemException
listFolders
in interface FileSystem
folderPath
- the path of the folder whose contents is to be listed.
FileSystemException
- if this path does not denote a folder or if
another error occurs.public void touch(String filePath) throws FileSystemException
touch
in interface FileSystem
filePath
- the path of the file.
FileSystemException
- if the path does not denote an existing file.public InputStream getInputStream(String filePath) throws FileSystemException
getInputStream
in interface FileSystem
filePath
- the path of the file.
FileSystemException
- if the file does not exist
or if it cannot be read frompublic OutputStream getOutputStream(String filePath) throws FileSystemException
getOutputStream
in interface FileSystem
filePath
- the path of the file.
FileSystemException
- if the file cannot be written to or createdpublic RandomAccessOutputStream getRandomAccessOutputStream(String filePath) throws FileSystemException, UnsupportedOperationException
0
. See also
RandomAccessOutputStream.seek(long)
;
getRandomAccessOutputStream
in interface FileSystem
filePath
- the path of the file.
FileSystemException
- if the file could not be created or
if the output stream cannot be obtained.
UnsupportedOperationException
- if the implementation does
not support file access through a
RandomAccessOutputStream
.public void copy(String srcPath, String destPath) throws FileSystemException
copy
in interface FileSystem
srcPath
- the path of the file or folder to be copied.destPath
- the destination path to which the file or folder is to be copied.
FileSystemException
- if the copy failspublic void move(String srcPath, String destPath) throws FileSystemException
move
in interface FileSystem
srcPath
- the path of the file or folder to be moved.destPath
- the destination path to which the file or folder is to be moved.
FileSystemException
- if the move failsprotected void initConnection() throws Exception
Subclasses should normally override the getConnection()
method instead of this one. The default implementation calls
getConnection()
to get the database connection and disables
the autocommit feature.
Exception
- if an error occursprotected Connection getConnection() throws Exception
initConnection()
when the file system is
started. The returned connection should come with the default JDBC
settings, as the initConnection()
method will explicitly set
the autoCommit
and other properties as needed.
Note that the returned database connection is kept during the entire
lifetime of the file system, after which it is closed by
close()
using the closeConnection(Connection)
method.
Exception
- if an error occursprotected void closeConnection(Connection connection) throws SQLException
close()
to close the connection acquired using
getConnection()
when the file system was started.
The default implementation just calls the Connection.close()
method of the given connection, but subclasses can override this
method to provide more extensive database and connection cleanup.
connection
- database connection
SQLException
- if an error occursprotected boolean reestablishConnection()
executeStmt(String, Object[])
after a SQLException
had been encountered.
protected Statement executeStmt(String sql, Object[] params) throws SQLException
SQLException
is encountered one attempt is made
to re-establish the database connection and re-execute the statement.
sql
- statement to executeparams
- parameters to set
Statement
object that had been executed
SQLException
- if an error occursprotected void prepareSchemaObjectPrefix() throws Exception
schemaObjectPrefix
does only consist of
characters that are allowed in names on the target database. Illegal
characters will be escaped as necessary.
Exception
- if an error occursprotected void checkSchema() throws Exception
Exception
- if an error occursprotected void buildSQLStatements()
protected void initPreparedStatements() throws SQLException
SQLException
- if an error occursprotected void verifyRootExists() throws Exception
Exception
- if an error occursprotected void createDeepFolder(String folderPath) throws FileSystemException
folderPath
- folder entry to create
FileSystemException
- if an error occursprotected void copyDeepFolder(String srcPath, String destPath) throws FileSystemException
srcPath
- folder to be copieddestPath
- destination path to which the folder is to be copied
FileSystemException
- if an error occursprotected void copyFile(String srcPath, String destPath) throws FileSystemException
srcPath
- file to be copieddestPath
- destination path to which the file is to be copied
FileSystemException
- if an error occursprotected void resetStatement(PreparedStatement stmt)
PreparedStatement
by clearing the parameters
and warnings contained.
NOTE: This method MUST be called in a synchronized context as neither
this method nor the PreparedStatement
instance on which it
operates are thread safe.
stmt
- The PreparedStatement
to reset. If
null
this method does nothing.protected void closeResultSet(ResultSet rs)
protected void closeStatement(Statement stmt)
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |