Business Components

oracle.jbo.server
Class ViewRowSetIteratorImpl

java.lang.Object
  |
  +--oracle.jbo.common.BaseObject
        |
        +--oracle.jbo.common.PropertiesHelper
              |
              +--oracle.jbo.common.RowSetHelper
                    |
                    +--oracle.jbo.common.RowSetIteratorHelper
                          |
                          +--oracle.jbo.server.ViewRowSetIteratorImpl

public class ViewRowSetIteratorImpl
extends RowSetIteratorHelper
implements RowSetIterator

The middle-tier class that enables the user to iterate through row sets.

A view row set iterator blongs to a view row set. In the view row set a row's position is identified by its row index. A range is a window through which a portion of the view row set is visible. A row has an absolute index, relative to the first row in the entire view row set, and rows within the range have a range index, relative to the first row in the range. One of the rows, in the range or not, may be designated as the current row. Other objects that have interest in changes to a view row set's data, current row designation, and range may be registered as listeners by calling addListener(). Listeners must implement the RowSetListener interface. When a view row set iterator is created, it registers with its containing view row set. Later, when an entity row is updated, the View Object propagates it to its view row sets, which propagate the event to its listeners, including its iterator, which converts it to a view row event, and sends it to its own listeners.

Since:
JDeveloper 3.0
See Also:
ViewObject, RowSet, RowSetIterator, RowSetListener, ViewRowSetIteratorImpl

Field Summary
protected  ViewRowSetImpl mViewRowSet
           
protected  int mViewSize
           
 
Fields inherited from class oracle.jbo.common.RowSetIteratorHelper
mCurrentRow
 
Fields inherited from class oracle.jbo.common.RowSetHelper
listeners, mName
 
Fields inherited from class oracle.jbo.common.PropertiesHelper
mProperties, timer
 
Fields inherited from class oracle.jbo.common.BaseObject
TRACE_EVERY_ALLOC, TRACE_NONE, TRACE_OCCASIONAL, TRACE_UNINITIALIZED
 
Fields inherited from interface oracle.jbo.RowIterator
SLOT_BEFORE_FIRST, SLOT_BEYOND_LAST, SLOT_DELETED, SLOT_VALID
 
Constructor Summary
ViewRowSetIteratorImpl(ViewRowSetImpl rowset)
          Constructs a new secondary (non-default) view row set iterator.
ViewRowSetIteratorImpl(ViewRowSetImpl rowset, java.lang.String name, boolean isDefaultRSI)
          Constructs a new view row set iterator.
 
Method Summary
protected  void addDetailViewRowSet(RowSet detailRowSet)
          ##INTERNAL##
 void addListener(java.lang.Object listener)
          Adds an event listener to this object.
 RowSet createDetailRowSet(java.lang.String rsName, java.lang.String linkDefName)
          Creates and returns an new detail row set for this row set iterator.
 Key createKey(AttributeList nvp)
          Given a list of name-value pairs, creates a Key object that matches the key structure for the ViewObject for this RowItertor.
 Row createRow()
          Creates a new view row.
 java.util.Enumeration enumerateRowsInRange()
          Creates and returns an enumerator of the rows in the range.
 Row[] findByEntity(int eRowHandle, int maxNumOfRows)
          Finds and returns view rows that use the entity row, identified by the entity row handle, eRowHandle.
 Row[] findByKey(Key key, int maxNumOfRows)
          Finds and returns view rows that match the specified key.
