A script-enabled browser is required for this page to function properly.

Getting and Setting Indexed Properties

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".

FBean.Set_Indexed_Property Syntax

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".