001: /**********************************************************************
002: Copyright (c) 2003 David Jencks and others. All rights reserved.
003: Licensed under the Apache License, Version 2.0 (the "License");
004: you may not use this file except in compliance with the License.
005: You may obtain a copy of the License at
006:
007: http://www.apache.org/licenses/LICENSE-2.0
008:
009: Unless required by applicable law or agreed to in writing, software
010: distributed under the License is distributed on an "AS IS" BASIS,
011: WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
012: See the License for the specific language governing permissions and
013: limitations under the License.
014:
015: Contributors:
016: 2003 Andy Jefferson - coding standards
017: 2003 Andy Jefferson - commented
018: 2004 Andy Jefferson - changed to extend CollectionStore
019: 2004 Andy Jefferson - added subList
020: ...
021: **********************************************************************/package org.jpox.store.scostore;
022:
023: import java.util.Collection;
024: import java.util.ListIterator;
025:
026: import org.jpox.StateManager;
027:
028: /**
029: * Interface representation of the backing store for a List.
030: * Takes the collection methods and extends them for lists.
031: *
032: * @version $Revision: 1.5 $
033: **/
034: public interface ListStore extends CollectionStore {
035: /**
036: * Method to add an element to the List.
037: * @param ownerSM State Manager for the List.
038: * @param element Element to add
039: * @param index Position to add the element.
040: * @param size Current size of list (if known). -1 if not known
041: */
042: void add(StateManager ownerSM, Object element, int index, int size);
043:
044: /**
045: * Method to add a collection of elements to the List.
046: * @param ownerSM State Manager for the List.
047: * @param c Collection of elements to add
048: * @param index Position to add the elements.
049: * @param size Current size of the list (if known). -1 if not known
050: * @return Whether the elements were added ok
051: */
052: boolean addAll(StateManager ownerSM, Collection c, int index,
053: int size);
054:
055: /**
056: * Method to remove an element from the List.
057: * @param ownerSM State Manager for the List.
058: * @param index Position to remove the element.
059: * @param size Current size of the list (if known). -1 if not known
060: * @return The element that was removed.
061: */
062: Object remove(StateManager ownerSM, int index, int size);
063:
064: /**
065: * Method to retrieve an element from a position in the List.
066: * @param ownerSM State Manager for the List.
067: * @param index Position of the element.
068: * @return The element at that position.
069: **/
070: Object get(StateManager ownerSM, int index);
071:
072: /**
073: * Method to update an element at a position in the List.
074: * @param ownerSM State Manager for the List.
075: * @param index Position of the element.
076: * @param element The element value
077: * @param allowDependentField Whether to enable dependent field during this operation
078: * @return The previous element at that position.
079: **/
080: Object set(StateManager ownerSM, int index, Object element,
081: boolean allowDependentField);
082:
083: /**
084: * Accessor for a sublist of elements between from and to indices.
085: * @param ownerSM State Manager for the List.
086: * @param from Start position (inclusive)
087: * @param to End position (exclusive)
088: * @return List of elements in this range.
089: **/
090: java.util.List subList(StateManager ownerSM, int from, int to);
091:
092: /**
093: * Method to return the position of an element in the List.
094: * @param ownerSM State Manager for the List.
095: * @param element The element value
096: * @return The position of the element.
097: **/
098: int indexOf(StateManager ownerSM, Object element);
099:
100: /**
101: * Method to return the last position of an element in the List.
102: * @param ownerSM State Manager for the List.
103: * @param element The element value
104: * @return The last position of the element.
105: **/
106: int lastIndexOf(StateManager ownerSM, Object element);
107:
108: /**
109: * Accessor for a list iterator for the List.
110: * @param ownerSM State Manager for the List.
111: * @return List iterator for the List.
112: **/
113: ListIterator listIterator(StateManager ownerSM);
114:
115: /**
116: * Accessor for a list iterator for the List.
117: * @param ownerSM State Manager for the List.
118: * @param index start position of the iterator.
119: * @return List iterator for the List.
120: **/
121: ListIterator listIterator(StateManager ownerSM, int index);
122: }
|