org.crosswire.jsword.book.sword
Class AbstractBackend<T extends OpenFileState>

java.lang.Object
  extended by org.crosswire.jsword.book.sword.AbstractBackend<T>
Type Parameters:
T - The type of the OpenFileState that this class extends.
All Implemented Interfaces:
StatefulFileBackedBackend<T>
Direct Known Subclasses:
AbstractKeyBackend, GenBookBackend, RawBackend, ZVerseBackend

public abstract class AbstractBackend<T extends OpenFileState>
extends Object
implements StatefulFileBackedBackend<T>

A generic way to read data from disk for later formatting.

Author:
Joe Walker [joe at eireneh dot com], DM Smith
See Also:
for license details.
The copyright to this program is held by it's authors.

Field Summary
private  SwordBookMetaData bmd
           
private  Versification versificationSystem
           
 
Constructor Summary
AbstractBackend()
          Default constructor for the sake of serialization.
AbstractBackend(SwordBookMetaData sbmd)
          Construct a minimal backend
 
Method Summary
abstract  boolean contains(Key key)
          Determine whether this Book contains the key in question
 void create()
          Create the directory to hold the Book if it does not exist.
 void decipher(byte[] data)
          Decipher the data in place, if it is enciphered and there is a key to unlock it.
 void encipher(byte[] data)
          Encipher the data in place, if there is a key to unlock it.
 SwordBookMetaData getBookMetaData()
           
 Key getGlobalKeyList()
          Gets the fast global key list, and if this operation is not supported, throws a UnsupportedOperationException
 Versification getVersification()
           
 boolean isSupported()
          Returns whether this AbstractBackend is implemented.
 boolean isWritable()
          A Backend is writable if the file system allows the underlying files to be opened for writing and if the backend has implemented writing.
 Key readIndex()
          Initialize a AbstractBackend before use.
private  void readNormalOsis(Key key, RawTextToXmlProcessor processor, List<org.jdom2.Content> content, T openFileState)
           
private  Verse readPassageOsis(Key key, RawTextToXmlProcessor processor, List<org.jdom2.Content> content, T openFileState)
          Reads a passage as OSIS
 List<org.jdom2.Content> readToOsis(Key key, RawTextToXmlProcessor processor)
          Get the text allotted for the given entry
private  void throwFailedKeyException(Key masterKey, Key currentKey, IOException e)
          If non-null, currentKey is used to throw the exception, other, masterKey is used instead, which will be more general.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface org.crosswire.jsword.book.sword.StatefulFileBackedBackend
initState, readRawContent, setAliasKey, setRawText
 

Field Detail

bmd

private SwordBookMetaData bmd

versificationSystem

private Versification versificationSystem
Constructor Detail

AbstractBackend

public AbstractBackend()
Default constructor for the sake of serialization.


AbstractBackend

public AbstractBackend(SwordBookMetaData sbmd)
Construct a minimal backend

Parameters:
sbmd -
Method Detail

getBookMetaData

public SwordBookMetaData getBookMetaData()
Returns:
Returns the Sword BookMetaData.

decipher

public void decipher(byte[] data)
Decipher the data in place, if it is enciphered and there is a key to unlock it.

Parameters:
data - the data to unlock

encipher

public void encipher(byte[] data)
Encipher the data in place, if there is a key to unlock it.

Parameters:
data -

readIndex

public Key readIndex()
Initialize a AbstractBackend before use. This method needs to call addKey() a number of times on GenBookBackend


contains

public abstract boolean contains(Key key)
Determine whether this Book contains the key in question

Parameters:
key - The key whose presence is desired.
Returns:
true if the Book contains the key

getGlobalKeyList

public Key getGlobalKeyList()
                     throws BookException
Gets the fast global key list, and if this operation is not supported, throws a UnsupportedOperationException

Returns:
the fast global key list
Throws:
BookException - the book exception if for some reason the book failed to be read properly.

readToOsis

public List<org.jdom2.Content> readToOsis(Key key,
                                          RawTextToXmlProcessor processor)
                                   throws BookException
Get the text allotted for the given entry

Parameters:
key - The key to fetch
processor - processor that executes before/after the content is read from disk or another kind of backend
Returns:
String The data for the verse in question
Throws:
BookException - If the data can not be read.

readNormalOsis

private void readNormalOsis(Key key,
                            RawTextToXmlProcessor processor,
                            List<org.jdom2.Content> content,
                            T openFileState)
                     throws BookException
Throws:
BookException

readPassageOsis

private Verse readPassageOsis(Key key,
                              RawTextToXmlProcessor processor,
                              List<org.jdom2.Content> content,
                              T openFileState)
                       throws BookException
Reads a passage as OSIS

Parameters:
key - the given key
processor - a processor for which to do things with
content - a list of content to be appended to (i.e. the OSIS data)
openFileState - the open file state, from which we read things
Throws:
BookException - a book exception if we failed to read the book

throwFailedKeyException

private void throwFailedKeyException(Key masterKey,
                                     Key currentKey,
                                     IOException e)
                              throws BookException
If non-null, currentKey is used to throw the exception, other, masterKey is used instead, which will be more general.

Parameters:
masterKey - the key containing currentKey
currentKey - the currentKey
e - the exception that occured
Throws:
BookException - always thrown, a BookException

create

public void create()
            throws IOException,
                   BookException
Create the directory to hold the Book if it does not exist.

Throws:
IOException
BookException

isSupported

public boolean isSupported()
Returns whether this AbstractBackend is implemented.

Returns:
true if this AbstractBackend is implemented.

isWritable

public boolean isWritable()
A Backend is writable if the file system allows the underlying files to be opened for writing and if the backend has implemented writing. Ultimately, all drivers should allow writing. At this time writing is not supported by backends, so abstract implementations should return false and let specific implementations return true otherwise.

Returns:
true if the book is writable

getVersification

public Versification getVersification()

Copyright ? 2003-2011