static RowSetIterator findRSIForEntity(RowSetIterator[] rsis, Row eRow)
           
 void fireNavigationEvent(NavigationEvent event)
          Fires the navigation event to its listeners.
 void fireRangeRefreshed(RangeRefreshEvent event)
          Fires the range refresh event to its listeners.
 void fireRowDeleted(DeleteEvent event)
          Fires the row deleted event to its listeners.
 void fireRowUpdated(UpdateEvent event)
          Fires the row updated event to its listeners.
 Row first()
          Navigates to the first row in the row set.
 Row[] getAllRowsInRange()
          Returns an array of all rows in the iterator's range.
 Row getCurrentRow()
          Returns the current row of the iterator.
 int getCurrentRowIndex()
          Returns the absolute row index of the current row in the row set.
 int getCurrentRowSlot()
          Returns the current row slot status.
 RowSet[] getDetailRowSets()
          Returns an array of all detail row sets for this row set iterator.
 int getFetchedRowCount()
          Returns the number of rows fetched from the JDBC RestultSet.
 java.util.Hashtable getProperties()
          Retrieves all properties.
 int getRangeIndexOf(Row row)
          Returns the range index of the row specified by row.
 int getRangeSize()
          Returns the range size of the iterator.
 int getRangeStart()
          Returns the absolute row index of the first row in the range.
 Row getRow(Key key)
          Returns the first row whose key matches key.
 Row getRowAtRangeIndex(int index)
          Returns the row at range index index.
 int getRowCount()
          Returns the total number of rows in this row set.
 int getRowCountInRange()
          Returns the actual number of rows in the range.
 Row getRowFromHandle(java.lang.Object rowHandle)
          Internal: Applications should not use this method.
 RowSet getRowSet()
          Returns this row set iterator's row set (interface).
 ViewRowSetImpl getRowSetImpl()
          Returns this row set iterator's row set (implementation class).
 RowSetIterator getRowSetIterator()
          Returns the row set iterator interface of this object.
 ViewObject getViewObject()
          Returns this row set iterator's view object.
 boolean hasNext()
          Indicates whether the iterator has a next row or not.
 boolean hasPrevious()
          Indicates whether the iterator has a previous row or not.
 void insertRow(Row row)
          Inserts the row into the row set.
 void insertRowAtRangeIndex(int index, Row row)
          Inserts the row into the row set at the specified range index.
 boolean isDefaultRSI()
          Internal: Applications should not use this method.
 boolean isRangeAtBottom()
          Indicates whether the iterator range contains the last row of the row set.
 boolean isRangeAtTop()
          Indicates whether the iterator range contains the first row of the row set.
 Row last()
          Navigates to the last row in the row set.
 Row next()
          Navigates to the next row in the row set.
 int nextIndex()
          Returns the absolute row index of the next row.
 Row previous()
          Navigates to the previous row in the row set.
 int previousIndex()
          Returns the absolute row index of the previous row.
protected  void refresh(boolean resetIter, boolean fillUpRange)
           
 void removeCurrentRow()
          Removes the current row.
protected  void removeDetailViewRowSet(RowSet detailRowSet)
          ##INTERNAL##
 void removeRowAtRangeIndex(int index)
          Removes a view row at range index index.
 void removeRowHandle(java.lang.Object rowHandle)
          Internal: Applications should not use this method.
 void reset()
          Resets the iterator.
 int scrollRange(int rows)
          Scrolls the range by amount.
 int scrollRangeTo(Row row, int index)
          Scrolls the range to a specific row.
 boolean setCurrentRow(Row row)
          Indicates whether the cursor has been successfully moved to the row specified by row.
 boolean setCurrentRowAtRangeIndex(int index)
          Moves the iterator to the row whose range index is index.
 int setRangeSize(int newSize)
          Sets the range size for the iterator.
 int setRangeStart(int start)
          Sets the range position by the absolute row index specified in start.
 void setRowValidation(boolean flag)
          Sets the validation flag on this iterator.
 
Methods inherited from class oracle.jbo.common.RowSetIteratorHelper
createKey
 
Methods inherited from class oracle.jbo.common.RowSetHelper
fireRangeScrolled, fireRowInserted, getListeners, getName, removeListener, setName
 
Methods inherited from class oracle.jbo.common.PropertiesHelper
getProperty, refreshProperty, setProperty
 
Methods inherited from class oracle.jbo.common.BaseObject
dumpState, setTraceLevel, setTraceWriter
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

mViewRowSet

protected ViewRowSetImpl mViewRowSet

mViewSize

protected int mViewSize
Constructor Detail

ViewRowSetIteratorImpl

