org.crosswire.jsword.book.basic
Class AbstractBook

java.lang.Object
  extended by org.crosswire.jsword.book.basic.AbstractBook
All Implemented Interfaces:
Comparable, Activatable, Book, KeyFactory
Direct Known Subclasses:
AbstractPassageBook, ReadingsBook, SwordDictionary

public abstract class AbstractBook
extends Object
implements Book

AbstractBook implements a few of the more generic methods of Book. This class does a lot of work in helping make search easier, and implementing some basic write methods.

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

Field Summary
private  BookMetaData bmd
          The meta data for this book
private  EventListenerList listeners
          The list of property change listeners
private  Searcher searcher
          How do we perform searches
 
Constructor Summary
AbstractBook(BookMetaData bmd)
           
 
Method Summary
 void activate(Lock lock)
          Called to indicate that the Book should initialize itself, and consume whatever system resources it needs to be able to respond to other queries.
 void addIndexStatusListener(IndexStatusListener listener)
          Adds a IndexStatusListener to the listener list.
 int compareTo(Object obj)
           
 void deactivate(Lock lock)
          Called to indicate that the Book should release whatever system resources it can to make way for other uses.
 boolean equals(Object obj)
           
 Key find(SearchRequest request)
          Retrieval: For a given search spec find a list of references to it.
 Key find(String request)
          Retrieval: For a given search spec find a list of references to it.
protected  void firePropertyChange(IndexStatus oldStatus, IndexStatus newStatus)
          Reports bound property changes.
 Book getBook()
           
 BookCategory getBookCategory()
          What category of content is this, a Bible or a reference work like a Dictionary or Commentary.
 BookMetaData getBookMetaData()
          Meta-Information: What version of the Bible is this?
 BookDriver getDriver()
          Accessor for the driver that runs this Book.
 String getDriverName()
          Calculated field: The name of the name, which could be helpful to distinguish similar Books available through 2 BookDrivers.
 String getFullName()
          Calculated field: The full name of the book, for example The format is "name, (Driver)"
 IndexStatus getIndexStatus()
          Has anyone generated a search index for this Book?
 String getInitials()
          The initials of this book - how people familiar with this book will know it, for example "NIV", "KJV".
 String getLanguage()
          The language of the book is the common name for the iso639 code.
 String getName()
          The name of the book, for example "King James Version" or "Bible in Basic English" or "Greek".
 String getOsisID()
          Calculated field: Get an OSIS identifier for the OsisText.setOsisIDWork() and the Work.setOsisWork() methods.
 Map getProperties()
          Get a list of all the properties available to do with this Book.
 String getProperty(String key)
           
 String getUnlockKey()
          Gets the unlock key for the module.
 boolean hasFeature(FeatureType feature)
          Return whether the feature is supported by the book.
 int hashCode()
           
 boolean isEnciphered()
          Indicate whether this book is enciphered.
 boolean isLeftToRight()
          Return the orientation of the language of the Book.
 boolean isLocked()
          Indicate whether this book is enciphered and without a key.
 boolean isQuestionable()
          Indicate whether this book is questionable.
 boolean isSupported()
          Indicate whether this book is supported by JSword.
 void putProperty(String key, String value)
           
 void removeIndexStatusListener(IndexStatusListener listener)
          Removes a IndexStatusListener from the listener list.
 void setBookMetaData(BookMetaData bmd)
          Set the meta-information for this book.
 void setIndexStatus(IndexStatus newStatus)
          This method does not alter the index status, however it is for Indexers that are responsible for indexing and have changed the status themselves.
 org.jdom.Document toOSIS()
          Get an OSIS representation of information concerning this Book.
 String toString()
           
 boolean unlock(String unlockKey)
          Unlocks a book with the given key.
 
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface org.crosswire.jsword.book.Book
getData, getRawData
 
Methods inherited from interface org.crosswire.jsword.passage.KeyFactory
createEmptyKeyList, getGlobalKeyList, getKey, getValidKey
 

Field Detail

searcher

private Searcher searcher
How do we perform searches


bmd

private BookMetaData bmd
The meta data for this book


listeners

private EventListenerList listeners
The list of property change listeners

