JavaBeans support the concept of indexed properties. Indexed properties represent
collections or arrays of values which can be accessed by supplying
an index number for the member of the collection that you want to access. For
example, a charting JavaBean can have an indexed property seriesLabels
which holds a collection of all of the labels for all the data series
in the chart.
Accessing a member of such a collection using the enhanced JavaBean support
is possible using FBean.Get_Indexed_Property
and FBean.Set_Indexed_Property
.
These functions operate in exactly the same way as FBean.Get
/Set_Property
,
except that they take an extra argument PROPERTY_INDEX
which can
be used to specify the index number of the member of the array that you wish
to access. This index number is zero based, so a property that consists of an
array of 5 strings will have members 0 through 4 (rather than 1 through 5).
You can also use the constant FBEAN.ALL_ROWS
as the value for PROPERTY_INDEX
. In this case the whole array of values for the property can be retrieved or
set in a single call. In this case the property value is expressed as a comma
delimited string with each element in the array separated by a comma. If you
need to include a comma itself in the data, escape it with a forward slash e.g.
'Hello,Goodby/, and Goodnight' represents an array of just two strings: "Hello"
and "Goodbye, and Goodnight".
Note: if setting an array of properties in a
single call, by using the ALL_ROWS
constant for Property_Index
,
you should supply the property value as a string, even if the array only has
one member.
FBEAN.SET_INDEXED_PROPERTY ( ITEM_NAME IN VARCHAR2, ITEM_INSTANCE IN PLS_INTEGER, PROPERTY_NAME IN VARCHAR2, PROPERTY_INDEX IN PLS_INTEGER, VALUE IN VARCHAR2);
FBEAN.SET_INDEXED_PROPERTY ( ITEM_ID IN ITEM, ITEM_INSTANCE IN PLS_INTEGER, PROPERTY_NAME IN VARCHAR2, PROPERTY_INDEX IN PLS_INTEGER, VALUE IN VARCHAR2);
FBEAN.SET_INDEXED_PROPERTY ( ITEM_NAME IN VARCHAR2, ITEM_INSTANCE IN PLS_INTEGER, PROPERTY_NAME IN VARCHAR2, PROPERTY_INDEX IN PLS_INTEGER, VALUE IN NUMBER);
FBEAN.SET_INDEXED_PROPERTY ( ITEM_ID IN ITEM, ITEM_INSTANCE IN PLS_INTEGER, PROPERTY_NAME IN VARCHAR2, PROPERTY_INDEX IN PLS_INTEGER, VALUE IN NUMBER);
FBEAN.SET_INDEXED_PROPERTY ( ITEM_NAME IN VARCHAR2, ITEM_INSTANCE IN PLS_INTEGER, PROPERTY_NAME IN VARCHAR2, PROPERTY_INDEX IN PLS_INTEGER, VALUE IN BOOLEAN);
FBEAN.SET_INDEXED_PROPERTY ( ITEM_ID IN ITEM, ITEM_INSTANCE IN PLS_INTEGER, PROPERTY_NAME IN VARCHAR2, PROPERTY_INDEX IN PLS_INTEGER, VALUE IN BOOLEAN);
Using the FBean.Get_Indexed_Property Built-in
Note: if you use the ALL_ROWS
constant
for Property_Index
to get an array of properties in a single call,
then you should use the GET_INDEXED_PROPERTY
or GET_INDEXED_CHAR_PROPERTY
version of the function. This is because arrays of properties are returned as
a string, even if the array only has one member. GET_INDEXED_PROPERTY
and GET_INDEXED_CHAR_PROPERTY
are synonymous.
FBEAN.GET_INDEXED_PROPERTY ( ITEM_NAME IN VARCHAR2, ITEM_INSTANCE IN PLS_INTEGER, PROPERTY_NAME IN VARCHAR2, PROPERTY_INDEX IN PLS_INTEGER) return VARCHAR2;
FBEAN.GET_INDEXED_PROPERTY ( ITEM_ID IN ITEM, ITEM_INSTANCE IN PLS_INTEGER, PROPERTY_NAME IN VARCHAR2, PROPERTY_INDEX IN PLS_INTEGER) return VARCHAR2;
FBEAN.GET_INDEXED_CHAR_PROPERTY ( ITEM_NAME IN VARCHAR2, ITEM_INSTANCE IN PLS_INTEGER, PROPERTY_NAME IN VARCHAR2, PROPERTY_INDEX IN PLS_INTEGER) return VARCHAR2;
FBEAN.GET_INDEXED_CHAR_PROPERTY ( ITEM_ID IN ITEM, ITEM_INSTANCE IN PLS_INTEGER, PROPERTY_NAME IN VARCHAR2, PROPERTY_INDEX IN PLS_INTEGER) return VARCHAR2;
FBEAN.GET_INDEXED_NUM_PROPERTY ( ITEM_NAME IN VARCHAR2, ITEM_INSTANCE IN PLS_INTEGER, PROPERTY_NAME IN VARCHAR2, PROPERTY_INDEX IN PLS_INTEGER) return NUMBER;
FBEAN.GET_INDEXED_NUM_PROPERTY ( ITEM_ID IN ITEM, ITEM_INSTANCE IN PLS_INTEGER, PROPERTY_NAME IN VARCHAR2, PROPERTY_INDEX IN PLS_INTEGER) return NUMBER;
FBEAN.GET_INDEXED_BOOL_PROPERTY ( ITEM_NAME IN VARCHAR2, ITEM_INSTANCE IN PLS_INTEGER, PROPERTY_NAME IN VARCHAR2, PROPERTY_INDEX IN PLS_INTEGER ) return BOOLEAN;
FBEAN.GET_INDEXED_BOOL_PROPERTY ( ITEM_ID IN ITEM, ITEM_INSTANCE IN PLS_INTEGER, PROPERTY_NAME IN VARCHAR2, PROPERTY_INDEX IN PLS_INTEGER ) return BOOLEAN;
Using the FBEAN.Get/Set_Indexed_Property Built-in
As an example of using indexed properties we'll use the example of a hypothetical
charting JavaBean that has an indexed property seriesLabels
. In
this example we use FBean.Set_Indexed_Property
to define the labels
for the whole series and then use Get_Indexed_Char_Property
to
get the value of the second label.
declare NewLabel varchar2(20); begin FBean.Set_Indexed_Property('MyChartBeanArea', 1, 'seriesLabels', FBEAN.ALL_ROWS,
'Grommets, Widgets, Bolts, and Screws'); -- Now retrieve the value of the second member of -- the seriesLables collection -- Note: This is a Zero-based index so 2nd member has index of 1 NewLabel := FBean.Get_Indexed_Char_Property('MyChartBeanArea', 1, 'seriesLabels', 1); ...
The value of NewLabel
in this case would be "Widgets".