public ViewRowSetIteratorImpl(ViewRowSetImpl rowset)
Constructs a new secondary (non-default) view row set iterator.
Parameters:
rowset - the row set to which this iterator belongs.

ViewRowSetIteratorImpl

public ViewRowSetIteratorImpl(ViewRowSetImpl rowset,
                              java.lang.String name,
                              boolean isDefaultRSI)
Constructs a new view row set iterator.
Parameters:
result - the row set to which this iterator belongs.
name - the view row set iterator name.
isDefaultRSI - flag indicating whether this row set iterator is the default RSI for result.
Method Detail

getViewObject

public ViewObject getViewObject()
Returns this row set iterator's view object.
Returns:
the ViewObject this row set iterator belongs to.

getRowSetImpl

public ViewRowSetImpl getRowSetImpl()
Returns this row set iterator's row set (implementation class).

This method differs from getRowSet in that the latter returns the RowSet interface, while this method returns the implementation class (ViewRowSetImpl).

Returns:
the ViewRowSetImpl this row set iterator belongs to.

getRowSet

public RowSet getRowSet()
Returns this row set iterator's row set (interface).

This method differs from getRowSetImpl in that the latter returns the implementation class (ViewRowSetImpl), while this method returns the RowSet interface.

Specified by:
getRowSet in interface RowSetIterator
Returns:
the RowSet this row set iterator belongs to.

isDefaultRSI

public boolean isDefaultRSI()
Internal: Applications should not use this method.

Indicates whether this row set iterator is the default RSI for the row set.

Returns:
indicates whether this row set iterator is the default RSI for the row set.

getRowSetIterator

public RowSetIterator getRowSetIterator()
Returns the row set iterator interface of this object.
Returns:
the row set interface of this object.

setRangeSize

public int setRangeSize(int newSize)
Sets the range size for the iterator.

See ViewObjectImpl.setRangeSize for details.

Parameters:
newSize - the new range size.
Returns:
the new range size.
See Also:
ViewObjectImpl.setRangeSize(int)

getRangeSize

public int getRangeSize()
Returns the range size of the iterator.

See ViewObjectImpl.getRangeSize for details.

Returns:
the range size.
See Also:
ViewObjectImpl.getRangeSize()

getFetchedRowCount

public int getFetchedRowCount()
Returns the number of rows fetched from the JDBC RestultSet.

Returns:
the number of rows fetched so far.

getRowCount

public int getRowCount()
Returns the total number of rows in this row set.

See ViewObjectImpl.getRowCount for details.

Returns:
the number of rows in the row set.
See Also:
ViewObjectImpl.getRowCount()

getRowCountInRange

public int getRowCountInRange()
Returns the actual number of rows in the range.

See ViewObjectImpl.getRowCountInRange for details.

Returns:
the actual number of rows in the range.
See Also:
ViewObjectImpl.getRowCountInRange()

getRowAtRangeIndex

public Row getRowAtRangeIndex(int index)
Returns the row at range index index.

Range index is a 0 based index within the range.

Parameters:
index - range index of the row.
Returns:
the row at the specified range index. null if the index is outside the range, or if there is no row at the specified index.

getRow

public Row getRow(Key key)
Returns the first row whose key matches key.

See ViewObjectImpl.getRow for details.

Parameters:
key - key to match.
Returns:
the first matching row. null if no match.
See Also:
ViewObjectImpl.getRow(Key)

getRowFromHandle

public Row getRowFromHandle(java.lang.Object rowHandle)
Internal: Applications should not use this method.

Returns the row with a handle specified by hdl.

See ViewObjectImpl.getRowFromHandle for details.

Parameters:
rowHandle - the row handle.
Returns:
the row identified by the row handle.
See Also:
ViewObjectImpl.getRowFromHandle(Object)

removeRowHandle

public void removeRowHandle(java.lang.Object rowHandle)
Internal: Applications should not use this method.

Removes the row handle from the row handle hash table.

See ViewObjectImpl.removeRowHandle for details.

Parameters:
rowHandle - the row handle to remove.
See Also:
ViewObjectImpl.removeRowHandle(Object)