Constructor Detail

AbstractBook

public AbstractBook(BookMetaData bmd)
Method Detail

getBookMetaData

public final BookMetaData getBookMetaData()
Description copied from interface: Book
Meta-Information: What version of the Bible is this?

Specified by:
getBookMetaData in interface Book
Returns:
A Version for this Bible

setBookMetaData

public final void setBookMetaData(BookMetaData bmd)
Description copied from interface: Book
Set the meta-information for this book.

Specified by:
setBookMetaData in interface Book

activate

public void activate(Lock lock)
Description copied from interface: Activatable
Called to indicate that the Book should initialize itself, and consume whatever system resources it needs to be able to respond to other queries.

Specified by:
activate in interface Activatable
Parameters:
lock - An attempt to ensure that only the Activator calls this method

deactivate

public void deactivate(Lock lock)
Description copied from interface: Activatable
Called to indicate that the Book should release whatever system resources it can to make way for other uses.

Specified by:
deactivate in interface Activatable
Parameters:
lock - An attempt to ensure that only the Activator calls this method

find

public Key find(String request)
         throws BookException
Description copied from interface: Book
Retrieval: For a given search spec find a list of references to it. If there are no matches then null should be returned, otherwise a valid Key.

Specified by:
find in interface Book
Parameters:
request - The search spec.
Throws:
BookException - If anything goes wrong with this method

find

public Key find(SearchRequest request)
         throws BookException
Description copied from interface: Book
Retrieval: For a given search spec find a list of references to it. If there are no matches then null should be returned, otherwise a valid Key.

Specified by:
find in interface Book
Parameters:
request - The search spec.
Throws:
BookException - If anything goes wrong with this method

getBook

public Book getBook()

getDriver

public BookDriver getDriver()
Description copied from interface: Book
Accessor for the driver that runs this Book. Note this method should only be used to delete() Books. Everything else you should want to do to a Book should be available in other ways.

Specified by:
getDriver in interface Book

getDriverName

public String getDriverName()
Description copied from interface: Book
Calculated field: The name of the name, which could be helpful to distinguish similar Books available through 2 BookDrivers.

Specified by:
getDriverName in interface Book
Returns:
The driver name

getFullName

public String getFullName()
Description copied from interface: Book
Calculated field: The full name of the book, for example The format is "name, (Driver)"

Specified by:
getFullName in interface Book
Returns:
The full name of this book

getIndexStatus

public IndexStatus getIndexStatus()
Description copied from interface: Book
Has anyone generated a search index for this Book?

Specified by:
getIndexStatus in interface Book
See Also:
IndexManager

setIndexStatus

public void setIndexStatus(IndexStatus newStatus)
Description copied from interface: Book
This method does not alter the index status, however it is for Indexers that are responsible for indexing and have changed the status themselves.

Specified by:
setIndexStatus in interface Book
See Also:
IndexManager

getInitials

public String getInitials()
Description copied from interface: Book
The initials of this book - how people familiar with this book will know it, for example "NIV", "KJV".

Specified by:
getInitials in interface Book
Returns:
The book's initials

getLanguage

public String getLanguage()
Description copied from interface: Book
The language of the book is the common name for the iso639 code.

Specified by:
getLanguage in interface Book
Returns:
the common name for the language

getName

public String getName()
Description copied from interface: Book
The name of the book, for example "King James Version" or "Bible in Basic English" or "Greek". In general it should be possible to deduce the initials from the name by removing all the non-capital letters. Although this is only a generalization. This method should not return null or a blank string.

Specified by:
getName in interface Book
Returns:
The name of this book

getOsisID

public String getOsisID()
Description copied from interface: Book
Calculated field: Get an OSIS identifier for the OsisText.setOsisIDWork() and the Work.setOsisWork() methods. The response will generally be of the form [Bible][Dict..].getInitials

Specified by:
getOsisID in interface Book
Returns:
The osis id of this book

getProperties

public Map getProperties()
Description copied from interface: Book
Get a list of all the properties available to do with this Book. The returned Properties will be read-only so any attempts to alter it will fail.

Specified by:
getProperties in interface Book

getProperty

