net.didion.jwnl.dictionary.file_manager
Class FileManagerImpl

java.lang.Object
  extended by net.didion.jwnl.dictionary.file_manager.FileManagerImpl
All Implemented Interfaces:
java.rmi.Remote, FileManager, Createable
Direct Known Subclasses:
RemoteFileManager

public class FileManagerImpl
extends java.lang.Object
implements FileManager

An implementation of FileManager that reads files from the local file system. FileManagerImpl caches the file position before and after readLineAt in order to eliminate the redundant IO activity that a naive implementation of these methods would necessitate.


Field Summary
static java.lang.String FILE_TYPE
          File type install parameter.
static java.lang.String PATH
          Dictionary path install parameter.
 
Constructor Summary
FileManagerImpl()
          Uninitialized FileManagerImpl.
FileManagerImpl(java.lang.String searchDir, java.lang.Class dictionaryFileType)
          Construct a file manager backed by a set of files contained in the default WN search directory.
 
Method Summary
 void close()
          Shut down the file manager.
 java.lang.Object create(java.util.Map params)
          
 DictionaryFile getFile(POS pos, DictionaryFileType fileType)
          Gets the file from a part of speech and file type (ie data.noun).
 long getFirstLinePointer(POS pos, DictionaryFileType fileType)
          Return the first valid line pointer in the specified file.
 long getIndexedLinePointer(POS pos, DictionaryFileType fileType, java.lang.String target)
          Get indexed line pointer is typically used to find a word within an index file matching a given part of speech.
 long getMatchingLinePointer(POS pos, DictionaryFileType fileType, long offset, java.lang.String substring)
          Search for a line whose index word contains substring, starting at offset.
 long getNextLinePointer(POS pos, DictionaryFileType fileType, long offset)
          Search for the line following the line that begins at offset.
 long getRandomLinePointer(POS pos, DictionaryFileType fileType)
          Return a randomly-chosen line pointer (offset of the beginning of a line).
 java.lang.String readLineAt(POS pos, DictionaryFileType fileType, long offset)
          Read the line that begins at file offset offset.
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

FILE_TYPE

public static final java.lang.String FILE_TYPE
File type install parameter. The value should be the name of the appropriate subclass of DictionaryFileType.

See Also:
Constant Field Values

PATH

public static final java.lang.String PATH
Dictionary path install parameter. The value should be the absolute path of the directory containing the dictionary files.

See Also:
Constant Field Values
Constructor Detail

FileManagerImpl

public FileManagerImpl()
Uninitialized FileManagerImpl.


FileManagerImpl

public FileManagerImpl(java.lang.String searchDir,
                       java.lang.Class dictionaryFileType)
                throws java.io.IOException
Construct a file manager backed by a set of files contained in the default WN search directory.

Throws:
java.io.IOException
Method Detail

create

public java.lang.Object create(java.util.Map params)
                        throws JWNLException

Specified by:
create in interface Createable
Throws:
JWNLException

close

public void close()
Shut down the file manager.

Specified by:
close in interface FileManager

getFile

public DictionaryFile getFile(POS pos,
                              DictionaryFileType fileType)
Gets the file from a part of speech and file type (ie data.noun).

Parameters:
pos - - the part of speech (NOUN, ADJ, VERB, ADV)
fileType - - the file type (data, index, exc)
Returns:
- dictionary file

readLineAt

public java.lang.String readLineAt(POS pos,
                                   DictionaryFileType fileType,
                                   long offset)
                            throws java.io.IOException
Read the line that begins at file offset offset.

Specified by:
readLineAt in interface FileManager
Throws:
java.io.IOException

getNextLinePointer

public long getNextLinePointer(POS pos,
                               DictionaryFileType fileType,
                               long offset)
                        throws java.io.IOException
Search for the line following the line that begins at offset.

Specified by:
getNextLinePointer in interface FileManager
Returns:
The file offset of the start of the line, or -1 if offset is the last line in the file.
Throws:
java.io.IOException

getMatchingLinePointer

public long getMatchingLinePointer(POS pos,
                                   DictionaryFileType fileType,
                                   long offset,
                                   java.lang.String substring)
                            throws java.io.IOException
Search for a line whose index word contains substring, starting at offset.

Specified by:
getMatchingLinePointer in interface FileManager
Returns:
The file offset of the start of the matchng line, or -1 if no such line exists.
Throws:
java.io.IOException

getIndexedLinePointer

public long getIndexedLinePointer(POS pos,
                                  DictionaryFileType fileType,
                                  java.lang.String target)
                           throws java.io.IOException
Get indexed line pointer is typically used to find a word within an index file matching a given part of speech. It first accesses the appropriate file (based on pos and dictionary type), then iterates through the file. Does so by using an offset and string comparison algorithm.

Specified by:
getIndexedLinePointer in interface FileManager
Returns:
The file offset of the start of the matching line, or -1 if no such line exists.
Throws:
java.io.IOException

getRandomLinePointer

public long getRandomLinePointer(POS pos,
                                 DictionaryFileType fileType)
                          throws java.io.IOException
Return a randomly-chosen line pointer (offset of the beginning of a line).

Specified by:
getRandomLinePointer in interface FileManager
Returns:
Throws:
java.io.IOException

getFirstLinePointer

public long getFirstLinePointer(POS pos,
                                DictionaryFileType fileType)
                         throws java.io.IOException
Return the first valid line pointer in the specified file.

Specified by:
getFirstLinePointer in interface FileManager
Returns:
Throws:
java.io.IOException