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.apache.cayenne.util
Class IndexPropertyList

    java.lang.Object
      java.util.AbstractCollection<E>
          java.util.AbstractList
              org.apache.cayenne.util.IndexPropertyList

All Implemented Interfaces:
  Serializable, Iterable, Collection, List, ValueHolder

    public class IndexPropertyList

extends AbstractList
implements ValueHolder

A List implementation that would maintain its internal ordering based on some object numeric "index" property. When objects are added to the list at a certain index, an "index" property is modified to reflect list order, when objects are removed, their index property is set to the negative number.

For performance reasons this implementation does not guarantee that there is no gaps in the integer ordering sequence (i.e. generally `object.getIndexProperty() != list.indexOf(object)`). However it guarantees the right ordering based on index property.

Since:
  1.2
See Also:
  Serialized Form

Field Summary
`protected String` | `indexProperty`
`protected List` | `list` A list used for the actual objects storage.

Fields inherited from class java.util.AbstractList
`modCount`

Constructor Summary
`IndexPropertyList(String indexProperty)` Creates an empty NumericPropertyOrderedList.
`IndexPropertyList(String indexProperty, List objects, boolean sortNeeded)` Creates a NumericPropertyOrderedList that decorates another list.

Method Summary
`void` | `add(int index, Object element)`
`protected int` | `calculateIndexValue(int listIndex)` Calculates an index value at the specified list index.
`Object` | `get(int index)`
`protected int` | `getIndexValue(Object object)`
`Object` | `getValue()` Returns an object stored by this ValueHolder.
`Object` | `getValueDirectly()` Retrieves ValueHolder value without triggering fault resolution.
`void` | `invalidate()` Turns a ValueHolder into a fault.
`boolean` | `isFault()` Returns true if the internal value is not yet resolved.
`Object` | `remove(int index)`
`Object` | `set(int index, Object element)`
`protected void` | `setIndexValue(Object object, int index)`
`Object` | `setValue(Object value)` Sets an object stored by this ValueHolder.
`Object` | `setValueDirectly(Object value)` Sets ValueHolder vaue without triggering fault resolution.
`protected void` | `shift(int startIndex, int afterIndexValue)`
`int` | `size()`
`protected void` | `sort()` Sorts internal list.
`void` | `touch()` Changes list state to "dirty" forcing reordering on next access.

Methods inherited from class java.util.AbstractList
`add, addAll, clear, equals, hashCode, indexOf, iterator, lastIndexOf, listIterator, listIterator, removeRange, subList`

Methods inherited from class java.util.AbstractCollection
`addAll, contains, containsAll, isEmpty, remove, removeAll, retainAll, toArray, toArray, toString`

Methods inherited from class java.lang.Object
`clone, finalize, getClass, notify, notifyAll, wait, wait, wait`

Methods inherited from interface java.util.List
`addAll, contains, containsAll, isEmpty, remove, removeAll, retainAll, toArray, toArray`

Field Detail

### list

    protected List list

  A list used for the actual objects storage.

### indexProperty

    protected String indexProperty

Constructor Detail

### IndexPropertyList

    public IndexPropertyList(String indexProperty)

  Creates an empty NumericPropertyOrderedList.

### IndexPropertyList

    public IndexPropertyList(String indexProperty,
                             List objects,
                             boolean sortNeeded)

  Creates a NumericPropertyOrderedList that decorates another list. If the list is not known to be properly sorted, caller must set sortNeeded to true. This will result in sorting the original list on first access attempt.

Method Detail

### isFault

    public boolean isFault()

  Description copied from interface: `ValueHolder`
  Returns true if the internal value is not yet resolved.

  Specified by:
    `isFault` in interface `ValueHolder`

### setValueDirectly

    public Object setValueDirectly(Object value)
                            throws CayenneRuntimeException

  Description copied from interface: `ValueHolder`
  Sets ValueHolder vaue without triggering fault resolution.

  Specified by:
    `setValueDirectly` in interface `ValueHolder`
  Throws:
    `CayenneRuntimeException`

### setValue

    public Object setValue(Object value)
                    throws CayenneRuntimeException

  Description copied from interface: `ValueHolder`
  Sets an object stored by this ValueHolder.

  Specified by:
    `setValue` in interface `ValueHolder`
  Parameters:
    `value` - a new value of the ValueHolder.
  Returns:
    a previous value saved in the ValueHolder.
  Throws:
    `CayenneRuntimeException`

### getValue

    public Object getValue()
                    throws CayenneRuntimeException

  Description copied from interface: `ValueHolder`
  Returns an object stored by this ValueHolder.

  Specified by:
    `getValue` in interface `ValueHolder`
  Throws:
    `CayenneRuntimeException`

### getValueDirectly

    public Object getValueDirectly()
                            throws CayenneRuntimeException

  Description copied from interface: `ValueHolder`
  Retrieves ValueHolder value without triggering fault resolution.

  Specified by:
    `getValueDirectly` in interface `ValueHolder`
  Throws:
    `CayenneRuntimeException`

### invalidate

    public void invalidate()

  Description copied from interface: `ValueHolder`
  Turns a ValueHolder into a fault.

  Specified by:
    `invalidate` in interface `ValueHolder`

### touch

    public void touch()

  Changes list state to "dirty" forcing reordering on next access.

### get

    public Object get(int index)

  Specified by:
    `get` in interface `List`
  Specified by:
    `get` in class `AbstractList`

### size

    public int size()

  Specified by:
    `size` in interface `Collection`
  Specified by:
    `size` in interface `List`
  Specified by:
    `size` in class `AbstractCollection`

### set

    public Object set(int index,
                      Object element)

  Specified by:
    `set` in interface `List`
  Overrides:
    `set` in class `AbstractList`

### add

    public void add(int index,
                    Object element)

  Specified by:
    `add` in interface `List`
  Overrides:
    `add` in class `AbstractList`

### remove

    public Object remove(int index)

  Specified by:
    `remove` in interface `List`
  Overrides:
    `remove` in class `AbstractList`

### calculateIndexValue

    protected int calculateIndexValue(int listIndex)

  Calculates an index value at the specified list index. Note that using this value may require a shift of the objects following this index.

### getIndexValue

    protected int getIndexValue(Object object)

### setIndexValue

    protected void setIndexValue(Object object,
                                 int index)

### shift

    protected void shift(int startIndex,
                         int afterIndexValue)

### sort

    protected void sort()

  Sorts internal list.

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

Copyright © 2001-2010 Apache Cayenne. All Rights Reserved.