createKey

public Key createKey(AttributeList nvp)
Description copied from interface: RowIterator
Given a list of name-value pairs, creates a Key object that matches the key structure for the ViewObject for this RowItertor. This Key object could be used as a valid argument to findByKey. This Key will have null values for attributes expected in the key structure for this ViewObject, but not found in the given set of name-value pairs.

findByKey

public Row[] findByKey(Key key,
                       int maxNumOfRows)
Finds and returns view rows that match the specified key.

See ViewObjectImpl.findByKey for details.

Parameters:
key - the key to match.
maxNumOfRows - the maximum size of the array to return, or -1 to return all rows.
Returns:
an array of rows matching the key.
See Also:
ViewObjectImpl.findByKey(Key, int)

getCurrentRow

public Row getCurrentRow()
Returns the current row of the iterator.

See ViewObjectImpl.getCurrentRow for details.

Returns:
the current row. null if no current row.
See Also:
ViewObjectImpl.getCurrentRow()

getCurrentRowSlot

public int getCurrentRowSlot()
Returns the current row slot status.

See ViewObjectImpl.getCurrentRowSlot for details.

Returns:
one of the slot status constants listed above.
See Also:
ViewObjectImpl.getCurrentRowSlot()

setRowValidation

public void setRowValidation(boolean flag)
Description copied from interface: RowIterator
Sets the validation flag on this iterator. By default a RowIterator validates the current row when navigating to another row. This method can be used to turn this row-validation off by passing 'false' as parameter.
Tags copied from interface: RowIterator
Parameters:
flag - Whether to turn row validation off or not.
Throws:
InvalidOperException - is thrown if this iterator is the default iterator of a ViewObject or a RowSet.

setCurrentRow

public boolean setCurrentRow(Row row)
Indicates whether the cursor has been successfully moved to the row specified by row.

See ViewObjectImpl.setCurrentRow for details.

Parameters:
row - the row to which the cursor should be moved.
Returns:
indicates whether the current row was successfully set or not.
See Also:
ViewObjectImpl.setCurrentRow(Row)

setCurrentRowAtRangeIndex

public boolean setCurrentRowAtRangeIndex(int index)
Moves the iterator to the row whose range index is index.

See ViewObjectImpl.setCurrentRowAtRangeIndex for details.

Parameters:
index - range index to which to move the current row.
Returns:
indicates whether the current row was successfully set or not.
See Also:
ViewObjectImpl.setCurrentRowAtRangeIndex(int)

getCurrentRowIndex

public int getCurrentRowIndex()
Returns the absolute row index of the current row in the row set.

See ViewObjectImpl.getCurrentRowIndex for details.

Returns:
the absolute row index of the current row. -1 if the row set has not be executed, or the iterator has just been reset.
See Also:
ViewObjectImpl.getCurrentRowIndex()

getRangeIndexOf

public int getRangeIndexOf(Row row)
Returns the range index of the row specified by row.

See ViewObjectImpl.getRangeIndexOf for details.

Parameters:
row - the row in question.
Returns:
the range index of the row. -1 if the row is not within the range.
See Also:
ViewObjectImpl.getRangeIndexOf(Row)

scrollRange

public int scrollRange(int rows)
Scrolls the range by amount.

See ViewObjectImpl.scrollRange for details.

Parameters:
rows - the number of rows to scroll.
Returns:
the actual number of rows scrolled. A negative number indicates that the scroll was scrolled upward.
See Also:
ViewObjectImpl.scrollRange(int)

scrollRangeTo

public int scrollRangeTo(Row row,
                         int index)
Scrolls the range to a specific row.

See ViewObjectImpl.scrollRangeTo for details.

Parameters:
row - the row to scroll the range to.
index - the range index to position the row at.
Returns:
the actual number of rows scrolled. A negative number indicates that the scroll was scrolled upward.
See Also:
ViewObjectImpl.scrollRangeTo(Row, int)

reset

public void reset()
Resets the iterator.

See ViewObjectImpl.reset for details.

See Also:
ViewObjectImpl.reset()

