|
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 ViewCriteriaRows 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.ViewCriteriaRowpublic Row next()
next in interface RowIteratornull if there is no next row.public Row previous()
previous in interface RowIteratornull if there is no previous row.public Row first()
first in interface RowIteratornull if the row set is empty.public Row last()
last in interface RowIteratornull 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 RowIteratorpublic boolean hasNext()
hasNext in interface RowIteratortrue if there is next row.public boolean hasPrevious()
hasPrevious in interface RowIteratortrue if there is previous row.public int getFetchedRowCount()
getFetchedRowCount in interface RowIteratorpublic int getRowCount()
getRowCount in interface RowIteratorpublic Row getRowAtRangeIndex(int index)
getRowAtRangeIndex in interface RowIteratorindex - an integer in the range 0 to getRangeSize() - 1.null if the index is out of range.public Row getCurrentRow()
getCurrentRow in interface RowIteratorpublic int getCurrentRowIndex()
getCurrentRowIndex in interface RowIteratorpublic int getCurrentRowSlot()
getCurrentRowSlot in interface RowIteratorSLOT_.public boolean setCurrentRow(Row row)
setCurrentRow in interface RowIteratorrow - the new current row.true if the operation succeeded.public Row createRow()
createRow in interface RowIteratorpublic void insertRow(Row row)
insertRow in interface RowIteratorrow - the Row object to be added.public void removeCurrentRow()
removeCurrentRow in interface RowIteratorpublic 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 RowIteratorsize - 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 RowIteratorpublic int getRangeStart()
The absolute index is 0-based, and is the row's index relative to the entire result set.
getRangeStart in interface RowIteratorpublic 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 RowIteratorstart - the absolute index of the new first row in the row set range.public int scrollRange(int amount)
scrollRange in interface RowIteratoramount - the number of rows to scroll.
A negative value scrolls upward.
public int scrollRangeTo(Row row,
int index)
scrollRangeTo in interface RowIteratorrow - the row.index - the row's new index.public boolean setCurrentRowAtRangeIndex(int index)
setCurrentRowAtRangeIndex in interface RowIteratorindex - 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 RowIteratorindex - the point where row is to be added.row - the Row object to be added.public int getRangeIndexOf(Row row)
getRangeIndexOf in interface RowIteratorrow - a Row object.
or -1 if the row is not in range.row,public int getRowCountInRange()
getRowCountInRange in interface RowIteratorpublic boolean isRangeAtBottom()
isRangeAtBottom in interface RowIteratortrue if the last row of the range is
the last row of the result set.public boolean isRangeAtTop()
isRangeAtTop in interface RowIteratortrue 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 RowIteratorEnumeration interface.public Row[] getAllRowsInRange()
getAllRowsInRange in interface RowIteratorsetViewSize().public Row getRow(Key key)
getRow in interface RowIteratorkey - 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 RowIteratorkey - 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 RowIteratoreRowHandle - 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 RowIteratorflag - 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()
RowIteratorgetIterMode in interface RowIteratororacle.jbo.RowIteratorpublic void setIterMode(int mode)
RowIteratorsetIterMode in interface RowIteratororacle.jbo.RowIteratormode - 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)
NavigatableRowIteratorRowSetListener
events generated by this row set iterator.addListener in interface NavigatableRowIteratororacle.jbo.NavigatableRowIteratorlistener - the subscriber to be added. It should implement
RowSetListener.public void removeListener(java.lang.Object target)
NavigatableRowIteratorRowSetListener
events generated by this row set iterator.removeListener in interface NavigatableRowIteratororacle.jbo.NavigatableRowIteratorlistener - 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 | |||||||||