org.crosswire.jsword.passage
Class DistinctPassage

java.lang.Object
  extended by org.crosswire.jsword.passage.AbstractPassage
      extended by org.crosswire.jsword.passage.DistinctPassage
All Implemented Interfaces:
Serializable, Cloneable, Comparable, Key, Passage

public class DistinctPassage
extends AbstractPassage

A Passage that is implemented using a TreeSet of Verses. The attributes of the style are:

Distribution Licence:
JSword is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License, version 2 as published by the Free Software Foundation.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
The License is available on the internet here, or by writing to: Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
The copyright to this program is held by it's authors.

Version:
$Id: DistinctPassage.java,v 1.10 2004/08/16 22:08:43 joe Exp $
Author:
Joe Walker [joe at eireneh dot com]
See Also:
Licence, Serialized Form

Nested Class Summary
 
Nested classes/interfaces inherited from class org.crosswire.jsword.passage.AbstractPassage
AbstractPassage.VerseRangeIterator
 
Field Summary
(package private) static long serialVersionUID
          To make serialization work across new versions
private  SortedSet store
          The place the real data is stored
 
Fields inherited from class org.crosswire.jsword.passage.AbstractPassage
BITWISE, DISTINCT, listeners, METHOD_COUNT, originalName, RANGED, REF_ALLOWED_DELIMS, REF_OSIS_DELIM, REF_PREF_DELIM, skipNormalization, suppressEvents
 
Constructor Summary
protected DistinctPassage()
          Create an empty DistinctPassage.
protected DistinctPassage(String refs)
          Create a Verse from a human readable string.
 
Method Summary
 void add(VerseBase obj)
          Add this Verse/VerseRange to this Passage
 void clear()
          Removes all of the elements from this set (optional operation).
 Object clone()
          Get a copy of ourselves.
 boolean contains(VerseBase obj)
          Returns true if this collection contains all the specified Verse
 int countVerses()
          Returns the number of verses in this collection.
 boolean isEmpty()
          Does this Passage have 0 members
 Iterator iterator()
           
private  void readObject(ObjectInputStream in)
          Call the support mechanism in AbstractPassage
 void remove(VerseBase obj)
          Remove this Verse/VerseRange from this Passage
private  void writeObject(ObjectOutputStream out)
          Call the support mechanism in AbstractPassage
 
Methods inherited from class org.crosswire.jsword.passage.AbstractPassage
addAll, addPassageListener, addVerses, blur, booksInPassage, canHaveChildren, chaptersInPassage, compareTo, contains, containsAll, countRanges, equals, fireContentsChanged, fireIntervalAdded, fireIntervalRemoved, get, getChildCount, getName, getOSISName, getOverview, getParent, getRangeAt, getVerseAt, hashCode, indexOf, lowerEventSuppresionAndTest, lowerNormalizeProtection, normalize, optimizeReads, optimizeWrites, raiseEventSuppresion, raiseNormalizeProtection, rangeIterator, readDescription, readObjectSupport, removeAll, removePassageListener, retainAll, setParent, toString, toVerseArray, toVerseRange, trimRanges, trimVerses, versesInPassage, writeDescription, writeObjectSupport
 
Methods inherited from class java.lang.Object
finalize, getClass, notify, notifyAll, wait, wait, wait
 

Field Detail

serialVersionUID

static final long serialVersionUID
To make serialization work across new versions

See Also:
Constant Field Values

store

private transient SortedSet store
The place the real data is stored

Constructor Detail

DistinctPassage

protected DistinctPassage()
Create an empty DistinctPassage. There are no ctors from either Verse or VerseRange so you need to do new DistinctPassage().add(...);


DistinctPassage

protected DistinctPassage(String refs)
                   throws NoSuchVerseException
Create a Verse from a human readable string. The opposite of toString(), Given any DistinctPassage v1, and the following DistinctPassage v2 = new DistinctPassage(v1.toString()); Then v1.equals(v2); Theoretically, since there are many ways of representing a DistinctPassage as text string comparision along the lines of: v1.toString().equals(v2.toString()) could be false. Practically since toString() is standardized this will be true however. We don't need to worry about thread safety in a ctor since we don't exist yet.

Parameters:
refs - A String containing the text of the DistinctPassage
Throws:
NoSuchVerseException - If the string is not valid
Method Detail

clone

public Object clone()
Get a copy of ourselves. Points to note:

Specified by:
clone in interface Passage
Overrides:
clone in class AbstractPassage
Returns:
A complete copy of ourselves

iterator

public Iterator iterator()
Specified by:
iterator in interface Key
Overrides:
iterator in class AbstractPassage
Returns:
an iterator over the elements in this set.

isEmpty

public boolean isEmpty()
Description copied from interface: Key
Does this Passage have 0 members

Specified by:
isEmpty in interface Key
Overrides:
isEmpty in class AbstractPassage
Returns:
true if this set contains no elements.

countVerses

public int countVerses()
Description copied from interface: Passage
Returns the number of verses in this collection. Like Collection.size() This does not mean the Passage needs to use Verses, just that it understands the concept.

Specified by:
countVerses in interface Passage
Overrides:
countVerses in class AbstractPassage
Returns:
the number of Verses in this collection
See Also:
Verse

contains

public boolean contains(VerseBase obj)
Description copied from interface: Passage
Returns true if this collection contains all the specified Verse

Parameters:
obj - Verse or VerseRange that may exist in this Passage
Returns:
true if this collection contains that

add

public void add(VerseBase obj)
Description copied from interface: Passage
Add this Verse/VerseRange to this Passage

Parameters:
obj - The Verses to be removed from this Passage

remove

public void remove(VerseBase obj)
Description copied from interface: Passage
Remove this Verse/VerseRange from this Passage

Parameters:
obj - The Verses to be removed from this Passage

clear

public void clear()
Description copied from interface: Key
Removes all of the elements from this set (optional operation). This set will be empty after this call returns (unless it throws an exception).

Specified by:
clear in interface Key
Overrides:
clear in class AbstractPassage

writeObject

private void writeObject(ObjectOutputStream out)
                  throws IOException
Call the support mechanism in AbstractPassage

Parameters:
out - The stream to write our state to
Throws:
IOException - if the read fails
See Also:
AbstractPassage.writeObjectSupport(ObjectOutputStream)

readObject

private void readObject(ObjectInputStream in)
                 throws IOException,
                        ClassNotFoundException
Call the support mechanism in AbstractPassage

Parameters:
in - The stream to read our state from
Throws:
IOException - if the read fails
ClassNotFoundException - If the read data is incorrect
See Also:
AbstractPassage.readObjectSupport(ObjectInputStream)

Copyright ? 2003-2004