first

public Row first()
Navigates to the first row in the row set.

See ViewObjectImpl.first for details.

Returns:
the first row, which becomes the current row for the iterator. null if the row set has no rows.
See Also:
ViewObjectImpl.first()

last

public Row last()
Navigates to the last row in the row set.

See ViewObjectImpl.last for details.

Returns:
the last row, which becomes the current row for the iterator. null if the row set has no rows.
See Also:
ViewObjectImpl.last()

next

public Row next()
Navigates to the next row in the row set.

See ViewObjectImpl.next for details.

Returns:
the next row, which becomes the current row for the iterator. null if no next row. If no next row, the current row is not moved.
See Also:
ViewObjectImpl.next()

previous

public Row previous()
Navigates to the previous row in the row set.

See ViewObjectImpl.previous for details.

Returns:
the previous row, which becomes the current row for the iterator. null if no previous row. If no previous row, the current row is not moved.
See Also:
ViewObjectImpl.previous()

hasNext

public boolean hasNext()
Indicates whether the iterator has a next row or not.

See ViewObjectImpl.hasNext for details.

Returns:
true if there is a next row, false if not.
See Also:
ViewObjectImpl.hasNext()

hasPrevious

public boolean hasPrevious()
Indicates whether the iterator has a previous row or not.

See ViewObjectImpl.hasPrevious for details.

Returns:
true if there is a previous row, false if not.
See Also:
ViewObjectImpl.hasPrevious()

isRangeAtBottom

public boolean isRangeAtBottom()
Indicates whether the iterator range contains the last row of the row set.

See ViewObjectImpl.isRangeAtBottom for details.

Returns:
true if the range contains the last row, false if not.
See Also:
ViewObjectImpl.isRangeAtBottom()

isRangeAtTop

public boolean isRangeAtTop()
Indicates whether the iterator range contains the first row of the row set.

See ViewObjectImpl.isRangeAtTop for details.

Returns:
true if the range contains the first row, false if not.
See Also:
ViewObjectImpl.isRangeAtTop()

nextIndex

public int nextIndex()
Returns the absolute row index of the next row.
Returns:
the absolute row index of the next row. -1 if there is no next row.

previousIndex

public int previousIndex()
Returns the absolute row index of the previous row.
Returns:
the absolute row index of the previous row. -1 if there is no previous row.

getAllRowsInRange

public Row[] getAllRowsInRange()
Returns an array of all rows in the iterator's range.

See ViewObjectImpl.getAllRowsInRange for details.

Returns:
an array of view rows.
See Also:
ViewObjectImpl.getAllRowsInRange()

enumerateRowsInRange

public java.util.Enumeration enumerateRowsInRange()
Creates and returns an enumerator of the rows in the range.
Returns:
an enumerator.

createRow

public Row createRow()
Creates a new view row.

See ViewObjectImpl.createRow for details.

Returns:
the new view row.
See Also:
ViewObjectImpl.createRow()

insertRow

public void insertRow(Row row)
Inserts the row into the row set.

See ViewObjectImpl.insertRow for details.

Parameters:
row - the view row to insert.
See Also:
ViewObjectImpl.insertRow(Row)

insertRowAtRangeIndex

public void insertRowAtRangeIndex(int index,
                                  Row row)
Inserts the row into the row set at the specified range index.

See ViewObjectImpl.insertRowAtRangeIndex for details.

Parameters:
index - the range index into which the row is to be inserted.
row - the view row to insert.
See Also:
ViewObjectImpl.insertRowAtRangeIndex(int, Row)

removeCurrentRow

public void removeCurrentRow()
Removes the current row.

See ViewObjectImpl.removeCurrentRow for details.

See Also:
ViewObjectImpl.removeCurrentRow()

removeRowAtRangeIndex

public void removeRowAtRangeIndex(int index)
Removes a view row at range index index.
Parameters:
index - range index of the row to remove.

createDetailRowSet

public RowSet createDetailRowSet(java.lang.String rsName,
                                 java.lang.String linkDefName)
Creates and returns an new detail row set for this row set iterator.