public String getProperty(String key)
Specified by:
getProperty in interface Book
Parameters:
key - the key of the property.
Returns:
the value of the property

putProperty

public void putProperty(String key,
                        String value)
Specified by:
putProperty in interface Book
Parameters:
key - the key of the property.
value - the value of the property

getBookCategory

public BookCategory getBookCategory()
Description copied from interface: Book
What category of content is this, a Bible or a reference work like a Dictionary or Commentary.

Specified by:
getBookCategory in interface Book
Returns:
The category of book

isLeftToRight

public boolean isLeftToRight()
Description copied from interface: Book
Return the orientation of the language of the Book. If a book contains more than one language, it refers to the dominate language of the book. This will be used to present Arabic and Hebrew in their propper orientation.

Specified by:
isLeftToRight in interface Book
Returns:
true if the orientation for the dominate language is LeftToRight.

isSupported

public boolean isSupported()
Description copied from interface: Book
Indicate whether this book is supported by JSword. Since the expectation is that all books are supported, abstract implementations should return true and let specific implementations return false if they cannot support the book.

Specified by:
isSupported in interface Book
Returns:
true if the book is supported

isEnciphered

public boolean isEnciphered()
Description copied from interface: Book
Indicate whether this book is enciphered. Since the expectation is that most books are unenciphered, abstract implementations should return false and let specific implementations return true otherwise.

Specified by:
isEnciphered in interface Book
Returns:
true if the book is enciphered

isLocked

public boolean isLocked()
Description copied from interface: Book
Indicate whether this book is enciphered and without a key. Since the expectation is that most books are unenciphered, abstract implementations should return false and let specific implementations return true otherwise.

Specified by:
isLocked in interface Book
Returns:
true if the book is locked

unlock

public boolean unlock(String unlockKey)
Description copied from interface: Book
Unlocks a book with the given key.

Specified by:
unlock in interface Book
Parameters:
unlockKey - the key to try
Returns:
true if the unlock key worked.

getUnlockKey

public String getUnlockKey()
Description copied from interface: Book
Gets the unlock key for the module.

Specified by:
getUnlockKey in interface Book
Returns:
the unlock key, if any, null otherwise.

isQuestionable

public boolean isQuestionable()
Description copied from interface: Book
Indicate whether this book is questionable. A book may be deemed questionable if it's quality or content has not been confirmed. Since the expectation is that all books are not questionable, abstract implementations should return false and let specific implementations return true if the book is questionable.

Specified by:
isQuestionable in interface Book
Returns:
true if the book is questionable

hasFeature

public boolean hasFeature(FeatureType feature)
Description copied from interface: Book
Return whether the feature is supported by the book.

Specified by:
hasFeature in interface Book

addIndexStatusListener

public void addIndexStatusListener(IndexStatusListener listener)
Description copied from interface: Book
Adds a IndexStatusListener to the listener list.

A IndexStatusEvent will get fired in response to setIndexStatus.

Specified by:
addIndexStatusListener in interface Book
Parameters:
listener - the IndexStatusListener to be added

removeIndexStatusListener

public void removeIndexStatusListener(IndexStatusListener listener)
Description copied from interface: Book
Removes a IndexStatusListener from the listener list.

Specified by:
removeIndexStatusListener in interface Book
Parameters:
listener - the IndexStatusListener to be removed

firePropertyChange

protected void firePropertyChange(IndexStatus oldStatus,
                                  IndexStatus newStatus)
Reports bound property changes. If oldValue and newValue are not equal and the PropertyChangeEvent listener list isn't empty, then fire a PropertyChange event to each listener.

Parameters:
oldStatus - the old value of the property (as an Object)
newStatus - the new value of the property (as an Object)

toOSIS

public org.jdom.Document toOSIS()
Description copied from interface: Book
Get an OSIS representation of information concerning this Book.

Specified by:
toOSIS in interface Book

equals

public boolean equals(Object obj)
Overrides:
equals in class Object

hashCode

public int hashCode()
Overrides:
hashCode in class Object

compareTo

public int compareTo(Object obj)
Specified by:
compareTo in interface Comparable

toString

public String toString()
Overrides:
toString in class Object

Copyright ยจ 2003-2006