org.apache.derby.impl.io
Class DirStorageFactory
- java.lang.Object
-
- org.apache.derby.impl.io.DirStorageFactory
-
- All Implemented Interfaces:
- StorageFactory, WritableStorageFactory
public class DirStorageFactory extends java.lang.Object 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 interface org.apache.derby.io.StorageFactory
VERSION_NUMBER
-
-
Constructor Summary
Constructors Constructor and Description DirStorageFactory()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method and Description StorageFilecreateTemporaryFile(java.lang.String prefix, java.lang.String suffix)Create and returns a temporary file in temporary file system of database.java.lang.StringgetCanonicalName()Get the canonical name of the database.chargetSeparator()Get the pathname separator character used by the StorageFile implementation.intgetStorageFactoryVersion()StorageFilegetTempDir()Get the abstract name of the directory that holds temporary files.voidinit(java.lang.String home, java.lang.String databaseName, java.lang.String tempDirName, java.lang.String uniqueName)Classes implementing the StorageFactory interface must have a null constructor.booleanisFast()This method is used to determine whether the storage is fast (RAM based) or slow (disk based).booleanisReadOnlyDatabase()Determine whether the database is read only.StorageFilenewStorageFile(StorageFile directoryName, java.lang.String fileName)Construct a StorageFile from a directory and file name.StorageFilenewStorageFile(java.lang.String path)Construct a StorageFile from a path name.StorageFilenewStorageFile(java.lang.String directoryName, java.lang.String fileName)Construct a StorageFile from a directory and file name.voidsetCanonicalName(java.lang.String name)Set the canonicalName.voidshutdown()The shutdown method is called during the normal shutdown of the database.booleansupportsRandomAccess()Determine whether the storage supports random access.booleansupportsWriteSync()This method tests whether the "rws" and "rwd" modes are implemented.voidsync(java.io.OutputStream stream, boolean metaData)Force the data of an output stream out to the underlying storage.-
Methods inherited from class java.lang.Object
equals, 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:
newStorageFilein interfaceStorageFactory- 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:
newStorageFilein interfaceStorageFactory- 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:
newStorageFilein interfaceStorageFactory- Parameters:
directoryName- The directory part of the path name.fileName- The name of the file within the directory.- Returns:
- A corresponding StorageFile object
-
sync
public void sync(java.io.OutputStream stream, boolean metaData) throws java.io.IOException, java.io.SyncFailedExceptionForce 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:
syncin 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:
supportsWriteSyncin 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:StorageFactoryDetermine whether the database is read only. The database engine supports read-only databases, even in file systems that are writable.- Specified by:
isReadOnlyDatabasein interfaceStorageFactory- 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:
supportsRandomAccessin interfaceStorageFactory- Returns:
- true if the storage supports random access, false if it is writable.
-
init
public void init(java.lang.String home, java.lang.String databaseName, java.lang.String tempDirName, java.lang.String uniqueName) throws java.io.IOExceptionClasses implementing the StorageFactory interface must have a null constructor. This method is called when the database is booted up to initialize the class. It should perform all actions necessary to start the basic storage, such as creating a temporary file directory. The init method will be called once, before any other method is called, and will not be called again.- Specified by:
initin interfaceStorageFactory- Parameters:
home- The name of the directory containing the database. It comes from the system.home system property. It may be null. A storage factory may decide to ignore this parameter. (For instance the classpath storage factory ignores it.databaseName- The name of the database (directory). All relative pathnames are relative to this directory. If null then the storage factory will only be used to deal with the directory containing the databases.tempDirName- The name of the temporary file directory set in properties. If null then a default directory should be used. Each database should get a separate temporary file directory within this one to avoid collisions.uniqueName- A unique name that can be used to create the temporary file directory for this database.- Throws:
java.io.IOException- on an error (unexpected).
-
shutdown
public void shutdown()
Description copied from interface:StorageFactoryThe shutdown method is called during the normal shutdown of the database. However, the database engine cannot guarantee that shutdown will be called. If the JVM terminates abnormally then it will not be called.- Specified by:
shutdownin interfaceStorageFactory
-
getCanonicalName
public java.lang.String getCanonicalName() throws java.io.IOExceptionGet the canonical name of the database. This is a name that uniquely identifies it. It is system dependent. The normal, disk based implementation uses method java.io.File.getCanonicalPath on the directory holding the database to construct the canonical name.- Specified by:
getCanonicalNamein interfaceStorageFactory- Returns:
- the canonical name
- Throws:
java.io.IOException- if an IO error occurred during the construction of the name.
-
setCanonicalName
public void setCanonicalName(java.lang.String name)
Set the canonicalName. May need adjustment due to DERBY-5096- Specified by:
setCanonicalNamein interfaceStorageFactory- Parameters:
name- uniquely identifiable name for this database
-
getSeparator
public char getSeparator()
Get the pathname separator character used by the StorageFile implementation.- Specified by:
getSeparatorin interfaceStorageFactory- Returns:
- the pathname separator character. (Normally '/' or '\').
-
getTempDir
public StorageFile getTempDir()
Get the abstract name of the directory that holds temporary files.- Specified by:
getTempDirin interfaceStorageFactory- Returns:
- a directory name
-
isFast
public boolean isFast()
This method is used to determine whether the storage is fast (RAM based) or slow (disk based). It may be used by the database engine to determine the default size of the page cache.- Specified by:
isFastin interfaceStorageFactory- Returns:
- true if the storage is fast, false if it is slow.
-
getStorageFactoryVersion
public int getStorageFactoryVersion()
- Specified by:
getStorageFactoryVersionin interfaceStorageFactory- Returns:
- the StorageFactory version supported by this implementation
-
createTemporaryFile
public StorageFile createTemporaryFile(java.lang.String prefix, java.lang.String suffix) throws java.io.IOException
Create and returns a temporary file in temporary file system of database.- Specified by:
createTemporaryFilein interfaceStorageFactory- Parameters:
prefix- String to prefix the random name generator.suffix- String to suffix the random name generator.- Returns:
- StorageFile
- Throws:
java.io.IOException
-
-
DataMelt 3.0 © DataMelt by jWork.ORG