See ViewObjectImpl.createDetailRowSet for details.

Specified by:
createDetailRowSet in interface RowSetIterator
Parameters:
rsName - the name of the row set to be assigned to the new detail row set.
linkDefName - identifies the view link definition that defines the master-detail relationship between this row set iterator and the new detail row set.
Returns:
the new detail row set.
See Also:
ViewObjectImpl.createDetailRowSet(String, String)

addDetailViewRowSet

protected void addDetailViewRowSet(RowSet detailRowSet)
##INTERNAL##

Adds the detail row set to the list of detail row sets.

This row set iterator is the master and detailRowSet is a detail.

Parameters:
detailRowSet - the detail row set to add.

removeDetailViewRowSet

protected void removeDetailViewRowSet(RowSet detailRowSet)
##INTERNAL##

Removes the detail row set from the list of detail row sets.

This row set iterator is the master and detailRowSet is a detail.

Parameters:
detailRowSet - the detail row set to remove.

getDetailRowSets

public RowSet[] getDetailRowSets()
Returns an array of all detail row sets for this row set iterator. See ViewObjectImpl.getDetailRowSets for details.
Specified by:
getDetailRowSets in interface RowSetIterator
Returns:
an array of all detail row sets for this row set iterator.
See Also:
ViewObjectImpl.getDetailRowSets()

getRangeStart

public int getRangeStart()
Returns the absolute row index of the first row in the range.

See ViewObjectImpl.getRangeStart for details.

Returns:
the absolute row index of the first row in the range.
See Also:
ViewObjectImpl.getRangeStart()

setRangeStart

public int setRangeStart(int start)
Sets the range position by the absolute row index specified in start.

See ViewObjectImpl.setRangeStart for details.

Parameters:
start - absolute row index of the row that should be positioned as the first row of the range. An absolute row index is a row index in the entire row set. It starts at 0.
Returns:
the absolute row index of the first row of the range.
See Also:
ViewObjectImpl.setRangeStart(int)

refresh

protected void refresh(boolean resetIter,
                       boolean fillUpRange)

getProperties

public java.util.Hashtable getProperties()
Retrieves all properties. It is a union of properties on this view object and those on the view definition.
Overrides:
getProperties in class PropertiesHelper
Returns:
hash table (name-value pairs) of all properties.

addListener

public void addListener(java.lang.Object listener)
Adds an event listener to this object.

listener should implement the RowSetListener interface.

Specified by:
addListener in interface RowSetIterator
Overrides:
addListener in class RowSetHelper
Parameters:
listener - the RowSetListener registering interest in this object's events.

fireRangeRefreshed

public void fireRangeRefreshed(RangeRefreshEvent event)
Fires the range refresh event to its listeners.
Overrides:
fireRangeRefreshed in class RowSetHelper
Parameters:
the - range refresh event.

fireNavigationEvent

public void fireNavigationEvent(NavigationEvent event)
Fires the navigation event to its listeners.
Overrides:
fireNavigationEvent in class RowSetHelper
Parameters:
the - navigation event.

fireRowDeleted

public void fireRowDeleted(DeleteEvent event)
Fires the row deleted event to its listeners.
Overrides:
fireRowDeleted in class RowSetHelper
Parameters:
the - row deleted event.

fireRowUpdated

public void fireRowUpdated(UpdateEvent event)
Fires the row updated event to its listeners.
Overrides:
fireRowUpdated in class RowSetHelper
Parameters:
the - row updated event.

findRSIForEntity

public static RowSetIterator findRSIForEntity(RowSetIterator[] rsis,
                                              Row eRow)

findByEntity

public Row[] findByEntity(int eRowHandle,
                          int maxNumOfRows)
Description copied from interface: RowIterator
Finds and returns view rows that use the entity row, identified by the entity row handle, eRowHandle.

Tags copied from interface: RowIterator
Parameters:
eRowHandle - the entity row handle.
maxNumOfRows - the maximum size of the row array to return, or -1 to return all rows.
Returns:
an array of view rows that use the entity row.

Business Components