Package org.apache.derby.impl.io
Class DirStorageFactory
- java.lang.Object
-
- org.apache.derby.impl.io.BaseStorageFactory
-
- org.apache.derby.impl.io.DirStorageFactory
-
- All Implemented Interfaces:
StorageFactory
,WritableStorageFactory
public class DirStorageFactory extends BaseStorageFactory implements WritableStorageFactory
This class provides a disk based implementation of the StorageFactory interface. It is used by the database engine to access persistent data and transaction logs under the directory (default) subsubprotocol.
-
-
Field Summary
-
Fields inherited from class org.apache.derby.impl.io.BaseStorageFactory
canonicalName, dataDirectory, home, separatedDataDirectory, tempDir, tempDirPath, uniqueName
-
Fields inherited from interface org.apache.derby.io.StorageFactory
VERSION_NUMBER
-
-
Constructor Summary
Constructors Constructor Description DirStorageFactory()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description (package private) void
doInit()
boolean
isReadOnlyDatabase()
Determine whether the database is read only.(package private) StorageFile
newPersistentFile(java.lang.String path)
Construct a persistent StorageFile from a path name.(package private) StorageFile
newPersistentFile(java.lang.String directoryName, java.lang.String fileName)
Construct a persistent StorageFile from a directory and path name.(package private) StorageFile
newPersistentFile(StorageFile directoryName, java.lang.String fileName)
Construct a persistent StorageFile from a directory and path name.StorageFile
newStorageFile(java.lang.String path)
Construct a StorageFile from a path name.StorageFile
newStorageFile(java.lang.String directoryName, java.lang.String fileName)
Construct a StorageFile from a directory and file name.StorageFile
newStorageFile(StorageFile directoryName, java.lang.String fileName)
Construct a StorageFile from a directory and file name.boolean
supportsRandomAccess()
Determine whether the storage supports random access.boolean
supportsWriteSync()
This method tests whether the "rws" and "rwd" modes are implemented.void
sync(java.io.OutputStream stream, boolean metaData)
Force the data of an output stream out to the underlying storage.-
Methods inherited from class org.apache.derby.impl.io.BaseStorageFactory
createTempDir, createTemporaryFile, getCanonicalName, getSeparator, getStorageFactoryVersion, getTempDir, init, isFast, setCanonicalName, shutdown
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface org.apache.derby.io.StorageFactory
createTemporaryFile, getCanonicalName, getSeparator, getStorageFactoryVersion, getTempDir, init, isFast, setCanonicalName, shutdown
-
-
-
-
Method Detail
-
newStorageFile
public final StorageFile newStorageFile(java.lang.String path)
Construct a StorageFile from a path name.- Specified by:
newStorageFile
in interfaceStorageFactory
- Overrides:
newStorageFile
in classBaseStorageFactory
- Parameters:
path
- The path name of the file- Returns:
- A corresponding StorageFile object
-
newStorageFile
public final StorageFile newStorageFile(java.lang.String directoryName, java.lang.String fileName)
Construct a StorageFile from a directory and file name.- Specified by:
newStorageFile
in interfaceStorageFactory
- Overrides:
newStorageFile
in classBaseStorageFactory
- Parameters:
directoryName
- The directory part of the path name.fileName
- The name of the file within the directory.- Returns:
- A corresponding StorageFile object
-
newStorageFile
public final StorageFile newStorageFile(StorageFile directoryName, java.lang.String fileName)
Construct a StorageFile from a directory and file name.- Specified by:
newStorageFile
in interfaceStorageFactory
- Overrides:
newStorageFile
in classBaseStorageFactory
- Parameters:
directoryName
- The directory part of the path name.fileName
- The name of the file within the directory.- Returns:
- A corresponding StorageFile object
-
newPersistentFile
StorageFile newPersistentFile(java.lang.String path)
Construct a persistent StorageFile from a path name.- Specified by:
newPersistentFile
in classBaseStorageFactory
- Parameters:
path
- The path name of the file. Guaranteed not to be in the temporary file directory. If null then the database directory should be returned.- Returns:
- A corresponding StorageFile object
-
newPersistentFile
StorageFile newPersistentFile(java.lang.String directoryName, java.lang.String fileName)
Construct a persistent StorageFile from a directory and path name.- Specified by:
newPersistentFile
in classBaseStorageFactory
- Parameters:
directoryName
- The path name of the directory. Guaranteed not to be in the temporary file directory. Guaranteed not to be nullfileName
- The name of the file within the directory. Guaranteed not to be null.- Returns:
- A corresponding StorageFile object
-
newPersistentFile
StorageFile newPersistentFile(StorageFile directoryName, java.lang.String fileName)
Construct a persistent StorageFile from a directory and path name.- Specified by:
newPersistentFile
in classBaseStorageFactory
- Parameters:
directoryName
- The path name of the directory. Guaranteed not to be to be null. Guaranteed to be created by a call to one of the newPersistentFile methods.fileName
- The name of the file within the directory. Guaranteed not to be null.- Returns:
- A corresponding StorageFile object
-
sync
public void sync(java.io.OutputStream stream, boolean metaData) throws java.io.IOException, java.io.SyncFailedException
Force the data of an output stream out to the underlying storage. That is, ensure that it has been made persistent. If the database is to be transient, that is, if the database does not survive a restart, then the sync method implementation need not do anything.- Specified by:
sync
in interfaceWritableStorageFactory
- Parameters:
stream
- The stream to be synchronized.metaData
- If true then this method must force both changes to the file's contents and metadata to be written to storage; if false, it need only force file content changes to be written. The implementation is allowed to ignore this parameter and always force out metadata changes.- Throws:
java.io.IOException
- if an I/O error occurs.java.io.SyncFailedException
- Thrown when the buffers cannot be flushed, or because the system cannot guarantee that all the buffers have been synchronized with physical media.
-
supportsWriteSync
public boolean supportsWriteSync()
This method tests whether the "rws" and "rwd" modes are implemented. If the "rws" and "rwd" modes are supported then the database engine will conclude that the write methods of "rws"/"rwd" mode StorageRandomAccessFiles are slow but the sync method is fast and optimize accordingly.- Specified by:
supportsWriteSync
in interfaceWritableStorageFactory
- Returns:
- true if an StIRandomAccess file opened with "rws" or "rwd" modes immediately writes data to the underlying storage, false if not.
-
isReadOnlyDatabase
public boolean isReadOnlyDatabase()
Description copied from interface:StorageFactory
Determine whether the database is read only. The database engine supports read-only databases, even in file systems that are writable.- Specified by:
isReadOnlyDatabase
in interfaceStorageFactory
- Overrides:
isReadOnlyDatabase
in classBaseStorageFactory
- Returns:
- true if the storage is read only, false if it is writable.
-
supportsRandomAccess
public boolean supportsRandomAccess()
Determine whether the storage supports random access. If random access is not supported then it will only be accessed using InputStreams and OutputStreams (if the database is writable).- Specified by:
supportsRandomAccess
in interfaceStorageFactory
- Overrides:
supportsRandomAccess
in classBaseStorageFactory
- Returns:
- true if the storage supports random access, false if it is writable.
-
doInit
void doInit() throws java.io.IOException
- Specified by:
doInit
in classBaseStorageFactory
- Throws:
java.io.IOException
-
-