org.planx.io
Class LocalFileSystem

java.lang.Object
  extended by org.planx.io.LocalFileSystem
All Implemented Interfaces:
FileSystem

public class LocalFileSystem
extends Object
implements FileSystem

An implementation of FileSystem that uses an on-disk file. The getData(Locator) method returns a shared instance which implies that copying data from this file system to itself must be done using an intermediate buffer.

The implementation is not synchronized and should thus be synchronized externally.

Author:
Thomas Ambus

Constructor Summary
LocalFileSystem(String name)
          Creates a new file system with the specified name or opens an already existing one.
 
Method Summary
 Bound all()
          Returns a locator encapsulating all data currently in this file system.
 Bound allocate()
          (Optional) Returns a locator to a free write position that can hold an unspecified amount of bytes.
 Bound allocate(long size)
          Returns a locator to a free write position that can hold size number of bytes.
 void clear()
          Frees all data in this FileSystem.
 void clearModified()
          Marks this file system as unmodified.
 void close()
          Closes this file system and releases all resources.
 void free(Bound l)
          Frees the space occupied by the specified Bound.
 PositionalData getData(Locator l)
          Returns a shared PositionalData instance which implies that data cannot be copied on-the-fly from one part of this FileSystem to another.
 Bound getMeta()
          Returns a locator to a special block of meta data.
 SourceId id()
          Returns a SourceId identifying this FileSystem in its present state.
 boolean isContained(Locator l)
          Returns true if the specified Locator originates from this FileSystem and is valid.
 boolean isModified()
          Returns true if this file system has been modified since it was created or since the last call to FileSystem.clearModified().
 boolean isReadOnly()
          Returns true if this file system is read-only.
 void setMeta(Bound b)
          Sets the meta data pointer of this file system.
 void setReadOnly(boolean isReadOnly)
          Sets the read-only status of this file system.
 long size()
          Returns the size of this file system.
 String toString()
           
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

LocalFileSystem

public LocalFileSystem(String name)
                throws IOException
Creates a new file system with the specified name or opens an already existing one.

Throws:
IOException
Method Detail

size

public long size()
          throws IOException
Description copied from interface: FileSystem
Returns the size of this file system.

Specified by:
size in interface FileSystem
Throws:
IOException - if an I/O error occurred.

close

public void close()
           throws IOException
Description copied from interface: FileSystem
Closes this file system and releases all resources.

Specified by:
close in interface FileSystem
Throws:
IOException - if an I/O error occurred.

isModified

public boolean isModified()
Description copied from interface: FileSystem
Returns true if this file system has been modified since it was created or since the last call to FileSystem.clearModified().

Specified by:
isModified in interface FileSystem

clearModified

public void clearModified()
Description copied from interface: FileSystem
Marks this file system as unmodified.

Specified by:
clearModified in interface FileSystem

isReadOnly

public boolean isReadOnly()
Description copied from interface: FileSystem
Returns true if this file system is read-only.

Specified by:
isReadOnly in interface FileSystem

setReadOnly

public void setReadOnly(boolean isReadOnly)
Description copied from interface: FileSystem
Sets the read-only status of this file system.

Specified by:
setReadOnly in interface FileSystem

getData

public PositionalData getData(Locator l)
                       throws IOException,
                              InvalidSourceIdException,
                              OutOfBoundsException
Returns a shared PositionalData instance which implies that data cannot be copied on-the-fly from one part of this FileSystem to another. Instead, the data must be buffered temporarily.

Specified by:
getData in interface FileSystem
Throws:
IOException - if an I/O error occurred.
InvalidSourceIdException - if the file system identifier of the locator is invalid.
OutOfBoundsException - if the locator is out of bounds.

all

public Bound all()
          throws IOException
Description copied from interface: FileSystem
Returns a locator encapsulating all data currently in this file system.

Specified by:
all in interface FileSystem
Throws:
IOException - if an I/O error occurred.

getMeta

public Bound getMeta()
              throws IOException
Description copied from interface: FileSystem
Returns a locator to a special block of meta data. Only one meta data block is allowed per file system. If no meta data block has been set, or meta data is not supported, null is returned.

Specified by:
getMeta in interface FileSystem
Throws:
IOException

setMeta

public void setMeta(Bound b)
             throws IOException
Description copied from interface: FileSystem
Sets the meta data pointer of this file system. If meta data is not supported the operation is ignored.

Specified by:
setMeta in interface FileSystem
Throws:
IOException

id

public SourceId id()
Description copied from interface: FileSystem
Returns a SourceId identifying this FileSystem in its present state. The SourceId can change at any point and is not necessarily equal to the SourceIds returned by allocation method even though these may still be valid. Thus, this SourceId should be regarded as a unique canonical id that identifies only the present state of this FileSystem.

Specified by:
id in interface FileSystem

allocate

public Bound allocate()
               throws IOException
Description copied from interface: FileSystem
(Optional) Returns a locator to a free write position that can hold an unspecified amount of bytes. Implementations are allowed to throw an UnsupportedOperationException if this is not supported.

Specified by:
allocate in interface FileSystem
Throws:
IOException - if an I/O error occurred.

allocate

public Bound allocate(long size)
               throws IOException
Description copied from interface: FileSystem
Returns a locator to a free write position that can hold size number of bytes.

Specified by:
allocate in interface FileSystem
Throws:
IOException - if an I/O error occurred or the specified amount of bytes could not be allocated.

free

public void free(Bound l)
          throws IOException,
                 InvalidSourceIdException,
                 OutOfBoundsException
Description copied from interface: FileSystem
Frees the space occupied by the specified Bound.

Specified by:
free in interface FileSystem
Throws:
IOException - if an I/O error occurred.
InvalidSourceIdException - if the file system identifier of the locator is invalid.
OutOfBoundsException - if the locator is out of bounds.

clear

public void clear()
           throws IOException
Description copied from interface: FileSystem
Frees all data in this FileSystem.

Specified by:
clear in interface FileSystem
Throws:
IOException

isContained

public boolean isContained(Locator l)
Description copied from interface: FileSystem
Returns true if the specified Locator originates from this FileSystem and is valid.

Specified by:
isContained in interface FileSystem

toString

public String toString()
Overrides:
toString in class Object


Copyright © 2004-2005 Plan-X. All Rights Reserved.