Top Description Fields Constructors Methods
org.apache.derby.impl.io.vfmem

public final Class DataStore

extends Object
Class Inheritance
Imports
java.io.File, java.util.ArrayList, .HashMap, .Map, .Iterator, org.apache.derby.io.StorageFile

A virtual data store, keeping track of all the virtual files existing and offering a set of high-level operations on virtual files.

A newly created data store doesn't contain a single existing directory.

Field Summary

Modifier and TypeField and Description
private final String
databaseName

The name of the database this store serves, expected to be the absolute path of the service root (i.e. /tmp/myDB if the database myDB is created in /tmp).

private boolean
deleteMe

Tells if this store is scheduled for deletion.

private static final String[]
EMPTY_STR_ARR

Constant for the empty String array.

private final Map<String, DataStoreEntry>
files

The files exsiting in the store.

private final Object
LOCK

Lock object for the file map.

private static final char
SEP

The path separator used.

private final Object
TMP_COUNTER_LOCK

Lock object for the temporary file counter.

private long
tmpFileCounter

Counter used to generate unique temporary file names.

Constructor Summary

AccessConstructor and Description
public
DataStore(String
the name of the assoicated database, expected to be the absolute path of the service root.
databaseName
)

Creates a new data store.

Method Summary

Modifier and TypeMethod and Description
private boolean

Returns:

true if all children of the root path were deleted, false otherwise.
_deleteAll
(String
the normalized root path to start deleting from
prefixPath
)

Deletes every child of the root path specified.

public boolean

Returns:

true if all parents either already existed as directories or were created, false otherwise
createAllParents
(String path)

Creates all the parents of the specified path.

public DataStoreEntry

Returns:

A DataStoreEntry-instance if the entry was successfully created, null otherwise
createEntry
(String
the path of the entry
iPath
,
boolean
tells if the new entry shall be directory or a file
isDir
)

Creates a new entry in the data store.

public boolean

Returns:

true if the entry and all its children were deleted, false if the root doesn't exist.
deleteAll
(String
the root entry
iPath
)

Deletes the specified entry and all its children.

public boolean

Returns:

true if the entry was deleted, false otherwise.
deleteEntry
(String
path of the entry to delete
iPath
)

Deletes the specified entry.

public String

Returns:

The database name.
getDatabaseName
()

Returns the database name, which is expected to equal the path of the service root.

public DataStoreEntry

Returns:

null if the entry doesn't exist, the DataStoreEntry-object otherwise.
getEntry
(String
path of the entry to fetch
iPath
)

Returns the entry with the specified path.

private String[]

Returns:

A list of parents.
getParentList
(String
the normalized path to create a parent list for
path
)

Returns the list of parents for the specified path.

public long

Returns:

An integer uniquely identifying a temporary file.
getTempFileCounter
()

Returns an identifier for a temporary file.

public String[]

Returns:

An array with the relative paths of the children.
listChildren
(String
the directory to list the children of
iPath
)

Lists the childen of the specified path.

public boolean

Returns:

true if the file was moved, false if the new file already existed or the existing file doesn't exist.
move
(StorageFile
the current file
currentFile
,
StorageFile
the new file
newFile
)

Moves / renames a file.

public void
purge()

Purges the database and releases all files associated with it.

public boolean

Returns:

true if the store is awaiting deletion, false otherwise.
scheduledForDeletion
()

Tells if this data store is scheduled for deletion.

Inherited from java.lang.Object:
cloneequalsfinalizegetClasshashCodenotifynotifyAlltoStringwaitwaitwait

Field Detail

databaseNameback to summary
private final String databaseName

The name of the database this store serves, expected to be the absolute path of the service root (i.e. /tmp/myDB if the database myDB is created in /tmp).

deleteMeback to summary
private boolean deleteMe

Tells if this store is scheduled for deletion.

EMPTY_STR_ARRback to summary
private static final String[] EMPTY_STR_ARR

Constant for the empty String array.

filesback to summary
private final Map<String, DataStoreEntry> files

The files exsiting in the store.

The initial size is set to the number of initial files of a Derby database, pluss a few more.

LOCKback to summary
private final Object LOCK

Lock object for the file map.

SEPback to summary
private static final char SEP

The path separator used.

TMP_COUNTER_LOCKback to summary
private final Object TMP_COUNTER_LOCK

Lock object for the temporary file counter.

tmpFileCounterback to summary
private long tmpFileCounter

Counter used to generate unique temporary file names.

Constructor Detail

DataStoreback to summary
public DataStore(String databaseName)

Creates a new data store.

Parameters
databaseName:String

the name of the assoicated database, expected to be the absolute path of the service root.

Method Detail

_deleteAllback to summary
private boolean _deleteAll(String prefixPath)

Deletes every child of the root path specified.

Note that the root itself must be removed outside of this method.

Parameters
prefixPath:String

the normalized root path to start deleting from

Returns:boolean

true if all children of the root path were deleted, false otherwise.

createAllParentsback to summary
public boolean createAllParents(String path)

Creates all the parents of the specified path.

Returns:boolean

true if all parents either already existed as directories or were created, false otherwise

createEntryback to summary
public DataStoreEntry createEntry(String iPath, boolean isDir)

Creates a new entry in the data store.

This method returns null if the path already exists, if one of the parent directories doesn't exist, or if one of the parents is a file instead of a directory.

Parameters
iPath:String

the path of the entry

isDir:boolean

tells if the new entry shall be directory or a file

Returns:DataStoreEntry

A DataStoreEntry-instance if the entry was successfully created, null otherwise

deleteAllback to summary
public boolean deleteAll(String iPath)

Deletes the specified entry and all its children.

Parameters
iPath:String

the root entry

Returns:boolean

true if the entry and all its children were deleted, false if the root doesn't exist.

deleteEntryback to summary
public boolean deleteEntry(String iPath)

Deletes the specified entry.

If the specified entry is a directory, it is only deleted if it is empty. Read-only entries are deleted.

Parameters
iPath:String

path of the entry to delete

Returns:boolean

true if the entry was deleted, false otherwise.

getDatabaseNameback to summary
public String getDatabaseName()

Returns the database name, which is expected to equal the path of the service root.

Returns:String

The database name.

getEntryback to summary
public DataStoreEntry getEntry(String iPath)

Returns the entry with the specified path.

Parameters
iPath:String

path of the entry to fetch

Returns:DataStoreEntry

null if the entry doesn't exist, the DataStoreEntry-object otherwise.

getParentListback to summary
private String[] getParentList(String path)

Returns the list of parents for the specified path.

The lowest level parent is listed first in the list, so all absolute paths will have the root listed as the last element.

Parameters
path:String

the normalized path to create a parent list for

Returns:String[]

A list of parents.

getTempFileCounterback to summary
public long getTempFileCounter()

Returns an identifier for a temporary file.

Returns:long

An integer uniquely identifying a temporary file.

listChildrenback to summary
public String[] listChildren(String iPath)

Lists the childen of the specified path.

Parameters
iPath:String

the directory to list the children of

Returns:String[]

An array with the relative paths of the children.

moveback to summary
public boolean move(StorageFile currentFile, StorageFile newFile)

Moves / renames a file.

Parameters
currentFile:StorageFile

the current file

newFile:StorageFile

the new file

Returns:boolean

true if the file was moved, false if the new file already existed or the existing file doesn't exist.

purgeback to summary
public void purge()

Purges the database and releases all files associated with it.

scheduledForDeletionback to summary
public boolean scheduledForDeletion()

Tells if this data store is scheduled for deletion.

Returns:boolean

true if the store is awaiting deletion, false otherwise.