|
Business Components | |||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: INNER | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object | +--java.util.AbstractCollection | +--java.util.AbstractList | +--java.util.Vector | +--oracle.jbo.ViewCriteria
A list of row criteria for a View Object's WHERE clause.
The lengths of the ViewCriteriaRow
s in the list must
all match the number of attributes in the View Object.
The following example of a user-defined function, demoCriteria
uses several methods in the ViewCriteria and
ViewCriteriaRow
classes to create and populate criteria rows and to demonstrate
"query-by-example".
The printViewObject is a helper function that executes the
View Object query and prints the results to the screen.
public static void demoCriteria(ApplicationModule appMod) { // Create and populate criteria rows to support query-by-example. ViewObject empView = appMod.createViewObject("emp", "d2e.EmpView"); ViewCriteria vc = empView.createViewCriteria(); ViewCriteriaRow vcRow = vc.createViewCriteriaRow(); // ViewCriteriaRow attribute name is case-sensitive. // ViewCriteriaRow attribute value requires operator and value. // Note also single-quotes around string value. vcRow.setAttribute("Job", "= 'MANAGER'"); vc.addElement(vcRow); vcRow = vc.createViewCriteriaRow(); vcRow.setAttribute("Sal", "> 2500"); vc.addElement(vcRow); empView.applyViewCriteria(vc); // Multiple rows are OR-ed in WHERE clause. System.out.println("Demo View Criteria"); //Should print employees that are MANAGER or have Sal > 2500 QueryDemo.printViewObject(empView); } public static void printViewObject(ViewObject vo) { // Execute the query, print results to the screen. vo.executeQuery(); while (vo.hasNext()) { Row row = vo.next();\ String rowDataStr = ""; // How many attributes (columns) is the View Object using? int numAttrs = vo.getAttributeCount(); // Column numbers start with 0, not 1. for (int columnNo = 0; columnNo < numAttrs; columnNo++) { // See also Row.getAttribute(String name). Object attrData = row.getAttribute(columnNo); rowDataStr += (attrData + "\t"); } System.out.println(rowDataStr); } }
Field Summary |
Type | Field |
---|---|
protected com.sun.java.util.collections.ArrayList |
listeners
|
Fields inherited from class java.util.Vector |
capacityIncrement, elementCount, elementData |
Fields inherited from class java.util.AbstractList |
modCount |
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 |
ViewCriteria(ViewObject viewObject)
Creates an empty view criteria object. |
Method Summary |
Type | Method |
---|---|
void |
addListener(java.lang.Object target)
Adds a subscriber (listener) to be notified of RowSetListener
events generated by 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 Row object, but does not insert it into the row set. |
ViewCriteriaRow |
createViewCriteriaRow()
Creates a new criteria row as a ViewCriteriaRow object. |
java.util.Enumeration |
enumerateRowsInRange()
Gets an Enumeration interface for the row set. |
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()
Designates the first row of the row set as the current row. |
Row[] |
getAllRowsInRange()
Extracts the rows in the range. |
int |
getAttributeIndexOf(java.lang.String name)
Finds the column associated with an attribute name. |
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. |
int |
getFetchedRowCount()
Counts the number of rows currently fetched in the row set. |
int |
getIterMode()
Gets the current iteration mode. |
protected com.sun.java.util.collections.ArrayList |
getListenersList()
|
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 range. |
int |
getRangeStart()
Gets the absolute index of the first row in the row set range. |
Row |
getRow(Key key)
Accesses a row through a unique key. |
Row |
getRowAtRangeIndex(int index)
Accesses a row through its index in the row set. |
int |
getRowCount()
Counts the total number of rows in the row set. |
int |
getRowCountInRange()
Gets the size of the row set range. |
ViewObject |
getViewObject()
Gets the View Object that owns the view criteria. |
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)
Adds a row to the row set, before the current row. |
void |
insertRowAtRangeIndex(int index,
Row row)
Adds a row to the row set at the given index. |
boolean |
isRangeAtBottom()
Tests if the row set range is at the end of the result set. |
boolean |
isRangeAtTop()
Tests if the row set range is at the beginning of the result set. |
Row |
last()
Designates the last row of the row set as the current row. |
Row |
next()
Steps forward, designating the next row as the current row. |
Row |
previous()
Steps backward, designating the previous row as the current row. |
void |
removeCurrentRow()
Removes the current Row object from the row set. |
void |
removeListener(java.lang.Object target)
Removes a subscriber (listener) for RowSetListener
events generated by this row set iterator. |
void |
reset()
Clears the "current row" designation and places the iterator in the slot before the first row. |
int |
scrollRange(int amount)
Moves the row set 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 row set index. |
boolean |
setCurrentRow(Row row)
Designates a given row as the current row. |
boolean |
setCurrentRowAtRangeIndex(int index)
Designates a given index as the current row. |
void |
setIterMode(int mode)
Sets the iteration mode for this Row Iterator. |
int |
setRangeSize(int size)
Modifies the size of the row set range. |
int |
setRangeStart(int start)
Moves the row set range. |
void |
setRowValidation(boolean flag)
Sets the validation flag on this iterator. |
void |
trimNoDataRows()
|
Methods inherited from class java.util.Vector |
add, add, addAll, addAll, addElement, capacity, clear, clone, contains, containsAll, copyInto, elementAt, elements, ensureCapacity, equals, firstElement, get, hashCode, indexOf, indexOf, insertElementAt, isEmpty, lastElement, lastIndexOf, lastIndexOf,
remove, remove, removeAll, removeAllElements, removeElement, removeElementAt, removeRange, retainAll, set, setElementAt, setSize, size, subList, toArray, toArray, toString, trimToSize |
Methods inherited from class java.util.AbstractList |
iterator, listIterator, listIterator |
Methods inherited from class java.lang.Object |
finalize, getClass, notify, notifyAll, wait, wait, wait |
Methods inherited from interface java.util.List |
iterator, listIterator, listIterator |
Field Detail |
protected com.sun.java.util.collections.ArrayList listeners
Constructor Detail |
public ViewCriteria(ViewObject viewObject)
viewObject
- the owner of the ViewCriteria
.Method Detail |
public ViewObject getViewObject()
ViewObject
that contains the ViewCriteria
.public int getAttributeIndexOf(java.lang.String name)
name
- the column name.public ViewCriteriaRow createViewCriteriaRow()
ViewCriteriaRow
, an array for WHERE clause criteria.ViewCriteriaRow
public Row next()
next
in interface RowIterator
null
if there is no next row.public Row previous()
previous
in interface RowIterator
null
if there is no previous row.public Row first()
first
in interface RowIterator
null
if the row set is empty.public Row last()
last
in interface RowIterator
null
if the row set is empty.public void reset()
A subsequent invocation of next()
will cause the first
row to become the current row.
reset
in interface RowIterator
public boolean hasNext()
hasNext
in interface RowIterator
true
if there is next row.public boolean hasPrevious()
hasPrevious
in interface RowIterator
true
if there is previous row.public int getFetchedRowCount()
getFetchedRowCount
in interface RowIterator
public int getRowCount()
getRowCount
in interface RowIterator
public Row getRowAtRangeIndex(int index)
getRowAtRangeIndex
in interface RowIterator
index
- an integer in the range 0 to
getRangeSize() - 1
.null
if the index is out of range.public Row getCurrentRow()
getCurrentRow
in interface RowIterator
public int getCurrentRowIndex()
getCurrentRowIndex
in interface RowIterator
public int getCurrentRowSlot()
getCurrentRowSlot
in interface RowIterator
SLOT_
.public boolean setCurrentRow(Row row)
setCurrentRow
in interface RowIterator
row
- the new current row.true
if the operation succeeded.public Row createRow()
createRow
in interface RowIterator
public void insertRow(Row row)
insertRow
in interface RowIterator
row
- the Row object to be added.public void removeCurrentRow()
removeCurrentRow
in interface RowIterator
public int setRangeSize(int size)
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 row set range. Size of
0 is treated same as 1. Size < -1 is treated same as -1.setRangeStart(int start)
public int getRangeSize()
getRangeSize
in interface RowIterator
public int getRangeStart()
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)
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 range.public int scrollRange(int amount)
scrollRange
in interface RowIterator
amount
- the number of rows to scroll.
A negative value scrolls upward.public int scrollRangeTo(Row row, int index)
scrollRangeTo
in interface RowIterator
row
- the row.index
- the row's new index.public boolean setCurrentRowAtRangeIndex(int index)
setCurrentRowAtRangeIndex
in interface RowIterator
index
- the index of the new current row.true
if the operation succeeded.public void insertRowAtRangeIndex(int index, Row row)
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
index
- the point where row
is to be added.row
- the Row object to be added.public int getRangeIndexOf(Row row)
getRangeIndexOf
in interface RowIterator
row
- a Row object.
or -1
if the row is not in range.row
,public int getRowCountInRange()
getRowCountInRange
in interface RowIterator
public boolean isRangeAtBottom()
isRangeAtBottom
in interface RowIterator
true
if the last row of the range is
the last row of the result set.public boolean isRangeAtTop()
isRangeAtTop
in interface RowIterator
true
if the first row of the range is
the first row of the result set.public java.util.Enumeration enumerateRowsInRange()
Enumeration
interface for the row set.enumerateRowsInRange
in interface RowIterator
Enumeration
interface.public Row[] getAllRowsInRange()
getAllRowsInRange
in interface RowIterator
setViewSize()
.public Row getRow(Key key)
getRow
in interface RowIterator
key
- a key.public Row[] findByKey(Key key, int maxNumOfRows)
See ViewObjectImpl#findByKey(key, int)
for details.
You do not have to specify all of the keys, but you do have to correctly specify the positions of the keys that you do want. For example, assume that you have 3 Entity Objects in the View Object, and each Entity Object key is 2 parts. If you want to specify only the key attributes for Entity Object 1 and Entity Object 3, you need:
Object [] keyValues = new Object[6]; // IMPORTANT that length is *6* keyValues[0] = eo1_keypart1; // first Entity Object, key part 1 keyValues[1] = eo1_keypart2; // first Entity Object, key part 2 keyValues[4] = eo3_keypart1; // third Entity Object, key part 1 keyValues[5] = eo3_keypart2; // third Entity Object, key part 2 Key key = new Key(keyValues);
findByKey
in interface RowIterator
key
- the key to match.maxNumOfRows
- the maximum size of the array to return,
or -1 to return all rows.ViewObjectImpl.findByKey(Key, int)
public Key createKey(AttributeList nvp)
createKey
in interface RowIterator
public Row[] findByEntity(int eRowHandle, int maxNumOfRows)
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 void setRowValidation(boolean flag)
setRowValidation
in interface RowIterator
flag
- Whether to turn row validation off or not.InvalidOperException
- is thrown if this iterator is
the default iterator of a ViewObject or a RowSet.public int getIterMode()
RowIterator
getIterMode
in interface RowIterator
oracle.jbo.RowIterator
public void setIterMode(int mode)
RowIterator
setIterMode
in interface RowIterator
oracle.jbo.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".protected com.sun.java.util.collections.ArrayList getListenersList()
public void addListener(java.lang.Object target)
NavigatableRowIterator
RowSetListener
events generated by this row set iterator.addListener
in interface NavigatableRowIterator
oracle.jbo.NavigatableRowIterator
listener
- the subscriber to be added. It should implement
RowSetListener
.public void removeListener(java.lang.Object target)
NavigatableRowIterator
RowSetListener
events generated by this row set iterator.removeListener
in interface NavigatableRowIterator
oracle.jbo.NavigatableRowIterator
listener
- the subscriber to be removed.public void trimNoDataRows()
|
Business Components | |||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: INNER | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |