|
Oracle ADF Model and Business Components API Reference 10.1.2 B14022-01 | ||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object oracle.jbo.common.PropertiesHelper oracle.jbo.common.RowSetHelper oracle.adf.model.generic.DCRowSetIteratorImpl
Field Summary | |
protected java.util.List |
dataRows
|
protected java.lang.String |
mAccessorName
|
protected DCDataControl |
mApp
|
protected Row |
mCurrentRow
|
protected java.lang.Object |
mProvider
|
protected java.util.Iterator |
mProviderIter
|
protected StructureDef |
mStructureDef
|
static int |
REQ_FIRST
|
static int |
REQ_LAST
|
static int |
REQ_NEXT
|
static int |
REQ_PREVIOUS
|
Fields inherited from class oracle.jbo.common.RowSetHelper |
listeners, mMgmtListeners, mName |
Fields inherited from class oracle.jbo.common.PropertiesHelper |
mProperties |
Fields inherited from interface oracle.jbo.RowIterator |
ITER_MODE_LAST_PAGE_FULL, ITER_MODE_LAST_PAGE_PARTIAL, SLOT_BEFORE_FIRST, SLOT_BEYOND_LAST, SLOT_DELETED, SLOT_VALID |
Constructor Summary | |
protected |
DCRowSetIteratorImpl(DCDataControl dc,
java.util.Collection coll,
java.lang.String name)
|
protected |
DCRowSetIteratorImpl(DCDataControl dc,
java.util.Iterator iter,
java.lang.String name)
|
protected |
DCRowSetIteratorImpl(DCDataControl dc,
java.lang.Object data,
java.lang.String name)
|
|
DCRowSetIteratorImpl(DCDataControl dc,
java.lang.Object data,
java.lang.String name,
StructureDef def)
|
Method Summary | |
void |
clearCurrentData()
for internal framework use only. |
void |
closeRowSetIterator()
Closes this row set iterator. |
protected boolean |
containsRow(Row row)
|
Row |
createAndInitRow(AttributeList nvp)
Creates and initializes a new Row object, but does not insert it into the Row Set. |
RowSet |
createDetailRowSet(java.lang.String rsName,
java.lang.String linkDefName)
Create a row set for the view link. |
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. |
Key |
createKey(java.lang.String stringifiedKey)
|
Row |
createRow()
Creates a new Row object, but does not insert it into the Row Set. |
java.util.Enumeration |
enumerateRowsInRange()
Gets an Enumeration of all rows in the Row Set. |
protected java.lang.Object |
fetchProvider()
|
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. |
Row |
first()
Gets the first row in the iterator. |
java.lang.String |
getAccessorName()
|
Row[] |
getAllRowsInRange()
Extracts the rows in the range. |
Row |
getCurrentRow()
Accesses the current row. |
int |
getCurrentRowIndex()
Gets the absolute index (not range index) of the current row. |
int |
getCurrentRowSlot()
Gets the slot status of the current row. |
protected DCDataControl |
getDataControl()
|
java.lang.Object |
getDataProvider()
|
RowSet[] |
getDetailRowSets()
Get all detail row sets. |
int |
getEstimatedRangePageCount()
Returns getEstimatedRowCount()/rangePageSize, if rangeSize > 0. |
int |
getFetchedRowCount()
Counts the number of rows fetched from database into the Row Set collection up to this point. |
Row[] |
getFilteredRows(java.lang.String attrName,
java.lang.Object attrValue)
Returns all rows in this collection whose attribute value matches the value being passed in attrValue . |
Row[] |
getFilteredRowsInRange(java.lang.String attrName,
java.lang.Object attrValue)
Returns all rows in this range whose attribute value matches the value being passed in attrValue . |
int |
getIterMode()
Gets the current iteration mode. |
protected com.sun.java.util.collections.ArrayList |
getListenersList()
|
java.lang.String |
getName()
Gets the name of the Iterator. |
Row[] |
getNextRangeSet()
Gets the next set of rows in the range. |
Row[] |
getPreviousRangeSet()
Gets the previous set of rows in the range. |
java.util.Hashtable |
getProperties()
Gets the table of properties. |
java.lang.String |
getProviderMethodResultName()
|
int |
getProviderMethodResultUseCount()
|
int |
getRangeIndexOf(Row row)
Get the index of the given row relative to the beginning of the range. |
int |
getRangeSize()
Gets the size of the Row Set Iterator range. |
int |
getRangeStart()
Gets the absolute row index of the first row in the Row Set Iterator range. |
Row |
getRow(Key key)
Locates and returns a row by its unique key. |
Row |
getRowAtRangeIndex(int rangeIndex)
Accesses a row through its range index. |
int |
getRowCount()
Counts the total number of rows in the Row Set. |
int |
getRowCountInRange()
Gets the size of the Row Set Iterator range. |
RowSet |
getRowSet()
Gets the Row Set that this Iterator belongs to. |
RowSetIterator |
getRowSetIterator()
|
StructureDef |
getStructureDef()
|
java.lang.Object |
getSyncLock()
Gets the locking object for this Row Set Iterator. |
boolean |
hasNext()
Tests for the existence of a row after the current row. |
boolean |
hasPrevious()
Tests for the existence of a row before the current row. |
void |
insertRow(Row row)
Inserts a row to the Row Set, before the current row. |
void |
insertRowAtRangeIndex(int rangeIndex,
Row row)
Inserts a row to the Row Set at the given range index. |
protected Row |
internalCreateRowInstanceFor(java.lang.Object rowData)
|
boolean |
isNameGenerated()
Tests if the Iterator's name was generated by the system. |
boolean |
isRangeAtBottom()
Tests if the Row Set Iterator range is at the end of the result set. |
boolean |
isRangeAtTop()
Tests if the Row Set Iterator range is at the beginning of the result set. |
boolean |
isRowValidation()
Gets the validation flag on this iterator. |
Row |
last()
Gets the last row in the iterator. |
Row |
next()
Gets the next row in the iterator. |
protected void |
notifyNavigationEvent(Row srcRow,
Row dstRow)
|
void |
notifyRangeRefreshed(int rangeStart)
|
Row |
previous()
Gets the previous row in the iterator. |
void |
rebuildIteratorUpto(int index)
Creates a new Iterator over the dataSource (if the datasource itself is not an Iterator) and resets the currency to the given index. |
void |
removeCurrentRow()
Removes the current Row object from the Row Set. |
Row |
removeCurrentRowAndRetain()
Removes the current Row object from the collection and retain it for insertion into another location. |
void |
removeCurrentRowFromCollection()
Removes the current Row object from the collection. |
void |
reset()
Moves the currency to the slot before the first row. |
int |
scrollRange(int amount)
Moves the Row Set Iterator range up or down a given number of rows. |
int |
scrollRangeTo(Row row,
int index)
Scrolls the range to place a given row at a given range index. |
int |
scrollToRangePage(int pageIndex)
Moves the row set range start to the given page index where every page consists of RangeSize number of rows. |
void |
setAccessorName(java.lang.String accName)
|
boolean |
setCurrentRow(Row row)
Designates a given row as the current row. |
boolean |
setCurrentRowAtRangeIndex(int rangeIndex)
Designates a given index as the current row. |
void |
setIterMode(int mode)
Sets the iteration mode for this Row Iterator. |
void |
setProviderMethodResultName(java.lang.String name)
|
void |
setProviderMethodResultUseCount(int count)
|
int |
setRangeSize(int size)
Modifies the size of the Row Set Iterator range. |
int |
setRangeStart(int start)
Moves the Row Set Iterator range. |
void |
setRowValidation(boolean flag)
Sets the validation flag on this iterator. |
protected int |
syncIterator(int index)
|
protected boolean |
useListAdapter()
Let a subclass decide if the ListAdapter should be used to avoid creating an iterator over the original list. |
Methods inherited from class oracle.jbo.common.RowSetHelper |
addListener, addManagementListener, fireMgmtIteratorClosed, fireMgmtIteratorReset, fireNavigationEvent, fireRangeRefreshed, fireRangeScrolled, fireRowDeleted, fireRowInserted, fireRowUpdated, getListeners, getManagementListenersList, hasListeners, hasManagementListeners, removeListener, removeManagementListener, setName |
Methods inherited from class oracle.jbo.common.PropertiesHelper |
getProperty, refreshProperty, setProperty |
Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Methods inherited from interface oracle.jbo.RowSetIterator |
addManagementListener, removeManagementListener |
Methods inherited from interface oracle.jbo.NavigatableRowIterator |
addListener, removeListener |
Field Detail |
protected DCDataControl mApp
protected java.util.List dataRows
protected java.lang.Object mProvider
protected java.util.Iterator mProviderIter
protected StructureDef mStructureDef
protected java.lang.String mAccessorName
protected Row mCurrentRow
public static final int REQ_FIRST
public static final int REQ_PREVIOUS
public static final int REQ_NEXT
public static final int REQ_LAST
Constructor Detail |
protected DCRowSetIteratorImpl(DCDataControl dc, java.util.Collection coll, java.lang.String name)
protected DCRowSetIteratorImpl(DCDataControl dc, java.util.Iterator iter, java.lang.String name)
protected DCRowSetIteratorImpl(DCDataControl dc, java.lang.Object data, java.lang.String name)
public DCRowSetIteratorImpl(DCDataControl dc, java.lang.Object data, java.lang.String name, StructureDef def)
Method Detail |
public final java.lang.Object getSyncLock()
RowSetIterator
ApplicationModule.getSyncLock()
for details.
getSyncLock
in interface RowSetIterator
public java.lang.String getName()
RowSetIterator
RowSet.createRowSetIterator(String)
for more info.
getName
in interface RowSetIterator
getName
in class RowSetHelper
protected DCDataControl getDataControl()
public void rebuildIteratorUpto(int index)
public final void setProviderMethodResultName(java.lang.String name)
public final java.lang.String getProviderMethodResultName()
public final void setProviderMethodResultUseCount(int count)
public final int getProviderMethodResultUseCount()
public final void setAccessorName(java.lang.String accName)
public final java.lang.String getAccessorName()
protected int syncIterator(int index)
protected java.lang.Object fetchProvider()
public void clearCurrentData()
public void closeRowSetIterator()
RowSetIterator
closeRowSetIterator
closes all detail row sets.
After that, it fires a RowSetManagementListener.iteratorClosed()
event to its RowSetManagementListener's
.
Then, it deregisters this row set iterator from the owning row set, and deregisters all its listeners.
closeRowSetIterator
in interface RowSetIterator
public RowSet getRowSet()
RowSetIterator
getRowSet
in interface RowSetIterator
public java.lang.Object getDataProvider()
public RowSetIterator getRowSetIterator()
public Row next()
RowIterator
next()
is called on an iterator whose Row Set has
not yet been #oracle.jbo.RowSet.executeQuery()
'ed, the
Row Set's query is executed. Thus, the user does not need to call
executeQuery()
himself before calling next()
.
We refer to this as implicit query execution or
implicit Row Set execution.
Before moving to the next row, next()
validates the current row
(if the iterator has a current row) through a call to
.
#oracle.jbo.Row.validate()
If the currency is on the last row of the range and next()
is
called, the range is scolled down by one row to bring the next row into
the visible range. In particular, if the range size is 1, next()
scrolls the range down by 1 row.
When this method is called, the current row of the iterator
may be outside the range. (Note that the current row does not
have to be within the range.) If so, next()
will
scroll the range, so that the row that will be the current row
at the conclusion of this method will be positioned in the middle
of the range.
If the iterator is just opened or reset (see
),
RowIterator.reset()
next()
will return the first row if one exists.
In this situation, next()
is functionally equivalent
to
.
RowIterator.first()
If the iterator is at the last row of the Row Set, next()
push the currency into the imaginary slot after the last row.
This will set the current slot status to SLOT_BEYOND_LAST
.
When the next row is required, a check is made to see if the row
has already been brought into the collection. If not, the row is fetched from
database. Note that the View Object's fetch mode affects how rows
are fetched from database into the collection. See
for details.
#oracle.jbo.server.ViewObjectImpl.getFetchMode()
If successful, this method designates the next row as the current row (the currency finally moves).
This method generates events to notify the changes to the iterator.
If scrolling occurs because of conditions described above, a
will be sent to
#oracle.jbo.ScrollEvent
.
To pick up such an event, the listener object must implement the
#oracle.jbo.RowSetListener.rangeScrolled(oracle.jbo.ScrollEvent)
interface. Further, this listener
must be registered through a call to
#oracle.jbo.RowSetListener
(the listener object passed in as the parameter to
#oracle.jbo.NavigatableRowIterator.addListener(Object)
addListener
).
If the currency is changed, it generates a
and sends it to
#oracle.jbo.NavigationEvent
.
#oracle.jbo.RowSetListener.navigated(oracle.jbo.NavigationEvent)
next
in interface RowIterator
#oracle.jbo.Row
object, or null
if there is no next row.public Row previous()
RowIterator
previous()
is called on an iterator whose Row Set has
not yet been #oracle.jbo.RowSet.executeQuery()
'ed, the
Row Set's query is executed. Thus, the user does not need to call
executeQuery()
himself before calling previous()
.
We refer to this as implicit query execution or
implicit Row Set execution.
Before moving to the previous row, previous()
validates the current row
(if the iterator has a current row) through a call to
.
#oracle.jbo.Row.validate()
If the currency is on the first row of the range and previous()
is
called, the range is scolled up by one row to bring the previous row into
the visible range. In particular, if the range size is 1, previous()
scrolls the range up by 1 row.
When this method is called, the current row of the iterator
may be outside the range. (Note that the current row does not
have to be within the range.) If so, previous()
will
scroll the range, so that the row that will be the current row
at the conclusion of this method will be positioned in the middle
of the range.
If the iterator is just opened or reset (see
),
RowIterator.reset()
previous()
will null
as the currency is
already on the imaginary slot before the first row.
If the iterator is at the first row of the Row Set, previous()
push the currency into the imaginary slot before the first row.
This will set the current slot status to SLOT_BEFORE_FIRST
.
If successful, this method designates the previous row as the current row (the currency finally moves).
This method generates events to notify the changes to the iterator.
If scrolling occurs because of conditions described above, a
will be sent to
#oracle.jbo.ScrollEvent
.
To pick up such an event, the listener object must implement the
#oracle.jbo.RowSetListener.rangeScrolled(oracle.jbo.ScrollEvent)
interface. Further, this listener
must be registered through a call to
#oracle.jbo.RowSetListener
(the listener object passed in as the parameter to
#oracle.jbo.NavigatableRowIterator.addListener(Object)
addListener
).
If the currency is changed, it generates a
and sends it to
#oracle.jbo.NavigationEvent
.
#oracle.jbo.RowSetListener.navigated(oracle.jbo.NavigationEvent)
previous
in interface RowIterator
#oracle.jbo.Row
object, or null
if there is no previous row.public Row first()
RowIterator
first()
is called on an iterator whose Row Set has
not yet been #oracle.jbo.RowSet.executeQuery()
'ed, the
Row Set's query is executed. Thus, the user does not need to call
executeQuery()
himself before calling first()
.
We refer to this as implicit query execution or
implicit Row Set execution.
This method checks to see if the currency is not on the first row.
If not, it resets the currency to the imaginary slot before the
first row and then calls
. Note that the act of
resetting the currency may cause the range to scroll upward.
RowIterator.next()
If the currency is on the slot before the first row, it
simply calls next()
. In this case, first()
is equivalent to next()
.
If the currency is already on the first row, nothing happens.
If first()
is called on an empty Row Set (a Row Set that
has no row), the currency is set to the slot after the last row, and
null
is returned.
This method generates events to notify the changes to the iterator,
e.g.,
and/or #oracle.jbo.ScrollEvent
.
See #oracle.jbo.NavigationEvent
for details.
RowIterator.next()
first
in interface RowIterator
#oracle.jbo.Row
object, or null
if there is no first row. In that case (null
return),
the current slot status will be RowIterator.SLOT_BEYOND_LAST
.public Row last()
RowIterator
last()
is called on an iterator whose Row Set has
not yet been #oracle.jbo.RowSet.executeQuery()
'ed, the
Row Set's query is executed. Thus, the user does not need to call
executeQuery()
himself before calling last()
.
We refer to this as implicit query execution or
implicit Row Set execution.
Before moving to the last row, last()
validates the current row
(if the iterator has a current row) through a call to
.
#oracle.jbo.Row.validate()
This method retrieves all rows from the Row Set and scrolls (if necessary)
to the last row. If some of these rows have not yet been fetched
from database, it fetches them. The View Object's fetch mode affects how rows
are fetched from database into the collection. See
for details.
#oracle.jbo.server.ViewObjectImpl.getFetchMode()
If successful, this method designates the last row as the current row.
If last()
is called on an empty Row Set, the currency moves
to the slot beyond the last row. The current slot status is set to
.
RowIterator.SLOT_BEYOND_LAST
The caller of this method should be aware that it may take a long time to complete as all rows from the Row Set are fetched.
The number of rows in the range at the completion of this method is affected by the "iteration mode". See Iteration Modes above for details.
This method generates events to notify the changes to the iterator.
If scrolling occurs because of conditions described above, a
will be sent to
#oracle.jbo.ScrollEvent
.
To pick up such an event, the listener object must implement the
#oracle.jbo.RowSetListener.rangeScrolled(oracle.jbo.ScrollEvent)
interface. Further, this listener
must be registered through a call to
#oracle.jbo.RowSetListener
(the listener object passed in as the parameter to
#oracle.jbo.NavigatableRowIterator.addListener(Object)
addListener
).
If the currency is changed, it generates a
and sends it to
#oracle.jbo.NavigationEvent
.
#oracle.jbo.RowSetListener.navigated(oracle.jbo.NavigationEvent)
last
in interface RowIterator
#oracle.jbo.Row
object, or null
if there is no last row.public void reset()
RowIterator
After this method, the current slot status will be
.
A subsequent invocation of RowIterator.SLOT_BEFORE_FIRST
will cause the first
row to become the current row.
RowIterator.next()
It sends a
to
#oracle.jbo.ScrollEvent
if the currency was not on the first row or on the slot before the first row.
To pick up such an event, the listener object must implement the
#oracle.jbo.RowSetListener.rangeScrolled(oracle.jbo.ScrollEvent)
interface. Further, this listener
must be registered through a call to
#oracle.jbo.RowSetListener
(the listener object passed in as the parameter to
#oracle.jbo.NavigatableRowIterator.addListener(Object)
addListener
).
reset
in interface RowIterator
public boolean hasNext()
RowIterator
hasNext
in interface RowIterator
true
if there is a next row.
Specifically, if the Row Set is empty or if the currency
is on the last row or the slot after the last row
(current slot status == RowIterator.SLOT_BEYOND_LAST
),
it returns false
. Otherwise, true
.public boolean hasPrevious()
RowIterator
If the Row Set is forward-only, it returns false
.
hasPrevious
in interface RowIterator
true
if there is a previous row.
Specifically, if the Row Set is empty or forward-only or
if the currency is on the first row or the slot before the first row
(current slot status == RowIterator.SLOT_BEFORE_FIRST
),
it returns false
. Otherwise, true
.public boolean isRangeAtBottom()
RowIterator
isRangeAtBottom
in interface RowIterator
true
if the last row of the range is
the last row of the result set.public boolean isRangeAtTop()
RowIterator
isRangeAtTop
in interface RowIterator
true
if the first row of the range is
the first row of the result set.public int getFetchedRowCount()
RowIterator
getFetchedRowCount
in interface RowIterator
public int getRowCount()
RowIterator
Note that this method retrieves all rows from the database then returns the number of rows in the Row Set collection.
getRowCount
in interface RowIterator
public int setRangeSize(int size)
RowIterator
This method takes effect when the next set of data is fetched. For an example usage of setRangeSize, see setRangeStart.
setRangeSize
in interface RowIterator
size
- the new number of rows in the iterator range. Size of
0 is treated same as 1. Size < -1 is treated same as -1.
RowIterator.setRangeStart(int)
public int getRangeSize()
RowIterator
getRangeSize
in interface RowIterator
public int getRowCountInRange()
RowIterator
getRowCountInRange
in interface RowIterator
public int getRangeStart()
RowIterator
The absolute index is 0-based, and is the row's index relative to the entire result set.
getRangeStart
in interface RowIterator
public int setRangeStart(int start)
RowIterator
Note that the index is 0-based. When you call setRangeStart(1), the range start will be positioned at the second table row.
Another behavior of setRangeStart (and also setRangeSize) is that it tries to position the range, so as to fill up the range as much as possible. For example, assume you have View Object vo focused on a table with four rows (A, B, C, D), and you execute the following code:
vo.setRangeStart(4); vo.setRangeSize(3); Row[] rows = vo.getAllRowsInRange();
In this case, rows contains the last 3 rows (B, C, D). When you call setRangeStart(4), it will try to position you at row 4. Since the index is 0-based, it finds that there is no row. Since the default range size is 1, it will position you to the last row (row index 3).
Then, when you call getRangeSize(3), it tries to fill up the range from the bottom. This is why you get (B, C, D).
setRangeStart
in interface RowIterator
start
- the absolute index of the new first row in the Row Set Iterator range.public int getEstimatedRangePageCount()
RowSetIterator
This number may fluxuate when the View Object is syncronized with its Entity Object.
getEstimatedRangePageCount
in interface RowSetIterator
public int scrollToRangePage(int pageIndex)
RowSetIterator
(rangeSize * (pageSize-1)) - getRangeStart();
scrollToRangePage
in interface RowSetIterator
pageIndex
- the page number to go to in the result set.
public int scrollRange(int amount)
RowIterator
scrollRange
in interface RowIterator
amount
- the number of rows to scroll.
A negative value scrolls upward.
public int scrollRangeTo(Row row, int index)
RowIterator
scrollRangeTo
in interface RowIterator
row
- the row.index
- the range index at which the row is to be found.
public Row getRow(Key key)
RowIterator
If the key being passed in has the row handle, it uses the row handle
to locate the row. This is a quick operation. (A key returned from
a call to
contains the
row handle.)
Row.getKey()
If the key does not have a row handle, or if the handle look up did not find the row in the View row cache, it performs a linear search through the Row Set collection looking for a match. Hence, this method could take quite a long time to complete.
This method is similar to
in that both methods return Row(s) that match the given key. However,
the user should understand the differences. First, findByKey() performs
random search. getKey() only performs random search if the key
has the row handle portion and if the row with that handle is currently
in the Row Set collection. Otherwise, getKey() does a linear search.
Hence, findByKey() is generally faster.
RowIterator.findByKey(Key, int)
However, findByKey() may find the matching Row(s) out of sequence. When a row is not found in the View row cache, findByKey() issues a database query. Matching rows are retrieved and appended to the Row Set collection. For example, suppose the Row Set collection has 200 rows that qualify in the database. Suppose the user retrieved only 10 rows (190 not yet retrieved). Suppose, at this time, the user issues findByKey() that locates the 200-th row (the last row in database result set). That row is appended to the Row Set collection at the 11-th spot. Thus, when you use findByKey(), you may see rows out of sequence. In contrast, getRow() always retrieves rows in sequence.
If the Row Set collection is of any non-trivial size (say over 50), we would recommend findByKey().
findByKey() allows for partial key (only for View Objects that have multiple Entity bases). When a partial key is specified, multiple rows may return. getKey() returns one and only one row (exact match).
getRow
in interface RowIterator
key
- the key.
public StructureDef getStructureDef()
public Row getRowAtRangeIndex(int rangeIndex)
RowIterator
getRowAtRangeIndex
in interface RowIterator
rangeIndex
- an index in the range: 0 to
getRangeSize() - 1
.
null
if the index is out of range.public Row getCurrentRow()
RowIterator
getCurrentRow
in interface RowIterator
public int getCurrentRowIndex()
RowIterator
getCurrentRowIndex
in interface RowIterator
public int getCurrentRowSlot()
RowIterator
getCurrentRowSlot
in interface RowIterator
SLOT_
.public int getIterMode()
RowIterator
getIterMode
in interface RowIterator
public void setIterMode(int mode)
RowIterator
setIterMode
in interface RowIterator
mode
- should be ITER_MODE_LAST_PAGE_PARTIAL if the iteration mode is
to be "partial-last-page", ITER_MODE_LAST_PAGE_FULL if it
is to be "full-last-page".public void setRowValidation(boolean flag)
RowIterator
setRowValidation
in interface RowIterator
flag
- Whether to turn row validation off or not.public boolean isRowValidation()
RowIterator
isRowValidation
in interface RowIterator
protected boolean containsRow(Row row)
public boolean setCurrentRow(Row row)
RowIterator
setCurrentRow
in interface RowIterator
row
- the new current row.
true
if the operation succeeded.public boolean setCurrentRowAtRangeIndex(int rangeIndex)
RowIterator
setCurrentRowAtRangeIndex
in interface RowIterator
rangeIndex
- the index of the new current row.
true
if the operation succeeded.public Row createRow()
RowIterator
createRow
in interface RowIterator
public Row createAndInitRow(AttributeList nvp)
RowIterator
createRow()
mainly
in that this method allows the user to pass in a list of name-value
pairs with which row attributes are initialized.
nvp
is a named value pair. When building an nvp from
scratch, use NameValuePairs
to build a new nvp.
Here is an example:
NameValuePairs nvp = new NameValuePairs(); nvp.setAttribute("EmpTyp", "C"); Row row = voEmp.createAndInitRow(nvp);This method is particularly useful when creating a subclass View Row or Entity Row. You can include polymorphic discriminator attribute values in
nvp
and correct subclass row
object will be created.
When this method is called, underlying entities are created.
After the new entities are created, a new view row is created.
After that ViewRowImpl.create(oracle.jbo.AttributeList)
is called with this nvp
. ViewRowImpl.create(AttributeList)
walks thru the list of entities and calls
EntityImpl.create(AttributeList)
with the same
nvp
for each entity in the view row.
createAndInitRow
in interface RowIterator
nvp
- a list of name-value pairs.
public void insertRow(Row row)
RowIterator
insertRow
in interface RowIterator
row
- the Row object to be added.public void insertRowAtRangeIndex(int rangeIndex, Row row)
RowIterator
index
is
relative to the range, i.e., index
of 0 would mean to insert
before the first row of the range. Allowed values for index
is 0 to range size. If index
equals range size, the row
is inserted right after the last row in the range. This method call does not
alter the current position of the iterator, nor does it affect the range
position.
insertRowAtRangeIndex
in interface RowIterator
rangeIndex
- the point where row
is to be added.row
- the Row object to be added.public void removeCurrentRow()
RowIterator
removeCurrentRow
in interface RowIterator
public void removeCurrentRowFromCollection()
RowIterator
It does not cause the row to be deleted from the database table.
It just removes the row from the row collection. However, once the
row is removed, it cannot be used any more. If you want to
remove the current row from collection and insert it elsewhere,
call
, change currency
to the desired location, and then call #removeAndRetain()
with that row.
RowIterator.insertRow(oracle.jbo.Row)
removeCurrentRowFromCollection
in interface RowIterator
public Row removeCurrentRowAndRetain()
RowIterator
It does not cause the row to be deleted from the database table. It just removes the row from the row collection.
This method differs from
in that after the current row is removed from the collection, it can be
inserted back into the collection at another location.
RowIterator.removeCurrentRowFromCollection()
To do so, call
,
and get the returning row. Then, change currency to the desired location,
and call RowIterator.removeCurrentRowAndRetain()
with
that row.
RowIterator.insertRow(oracle.jbo.Row)
removeCurrentRowAndRetain
in interface RowIterator
public int getRangeIndexOf(Row row)
RowIterator
getRangeIndexOf
in interface RowIterator
row
- a Row object.
or -1
if the row is not in range.
row
,public java.util.Enumeration enumerateRowsInRange()
RowIterator
Enumeration
of all rows in the Row Set.
enumerateRowsInRange
in interface RowIterator
Enumeration
interface.public Row[] getFilteredRows(java.lang.String attrName, java.lang.Object attrValue)
RowSetIterator
attrValue
.
Note that this method does not affect the current RowSetIterator
.
getFilteredRows
in interface RowSetIterator
attrName
- name of the attribute to be used for filtering.attrValue
- attribute value for filtering.
public Row[] getFilteredRowsInRange(java.lang.String attrName, java.lang.Object attrValue)
RowSetIterator
attrValue
.
This method uses getAllRowsInRange()
to retrieve
all rows and then match the rows.
getFilteredRowsInRange
in interface RowSetIterator
attrName
- name of the attribute to be used for filtering.attrValue
- attribute value for filtering.
public Row[] getAllRowsInRange()
RowIterator
getAllRowsInRange
in interface RowIterator
setViewSize()
.protected boolean useListAdapter()
public Row[] getNextRangeSet()
RowSetIterator
getNextRangeSet()
will return rows 10 through 19.
If the next range set does not have enough rows to fill up the range,
getNextRangeSet()
returns a partially filled range.
That is, this method operates as if the iteration mode is
.
RowIterator.ITER_MODE_LAST_PAGE_PARTIAL
If there is no more rows, this method returns an empty array (an array of length 0).
While obtaining the next range set, the range will be scrolled.
This causes a
to be sent to #oracle.jbo.ScrollEvent
.
To pick up such an event, the listener object must implement the
#oracle.jbo.RowSetListener.rangeScrolled(oracle.jbo.ScrollEvent)
interface. Further, this listener
must be registered through a call to
#oracle.jbo.RowSetListener
(the listener object passed in as the parameter to
#oracle.jbo.NavigatableRowIterator.addListener(Object)
addListener
).
After the next range set is obtained, the method sets the first
Row of the range as the current row. This may fire a
and sends it to
#oracle.jbo.NavigationEvent
.
#oracle.jbo.RowSetListener.navigated(oracle.jbo.NavigationEvent)
getNextRangeSet
in interface RowSetIterator
public Row[] getPreviousRangeSet()
RowSetIterator
getPreviousRangeSet()
will return rows 0 through 9.
If there is no more rows, this method returns an empty array (an array of length 0).
While obtaining the previous range set, the range will be scrolled.
This causes a
to be sent to #oracle.jbo.ScrollEvent
.
To pick up such an event, the listener object must implement the
#oracle.jbo.RowSetListener.rangeScrolled(oracle.jbo.ScrollEvent)
interface. Further, this listener
must be registered through a call to
#oracle.jbo.RowSetListener
(the listener object passed in as the parameter to
#oracle.jbo.NavigatableRowIterator.addListener(Object)
addListener
).
After the previous range set is obtained, the method sets the first
Row of the range as the current row. This may fire a
and sends it to
#oracle.jbo.NavigationEvent
.
#oracle.jbo.RowSetListener.navigated(oracle.jbo.NavigationEvent)
getPreviousRangeSet
in interface RowSetIterator
public RowSet[] getDetailRowSets()
getDetailRowSets
in interface RowSetIterator
public RowSet createDetailRowSet(java.lang.String rsName, java.lang.String linkDefName)
createDetailRowSet
in interface RowSetIterator
rsName
- the name of the new detail Row Set.linkDefName
- the name of a View Link definition.
This View Link chooses the relationship in which
this Iterator is the master and the new Row Set
is the detail. It must be a fully qualified
name (including the package name).
public final void notifyRangeRefreshed(int rangeStart)
protected void notifyNavigationEvent(Row srcRow, Row dstRow)
public Key createKey(java.lang.String stringifiedKey)
public Key createKey(AttributeList nvp)
RowIterator
createKey
in interface RowIterator
public Row[] findByKey(Key key, int maxNumOfRows)
RowIterator
If this View Object has multiple Entity Object bases, the key need not be specified for all. However, if a key is specified for n-th Entity Object, and if this Entity Object's primary key consists of multiple parts, all parts of the key must be specified.
If not all Entity keys are included, multiple rows may
match the partial key. The maxNumOfRows
parameter
is used to specify the maximum number of rows to return.
For example, suppose the View Object has Emp and DeptLocation as its Entity Object bases. Suppose further that Emp has a one part primary key (employee number) and DeptLocation has a two part primary key (dept name and location).
The user can make the following call to look for all employees working in ACCOUNTING's NEW YORK office:
// The key will consist of 3 parts. The first part is // for the employee number (which is null, meaning not // specified). The second part is the department name. // The third is the location. Object [] keyValues = new Object[3]; keyValues[0] = null; // All employees keyValues[1] = "ACCOUNTING"; keyValues[4] = "NEW YORK"; // third Entity Object, key part 1 Row[] rows = myAM.findViewObject(new Key(keyValues), -1);
In this example, if you were to include the key for DeptLocation, you must specify both key parts.
Note that the position of the key must patch the order of the Entity Object bases and their keys. In the above example, keyValues[0] is always the employee number. You cannot specify the employee number in keyValues[1] or keyValues[2].
This method works even on a View Object which has no Entity Object
base. For this to work, however, the ViewObject's key
attribute list must have been set up through a call to
Then, the following code block will retrieve all rows whose
attribute 0 is "PERM" and attribute 2 is 30.
Internally,
If the requested number of rows have been found, the array
returns. Otherwise, a check is made to see if the View Object's
fetch size is unlimited (which is -1, see
Otherwise (the requested number of rows not yet found and
the Row Set has not yet fetched all rows or the fetch size
is not -1), the search continues. We now use the
For a View Object which has no Entity Object base, we
simply skip the step of looking in the Entity Object cache.
Other than that, the logic is applied.
As new rows are retrieved from database they are added to the
Row Set collection. Thus, the user can work with these rows immediately,
e.g., call
This method does not fire any navigation event, nor does it
move the range or the current row. Also, as rows are added to
the Row Set collection, no insertion event fires (as this is
analogous to fetching rows).
See
#oracle.jbo.server.ViewObjectImpl.setKeyAttributeDefs(int[])
.
For example, suppose we have a View Object with 5 attributes where
attribute 0 and 2 are to be its key attributes.
// First set up the key attributes
myVO.setKeyAttributeDefs(new int[] { 0, 2 });
// The key will consist of 2 parts. The first part is
// for attribtue 0 and the second is for attribute 2.
Object [] keyValues = new Object[2];
keyValues[0] = "PERM";
keyValues[1] = new Integer(30);
Row[] rows = myAM.findViewObject(new Key(keyValues), -1);
findByKey()
works as follows for
a View Object with Entity Object bases: It takes the first
non-null
entity key from key
.
It uses it to find the Entity row in the cache. If it
finds it, then it looks at all View rows in the Row Set collection
that uses that Entity row and apply the remaining keys to qualify them.
It may or may not find as many rows as requested.
) and
the Row Set has fetched all the rows out of database into its
collection. If this is the case, we return the array
even if the requested number of rows have not been found.
This is because these conditions imply that all rows have
been brought into Row Set collection and no further search is
necessary.
#ViewObject.setMaxFetchSize()
key
build a where-clause for an internal View Object. That
where-clause is applied and qualifying rows are retrieved from
it to find the requested number of rows.
with one
of them. Care is applied to make sure the same row is not added to
the Row Set collection multiple times.
RowIterator.setCurrentRow(Row)
for comparison between this
method and RowIterator.getRow(Key)
getRow(Key)
.
findByKey
in interface RowIterator
key
- the key to match.maxNumOfRows
- the maximum size of the array to return,
or -1 to return all rows.
public Row[] findByEntity(int eRowHandle, int maxNumOfRows)
RowIterator
eRowHandle
.
findByEntity
in interface RowIterator
eRowHandle
- the Entity row handle.maxNumOfRows
- the maximum size of the row array to return,
or -1 to return all rows.
public java.util.Hashtable getProperties()
Properties
getProperties
in interface Properties
getProperties
in class PropertiesHelper
public boolean isNameGenerated()
RowSetIterator
isNameGenerated
in interface RowSetIterator
true
if the name was generated by the system.
false
if the name was given by the user and
not generated by the system.protected com.sun.java.util.collections.ArrayList getListenersList()
getListenersList
in class RowSetHelper
protected Row internalCreateRowInstanceFor(java.lang.Object rowData)
|
Oracle ADF Model and Business Components API Reference 10.1.2 B14022-01 | ||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
Copyright © 1997, 2004, Oracle. All rights reserved.