Overview | Package | Class | Use | Tree | Deprecated | Index | Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

## org.crosswire.jsword.passage
Class DistinctPassage

    java.lang.Object
      org.crosswire.jsword.passage.AbstractPassage
          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:

- Fairly fast manipulation
- Slow getName()
- Bloated for storing large numbers of Verses

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:
  - Call clone() not new() on member Objects, and on us.
  - Do not use Copy Constructors! - they do not inherit well.
  - Think about this needing to be synchronized
  - If this is not cloneable then writing cloneable children is harder

  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)`

Overview | Package | Class | Use | Tree | Deprecated | Index | Help
| Copyright ? 2003-2004
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD