Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
The software described in this manual is provided by Actuate Corporation under an Actuate
License agreement. The software may be used only in accordance with the terms of the
agreement. Actuate software products are protected by U.S. and International patents and
patents pending. For a current list of patents, please see http://www.actuate.com/patents.
All other brand or product names are trademarks or registered trademarks of their respective
owners, companies, or organizations.
Part 1
Using Actuate e.Report Designer Professional
data access technology
Chapter 1
Accessing a data source . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
About accessing data for reports . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
About data access terms and relationships . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
Connecting to the data source from a report design . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
Choosing where to place a connection component . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
Creating a connection component . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
Specifying the data to retrieve from a data source . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
Chapter 2
Migrating reports and reusing report components . . . . . . . . . . . . . . . . . 11
About migrating reports and reusing report components . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
Using a connection configuration file . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
Selecting an existing connection configuration file . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
Understanding e.Report Designer Professional connection configuration files . . . . . . . . . . . . . 14
Using a connection configuration file to access data sources . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
Choosing whether to place data connection and data source components in a library . . . . 19
Specifying a connection for use in developing a report design . . . . . . . . . . . . . . . . . . . . . . . . 19
Specifying a connection for use in running a report . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
Specifying connections in the Runtime element for use when running the report . . . . . 23
Setting the ConfigKey property to specify using a different connection when running a re-
port . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
Choosing a connection or data source component from a connection configuration file . . . . . 25
Chapter 3
Modifying data processing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
About modifying data processing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
Modifying handling of a connection component . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
About data adapters, data source components and data filters . . . . . . . . . . . . . . . . . . . . . . . . . . 31
Combining data adapters to form a data stream . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
Instantiating data adapters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
i
Customizing a data stream by modifying data adapter methods . . . . . . . . . . . . . . . . . . . . . . .33
Adding code for additional data stream tasks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .34
Accessing data in non-sequential order . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .34
Using data filters to process rows . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .35
About data rows . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .36
Creating a computed field . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .39
Accessing other types of data sources . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .40
Sorting data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .41
Specifying the desired sort order for sorting within the data source . . . . . . . . . . . . . . . . . . . .42
Avoiding sorting by the group section sort key . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .43
Specifying the desired sort order using the OrderBy property . . . . . . . . . . . . . . . . . . . . . . . . .44
Specifying the desired sort order for sorting internally . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .45
Filtering data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .46
Working with data from multiple sources . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .48
Creating a merge filter to combine the rows of the data sources . . . . . . . . . . . . . . . . . . . . . . . .50
Creating a union filter to process the data sources sequentially . . . . . . . . . . . . . . . . . . . . . . . .53
Chapter 4
Displaying data rows . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
About displaying data rows . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .58
Modifying an ROD file to display data rows . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .59
Specifying the columns to display data rows . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .62
Changing the order of columns . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .63
Modifying, adding, and deleting columns . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .65
Modifying font attributes for displaying data rows . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .73
Chapter 5
Accessing data in a comma-separated values (CSV) text file . . . . . . . . . 77
Accessing data from a CSV text file . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .78
Creating a custom data source . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .78
Creating variables to identify which text file to use . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .79
Defining data row variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .81
Displaying text file data in a report design . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .83
Specifying processing of the data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .83
Running and viewing the report . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .85
Part 2
Accessing data in a database or ODBC data source
Chapter 6
Connecting to a database or ODBC data source . . . . . . . . . . . . . . . . . . . 89
About database and ODBC connections . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .90
Preparing to access data using a database or ODBC driver . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .90
ii
Using an ODBC driver . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90
Preparing to access data using an ODBC driver . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
Configuring an ODBC driver . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
Using a native database driver . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94
Defining a database or ODBC connection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
Creating a query data source . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
About AFC support for database and ODBC connections and queries . . . . . . . . . . . . . . . . . . . 100
Chapter 7
Creating a database or ODBC query . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103
About creating database and ODBC queries . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104
Creating a query . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104
Creating a query graphically . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
Opening Query Editor and Database Browser . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106
Using tables, views, and synonyms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109
Creating table joins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .112
About the automatic generation of joins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .112
Creating and deleting joins manually . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .113
Modifying the generated FROM clause for a query . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .115
Selecting and modifying columns and creating computed fields . . . . . . . . . . . . . . . . . . . . . .116
Selecting columns from a table . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .116
Creating a computed field . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .118
Changing the order of columns or the data type of a column . . . . . . . . . . . . . . . . . . . . . . .119
Summarizing data from multiple rows . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120
Adding conditions to a query . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123
About how e.Report Designer Professional applies conditions . . . . . . . . . . . . . . . . . . . . 123
Using QBE to specify a condition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125
Putting a condition on row retrieval . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125
Putting conditions on an aggregate row . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127
Viewing the generated SQL SELECT statement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129
Creating a query by writing a SQL SELECT statement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131
Writing the SQL query . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131
Preparing the query . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133
Modifying the textual query . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134
Accepting the textual query . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134
Converting a graphical query to a textual query . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134
Previewing the rows that a database or ODBC query returns . . . . . . . . . . . . . . . . . . . . . . . . . . 136
Changing the properties of a result column . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138
Changing the data type of graphical query results . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138
Changing the display name of query results . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139
Changing the data type, display length, and reference name of textual query results . . . 140
Specifying sorting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142
Specifying data source sorting using a graphical query . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143
iii
Specifying sorting for a textual query . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .144
Overriding sorting by the group section sort key . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .144
Chapter 8
Filtering data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147
About user-specified filtering in database and ODBC queries . . . . . . . . . . . . . . . . . . . . . . . . . . .148
Prompting the user to provide a specific value to filter results . . . . . . . . . . . . . . . . . . . . . . . . . .149
Using a simple call to a static parameter to specify a condition . . . . . . . . . . . . . . . . . . . . . . .150
Using SQL to specify a condition or other query clause . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .151
Preparing a textual query to describe a static parameter . . . . . . . . . . . . . . . . . . . . . . . . . . . . .152
Specifying a parameter’s property values . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152
Filtering query results with user-supplied expressions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153
Filtering a graphical query using a user-supplied expression . . . . . . . . . . . . . . . . . . . . . . . . . 154
Filtering a textual query using a user-supplied expression . . . . . . . . . . . . . . . . . . . . . . . . . . . 155
Including an ad hoc parameter in a textual query . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .155
Preparing a textual query to describe an ad hoc parameter . . . . . . . . . . . . . . . . . . . . . . . . 156
Modifying the property values of the ad hoc parameter . . . . . . . . . . . . . . . . . . . . . . . . . . .156
Chapter 9
Maintaining a database or ODBC query . . . . . . . . . . . . . . . . . . . . . . . . . 159
About maintaining database and ODBC queries . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .160
Timing and optimizing data source queries . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .160
Viewing the SQL SELECT statement that e.Report Designer Professional sends to the data
source . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161
Modifying the SQL code in a query to optimize the query . . . . . . . . . . . . . . . . . . . . . . . . . . . 162
Updating a query when the data source changes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .163
Sending SQL statements to change the data source . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164
Updating a textual query when the data source changes . . . . . . . . . . . . . . . . . . . . . . . . . . . . .164
Updating a graphical query when the data source changes . . . . . . . . . . . . . . . . . . . . . . . . . .165
Ensuring that a query connects to the correct data source . . . . . . . . . . . . . . . . . . . . . . . . .167
Updating the data dictionary during synchronization . . . . . . . . . . . . . . . . . . . . . . . . . . . .168
Determining whether a graphical query and its data source are synchronized . . . . . . . . 169
Synchronizing a graphical query . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171
Verifying that synchronization is complete . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .173
Chapter 10
Accessing data using a stored procedure . . . . . . . . . . . . . . . . . . . . . . . 175
About accessing a database using a stored procedure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .176
Preparing to use a stored procedure to access a database . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177
Designing a report that uses a stored procedure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .177
Selecting a stored procedure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179
Changing the name of a stored procedure component . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182
Limiting which stored procedures are available for selection . . . . . . . . . . . . . . . . . . . . . . . . . 182
iv
Working with data from a stored procedure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183
Using parameters with stored procedures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185
Specifying whether parameters are input or output parameters . . . . . . . . . . . . . . . . . . . . . . 185
Working with a sample value for an input parameter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 186
Ensuring that the stored procedure is synchronized with the database . . . . . . . . . . . . . . . . . . 188
Using Oracle stored procedures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 188
Using Oracle data types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189
Accessing stored functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189
Identifying stored procedures and stored functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189
Processing additional cursors that a procedure or function returns . . . . . . . . . . . . . . . . . . . 190
Understanding how e.Report Designer Professional works with a stored function . . . . . . 190
About the EMP table in the example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 190
About the stored function . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191
About the result columns and parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192
Supplying parameter values . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194
Viewing the report results . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194
Customizing access to handle specific databases or multiple result sets . . . . . . . . . . . . . . . . . 194
Accessing a stored procedure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195
Mapping Actuate variable types and Visual Basic type codes . . . . . . . . . . . . . . . . . . . . . 195
Working with an Oracle stored procedure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 196
Working with a stored procedure’s return value . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197
Working with a stored procedure to return an ID . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197
Accessing multiple result sets from Oracle stored procedures . . . . . . . . . . . . . . . . . . . . . . . 199
Adding support in Actuate Basic methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 199
Using the CPointer type with another stored procedure function . . . . . . . . . . . . . . . . . . 200
Fetching the data row . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202
Calling the Oracle stored procedure with result sets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202
Part 3
Accessing SAP data
Chapter 11
Connecting to an SAP data source . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 207
About accessing SAP data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 208
Configuring the system environment for accessing SAP data . . . . . . . . . . . . . . . . . . . . . . . . . . 208
Connecting to an SAP system . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209
Chapter 12
Accessing SAP BW data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213
About accessing SAP BW data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214
Preparing to use your SAP BW data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214
Creating a report design that uses an SAP BW BEx Query data stream . . . . . . . . . . . . . . . . . . 214
v
Understanding MDX Query terms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 220
Querying data from an SAP InfoProvider . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .221
Opening SAP BW BEx Query Builder . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 221
Selecting an InfoProvider and BEx query . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 222
Selecting the type of data to include on each axis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .224
Creating an axis by selecting a set or property . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .225
Adding the cross-product of several sets to an axis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .229
Moving an axis and changing its axis type . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .232
Modifying an axis to include members that do not contain data . . . . . . . . . . . . . . . . . . . .233
Deleting axes, sets, and properties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .236
Specifying the axes for each type of layout style in Report Wizard . . . . . . . . . . . . . . . . . .239
Specifying the values of any SAP Variables that are used in the BEx query . . . . . . . . . . . . . 242
Specifying how to sort the returned data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .245
Limiting the returned data using filter conditions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .247
Specifying slices to limit the data returned by the query . . . . . . . . . . . . . . . . . . . . . . . . . . . . .251
Displaying and verifying the resulting MDX query . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 253
Working with memory issues when querying an SAP BW data source . . . . . . . . . . . . . . . . . . . 254
Handling memory issues that cause a crash . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .255
Solving out of memory errors when using an SAP BW InfoProvider . . . . . . . . . . . . . . . . . .255
Determining which BAPI call caused the error . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .256
Setting the fetch size properties for a BAPI call . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .256
Creating a report design that uses an SAP BW ODS data stream . . . . . . . . . . . . . . . . . . . . . . . . 259
Chapter 13
Accessing SAP R/3 data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 265
About accessing SAP R/3 data streams . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .266
Configuring the report environment for SAP R/3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .266
Preparing to use your SAP R/3 data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .266
Accessing data from an SAP R/3 data source . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .267
Starting to specify an SAP R/3 data source . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .268
Selecting the desired BAPI or other RFM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .268
Finding the desired BAPI or other RFM using the Alphabetical view . . . . . . . . . . . . . . .268
Finding the desired BAPI or other RFM using the Search view . . . . . . . . . . . . . . . . . . . . .270
Viewing information about the BAPI or RFM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .272
Modifying parameters from BAPI or other RFMs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .275
Modifying the data types and default values of SAP R/3 parameters . . . . . . . . . . . . . . .279
Specifying the primary result set . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 282
Controlling RFM execution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .284
Working offline after you specify a BAPI or other RFM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .284
Part 4
Accessing data using Actuate Information Object technology
vi
Chapter 14
Accessing an Actuate Information Object . . . . . . . . . . . . . . . . . . . . . . . . 287
About information objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 288
Working with an information object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 289
Preparing to access information object data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 289
Setting up the report design to access information objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 289
Using Information Object Query Builder . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 293
Opening Information Object Query Builder . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 293
Choosing an editor for designing an information object query . . . . . . . . . . . . . . . . . . . . . . . 294
Using the expression builder . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 295
Creating an information object query in the Basic Design perspective . . . . . . . . . . . . . . . . . . . 296
Creating a graphical information object query . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 300
Selecting one or more information objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 302
Defining output columns . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 303
Setting column properties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 305
Specifying a join . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 306
About joins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 306
Optimizing joins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 308
Specifying filtering on a column . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 310
Setting filter conditions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .311
Setting filter prompt properties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 314
Specifying the sort order . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 317
Specifying columns to group in the query . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 318
Specifying filtering on an aggregate column . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 319
Defining parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 322
Specifying a parameter’s prompt properties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 324
Setting parameter properties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 327
Setting source parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 328
Synchronizing source parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 330
Creating a textual information object query . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 331
Displaying output columns . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 332
Displaying parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 333
Displaying information object query output . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 334
Modifying font attributes for information object query output in Actuate Query . . . . . . . . . 335
Chapter 15
Actuate SQL reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 339
About Actuate SQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 340
Differences between Actuate SQL and ANSI SQL-92 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 340
Limitations compared to ANSI SQL-92 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 340
Extensions to ANSI SQL-92 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 341
Database limitations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 344
FILTERS statement in report designers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 344
vii
Actuate SQL syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .345
Actuate SQL grammar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .346
Using white space characters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .351
Using keywords . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .351
Using comments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .352
Specifying maps and information objects in Actuate SQL queries . . . . . . . . . . . . . . . . . . . . .352
Using identifiers in Actuate SQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .352
Using column aliases in Actuate SQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .352
Specifying parameter values . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 353
Using subqueries in Actuate SQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .354
Data types and data type casting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .355
Facets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .355
Casting rules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 356
String comparison and ordering . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 357
Functions and operators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 358
Comparison operators: =, <>, >=, >, <=, < . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 358
Range test operator: BETWEEN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 358
Comparison operator: IN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 359
Arithmetic operators: +, -, *, / . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .359
Numeric functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 360
FLOOR, CEILING, MOD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 360
ROUND . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .361
POWER . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .361
Null test operators: is [not] null . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 362
Logical operators: and, or, not . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .362
String functions and operators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .362
Case conversion functions: UPPER, LOWER . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 363
Concatenation operator: || . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .363
Length function: CHAR_LENGTH . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 363
LIKE operator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .364
Substring functions: LEFT, RIGHT, SUBSTRING . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 364
Trimming functions: LTRIM, RTRIM, TRIM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .366
Search function: POSITION . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .366
Timestamp functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .367
CURRENT_TIMESTAMP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 368
CURRENT_DATE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .368
DATEADD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .368
DATEDIFF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 369
DATEPART . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .370
DATESERIAL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .370
Aggregate functions: COUNT, MIN, MAX, SUM, AVG . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .371
System function: CURRENT_USER . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 372
Providing query optimization hints . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .372
viii
Indicating that a table in a join is optional . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 372
Using the OPTIONAL keyword with a computed field . . . . . . . . . . . . . . . . . . . . . . . . . . . 374
Using the OPTIONAL keyword with parentheses ( ) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 375
Using the OPTIONAL keyword with aggregate functions . . . . . . . . . . . . . . . . . . . . . . . . 376
Specifying the cardinality of a join . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 377
Using pragmas to tune a query . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 378
Disabling cost-based optimization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 378
Disabling indexing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 380
Specifying a threshold value for indexing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 381
Part 5
Using Actuate open data access technology
Chapter 16
Creating a custom data driver . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 385
About accessing additional types of data sources . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 386
Accessing data using a custom data driver . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 386
Creating a data source user interface for a custom data driver . . . . . . . . . . . . . . . . . . . . . . . . . 388
DataStreamDefinition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 389
DesignSessionRequest . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 389
DesignSessionResponse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 390
ResultSetDefinition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 390
Providing classes to access data during report generation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 390
Providing configuration information about your custom data driver . . . . . . . . . . . . . . . . . . . . 393
Installing a custom data driver . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 393
Chapter 17
Configuration file XML schema reference . . . . . . . . . . . . . . . . . . . . . . . . 395
About providing user access to custom data sources . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 396
Providing, naming, and placing your configuration file . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 396
Understanding the schema of odaconfig.xml . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 397
Using the elements of odaconfig.xml . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 402
AlternativeOdaDataTypes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 404
ArrayOfString . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 405
Connection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 405
DataSource . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 406
DataSources . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 407
DataTypeMapping . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 407
DataTypeMappings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 407
DesignerSpecific . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 408
DesignerSpecificProperties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 408
DesignerSpecificType . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 408
ix
DesignTimeInterface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 409
DriverLibraries . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .410
InterfaceType . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 411
LibrariesForOs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 411
LibrariesForOsType . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 411
ListOfProperties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 412
NativeDataTypeType . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 412
OdaScalarDataType . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .413
OpenDataAccessConfig . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .414
OSType . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .415
Properties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 415
Property . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .416
PropertyType . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .416
RunTimeInterface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 417
TraceLogging . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .418
VendorInfo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .419
Chapter 18
Custom data driver XML reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 421
About communicating the structure of your data source . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .422
Data source builder reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .422
ArrayOfInputFieldDefinition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .422
ArrayOfInputParameterDefinition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 423
ArrayOfNameValuePair . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 423
ArrayOfOutputFieldDefinition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 423
ArrayOfOutputParameterDefinition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .424
ArrayOfProperty . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .424
ArrayOfResultColumn . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .424
ArrayOfString . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .425
AxisType . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .425
ColumnAxisInfo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 425
ConnectionProperties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 426
DataStreamDefinition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .426
DesignSessionRequest . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .428
DesignSessionResponse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .429
DynamicConditionReference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .430
DynamicQuery . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .430
ExternalState . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 431
HorizontalAlignment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 432
InputFieldDefinition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .432
InputParameterDefinition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .434
NameValuePair . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 437
OdaDataType . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .437
x
OdaScalarDataType . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 438
OutputFieldDefinition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 439
OutputParameterDefinition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 440
Property . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 440
ResponseState . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 441
ResultColumn . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 441
ResultSetDefinition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 444
SessionEditMode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 444
SessionLocale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 445
StateInfo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 447
Chapter 19
Custom data driver Java reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 449
About Java interfaces and Java classes for creating a custom data driver . . . . . . . . . . . . . . . . . 450
Open data access Java reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 451
Class FileHandler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 452
FileHandler.close . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 453
FileHandler.publish . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 453
Filter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 453
Filter.isLoggable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 454
Class Handler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 455
Handler.close . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 456
Handler.flush . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 456
Handler.getFilter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 456
Handler.getFormatter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 456
Handler.getLevel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 456
Handler.getLoggingErrorHandler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 457
Handler.isLoggable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 457
Handler.publish . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 457
Handler.reportError . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 457
Handler.setFilter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 458
Handler.setFormatter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 458
Handler.setLevel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 458
Handler.setLoggingErrorHandler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 458
IBlob . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 458
IBlob.getBinaryStream . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 459
IBlob.getBytes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 459
IBlob.length . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 460
IClob . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 460
IClob.getCharacterStream . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 461
IClob.getSubString . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 461
IClob.length . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 461
ICallStatement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 462
xi
ICallStatement.findOutParameter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .463
ICallStatement.getBigDecimal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .464
ICallStatement.getBlob . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .464
ICallStatement.getClob . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .465
ICallStatement.getDate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .465
ICallStatement.getDouble . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .466
ICallStatement.getInt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 467
ICallStatement.getMetaDataOf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 467
ICallStatement.getResultSet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 467
ICallStatement.getResultSetNames . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 468
ICallStatement.getRow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .468
ICallStatement.getSortSpec . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .469
ICallStatement.getString . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 469
ICallStatement.getTime . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .470
ICallStatement.getTimestamp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .470
ICallStatement.setNewRow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 471
ICallStatement.setNewRowSet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 472
ICallStatement.setSortSpec . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .472
ICallStatement.wasNull . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .473
IConnection. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 473
IConnection.close . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .474
IConnection.commit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .474
IConnection.createStatement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .475
IConnection.getMetaData . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .475
IConnection.isOpened . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .475
IConnection.open . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .476
IConnection.rollback . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 476
IConnectionFactory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 476
IConnectionFactory.getConnection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 477
IConnectionFactory.setLogConfiguration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .477
IConnectionMetaData. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 478
IConnectionMetaData.getConnection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 479
IConnectionMetaData.getDriverMajorVersion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .479
IConnectionMetaData.getDriverMinorVersion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .479
IConnectionMetaData.getDriverName . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .480
IConnectionMetaData.getDriverVersion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .480
IConnectionMetaData.getMaxConnections . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .480
IConnectionMetaData.getMaxStatements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .480
IConnectionMetaData.getOdaMajorVersion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 481
IConnectionMetaData.getOdaMinorVersion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 481
IDataSourceMetaData. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 481
IDataSourceMetaData.getConnection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 483
IDataSourceMetaData.getDataSourceMajorVersion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 484
xii
IDataSourceMetaData.getDataSourceMinorVersion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 484
IDataSourceMetaData.getDataSourceObjects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 484
IDataSourceMetaData.getDataSourceProductName . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 485
IDataSourceMetaData.getDataSourceProduct
Version . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 485
IDataSourceMetaData.getSortMode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 485
IDataSourceMetaData.getSQLStateType . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 486
IDataSourceMetaData.supportsInParameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 486
IDataSourceMetaData.supportsMultipleOpen
Results . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 486
IDataSourceMetaData.supportsMultipleResultSets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 486
IDataSourceMetaData.supportsNamedParameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 487
IDataSourceMetaData.supportsNamedResultSets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 487
IDataSourceMetaData.supportsOutParameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 487
IParameterMetaData . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 487
IParameterMetaData.getParameterCount . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 489
IParameterMetaData.getParameterMode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 489
IParameterMetaData.getParameterType . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 490
IParameterMetaData.getParameterTypeName . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 490
IParameterMetaData.getPrecision . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 490
IParameterMetaData.getScale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 491
IParameterMetaData.isNullable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 491
IResultSet. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 491
IResultSet.close . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 493
IResultSet.findColumn . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 493
IResultSet.getBigDecimal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 493
IResultSet.getBlob . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 494
IResultSet.getClob . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 494
IResultSet.getDate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 495
IResultSet.getDouble . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 495
IResultSet.getInt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 496
IResultSet.getMetaData . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 496
IResultSet.getRow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 497
IResultSet.getString . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 497
IResultSet.getTime . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 498
IResultSet.getTimestamp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 498
IResultSet.next . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 499
IResultSet.setMaxRows . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 499
IResultSet.wasNull . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 499
IResultSetMetaData. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 500
IResultSetMetaData.getColumnCount . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 501
IResultSetMetaData.getColumnDisplayLength . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 501
IResultSetMetaData.getColumnLabel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 501
xiii
IResultSetMetaData.getColumnName . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 502
IResultSetMetaData.getColumnType . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .502
IResultSetMetaData.getColumnTypeName . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .502
IResultSetMetaData.getPrecision . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .503
IResultSetMetaData.getScale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 503
IResultSetMetaData.isNullable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 503
IRowSet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 504
IRowSet.absolute . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .505
IRowSet.add . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 505
IRowSet.clear . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .505
IRowSet.isEmpty . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .506
IRowSet.previous . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .506
IRowSet.setBigDecimal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .506
IRowSet.setDate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 507
IRowSet.setDouble . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .507
IRowSet.setInt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .508
IRowSet.setString . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .508
IRowSet.setTime . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 509
IRowSet.setTimestamp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .510
IRowSet.size . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 510
IStatement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 511
IStatement.clearInParameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .513
IStatement.close . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 513
IStatement.execute . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 513
IStatement.executeQuery . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 514
IStatement.findInParameter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 515
IStatement.getMaxRows . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 515
IStatement.getMetaData . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 515
IStatement.getMoreResults . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .516
IStatement.getParameterMetaData . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 516
IStatement.getParameterType . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .516
IStatement.getResultSet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .517
IStatement.getSortSpec . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .517
IStatement.prepare . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 517
IStatement.setBigDecimal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .518
IStatement.setDate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 518
IStatement.setDouble . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 518
IStatement.setInt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .519
IStatement.setMaxRows . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .520
IStatement.setProperty . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .520
IStatement.setPropertyInfo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .520
IStatement.setSortSpec . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .521
IStatement.setString . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .521
xiv
IStatement.setTime . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 522
IStatement.setTimestamp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 522
Class Level . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 524
Level.equals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 526
Level.getName . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 526
Level.hashCode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 526
Level.intValue . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 527
Class LogFormatter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 528
LogFormatter.format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 528
Class Logger . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 530
Logger.config . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 531
Logger.fine . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 531
Logger.finer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 531
Logger.finest . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 531
Logger.getHandler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 532
Logger.getLevel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 532
Logger.getName . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 532
Logger.isLoggable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 532
Logger.info . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 532
Logger.log . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 533
Logger.setHandler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 533
Logger.setLevel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 533
Logger.severe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 533
Logger.warning . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 534
Class LoggingErrorHandler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 535
LoggingErrorHandler.error . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 536
Class LogManager . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 537
LogManager.createLogger . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 538
LogManager.getLogger . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 539
Class LogRecord . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 540
LogRecord.getLevel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 540
LogRecord.getMessage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 541
LogRecord.getMillis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 541
LogRecord.getThrown . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 541
LogRecord.setLevel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 541
LogRecord.setMessage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 541
LogRecord.setMillis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 542
LogRecord.setThrown . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 542
Class OdaException . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 543
OdaException.getCause . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 545
OdaException.getErrorCode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 546
OdaException.getNextException . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 546
OdaException.getSQLState . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 546
xv
OdaException.initCause . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 546
OdaException.setNextException . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .547
Class SimpleFormatter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .548
SimpleFormatter.format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .548
Class SortSpec . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .549
SortSpec.addSortKey . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 550
SortSpec.getSortColumn . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 551
SortSpec.getSortColumns . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .551
SortSpec.getSortKeyCount . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .552
SortSpec.getSortMode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .552
SortSpec.getSortOrder . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .552
SortSpec.toString . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .553
Class StreamHandler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .554
StreamHandler.close . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .555
StreamHandler.finalize . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .555
StreamHandler.flush . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 555
StreamHandler.isLoggable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .555
StreamHandler.publish . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .556
StreamHandler.setFormatter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 556
StreamHandler.setOutputStream . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .556
Class StringSubstitutionUtil . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .557
StringSubstitutionUtil.getDelimitedStringCount . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .557
StringSubstitutionUtil.substituteByIndex . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 560
StringSubstitutionUtil.substituteByName . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .561
Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 565
xvi
A b o u t A cc es s in g D at a
us ing A ct uat e e. Re por t
D es i g ne r P rof e ss i on al
1
Using Actuate e.Report Designer
Part 1
4 Accessing Data
About data access terms and relationships
Before a report can display data, it must obtain the data from a data source.
Typically, the data source is a database. Other potential data sources include files,
information objects, an SAP Business Information Warehouse, and so on. The
computer that generates the report must have a local or network connection to
the data source.
You obtain data from the data source using a data stream. Figure 1-1 shows how
data flows from a data source, through a connection, to an Actuate report.
Table 1-1 describes the components that are involved in accessing data.
Data
source
Connection
Report
Section
Data stream component
Data
Connection Data row Data filter
source
component component component
component
6 Accessing Data
Connecting to the data source from a report design
A connection is a communication link from a computer to a data source. A
connection component establishes and maintains the connection between a data
source and a report. e.Report Designer Professional uses the connection to:
■ Get lists of tables and columns from which you choose when you design a
report.
■ Provide access to data for a report during report generation.
You can create report sections without a connection component in the following
situations:
■ If the report section shares a connection with an outer report section. For more
information about sharing a connection, see Developing Actuate Basic Reports
using Actuate e.Report Designer Professional.
■ If the report section does not use data or gets data from a type of data source
that does not use a connection component. You can handle data from
additional types of data sources by creating a custom data stream. For
example, the method of data access from CSV files in e.Report Designer
Professional uses a custom data stream.
To deploy report object executable (.rox) files using a connection, you must also
define the connection on Actuate iServer. For more information about defining a
database connection on Actuate iServer, see Configuring Actuate iServer.
8 Accessing Data
If you have already chosen a data source component, only connection types
that are compatible with that data source component appear in this list.
12 Accessing Data
information for a spreadsheet report, you create or modify an existing connection
configuration file with the connection information.
You can use the same connection configuration file for every spreadsheet report
that you run on Actuate iServer. e.Spreadsheet Designer, e.Report Designer
Professional, and BIRT all use the same connection configuration file. Each entry
in the file is specifically for a particular product.
Actuate iServer expects the file to be in UTF8 encoding, which allows a variety of
special characters. You can also use a file with only ASCII characters.
There is no default location for the connection configuration file. To use a
connection configuration file, you create the file and then specify its location
using the ConnConfigFile parameter in Actuate Management Console. Set the
ConnConfigFile parameter to the absolute path and name of your connection
configuration file. If you have a cluster of iServers, each iServer in the cluster
needs to have access to the file. The path can be a local absolute path on each
machine and must be specified for each iServer in the server configuration. If you
use a single copy of the file for a cluster, put the file in a shared location and then
specify the path to that shared location for all iServers in the cluster.
When you run a report, Actuate iServer uses the data source connection
information in the connection configuration file specified in the ConnConfigFile
parameter, if the file exists and the name of the data source is listed in the file. If
the file does not exist or does not list the data source, then Actuate iServer uses
the connection information from the definition of the data source in the
spreadsheet report.
14 Accessing Data
■ The database connections to use for running a report on Actuate iServer
■ The component and function libraries available to a report design
■ The component and function libraries to include in a report design
■ Templates on which to base report designs
■ The path to other connection configuration files that provide access to
additional resources
You can use any text editor to create a connection configuration file, as long as the
resulting file contains only the text you type. The connection configuration file is
an XML document composed of declarations, elements, comments, and
processing instructions. The best way to create this document is to make a copy of
the sample connection configuration file and replace the contents of the file with
information specific to your development environment. The sample connection
configuration file has the following name and location under the Actuate home
directory:
\eRDPro\Examples\ConfigurationFile\
sample_configuration_file.xml
A connection configuration file consists of the root element <config> and one or
more of the top-level elements, listed in any order. The <config> root element is
required. The format of the file appears as follows:
<config>
<top-level element 1>...</top-level element 1>
...
<top-level element n>...</top-level element n>
</config>
The top-level elements are described in Table 2-1.
Table 2-1 Connection configuration file top-level elements
Top-level Element Description
Design Indicates which libraries, data connections, and template
to make available to the report design. You can use only
one Design element, which can specify multiple
libraries, connections, and templates.
Include Optional element that specifies that another connection
configuration file’s contents also should be read and
used. You can use more than one Include element.
Runtime Optional element that specifies the data connections to
use when Actuate iServer runs the report. You can use
only one Runtime element, which can specify multiple
data connections.
(continues)
Your Design element can specify as many libraries, templates, and connections as
you need by using the second-level elements listed in Table 2-2.
Table 2-2 Second-level elements in a Design element
Element within the
Design element Description
Connection Optional element that specifies data connections to make
available to the report design.
Library Optional element that identifies the libraries to make
available to the report design. For information about
using libraries and the syntax for using the Library
element in a connection configuration file, see Developing
Actuate Basic Reports using Actuate e.Report Designer
Professional.
Template Optional element that identifies a template to make
available to the report design. For information about the
syntax for using the Template element in a connection
configuration file, see Developing Actuate Basic Reports
using Actuate e.Report Designer Professional.
For example, all of the top-level and Design elements are used in the following
connection configuration file:
<Config>
<SearchPath>
<Location>\DesignResources</Location>
</SearchPath>
<Include>
C:\Includes\StocksConfig.xml
</Include>
<Design>
<Library
Autoinclude="true"
Alias="Financial Reports">
C:\LibraryFiles\Finance.rol
16 Accessing Data
</Library>
<Connection Type="ODBCConnection"
Alias="Financial reporting resources"
DefinedIn="C:\LibraryFiles\Stocks.rol"
Description="For quarterly and weekly financial
reports."
IsDefault="True">
<Property
PropName="DataSource">
ChartExamples
</Property>
</Connection>
<Template
Alias="Finance Reports Template"
Description="Template for Finance Department use.">
C:\Includes\FinanceTemplate.rod
</Template>
</Design>
<Runtime>
<ConnectOptions
Type="ODBCConnection">
<Property
PropName="DataSource">
sfdata
</Property>
</ConnectOptions>
</Runtime>
</Config>
Any new blank report that uses this connection configuration file includes three
libraries and a reference to the default connection, as shown in Figure 2-3.
Including another connection configuration file makes additional resources
available to a report design. The Include element specifies other connection
configuration files to include in the design. To include multiple connection
configuration files, create an Include element for each file, as shown in the
following example:
<Include>
C:\Standard\APayableConfig.xml
</Include>
<Include>
C:\Configuration\AReceivableConfig.xml
</Include>
18 Accessing Data
same type for use when running the report. This capability enables migration
from a development database to a production system without changing the
report design files.
20 Accessing Data
Table 2-3 Connection element parts (continued)
Part within the
Connection element Description
Property element Defines one or more properties of the data source. The
properties vary according to the type of data source. For
example, an ODBC connection requires a DataSource
property. For a list of the properties of each type of
connection, see AcDBConnection, AcDB2Connection,
AcMSSQLConnection, AcODAConnection,
AcODBCConnection, AcOracleConnection, and
AcSAPConnection in Programming with Actuate
Foundation Classes.
The following code example shows how to specify an ODBC connection that is
part of a library:
<Design>
<Connection
Type="ODBCConnection"
Alias="Financial reporting resources"
DefinedIn="C:\LibraryFiles\Stocks.rol"
Description="For quarterly and weekly financial reports."
IsDefault="true">
<Property
PropName="DataSource">
stocktrades
</Property>
</Connection>
</Design>
You can include a connection without reference to a library by omitting
DefinedIn, as shown in the following example:
<Design>
<Connection
Type="ODBCConnection"
Alias="Customer Service database"
Description="For quarterly and weekly service level
reports."
<Property
PropName="DataSource">
custserv
</Property>
</Connection>
</Design>
22 Accessing Data
connections. This is useful for migrating a report design from a development
environment to a production environment without recompiling the report design.
You must use the same type of data source for report generation as for report
design. For example, you cannot migrate from an ODBC data source to an SAP
data source.
To specify a different connection for Actuate iServer to use in running a report,
you must specify the connection in the connection configuration file’s Runtime
element and use the data connection’s ConfigKey property to identify the
appropriate run-time connection specified in the Runtime element. The report
design’s connection’s ConfigKey property identifies which connection specified
in the Runtime element should be used by Actuate iServer to run the report. If
you do perform these steps, then Actuate iServer uses the design connection to
run the report.
To run the report on Actuate iServer using a connection configuration file, you
also must set a path to the connection configuration file using Actuate iServer’s
Connection configuration file for connections parameter, ConnConfigFile. When
you set this parameter, Actuate iServer uses the connection configuration file to
run reports that require the file. If you do not set this parameter, a database error
occurs for reports that require the connection configuration file. For more
information about the connection configuration file for Connections parameter,
see Configuring Actuate iServer.
24 Accessing Data
<Runtime>
<ConnectOptions
Type="AcODBCConnection">
<Property
PropName="DataSource">
SalesData
</Property>
</ConnectOptions>
</Runtime>
Figure 2-4 A ConnectOptions element and a corresponding ConfigKey property
26 Accessing Data
Figure 2-8 Connection properties for an ODBC data source
30 Accessing Data
About data adapters, data source components and data
filters
A data adapter can be a data source component or a data filter component. A data
source component retrieves data from an input source, such as a database and
creates data rows. A data filter component sorts, filters, or performs other
computations on a data row.
Data sources, data filters, and data rows are transient objects. The Factory deletes
them after they retrieve, process, and deliver all data rows to a report.
Data
Data row
Data stream
Figure 3-1 Data stream configuration with a single input source
In Figure 3-2, the data stream retrieves data from a single input source,
instantiates a data row, filters the data, instantiates a data row for the filtered
data, and passes the filtered data to the report section.
The data stream in Figure 3-3 uses a single input source and multiple data filters.
Each time data is filtered, the data stream instantiates a new data row.
Figure 3-4 shows a configuration that uses multiple input sources, for example
from different databases, and a multiple input data filter.
Data
Data stream
Figure 3-2 Data stream configuration with a single input source and a filter
Input source
Data
Data stream
Figure 3-3 Data stream configuration with a single input source and multiple
data filters
Input source Input source
Data Data
Data source
Data row 1
Data source Multiple-
input data
Data row 2 filter Data row Section
Data source
Data row 3
Data stream
Figure 3-4 Data stream configuration with multiple input sources and a multiple
input data filter
32 Accessing Data
Instantiating data adapters
The section instantiates the data adapter that provides data rows to it. If a data
stream consists of multiple data adapters, each data adapter instantiates the
component that delivers data rows to it. The order in which you set up
component references in Report Structure determines the order in which data
adapters instantiate.
For example, consider the report design shown in Figure 3-5.
To change a data row after the data adapter populates it with data from the input
record, override the data row’s OnRead() method. e.Report Designer Professional
calls OnRead() after the data row gets its data. For more information about data
rows, see “About data rows,” later in this chapter.
For an example of customizing these methods, see Chapter 5, “Accessing data in
a comma-separated values (CSV) text file.”
34 Accessing Data
data filter can also require multiple passes over a set of rows for sorting or
calculating custom aggregations.
To support random access, AcDataAdapter defines the methods shown in
Table 3-2.
Table 3-2 Methods that support random access
Method Description
CanSeek() True if the data adapter supports random access
GetPosition() Returns the position of the next row to fetch
Rewind() Moves the fetch position to the beginning of the input set
SeekBy() Moves the fetch position by a given amount relative to the
current position
SeekTo() Moves the fetch position to a given location
SeekToEnd() Moves the fetch position to one unit past the end of the
input set
For examples of creating a data filter, see “Filtering data” and “Working with data
from multiple sources,” later in this chapter.
36 Accessing Data
Input record
Columns
Variables
Data row
Figure 3-7 Copying the input record’s column values to the data row’s
variables
3 A data control gets its value from the data row and typically displays it. The
control’s SetValue() method retrieves from the data row the value of every
column, variable name, or method name the control’s ValueExp property
specifies. The build process generates the code in SetValue().
4 The code SetValue() generates uses the data row variable’s columns or
methods to set the value of the control’s DataValue variable, as shown in
Figure 3-8.
38 Accessing Data
Creating a computed field
Typically a field’s value is the value of a field in the data source. A computed field
is a field whose value is computed from an expression, often involving one or
more fields in the data source. For example, if you have fields in the data source
providing the type of item, the number of those items ordered and the cost per
item, you could have a computed field that calculates the total cost for that type
of item.
You can create a computed field using the following techniques:
■ Create the computed field as a control. Use this technique if you can use a
simple expression to compute the value and only need the computed value in
a single control. For more information about creating the computed field as a
control, see Developing Actuate Basic Reports using Actuate e.Report Designer
Professional.
■ Create the computed field as part of the data source query. The query editors
for some types of data sources support creating a computed field. Use this
technique if a query editor for your data source supports creating computed
fields, especially if you need the computed field in multiple controls or report
designs. For more information about creating a computed field in a query
editor, see the chapter about accessing data from your data source.
■ Create a computed data row variable and use it like a data field. Use this
technique if you don’t have a query editor for your data source that supports
creating a computed field and either you need more than a simple expression
to compute the value or you need the computed value in a multiple controls or
report designs. This section describes how to create a computed data row
variable.
A computed data row variable contains a value that is the result of an expression,
instead of data stored in the data source. Typically, the expression uses one or
more fields in the data source. For example, you can create a data row variable for
the number of days an order is late by subtracting the DueDate field’s value from
the current date. The computed data row variable appears in the Field List with
the data source fields. By creating this variable as a computed data row variable, a
report developer can treat the variable as if it is a data source field.
To create a computed data row variable, perform the following steps in this order:
■ Create the data source component and its data row component.
■ Add a variable to the data row to store each computed value. To add a
variable, choose New on the Variables page for the data row component.
■ Override the OnRead() method of the data row to compute the new values.
The data adapter calls OnRead() after it has created a data row. OnRead() sets
the data row values.
40 Accessing Data
For example, you can create variables to identify the data source. You can also
provide these variables as parameters if you want users to be able to specify
their values.
4 Define the data row variables.
Create a variable for each column or field retrieved from the data source.
5 Create controls to display the data in the report.
You can choose your data row variables from Fields.
6 Override the data stream’s Start(), Fetch() and Finish() methods.
Use Actuate Basic to specify the actions needed to start using your data
source, fetch individual rows, and then finish using your data source.
7 Specify whether your custom data source can handle dynamic sorting.
If your custom data source can handle queries requesting dynamic sorting,
override AcDataAdapter::CanSortDynamically() to return True.
You can now run, view, and publish the report. If you will use the data source for
other reports, consider publishing your custom data stream to a library.
For an example of creating a custom data source, see Chapter 5, “Accessing data
in a comma-separated values (CSV) text file.” For more information about using
libraries, see Developing Actuate Basic Reports using Actuate e.Report Designer
Professional. For more information about CanSortDynamically(), see “Sorting
data,” later in this chapter.
Sorting data
Most reports require data to be sequenced in a particular order. For example, in a
sales report you can sort orders alphabetically by customer name. The customers,
in turn, you can sort by city. The set of column or field names that determines sort
order is called the sort key.
By default, e.Report Designer Professional builds the desired row sorting from
the group sections in the report. You can supplement or override this default
sorting for your report in the following ways, depending on the sorting
capabilities of your data source:
■ Rely on your data source to sort the rows before delivering them to e.Report
Designer Professional.
Use this technique if your query to the data source returns the data rows in the
proper order. The technique for specifying the sort order for your query
depends on the type of data source. For example, with a database query, you
can add an ORDER BY clause to specify sorting for your query. If the data
42 Accessing Data
You can provide additional sorting instructions through the OrderBy property
of the section component. If you also have group sections with sort keys, the
sort keys are prepended in order before the code you put as the value of the
OrderBy property. Thus the value you use for the OrderBy clause specifies the
sorting of rows within the innermost group of your report.
Using the OrderBy property does not require modification of the query. Thus
it can be used even for read-only queries from a library and queries specified
in methods. You can also use it for data streams that do not contain a query,
such as a stored procedure or a flat file.
If you specify a sort order using the report wizard or Sorting and Grouping—
Sorting, e.Report Designer Professional handles the sorting by modifying the
OrderBy property. You also can specify the OrderBy property directly. For
more information about using the OrderBy property to sort data, see
“Specifying the desired sort order using the OrderBy property,” later in this
chapter.
■ Sorting criteria in the query
If you use a query to access your data source, you can change the query to
specify that the data source sort the data before sending it to e.Report
Designer Professional. The procedures for specifying sorting in a query
depend on the type of data source. For more information about specifying
sorting in the query, see the chapter about that type of data source.
44 Accessing Data
The Properties page for the component appears.
2 Choose All properties.
The Properties page displays all properties for the component.
3 In OrderBy property, type a column name or a list of column names separated
by commas. Alternatively, select a column from the drop-down list, as shown
in Figure 3-10.
Figure 3-11 A data source component in the input slot of the filter
5 Override the filter’s Compare() method to specify how to sort the rows.
Compare() takes two rows as arguments and returns one of the following
values:
Filtering data
If possible, limit the data returned from your data source by providing filter
conditions to the data source. You can use a query, stored procedure code, and
other techniques, depending on the type of data source. If limiting data returned
from the data source is not feasible, there are two techniques to conditionally
filter out a row from a set of input records received by e.Report Designer
Professional.
■ Exclude rows by customizing your data source component.
■ Exclude rows by creating a data filter component.
If you encapsulate the filter code in a data filter, you can use the data filter in
other data streams. If you publish the filter to a library, you can use the same filter
in other report designs.
46 Accessing Data
How to exclude rows by customizing your data source
1 Create the data source component.
2 If desired, create one or more parameters for users to specify values that the
columns in the rows must match.
3 Override the data source’s Fetch() method to specify which rows to retrieve.
In the following example, the Fetch() method of the data source calls Fetch()
for the base class to get each row. As each row returns, Fetch() verifies that the
State column contains the correct value. If it the value is correct, Fetch returns
the row. This process repeats until Fetch() retrieves all rows:
Function Fetch() As AcDataRow
Dim row As CustomerRow
Do
Set row = Super::Fetch()
If row Is Nothing Then
Exit Function
End if
' Test state against value entered by user
Loop until row.State = StateParam
Set Fetch = row
End Function
Do
Set row = InputAdapter.Fetch()
If row Is Nothing Then
Exit Function
End if
Loop until row.State = "CA"
Set Fetch = row
End Function
48 Accessing Data
the data, and passes it to the next data adapter or to the report. To pass any rows
from the source data adapters to the report section, you must override the Fetch()
method of the multiple input filter.
There are two ways to customize AcMultipleInputFilter to process data from two
or more input adapters:
■ Creating a merge filter to combine the rows of the data sources
A merge filter combines the data rows from two or more input adapters to
produce output data rows that can include columns from each input adapter.
■ Creating a union filter to process the data sources sequentially
A union filter processes all the data rows from one input adapter before
processing data rows from the next input adapter.
You can use the multiple input filter as the input data source of a sort filter. This
technique supports sorting the combined set of data rows.
How to create a multiple input filter
1 Remove the data stream component from the report, if one exists.
2 Drag a data filter component from Toolbox—Data and drop it in DataStream,
as shown in Figure 3-14.
50 Accessing Data
CustomerDataSource OrderDataSource
Figure 3-16 Generated report with columns from each data source
How to merge rows from several data sources
1 Create a multiple-input filter component and several data sources, as specified
in steps 1 to 5 of “How to create a multiple input filter,” earlier in this chapter.
2 Drag a data row component to the data row slot of the multiple-input filter.
Creating the data row also creates a read-only variable for the row number.
3 Define public instance variables for each field from the data sources.
1 Right-click the data row component for the filter component and choose
Properties.
Properties—Properties for the component appears.
2 Choose Variables.
Properties—Variables for the component appears.
3 Choose New Variable.
Class Variable appears.
4 Type the name of the variable. Typically this is the same name as the data
field name.
5 Select the data type of the variable from the drop-down list. Use the
Actuate Basic data type that maps to the data source data type.
6 Choose OK.
7 Repeat steps 3 to 6 for the other data source fields.
52 Accessing Data
While (OrderInRow.orders_custId <
CustomerInRow.customers_custId)
' Advance through Orders.
Set OrderInRow = OrderQuery.Fetch( )
If OrderInRow Is Nothing Then
Exit Sub
End If
Wend
Wend
' If we get here, we found a matching pair of rows.
' Create and populate a new output row.
Set OutRow = New CustomerOrderDataRow
OutRow.CustId = CustomerInRow.customers_custId
OutRow.CustomName = CustomerInRow.customers_customName
OutRow.OrderId = OrderInRow.orders_orderID
OutRow.ForecastShipDate =
OrderInRow.orders_forecastShipDate
OutRow.ItemCode = OrderInRow.items_itemcode
OutRow.Quantity = OrderInRow.items_quantity
OutRow.Price = OrderInRow.items_pricequote
OutRow.ExtPrice = OrderInRow.extprice
' Process the output row.
AddRow( OutRow )
' Return the output row.
Set Fetch = OutRow
End Function
Figure 3-19 Report output showing the data from one input source followed by
the data from the second input source
How to access multiple data sources sequentially
1 Create a multiple-input filter component and several data sources, as specified
in steps 1 to 5 of “How to create a multiple input filter,” earlier in this chapter.
2 Drag a data row component to the data row slot of the multiple-input filter.
Creating the data row also creates a read-only variable for the row number.
3 Define public instance variables for each field from the data sources.
1 Right-click the data row component for the filter component and choose
Properties.
Properties—Properties for the component appears.
2 Choose Variables.
Properties—Variables for the component appears.
3 Choose New Variable.
Class Variable appears.
4 Type the name of the variable. Typically this is the same name as the data
field name.
5 Select the data type of the variable from the drop-down list. Choose the
Actuate Basic data type that maps to the data source data type.
6 Choose OK.
7 Repeat steps 3 to 6 for the other data source fields.
Figure 3-20 shows the variables for this example.
54 Accessing Data
Figure 3-20 Variables for each field
4 Override the filter’s Start() method to create an input adapter for each data
source and get a row from the first data source.
Function Start( ) As Boolean
Start = Super::Start( )
Set HistoricalQuery = InputAdapters.GetAt( 1 )
Set LiveQuery = InputAdapters.GetAt( 2 )
Set HistoricalInRow = HistoricalQuery.Fetch( )
End Function
5 Override the filter’s Fetch() method to retrieve each row of data from the first
input adapter and pass it to the report. When the first input adapter retrieves
all rows, retrieve rows from the second input adapter.
Function Fetch( ) As AcDataRow
Dim OutRow As OrderDataRow
Dim LiveInRow As LiveDataRow
' Assumption:
' All live data is newer than all historical data
If HistoricalInRow Is Nothing Then
Set LiveInRow = LiveQuery.Fetch( )
If LiveInRow Is Nothing Then
Exit Sub
Else
' Assign output row with live row values
Set OutRow = New OrderDataRow
OutRow.OrderId = LiveInRow.orders_orderID
OutRow.ForecastShipDate =
LiveInRow.orders_forecastShipDate
OutRow.ItemCode = LiveInRow.items_itemcode
OutRow.Quantity = LiveInRow.items_quantity
OutRow.Price = LiveInRow.items_pricequote
OutRow.ExtPrice = LiveInRow.extprice
End If
56 Accessing Data
Chapter
58 Accessing Data
You display data rows by creating a report object design (.rod) file in which the
ReportType property setting is InformationObject. When you choose Build and
Run, e.Report Designer Professional creates a data object executable (.dox) file.
This file is like a report object executable (.rox) file, except that it contains data
without formatting.
To display data rows:
1 Create or open the ROD file that contains the data row component to display.
You can use an existing report design or create a new one that accesses your
data source or programmatically generates data rows. If you create a new
report, you must specify the data source component, but creating a report
layout is not necessary. For more information about accessing data sources, see
Chapter 1, “Accessing a data source.”
2 Modify the ROD file to display data rows.
To display data rows, you modify an ROD file to set its ReportType property
to InformationObject. For more information about setting the ReportType
property value, see “Modifying an ROD file to display data rows,” later in this
chapter.
3 Determine which columns to include and their order.
For more information about adding, deleting and modifying the columns in
data rows, see “Specifying the columns to display data rows,” later in this
chapter.
4 Modify the font attributes, if necessary.
For more information about specifying the font attributes, see “Modifying font
attributes for displaying data rows,” later in this chapter.
5 Build and run the report object design (.rod) file to generate a data object
executable (.dox) file. If Requester appears, make your selections and choose
OK.
e.Report Designer Professional displays the data rows. Use the scroll bars, if
necessary, to see all data row variables and all data rows.
60 Accessing Data
2 Replace the first section component with a report section component.
1 Drag the first section component from Report Structure and drop it in
Scratch Pad, as shown in Figure 4-4.
Figure 4-6 Report Structure with the desired report section as the first
section component
3 Choose View➛Properties.
The Properties page for the component appears.
4 In ReportType, select InformationObject from the drop-down list, as shown in
Figure 4-7.
62 Accessing Data
Changing the order of columns
For any ROD, you can use Data Row Editor to display the data row component
for a report object design (.rod) file.
In Figure 4-10, Data Row Editor displays the available data row variables for an
ROD.
64 Accessing Data
Figure 4-14 Report Viewer, showing the reordered columns
66 Accessing Data
Table 4-1 Column Attributes (continued)
Column
attribute Description Action
Expression Actuate Basic expression for a Type an expression that applies to a
computed data row variable. row. For example, you can type the
following Actuate Basic expression:
[items_quantity] * 2
This field does not support
aggregate expressions, such as:
Sum( [items_quantity] )
e.Analysis This attribute is not used in displaying None.
option data rows. For information about the
historical use of this field, see the
Actuate support web site.
For more information about Actuate Basic expressions, see Programming with
Actuate Basic.
How to modify a column
1 Expand the DataStream slot, as shown in Figure 4-16.
68 Accessing Data
6 Choose OK. Data Row Editor appears as shown in Figure 4-20, showing the
new display name and width for the customers_contact_first variable.
Figure 4-20 Data Row Editor, showing a new display name and width for the
variable
7 Repeat steps 3 through 5 for each column that you want to modify. Figure 4-21
shows the display name and length modified for multiple data row variables.
Figure 4-21 Data Row Editor, showing modified display name and lengths
8 Choose Close.
9 Choose Report➛Build and Run. If Requester appears, make your selections
and choose OK.
e.Report Designer Professional generates the data object executable file, runs
it, and displays the data rows in <Filename>—Report Viewer.
Figure 4-22 shows the effect of changing the display names and widths of
several columns.
70 Accessing Data
Figure 4-24 Setting attributes for a variable
72 Accessing Data
e.Report Designer Professional generates the data object executable file, runs
it, and displays the data rows in <Filename>—Report Viewer. The displayed
data row does not include the deleted column.
Figure 4-28 Data Row Editor, with the Delete button enabled for the selected
column
74 Accessing Data
Figure 4-31 Report Viewer, showing the labels in bold font
Accessing data in a
Chapter 5
5
comma-separated values
(CSV) text file
This chapter contains the following topics:
■ Accessing data from a CSV text file
■ Creating a custom data source
■ Creating variables to identify which text file to use
■ Defining data row variables
■ Displaying text file data in a report design
■ Specifying processing of the data
■ Running and viewing the report
78 Accessing Data
How to create a custom data source
1 In Report Structure, right-click the DataStream component, and choose
Properties.
2 Choose Class.
3 On Class, in Super class, as shown in Figure 5-1, type
AcDataSource
80 Accessing Data
Figure 5-3 Parameter Properties
Choose OK.
Figure 5-5 Variables for a text file that contains three fields
6 Choose View➛Fields.
Fields appears as shown in Figure 5-6, displaying the variables that you
defined.
82 Accessing Data
Displaying text file data in a report design
After you create data row variables, you can lay out the report. The field list
includes the data row variables that you defined. You select these variables and
place them in your report design to display the text file data.
How to display text file data in a report design
1 In Layout, click in the content frame.
2 Drag the data row variables that you created from Fields, and drop them in the
frame.
3 Resize and align the controls in the frame as needed.
4 Add any desired formatting for your report, such as text labels, dividing lines,
and a report title, as shown in Figure 5-7.
84 Accessing Data
Running and viewing the report
After you set up a report that uses data from a text file, you can run the report to
access and display the data. To run the report, you choose Report➛Build and
Run. Requester displays a prompt for the data input file, as shown in Figure 5-8.
If you do not change the value for the data file path name, the report accesses the
default file.
Figure 5-9 Report output, showing the data from the text file
You can also add custom filters to sort the data or limit which rows appear. For
more information about using custom filters to sort data, see “Sorting data” in
Chapter 3, “Modifying data processing.” For more information about using
custom filters to limit which rows appear, see “Filtering data” in Chapter 3,
“Modifying data processing.”
2
Accessing data in a database or
Part 2
Connecting to a database
Chapter 6
6
or ODBC data source
This chapter contains the following topics:
■ About database and ODBC connections
■ Preparing to access data using a database or ODBC driver
■ Defining a database or ODBC connection
■ Creating a query data source
■ About AFC support for database and ODBC connections and queries
90 Accessing Data
reports do not use ODBC connectivity yet, then you should plan to migrate your
reports to use ODBC.
For more information about Actuate’s support bulletin regarding support for
database drivers, consult the release notes for supported product information. For
more information about using a native database driver to connect to a data
source, see “Using a native database driver,” later in this chapter.
92 Accessing Data
ODBC Data Source Administrator—System DSN appears as shown in
Figure 6-2, displaying a list of system data sources. The list includes system
data sources that were configured during the e.Report Designer Professional
installation.
94 Accessing Data
and MS SQL Server releases at no additional cost. Actuate recommends that you
use ODBC drivers for your reports.
For any native database connection type, such as Oracle, you must install a
database client before you can connect to the database server. You must also
define the database connection on the server before you can successfully deploy a
report object executable (.rox) file. For more information about defining an
Actuate iServer database connection, see Configuring Actuate iServer.
The native database driver that you use determines the type of information that
you must provide to e.Report Designer Professional. For details about a
particular connection type, see the documentation for the database. Table 6-1
shows the information that you must provide e.Report Designer Professional and
any optional information that you can provide for each type of database server.
Table 6-1 Required and optional connection information
Database server Required connection
type information Optional connection information
DB2 ■ Data source name
■ Password, if required for
your user account
■ User Name
MS SQL ■ Password, if required for Server name. If not supplied, e.Report
your user account Designer Professional uses a locally
■ User name defined server as the default server.
Oracle ■ Database interface, such as
acorcl90
■ Host string, such as oran9i
■ Password, if required for
your user account
■ User name
For more information about defining the connection properties for a database or
ODBC connection, see “Defining a database or ODBC connection,” later in this
chapter.
96 Accessing Data
4 In Select Component, select the type of connection, as shown in Figure 6-9. For
an ODBC connection, select ODBC Connection. For a native database driver,
select the type of database.
98 Accessing Data
Figure 6-13 Selecting a data source type
3 Choose how to create your query:
■ To create your query graphically, select SQL Query Data Source
(Graphical). The data source appears in Report Structure and looks like the
one in Figure 6-14.
Figure 6-16 A graphical query data source with a data row component
To access data in a database or ODBC data source, you typically use a SQL query
data source. The SQL query data source assembles the SQL SELECT statement
that you created using the graphical or textual query editor and sends the
statement to the database or ODBC data source.
To communicate with the database or ODBC data source, the data source uses
statements (AcDBStatement) and cursors (AcDBCursor). A statement provides a
way to execute a SQL SELECT statement. The result of a SELECT statement is
typically a set of records. When a SQL SELECT statement returns table data, a
cursor manages the retrieval of data rows. It also tracks the row position in the
record set as the database or ODBC data source sends each row to the data source.
As shown in Figure 6-17, the report section, data source, connection, statement,
and cursor interact in the following ways:
■ A report section owns, instantiates, and deletes a data source. If the connection
is in a report section, the report section owns the connection.
■ The data source instantiates and deletes a statement or cursor. The data source
calls the connection’s Prepare( ) method to instantiate a statement. Then, the
data source calls the statement’s AllocateCursor( ) method to instantiate a
cursor. If the connection is in the data source, the data source instantiates and
deletes the connection.
DB Cursor
Figure 6-17 Interaction between the report section, data source, connection,
statement, and cursor
For more information about Actuate Foundation classes, see Programming with
Actuate Foundation Classes.
Creating a database or
Chapter 7
7
ODBC query
This chapter contains the following topics:
■ About creating database and ODBC queries
■ Creating a query
■ Creating a query graphically
■ Creating a query by writing a SQL SELECT statement
■ Converting a graphical query to a textual query
■ Previewing the rows that a database or ODBC query returns
■ Changing the properties of a result column
■ Specifying sorting
Creating a query
When you use e.Report Designer Professional, you do not need a detailed
understanding of the SQL language. You can use Query Editor to select tables,
columns, and other query options. Actuate e.Report Designer Professional writes
the SQL SELECT statements as you make selections in Query Editor. In most
situations, you create SQL queries using Query Editor.
You also can write your own SQL SELECT statements using Textual Query Editor.
Write your own SQL SELECT statements only if you want to use an existing SQL
statement, if you prefer using SQL directly, or if you want to tune your SQL
Server
Data source
or schema
Tables
Columns
Join line
Figure 7-13 Join operator and join line
Ellipsis
For more information about how to perform these actions in Query Editor, see
the corresponding section in this chapter or in Chapter 8, “Filtering data.”
How to view the SELECT statement
1 In Query Editor, choose SQL.
Query Editor—SQL appears.
2 Review the SQL SELECT statement that Actuate e.Report Designer
Professional wrote in response to your choices in Query Editor. An example is
shown in Figure 7-28.
Figure 7-39 The identical column names all have the new Actuate data type
Figure 7-45 Indicating that the data is sorted in the data source
3 If you use a graphical query, go to Query Editor—Order By to provide the
required row order. For more information about specifying sorting for a
graphical query, see “Specifying data source sorting using a graphical query,”
earlier in this chapter.
If you use a textual query, type the appropriate ORDER BY clause in Textual
Query Editor. For more information about editing SQL in Textual Query
Editor, see “Specifying sorting for a textual query,” earlier in this chapter.
For more information about maintaining a data source query, see “Updating a
query when the data source changes,” earlier in this chapter. For more
information about editing the SQL statement, see “Modifying the textual query”
in Chapter 7, “Creating a database or ODBC query.” For more information about
modifying the Actuate data type for columns, see “Changing the properties of a
result column” in Chapter 7, “Creating a database or ODBC query.” For more
information about modifying the Actuate data type for parameters, see
“Specifying a parameter’s property values” in Chapter 8, “Filtering data.”
Figure 9-1 Database Browser, displaying the qualified data source name
1 In Query Editor, right-click a table, and choose Properties.
Query Editor—Table Property appears.
2 Change the qualifier to the correct database or ODBC data source, if necessary.
3 Choose Apply.
How to ensure that you connect to the correct file-based data source
With a file-based data source, such as MS Access, ensure that the full path names
match if:
■ You installed your version of e.Report Designer Professional in a nonstandard
location.
■ You are unsure of the full path names of the database or ODBC data sources
with which you are working.
To determine whether file paths match, complete the following steps:
1 In Query Editor, right-click a table, and choose Properties.
Query Editor—Table Property appears.
Compare the path name that appears at the top of Database Browser with the
qualified path name that appears on Query Editor—Table Property. Database
Browser displays the name of the connected data source and its installed
location, as shown in Figure 9-2.
Figure 10-6 Report Structure, showing the stored procedure data source
You are now ready to select a stored procedure to use in your report.
Stored procedure
Stored function
Result columns
Figure 10-28 Report output, displaying the values for department specified in the
parameter
The following statements are examples of how to map the data types in
DefineProcedureOutputParameter( ):
statement.DefineProcedureOutputParameter("@charboy", V_STRING)
statement.DefineProcedureOutputParameter("@int_out", V_INTEGER)
If stmt.Execute( ) = 0 Then
stmtText = Conn.GetSpecificErrorText( )
Exit Function
End If
tempDate = stmt.GetOutputParameter("arg_out_date")
End Function
3
Accessing SAP data
Part 3
Chapter
5 Place the librfc32.jar library in the appropriate directory for each product you
are using, as shown in Table 11-2.
Table 11-2 Directories for the librfc32.jar library
Products Directory
BIRT Report Designer <windows home>\system32
Professional, e.Spreadsheet
Designer, and Information
Object Designer
e.Report Designer Professional \Program Files\Actuate10\ErdPro\bin
6 If you are accessing SAP R/3 data, place the SAPmdi.jar library in the
following directory:
\Program Files\Actuate10\MyClasses
You need SAPmdi.jar only if you use SAP R/3. This file is available on the CD
labeled SAP WEB AS: SAP Web Application Server - Java Development
environment, in \JBA\lib\ext. Copy this file directly from the CD. You do not
have to use the SAP Java Development Tools installation.
Figure 12-9 Entering a report title and selecting your next action
If you select Change the report design, the report design appears in Layout
after you choose Finish, as shown in Figure 12-10.
Dimension
Hierarchy
Level
Parent node
Member
Attribute
How to specify the sets, axes, and property values for a query on SAP BW data
This procedure explains how to create an axis by creating a set. It also shows how
to add attributes to an axis as properties. This procedure does not cover placing
the cross-product of two or more sets on a single axis:
1 In SAP BW BEx Query Builder, choose Axes.
SAP BW BEx Query Builder—Axes appears as shown in Figure 12-16.
Figure 12-18 A column axis containing a set with all key figures included
■ Expand Key Figures, and right-click a node under Key Figures. Choose
Column➛Item, as shown in Figure 12-19. You can repeat this task for other
key figures that you want to include in the set.
Figure 12-19 Choosing to add a single key figure to a set on a column axis
SAP BW BEx Query Builder adds the key figures to a set on an axis and
displays the axis in the lower pane. Figure 12-20 shows the result of
choosing two key figures.
Figure 12-20 A column axis with a set containing two key figures
3 To set up another axis, perform these tasks:
1 In Dimensions, right-click an element.
Figure 12-22 A column axis containing two key figures and a row axis
containing all members of a hierarchy
4 To set up additional axes, repeat step 3.
Be sure to set up at least one column axis and one row axis for your query.
Figure 12-23 shows the addition of several more axes. The row that contains
Axis (4) shows that adding an axis by selecting an attribute adds a property, a
new axis, and a new set. In the metadata, the attribute belongs to a particular
member, such as Personnel Area. The resulting axis has the Personnel Area
member set and a property that corresponds to the selected attribute, Medium
Name.
Figure 12-31 Two row axes, including one with a remaining crossjoin
3 If the original cross-product contained more than two sets, you can repeat
step 2 for each resulting axis that still contains a cross-product.
Figure 12-32 shows the result of separating all cross-products on the row axes.
Figure 12-34 The axis containing the Nationality.Members set is now a row
axis
If you select Filter Empty Members on the Year axis, your SAP BW system returns
the result set in Table 12-3. The SAP BW system does not return rows for 2003 and
2004 because there are no values in the Items measure for those years for any
country. The SAP BW system does return three rows for 2006 and two rows for
2005 because there exists a value in the Items measure for at least one of the
returned rows for each of those years.
Table 12-3 Sample rows returned if Filter Empty Members is selected on the
Year axis
Country Year Items
China 2006
France 2006
France 2005 100
United Kingdom 2006 200
United Kingdom 2005
If you also select Filter Empty Members on the Country axis, your SAP BW
system returns the result set in Table 12-4. The SAP BW system does not return
rows for China because there are no values in the Items measure for that country
for any year. The SAP BW system does return two rows each for France and the
You also can use the FilterEmptyMeasures property for the data source to remove
empty members. If you set FilterEmptyMeasures to true, SAP BW BEx Query
Builder obtains the result set returned by an MDX query and then the calling
application, the report designer or Information Object Designer, filters out data
rows that contain empty measures. As this filtering occurs based on the entire
result, not just a single axis, it removes rows with empty measures in any
measure. For example, consider the original set of rows discussed in this section
and reproduced again in Table 12-5.
Table 12-5 Full set of sample rows, including some containing empty measures
Country Year Items
China 2006
China 2004
France 2006
France 2005 100
Italy 2003
United Kingdom 2006 200
United Kingdom 2005
If you set the FilterEmptyMeasures property to true, then the resulting rows are
as shown in Table 12-6. Because the FilterEmptyMeasures property applies to the
entire results, not a single axis, there are no rows that contain empty measures.
Table 12-6 Result of setting FilterEmptyMeasures to true to filter the sample
rows
Country Year Items
France 2005 100
United Kingdom 2006 200
Deleting a set
Deleting a set removes all properties selected for the set. Deleting a set from the
query also deletes from the query any sorting and filtering specifications for that
axis on that set.
How to delete a set
1 In SAP BW BEx Query Builder, choose Axes.
2 On SAP BW BEx Query Builder—Axes, right-click the Sets column for the set
and choose Remove Set, as shown in Figure 12-38.
Deleting a property
If you delete an axis or a set, SAP BW BEx Query Builder deletes any properties
selected for that set and axis. You also can delete a property without deleting an
axis or a set.
How to delete a property
1 In SAP BW BEx Query Builder, choose Axes.
Figure 12-49 Specifying Include and providing values for both SAP Variables
Figure 12-80 A data row component for an SAP ODS data source
2 Create a class variable for each InfoObject in the ODS object:
❏ In Report Structure, double-click DataRow1.
❏ In Properties, choose Variables.
❏ On Properties—Variables, choose New.
❏ Complete Class Variable, as shown in Figure 12-81, then choose OK.
Select BAPI
Figure 13-3 Finding a BAPI or other RFM using the Alphabetical view without
filtering
How to use filtering to find a BAPI or other RFM using the Alphabetical view
1 On Data Source Builder—Browser, choose Alphabetical.
2 Choose Filters.
3 On Data Source Builder—Browser—Alphabetical—Filters, specify the desired
criteria for BAPIs and RFMs. You can specify one or more of the following
criteria to determine which BAPIs and RFMs appear in the list:
■ The name of the BAPI, using the asterisk (*) as a wildcard character.
■ The BAPI type:
❏ Class
❏ Instance
❏ Factory
■ Whether to display non-released BAPIs
■ Whether to display obsolete BAPIs
4 Locate and expand the desired business object. Then, select the desired BAPI
or other RFM.
Finding the desired BAPI or other RFM using the Search view
To search for a BAPI or other RFM by name, use the Search view. You can use the
asterisk (*) as a wildcard character in the name.
Select an RFM
Structure parameter
Table parameter
Scalar parameter
Figure 13-7 Viewing the selected BAPI’s information
You can view this information to verify that you have the correct BAPI or other
RFM and determine if you need to modify any settings. You can also view
additional information about the BAPI or other RFM, including information
about its parameters, such as table definitions and structure definitions.
How to view additional information about a BAPI or other RFM
1 Select a BAPI or other RFM.
2 In the right pane of SAP R/3 Data Source Builder—Browser, choose the
information icon for the BAPI or other RFM, as shown in Figure 13-8.
Choose to display
information about
the parameter
Choose to display
information about
the table or structure
definition
Import parameter
Export parameter
Figure 13-14 Import and export parameter nodes
Each import or export parameter can be one of these types:
■ Scalar
■ Structure
■ Table
Mandatory parameter
Figure 13-22 The Actuate type field for an export scalar parameter
Figure 13-23 shows the location of the Actuate type field for an export
structure parameter.
Select Actuate Basic types
Figure 13-23 The Actuate type field for an export structure parameter
3 In length and reference name for an export table parameter, type the desired
values. If you specify more than one reference name for a column, separate the
reference names with a comma (,). Figure 13-24 shows the Actuate type,
length, and reference name fields for an export table parameter.
Figure 13-24 The Actuate type, length, and reference name fields for an export
table parameter
Figure 13-26 Defining attributes for the primary result set columns
Figure 13-27 Controlling RFM execution by rolling back any open transactions
4
Accessing data using Actuate
Part 4
Accessing an Actuate
Chapter 14
14
Information Object
This chapter contains the following topics:
■ About information objects
■ Setting up the report design to access information objects
■ Using Information Object Query Builder
■ Creating an information object query in the Basic Design perspective
■ Creating a graphical information object query
■ Creating a textual information object query
■ Displaying information object query output
■ Modifying font attributes for information object query output in Actuate
Query
Figure 14-5 Selecting the type of data source used for information objects
Choose OK.
The information object data source appears in the report design, as shown in
Figure 14-6.
After you type values for these properties, the Properties page looks like
the one in Figure 14-7.
You do not need to provide values for the Information Console server,
Information Console port, and context path fields.
3 Choose Finish.
Information Object Query Builder Basic Design appears. You can then choose
how you want to develop your information object query.
Data columns
Parameters
Specifying a join
To define the joins for an information object query, use Information Object Query
Builder Advanced Design—Joins. For example, you can create the following SQL
fragment:
FROM Customers INNER JOIN Orders ON (Customers.custID =
Orders.custID)
About joins
A join specifies how to combine data from two information objects. The
information objects do not have to be based on the same data source. A join
consists of one or more conditions that must all be true. In the resulting SQL
SELECT statement, join conditions are linked with AND.
A join can consist of multiple conditions in the following form:
columnA = columnB
A join can have only one condition that uses an operator other than equality (=)
or an expression, for example:
columnA < columnB
Information Object Query Builder Advanced Design does not support right outer
joins or full outer joins.
How to define a join condition
1 In Information Object Query Builder Advanced Design, choose Joins.
Information Object Query Builder Advanced Design—Joins appears.
2 In the upper pane, drag the join column from the first information object, and
drop it on the join column in the second information object.
The upper pane shows the join condition, like the one in Figure 14-20, and the
join columns and operator are listed in the lower pane.
Select a join
condition operator
Figure 14-22 A join condition that uses an expression or an operator other than
equality
6 If the join consists of more than one condition, repeat this procedure for the
other conditions.
7 Choose one of the following join types:
■ Inner join
■ Left outer join
8 Optimize the join.
How to delete a join condition
To delete a join condition, select the join condition in the upper pane of
Information Object Query Builder Advanced Design—Joins, and press Delete.
Optimizing joins
You can improve a query’s performance by optimizing the joins. To optimize a
join, you can specify the cardinality of the join. Specifying the cardinality of the
join adds the CARDINALITY keyword to the Actuate SQL query. If your query is
based on two or more information objects based on different data sources, you
also can optimize the join by specifying the join algorithm.
Figure 14-23 shows how to specify the cardinality of an information object,and
how to specify a join algorithm in Information Object Query Builder Advanced
Design—Joins.
Type values
and display
names
Figure 14-29 Creating an Actuate SQL query to generate values for a filter
Defining parameters
An Actuate SQL parameter is a variable that is used in an information object
query. When a report developer runs a report on the desktop, they provide a
value for this variable. When a user runs a report in an Encyclopedia volume, the
user provides a value for this variable on the Requester page in Information
Console.
Select
Dynamic list
of values
Type Actuate
SQL query
Choose Reset
to reset value to
default value
Figure 14-39 Setting a source parameter for a new, local parameter
Figure 14-43 Using Describe Query to display the query’s output columns
To specify column property values, select the column, and specify the property
values in Properties.
Edit SQL query
Figure 14-44 Editing the SQL query in the Actuate SQL text editor
Displaying parameters
On SQL Text Editor—Parameters, choose Describe Query to display the query’s
parameters and the data type for each parameter. You can type a default value for
a parameter in Default value, as shown in Figure 14-45.
After you set the values of the font properties in the template file, you complete
the following tasks to make the file available to Actuate iServer System:
■ Build a data object executable (.dox) file from the report object design (.rod)
file.
■ Publish the DOX to an Encyclopedia volume.
■ Set the volume’s Actuate Query Generation property to specify the path to,
and name of, the DOX in the Encyclopedia volume.
For more information about using a DOX as a font template file for Actuate
Query output, see Configuring Actuate iServer.
How to modify fonts used in Actuate Query output
This procedure explains how to modify fonts in a report object design (.rod) file
used in Actuate Query output. You build a data object executable (.dox) file and
publish it to an Encyclopedia volume.
1 In e.Report Designer Professional, open \Program Files\Actuate10\eRDPro
\lib\AQTemplate.rod. AQTemplate.rod appears in Design Editor.
2 Save the file with a different name, such as AQTemplate_fonts.rod.
3 In Report Structure, right-click the report component, ActuateQueryTemplate.
Choose Properties. The Properties page for the component appears.
4 On the Properties page, complete the following tasks:
1 Expand Auto Contents, as shown in Figure 14-48.
Database limitations
Because the Integration service delegates many of its operations to the databases,
these operations are affected by database limitations, such as the maximum
precision of decimal types or the treatment of zero-length strings.
Using keywords
The Actuate SQL keywords are shown in the following list:
■ ALL ■ EXEC ■ ON
■ AND ■ EXISTS ■ OPTION
■ ANY ■ FALSE ■ OPTIONAL
■ AS ■ FILTERS ■ OR
■ ASC ■ FROM ■ ORDER
■ AVG ■ GROUP ■ OUTER
■ BETWEEN ■ HAVING ■ PRAGMA
■ BY ■ IN ■ PRECISION
■ CARDINALITY ■ INNER ■ RIGHT
■ CASE ■ INT ■ SELECT
■ CAST ■ INTEGER ■ SINGLE
■ COUNT ■ IS ■ SUM
■ DEC ■ JOIN ■ THEN
■ DECIMAL ■ LEFT ■ TIMESTAMP
■ DEPENDENT ■ LIKE ■ TRUE
■ DESC ■ MAX ■ UNION
■ DISTINCT ■ MERGE ■ VARCHAR
■ DOUBLE ■ MIN ■ WHEN
■ ELSE ■ NL ■ WHERE
■ END ■ NOT ■ WITH
■ ESCAPE ■ NULL
Facets
The precision, scale, and length associated with a database data type are called
facets. Facets are supported for the corresponding Actuate SQL data type.
Casting rules
The following casting rules apply:
■ Integers can be implicitly cast to decimals and doubles. For implicit casts to
decimals, the resulting decimals have a precision of 10 and a scale of 0.
Integers can be explicitly cast to these types, as well as to strings.
■ Decimals can be implicitly cast to doubles. Decimals can be explicitly cast to
doubles, as well as to integers and strings. Conversion to integer type may
result in rounding or truncation of data.
■ Doubles can be explicitly cast to strings, as well as to integers and decimals.
Conversion to decimal and integer types may result in rounding or truncation
of data.
■ Timestamps can be explicitly cast to strings. Casting to other types is not
permitted.
Comparison operator: IN
The IN operator tests a row or scalar value to see if it occurs in a set of values. For
example, the expression
column IN (1,3,5,7,9)
evaluates to True if and only if the value of column is 1, 3, 5, 7, or 9.
Arithmetic operators: +, -, *, /
These operators implement addition, subtraction, multiplication, and division on
the supported numeric data types. For decimal data types, the result’s precision
and scale are shown in Table 15-7. d1 represents an operand expression with
precision p1 and scale s1, and d2 represents an operand expression with precision
p2 and scale s2. The result’s precision and scale may be truncated due to database
limitations.
Table 15-7 Precision and scale of arithmetic operation results
Operation Result’s precision Result’s scale
d1 + d2 max(s1, s2) + max(p1-s1, p2-s2) + 1 max(s1, s2)
d1 - d2 max(s1, s2) + max(p1-s1, p2-s2) + 1 max(s1, s2)
d1* d2 p1 + p2 + 1 s1 + s2
d1 / d2 p1 - s1 + s2 + max(6, s1 + p2 + 1) max(6, s1 + p2 + 1)
ROUND
ROUND returns the number closest in value to the first argument, rounding
away from zero. The second argument specifies the precision, with positive
values indicating a position to the right of the decimal point, and negative values
indicating a position to the left of the decimal point. All positions to the right of
the specified position are zero in the result.
Integer ROUND( value integer, precision integer )
Decimal ROUND( value Decimal, precision integer )
Double ROUND( value Double, precision integer )
Example The following code:
SELECT ROUND(123.4567, 2), ROUND(123.4567, -1)
returns:
123.46, 120
For decimal data types, the result’s precision and scale are (p + 1, s), where
(p, s) are the precision and scale of the operand.
POWER
POWER raises the left argument (base) to the power of the right argument
(exponent).
Integer POWER( base Integer, exponent Integer )
Decimal POWER( base Decimal, exponent Integer )
Double POWER( base Double, exponent Integer )
Example The following code:
SELECT CUSTOMERS.CUSTID, POWER(CUSTOMERS.CUSTID, 2)
FROM "../Data Sources/MyDatabase/CUSTOMERS.SMA" CUSTOMERS
Concatenation operator: ||
This operator concatenates two string values, returning a new string that contains
the characters from the left operand followed by the characters from the right
operand.
LIKE operator
The LIKE operator is used in an expression such as
column LIKE 'Mar%'
In this example, values of column, such as Mary or Martin, satisfy the test because
both start with Mar.
A LIKE operator pattern must be a literal string, for example, 'abc%', a parameter,
or an expression. The LIKE operator does not support column references,
subqueries, or aggregate expressions. Other examples include:
column LIKE :paramState
column LIKE CURRENT_USER( )
The following rules apply:
■ Literal pattern characters must match exactly. LIKE is case-sensitive.
■ An underscore character (_) matches any single character.
■ A percent character (%) matches zero or more characters.
Escape a literal underscore, percent, or backslash character with a backslash
character (\). Alternatively, use the following syntax:
test_string LIKE pattern_string ESCAPE escape_character
The escape character must obey the same rules as the LIKE operator pattern.
Timestamp functions
These functions perform operations on timestamp values:
■ CURRENT_TIMESTAMP
■ CURRENT_DATE
■ DATEADD
■ DATEDIFF
■ DATEPART
■ DATESERIAL
When using these functions, use the control strings listed in Table 15-9 to
represent units of time. The control string used in a function must be a literal
string, not an expression or a parameter.
Table 15-9 Control strings for various units of time
Unit of time Control string
year yyyy
quarter q
month m
day d
day of year y
day of week w
(continues)
CURRENT_TIMESTAMP
CURRENT_TIMESTAMP returns a timestamp value for the current date and
time.
Timestamp CURRENT_TIMESTAMP()
Example The following code:
SELECT CURRENT_TIMESTAMP()
returns:
2004-10-27 14:49:23.0
CURRENT_DATE
CURRENT_DATE returns a timestamp value for the current date with the time
set to 00:00:00.0.
Timestamp CURRENT_DATE()
Example The following code:
SELECT CURRENT_DATE()
returns:
2004-10-27 00:00:00.0
DATEADD
DATEADD takes three arguments: a control string, an integer delta value, and a
timestamp value. It returns a timestamp that applies the delta value to the
specified part of the original timestamp. The operation carries if the sum of the
original field value and the delta is illegal.
Timestamp DATEADD( control Varchar, delta Integer, value
Timestamp )
Example The following code:
SELECT ORDERS.ORDERID, ORDERS.SHIPBYDATE,
DATEADD('d', 14, ORDERS.SHIPBYDATE) AS ExpectedDelivery
FROM "../Data Sources/MyDatabase/ORDERS.SMA" ORDERS
DATEDIFF
DATEDIFF takes three arguments: a control string, a start timestamp, and an end
timestamp. It returns the integer delta between the part of the two timestamps
specified by the control string. Components smaller than the control string are
ignored. Components larger than the control string contribute to the result.
Integer DATEDIFF( control Varchar, start Timestamp, end
Timestamp )
Examples The following code:
SELECT ORDERS.ORDERID, ORDERS.SHIPBYDATE,
ORDERS.FORECASTSHIPDATE, DATEDIFF('d', ORDERS.SHIPBYDATE,
ORDERS.FORECASTSHIPDATE) AS ShipDateDifference
FROM "../Data Sources/MyDatabase/ORDERS.SMA" ORDERS
returns:
1645,1995-05-22 00:00:00.0,1995-06-02 00:00:00.0,11
1340,1995-06-03 00:00:00.0,1995-06-10 00:00:00.0,7
1810,1995-04-12 00:00:00.0,1995-04-27 00:00:00.0,15
.
.
.
The following expression:
DATEDIFF('d', CAST('2005-12-31 23:59:59.0' AS TIMESTAMP),
CAST('2006-01-01 00:00:00.0' AS TIMESTAMP))
returns 1. The control string d indicates that the difference is in days. The
difference between December 31, 2005 and January 1, 2006 is one day. The hours,
minutes, and seconds components are ignored.
The following expression:
DATEDIFF('m', CAST('2005-12-31 23:59:59.0' AS TIMESTAMP),
CAST('2006-01-01 00:00:00.0' AS TIMESTAMP))
returns 1. The control string m indicates that the difference is in months. The
difference between December 31, 2005 and January 1, 2006 is one month. The day,
hours, minutes, and seconds components are ignored.
DATESERIAL
DATESERIAL has two forms. The first form takes three arguments: a year value,
a month value, and a day value. It returns a timestamp for the date corresponding
to the specified year, month, and day with the time set to 00:00:00.0.
Timestamp DATESERIAL( year Integer, month Integer, day
Integer )
The second form of DATESERIAL takes six arguments: values for the year,
month, day, hour, minute, and second. It returns the timestamp for the specified
values.
Timestamp DATESERIAL( year Integer, month Integer, day Integer,
hour Integer, minute Integer, second Integer )
Example The following code:
SELECT ORDERS.ORDERID, ORDERS.ASKBYDATE
FROM "../Data Sources/MyDatabase/ORDERS.SMA" ORDERS
WHERE ORDERS.ASKBYDATE >= DATESERIAL(1995, 6, 15, 12, 59, 59)
returns:
1555,1995-06-28 00:00:00.0
1725,1995-06-23 00:00:00.0
1720,1995-06-17 00:00:00.0
.
.
.
Figure 15-1 Example of part of the query plan for which values for the map and
join column properties have been provided
To disable cost-based optimization for the query, set the pragma EnableCBO to
False:
PRAGMA "EnableCBO" := 'false'
SELECT
NATION.N_NAME,
SUM(LINEITEM.L_EXTENDEDPRICE * (1 - LINEITEM.L_DISCOUNT))
AS Revenue
Disabling indexing
By default, the Actuate SQL compiler creates indexes for rows that are
materialized in memory during query execution, for example the rows returned
when the right side of a nested loop join is executed. You can disable indexing
using the pragma applyIndexing.
5
Using Actuate open data access
Part 5
technology
Chapter
Creating a custom
Chapter 16
16
data driver
This chapter contains the following topics:
■ About accessing additional types of data sources
■ Accessing data using a custom data driver
■ Creating a data source user interface for a custom data driver
■ Providing classes to access data during report generation
■ Providing configuration information about your custom data driver
■ Installing a custom data driver
DataStreamDefinition
Properties that define the data stream. DataStreamDefinition is an element of
both DesignSessionRequest and DesignSessionResponse. Elements of
DataStreamDefinition include:
■ Command. The command or query to execute to retrieve the result set.
Command or query syntax is specific to the data source and must be
recognized by the driver when the report runs.
■ InputParameters. Definitions of input parameters to map as report
parameters.
■ Name. The external name of the data stream.
■ OutputParameters. Definitions of output parameters.
■ PrimaryResultSet. The ResultSetDefinition for the result set that the data
stream returns. The result set maps to a DataRow component in a report
design.
■ PrivateProperties. Properties of the data source. A report or query developer
cannot edit these properties.
■ PublicProperties. Editable properties of the open data source.
■ ShortDescription. A short business description of the data stream.
■ Type. The type of data source as defined by the ODA driver.
DesignSessionRequest
The request that defines the data that the Actuate design tool passes to an ODA
data design tool at the start of the design session. Elements of
DesignSessionRequest include:
■ DataStreamDefinition. Properties that define the data stream to use in a report
design.
■ ExternalDesignState. An optional element that stores the private state of the
data source builder when the builder last exited.
■ PrivateConnectionProperties. Properties of the connection that a report
developer cannot edit in the Actuate design tool.
DesignSessionResponse
Properties of the design-time interface that a data source builder returns to the
Actuate design tool at the end of a design session. Elements of
DesignSessionResponse include:
■ DataStreamDefinition. Properties that define the data stream.
■ ExternalDesignState. An optional element that retrieves the previous private
state of the data source builder when the builder exits.
■ PrivateConnectionProperties. Properties of the connection that a report
developer cannot edit in the design tool.
■ PublicConnectionProperties. Properties of the connection that a report
developer can edit for an ODA connection component.
■ ResponseState. The state of the ODA data source builder when it exits.
ResultSetDefinition
The definition of a single result set that the data stream returns. A data stream
must have at least one result set. Each ResultSetDefinition is a named collection of
data columns. In e.Report Designer Professional and e.Report Designer, a result
set maps to a DataRow component. Elements of ResultSetDefinition include:
■ Name. The name of the result set. A value is required if the data source returns
multiple result sets.
■ ResultSetColumns. The collection of data columns in the result set.
<NativeDataType>String</NativeDataType>
<NativeDataTypeCode>1</NativeDataTypeCode>
<OdaScalarDataType>String</OdaScalarDataType>
</DataTypeMapping>
</DataTypeMappings>
<DesignerSpecificProperties>
<DesignerSpecific>
<DesignerName>ERD</DesignerName>
<ListOfProperties>
<Property>
<Name>ClassName</Name>
<Value>ODAFlatFileExampleSource</Value>
</Property>
<Property>
<Name>DesignLibrary</Name>
<Value>AcOdaFlatFileExample.rol</Value>
</Property>
</ListOfProperties>
</DesignerSpecific>
</DesignerSpecificProperties>
</DataSource>
</DataSources>
</OpenDataAccessConfig>
An odaconfig.xml configuration file describes an open data source to the designer
tool. The rest of this section serves as a reference guide for the elements of an
odaconfig.xml configuration file.
AlternativeOdaDataTypes
A sequence of OdaScalarDataType elements
Schema <xs:element name="AlternativeOdaDataTypes">
<xs:complexType>
<xs:sequence>
<xs:element ref="OdaScalarDataType"
maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
Elements OdaScalarDataType
The ODA data type
ArrayOfString
List of String elements
Schema <xs:complexType name="ArrayOfString">
<xs:sequence>
<xs:element name="String" type="xs:string"
maxOccurs="unbounded"/>
</xs:sequence>
/xs:complexType>
Elements String
The String data type
Connection
Each driver supports a single type of connection and can support multiple
instances of that connection type.
Schema <xs:element name="Connection">
<xs:complexType>
<xs:sequence>
<xs:element name="Name" type="xs:string"/>
<xs:element name="DisplayName" type="xs:string"/>
<xs:element ref="Properties" minOccurs="0"/>
<xs:element ref="DesignerSpecificProperties"/>
</xs:sequence>
</xs:complexType>
</xs:element>
Elements DesignerSpecificProperties
Defines a list of custom properties for the ODA connection. The Actuate design
tool identified by DesignerName in DesignerSpecificType displays these
properties.
DisplayName
The connection name that appears in a user interface.
Name
An identifier for the connection.
Properties
An optional element that defines public properties of the connection. A property
is a name-value pair. The name is unique. The value is the default value to use in
the report design. If specified in the configuration file and supported by the
Actuate design tool, the value of DisplayName appears in the design tool’s
property editor and SelectValueList provides a static list of values to select for a
property.
DataSource
Each driver can support multiple data sources. A separate DataSource section of
the configuration file defines each data source.
Schema <xs:element name="DataSource">
<xs:complexType>
<xs:sequence>
<xs:element name="Name" type="xs:string"/>
<xs:element name="DisplayName" type="xs:string"/>
<xs:element ref="Properties" minOccurs="0"/>
<xs:element name="DataTypeMappings">
<xs:complexType>
<xs:sequence>
<xs:element ref="DataTypeMapping"
maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element ref="DesignerSpecificProperties"
maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
Elements DataTypeMappings
A sequence of elements that map the data source’s native data types to ODA data
types. e.Spreadsheet Designer uses the ODA data types. e.Report Designer
Professional map ODA data types to Actuate Basic data types.
DesignerSpecificProperties
Defines a list of custom properties for the ODA data source class. The Actuate
design tool identified by DesignerName in DesignerSpecificType displays these
properties. DesignerName for e.Report Designer Professional is ERD.
DesignerName for e.Spreadsheet Designer is ESD. In e.Report Designer
Professional, each data source requires a ClassName and a DesignLibrary value.
e.Spreadsheet Designer does not require these values.
DisplayName
The name for the data source in the Actuate design tool.
Name
A unique identifier for the data source.
Properties
An optional element for the public properties of the data source, including the
name, value, and optionally other information about the properties. If specified in
the configuration file and supported by the Actuate design tool, the value of
DataSources
A sequence of DataSource elements
Schema <xs:element name="DataSources">
<xs:complexType>
<xs:sequence>
<xs:element ref="DataSource" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
Elements DataSource
An element that defines a data source
DataTypeMapping
An element that maps the data source’s native data types to ODA data types.
e.Spreadsheet Designer uses the ODA data types. e.Report Designer Professional
maps ODA data types to Actuate Basic data types.
DataTypeMapping also supports designating optional alternative data types that
the user can change in the design environment. Implement all feasible data type
mappings to ensure accurate conversions. For example, if a result set column is a
native Integer type, the driver should support getString( ) to convert the Integer
value to a string using a format specific to the data source.
Schema <xs:element name="DataTypeMapping"
type="NativeDataTypeType"/>
DataTypeMappings
A sequence of DataTypeMapping elements that map the data source’s native data
types to ODA data types. e.Spreadsheet Designer uses the ODA data types.
e.Report Designer Professional map ODA data types to Actuate Basic data types.
Schema <xs:element name="DataTypeMappings">
<xs:complexType>
<xs:sequence>
<xs:element ref="DataTypeMapping"
maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
Elements DataTypeMapping
An element that maps a native data type of the data source to an ODA data type.
DesignerSpecific
Defines a list of custom properties for the ODA connection
Schema <xs:element name="DesignerSpecific"
type="DesignerSpecificType"/>
DesignerSpecificProperties
A sequence of elements that list of custom properties for the ODA connection.
Schema <xs:element name="DesignerSpecificProperties">
<xs:complexType>
<xs:sequence>
<xs:element ref="DesignerSpecific"
maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
Elements DesignerSpecific
An element that lists a custom property for the ODA connection
DesignerSpecificType
Defines a list of custom properties for the ODA connection. The Actuate design
tool identified by DesignerName in DesignerSpecificType displays these
properties:
■ AddToDriver
If AddToDriver is false, the Actuate design tool identified by DesignerName
does not display this data source in its list of data source types. By default,
AddToDriver is true.
■ ClassName
ClassName, required by e.Report Designer Professional, must specify a
subclass of AcOdaConnection. e.Spreadsheet Designer does not require this
property.
■ DesignLibrary
The value of DesignLibrary, required by e.Report Designer Professional, can
be a full path or a file name with a relative path. DesignLibrary can be an ROL,
ROD, or BAS file. e.Spreadsheet Designer does not require this property.
Schema <xs:complexType name="DesignerSpecificType">
<xs:sequence>
<xs:element name="DesignerName" type="xs:string"/>
<xs:element name="ListOfProperties">
<xs:complexType>
<xs:sequence>
<xs:element ref="Property"
maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
Elements DesignerName
DesignTimeInterface
Specifies the executable file with which to build the data source
Schema <xs:element name="DesignTimeInterface">
<xs:complexType>
<xs:sequence>
<xs:element name="Executable" type="xs:string"/>
<xs:element name="Arguments" type="xs:string"
minOccurs="0"/>
<xs:element name="WarnValueFormatAdjustment"
type="xs:boolean" minOccurs="0">
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
Elements Arguments
If you use arguments, place them in a single line. In the optional Arguments
element, use quotation marks to enclose a command or argument that contains
spaces. If you omit the quotation marks, a command error occurs. The following
example shows a Java CLASSPATH and Java class:
-classpath c:\oda\AcOdaFlatFileExampleDriver\
AcOdaFlatFileExampleDesigner.jar;
c:\oda\AcOdaFlatFileExampleDriver\AcOdaInterfaces.jar;
c:\oda\AcOdaFlatFileExampleDriver\
AcOdaFlatFileExampleRuntime.jar;
c:\oda\AcOdaFlatFileExampleDriver\PullParser_SMALL.jar
com.actuate.oda.sample.FlatFileExample
Executable
A required element that specifies either an absolute path to an executable file or
no path. If you do not specify a path, the executable file must be in either the
directory that contains the driver’s configuration file or in any directory that the
PATH variable contains. In the Executable element, use quotation marks to
enclose a command or argument that contains spaces. If you omit the quotation
marks, a command error occurs.
WarnValueFormatAdjustment
An optional element that specifies warning the user in the following
circumstances. By default, e.Report Designer Professional and e.Spreadsheet
Designer issue a warning when adjusting a value’s format. For example, the
designer can adjust the value 123.45 to 123,45 to convert an input parameter value
to the French locale. As another example, the e.Report Designer Professional
truncates trailing zeroes after a decimal separator in double values. A warning is
useful in these cases so that the user can see the change. In some cases, however,
the value format changes are only internal and a warning is inappropriate. If you
do not want a warning, set the value to False.
DriverLibraries
A sequence of LibrariesForOS elements, optionally paired with
SetJavaThreadContextClassLoader elements
Schema <xs:element name="DriverLibraries">
<xs:complexType>
<xs:sequence>
<xs:element ref="LibrariesForOS"
maxOccurs="unbounded"/>
<xs:element name="SetJavaThreadContextClassLoader"
type="xs:boolean" minOccurs="0">
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
Elements LibrariesForOS
LibrariesForOS, a child element of DriverLibraries, defines the required library
files for each operating system of a machine that hosts the Factory.
SetJavaThreadContextClassLoader
If you create an open data access (ODA) driver using a Java package such as
Log4J that relies on the current Java thread’s context class loader to load its
related classes, you can set this optional element to true to avoid class loader
conflict. This sets the current thread’s context class loader to the one designated to
load the driver’s run-time libraries. The default value is false.
InterfaceType
Specifies whether the driver is written in C or Java
Schema xs:element name="InterfaceType">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="C"/>
<xs:enumeration value="Java"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
Elements C
Java
LibrariesForOs
LibrariesForOS, a child element of DriverLibraries, defines the required library
files for each operating system of a machine that hosts the Factory.
Schema <xs:element name="LibrariesForOS" type="LibrariesForOSType"/>
LibrariesForOsType
LibrariesForOsType defines the required library files for each operating system of
a machine that hosts the Factory. The following properties define LibrariesForOS:
Schema <xs:complexType name="LibrariesForOSType">
<xs:sequence>
<xs:element ref="OSType"/>
<xs:element name="LibraryName" type="xs:string"
maxOccurs="unbounded"/>
ListOfProperties
An unbounded sequence of properties
Schema <xs:element name="ListOfProperties">
<xs:complexType>
<xs:sequence>
<xs:element ref="Property"
maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
Elements Property
Contains the name, value and optionally other information for a property
NativeDataTypeType
An element that maps the data source’s native data types to ODA data types.
e.Spreadsheet Designer uses the ODA data types. e.Report Designer Professional
map ODA data types to Actuate Basic data types.
NativeDataTypeType also supports designating optional alternative data types
that the user can change in the design environment. Implement all feasible data
type mappings to ensure accurate conversions. For example, if a result set column
is a native Integer type, the driver should support getString( ) to convert the
Integer value to a string using a format specific to the data source.
Schema <xs:complexType name="NativeDataTypeType">
<xs:sequence>
<xs:element name="NativeDataType" type="xs:string"/>
<xs:element name="NativeDataTypeCode" type="xs:short"/>
<xs:element ref="OdaScalarDataType"/>
<xs:element ref="AlternativeOdaDataTypes"
minOccurs="0"/>
</xs:sequence>
</xs:complexType>
Elements AlternativeOdaDataTypes
AlternativeOdaDataTypes are optional additional data types that Actuate’s
design tools support for this native type. In e.Report Designer Professional, when
an alternative data type is assigned, the report developer can change the data
type mapping for a column. In e.Spreadsheet Designer, the OdaScalarDataType is
always used.
NativeDataType
NativeDataType is the data type of the column in the open data source.
NativeDataTypeCode
NativeDataTypeCode is the code the open data source uses for the native data
type.
OdaScalarDataType
OdaScalarDataType is the corresponding ODA data type that Actuate’s design
tools support.
OdaScalarDataType
The types of scalar data types used by ODA
Schema <xs:element name="OdaScalarDataType">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="Date"/>
<xs:enumeration value="Double"/>
<xs:enumeration value="Integer"/>
<xs:enumeration value="String"/>
<xs:enumeration value="Time"/>
<xs:enumeration value="Timestamp"/>
<xs:enumeration value="Decimal"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
Elements Date
Decimal
Double
Integer
String
Time
Timestamp
OpenDataAccessConfig
Specifies the access information for the custom ODA driver
Schema <xs:element name="OpenDataAccessConfig">
<xs:complexType>
<xs:sequence>
<xs:element name="DriverName" type="xs:string"/>
<xs:element ref="VendorInfo"/>
<xs:element name="ODAInterfaceVersion"
type="xs:float"/>
<xs:element ref="DesignTimeInterface"/>
<xs:element ref="RunTimeInterface"/>
<xs:element ref="Connection"/>
<xs:element ref="DataSources"/>
</xs:sequence>
</xs:complexType>
</xs:element>
Elements Connection
Each driver supports a single type of connection and can support multiple
instances of that connection type.
DataSources
Each driver can support multiple data sources. A sequence of DataSource
elements defines the data sources.
DesignTimeInterface
Specifies the executable file with which to build the data source
DriverName
A unique, case-sensitive identifier for each driver. The name must be the same as
the name of the folder containing the ODA driver files. Thus, the name must
contain only characters that the operating system can interpret as a part of a
folder name.
ODAInterfaceVersion
A mandatory element that supports backward compatibility for future versions
of the design-time and run-time interfaces. The value must be a Float. If the ODA
driver was compiled using Actuate 7 Service Pack 2, the value is 1. If you compile
your driver using the interfaces for Actuate 8 then the value is 1.1. If you compile
using Actuate 8 Service Pack 1, the value is 1.2. If you compile using Actuate 10,
the value is 1.3.
RuntimeInterface
Defines the run-time interface
VendorInfo
Specifies information about the ODA driver and its vendor. Actuate’s design tools
do not use this information.
OSType
The type of operating system that works with the driver
Schema <xs:element name="OSType">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="Windows"/>
<xs:enumeration value="Solaris"/>
<xs:enumeration value="HP-UX"/>
<xs:enumeration value="AIX"/>
<xs:enumeration value="LINUX"/>
<xs:enumeration value="All"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
Elements AIX
All
HP-UX
LINUX
Solaris
Windows
Properties
An unbounded sequence of properties
Property
An element of type PropertyType, containing the name, value and optionally
other information for a property
Schema <xs:element name="Property" type="PropertyType"/>
PropertyType
Contains the name, value and optionally other information for a property
Schema <xs:complexType name="PropertyType">
<xs:sequence>
<xs:element name="Name" type="xs:string"/>
<xs:element name="DisplayName" type="xs:string"
minOccurs="0"/>
<xs:element name="Value" type="xs:string"/>
<xs:element name="SelectValueList" type="ArrayOfString"
minOccurs="0"/>
</xs:sequence>
</xs:complexType>
Elements DisplayName
An optional string to use when displaying the property to users
Name
The name is unique
SelectValueList
An optional array of strings to present to the user as choices for the property
value
Value
The value is the default value to use in the report design.
RunTimeInterface
Defines the run-time interface
Schema <xs:element name="RunTimeInterface">
<xs:complexType>
<xs:sequence>
<xs:element ref="InterfaceType"/>
<xs:element name="DriverInitEntryPoint"
type="xs:string"/>
<xs:element ref="DriverLibraries"/>
<xs:element name="TraceLogging" type="TraceLogging"
minOccurs="0"/>
<xs:element name="StreamedResultSetBufferSize"
type="xs:unsignedShort" minOccurs="0">
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
Elements DriverInitEntryPoint
The entry point for the Factory after it loads the required ODA library. For a Java
interface, the value is a custom class that implements IConnectionFactory. The
Factory uses this name to create a Java object that creates the Java connection
object.
DriverLibraries
Defines any libraries the custom driver uses but does not load. Use this element to
list libraries that the Factory should load with the ODA driver. For ODA drivers
with InterfaceType Java, these libraries must be .jar or .zip files. You can define
libraries for multiple operating systems using this element. You must include
AcOdaInterfaces.jar, which contains the ODA run-time interfaces. For more
information about these interfaces, see Accessing Data using Actuate e.Report
Designer Professional, or Accessing Data using e.Spreadsheet Technology.
InterfaceType
The programming language used to write the custom ODA data driver. In
Actuate 8, Actuate 9, and Actuate 10, the value must be Java.
LibrariesForOS
LibrariesForOS, a child element of DriverLibraries, defines the required library
files for each operating system of a machine that hosts the Factory.
StreamedResultSetBufferSize
Optional element for internal use only.
TraceLogging
Optional element that defines the log configuration information. This information
is used by the classes and interface in the com.actuate.oda.util.logging package,
such as Logger and LogManager. For more information about these classes and
interface, see Accessing Data using Actuate e.Report Designer Professional, or
Accessing Data using e.Spreadsheet Technology.
TraceLogging
Defines the log configuration information. This information is used by the classes
and interface in the com.actuate.oda.util.logging package, such as Logger and
LogManager. For more information about these classes and interface, see
Accessing Data using Actuate e.Report Designer Professional, or Accessing Data using
e.Spreadsheet Technology.
Schema <xs:complexType name="TraceLogging">
<xs:sequence>
<xs:element name="LogLevel" type="xs:short"/>
<xs:element name="LogFilenamePrefix" type="xs:string"/>
<xs:element name="LogDirectory" type="xs:string"
minOccurs="0"/>
<xs:element name="JavaLogFormatterClass"
type="xs:string" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
Elements JavaLogFormatterClass
An optional element to specify the class to use to format the log records. If no
class is used, then the logger uses the SimpleFormatter class. For more
information about the SimpleFormatter class, see Accessing Data using Actuate
e.Report Designer Professional, or Accessing Data using e.Spreadsheet Technology.
LogDirectory
In LogDirectory, specify the absolute path of the directory to use for log files. If
not specified, the default log directory is the log subdirectory under the ODA
driver directory: <Actuate_install_directory>/oda/<driver_dir>/log/.
LogFilenamePrefix
In LogFilenamePrefix, specify the prefix for log files. Log files are named in the
following format: <prefix>-<date and time>.log.
LogLevel
In LogLevel, specify the lowest level of log records to publish. For a list of log
levels, see the fields defined for Class Level in Accessing Data using Actuate
e.Report Designer Professional, or Accessing Data using e.Spreadsheet Technology.
VendorInfo
Specifies information about the ODA driver and its vendor. Actuate’s design tools
do not use this information.
Schema <xs:element name="VendorInfo">
<xs:complexType>
<xs:sequence>
<xs:element name="ProductName" type="xs:string"/>
<xs:element name="Version" type="xs:string"/>
<xs:element name="Vendor" type="xs:string"/>
<xs:element name="VendorURL" type="xs:string"
minOccurs="0"/>
<xs:element name="VendorPhone" type="xs:string"
minOccurs="0"/>
<xs:element name="CopyrightNotice" type="xs:string"
minOccurs="0"/>
</xs:sequence>
</xs:complexType>
</xs:element>
Elements ProductName
Required element that provides the name of the custom ODA driver
Version
Required element that provides the version of the custom ODA driver
Vendor
Required element that provides the name of the company or other organization
that created the custom ODA driver
VendorURL
Optional element to provide a URL for the vendor
VendorPhone
Optional element to provide a phone number for the vendor
CopyrightNotice
Optional element to provide a copyright notice for the custom ODA driver
ArrayOfInputFieldDefinition
List of input parameter field definitions
Schema <xs:complexType name="ArrayOfInputFieldDefinition">
<xs:sequence>
<xs:element name="InputFieldDefinition"
type="actu:InputFieldDefinition"
maxOccurs="unbounded" />
</xs:sequence>
</xs:complexType>
Elements InputFieldDefinition
The properties of an input parameter field
See also InputFieldDefinition
ArrayOfInputParameterDefinition
List of input parameter definitions
Schema <xs:complexType name="ArrayOfInputParameterDefinition">
<xs:sequence>
<xs:element name="InputParameterDefinition"
type="actu:InputParameterDefinition"
maxOccurs="unbounded" />
</xs:sequence>
</xs:complexType>
Elements InputParameterDefinition
The properties of an input parameter
See also InputParameterDefinition
ArrayOfNameValuePair
List of NameValuePair elements
Schema <xs:complexType name="ArrayOfNameValuePair">
<xs:sequence>
<xs:element name="NameValuePair" type="actu:NameValuePair"
maxOccurs="unbounded" />
</xs:sequence>
</xs:complexType>
Elements NameValuePair
The NameValuePair data type
ArrayOfOutputFieldDefinition
List of output parameter field definitions
Schema <xs:complexType name="ArrayOfOutputFieldDefinition">
<xs:sequence maxOccurs="unbounded">
<xs:element name="OutputFieldDefinition"
type="actu:OutputFieldDefinition" />
</xs:sequence>
</xs:complexType>
Elements OutputFieldDefinition
The properties of an output parameter field
See also OutputFieldDefinition
ArrayOfOutputParameterDefinition
List of output parameter definitions
Schema <xs:complexType name="ArrayOfOutputParameterDefinition">
<xs:sequence maxOccurs="unbounded">
<xs:element name="OutputParameterDefinition"
type="actu:OutputParameterDefinition" />
</xs:sequence>
</xs:complexType>
Elements OutputParameterDefinition
The properties of an output parameter
See also OutputParameterDefinition
ArrayOfProperty
List of property name-value pairs
Schema <xs:complexType name="ArrayOfProperty">
<xs:sequence>
<xs:element name="Property" type="actu:Property"
maxOccurs="unbounded" />
</xs:sequence>
</xs:complexType>
Elements Property
A name-value pair that describes an object
See also Property
ArrayOfResultColumn
List of result columns that are found in each row of the result set
Schema <xs:complexType name="ArrayOfResultColumn">
<xs:sequence>
<xs:element name="ResultColumn" type="actu:ResultColumn"
maxOccurs="unbounded" />
</xs:sequence>
</xs:complexType>
Elements ResultColumn
The properties of a result set column
See also ResultColumn
ArrayOfString
List of String elements
Schema <xs:complexType name="ArrayOfString">
<xs:sequence>
<xs:element name="String" type="xs:string"
maxOccurs="unbounded" />
</xs:sequence>
</xs:complexType>
Elements String
The String data type
AxisType
Axis type of a result set column. AxisType has one of the following values:
■ Dimension Member
■ Dimension Attribute
■ Measure
This information is used by information objects and provides information to
users and applications about how to use the column.
Schema <xs:simpleType name="AxisType" final="restriction">
<xs:restriction base="xs:string">
<xs:enumeration value="DimensionMember"/>
<xs:enumeration value="DimensionAttribute"/>
<xs:enumeration value="Measure"/>
</xs:restriction>
</xs:simpleType>
Elements DimensionAttribute
DimensionMember
Measure
ColumnAxisInfo
Multidimensional attributes of a result set column
AxisType
Axis type of a result set column
OnColumnLayout
The recommended layout in a report. The default value is true. If true, the
recommended layout is as a column. This information is used by presentation
tools such as a crosstab to present a default layout.
See also AxisType
ConnectionProperties
Properties of the open data source connection
Schema <xs:complexType name="ConnectionProperties">
<xs:complexContent>
<xs:extension base="actu:ArrayOfProperty" />
</xs:complexContent>
</xs:complexType>
DataStreamDefinition
The properties that define the data stream to use in a report or query design.
DataStreamDefinition is an element of both DesignSessionRequest and
DesignSessionResponse.
Schema <xs:complexType name="DataStreamDefinition">
<xs:all>
<xs:element name="Name" type="xs:string">
</xs:element>
<xs:element name="Type" type="xs:string">
</xs:element>
<xs:element name="ShortDescription" type="xs:string"
minOccurs="0">
</xs:element>
<xs:element name="Command" type="xs:string">
</xs:element>
<xs:element name="PublicProperties"
type="actu:ArrayOfProperty" minOccurs="0">
</xs:element>
<xs:element name="PrivateProperties"
type="actu:ArrayOfProperty" minOccurs="0">
</xs:element>
<xs:element name="InputParameters"
type="actu:ArrayOfInputParameterDefinition"
minOccurs="0">
</xs:element>
<xs:element name="OutputParameters"
type="actu:ArrayOfOutputParameterDefinition"
minOccurs="0">
</xs:element>
<xs:element name="PrimaryResultSet"
type="actu:ResultSetDefinition" minOccurs="0">
</xs:element>
</xs:all>
</xs:complexType>
Elements Command
The command or query to execute to retrieve the result set. Command or query
syntax is specific to the data source and must be recognized by the driver when
the report or query runs. A command typically retrieves a result set but also can
perform other tasks, such as updating a file.
InputParameters
Definitions of input parameters to map as report parameters. A report or query
developer can edit the report parameters in the design tool. For example, the
report developer can change the definition of the parameter, its control type, and
so on.
Name
The external name of the data stream
OutputParameters
Definitions of output parameters
PrimaryResultSet
The ResultSetDefinition for the result set that the data stream returns.
PrivateProperties
Private properties of the open data source. A report or query developer cannot
edit these properties in the design tool.
PublicProperties
Named properties of the open data source. A report or query developer can edit
these properties in the design tool. Each public property maps by name to a
corresponding property in the AFC class for the data source. If a public property
is specified in the design session interface but not in the corresponding AFC class,
the design tool ignores the property.
ShortDescription
A business description of the data stream
Type
The type of the data stream, which is specific to the data source provider.
See also InputParameterDefinition
OutputParameterDefinition
ResultSetDefinition
DesignSessionRequest
The request that defines the data that the design tool passes to an ODA data
design tool at the start of the design session
Schema <xs:complexType name="DesignSessionRequest">
<xs:all>
<xs:element name="SessionLocale"
type="actu:SessionLocale">
</xs:element>
<xs:element name="SessionEditMode"
type="actu:SessionEditMode" minOccurs="0"/>
<xs:element name="ExternalDesignState"
type="actu:ExternalState"minOccurs="0">
</xs:element>
<xs:element name="PublicConnectionProperties"
"type="actu:ConnectionProperties" minOccurs="0" />
<xs:element name="PrivateConnectionProperties"
type="actu:ConnectionProperties" minOccurs="0" />
<xs:element name="DataStreamDefinition"
type="actu:DataStreamDefinition" minOccurs="0" />
</xs:all>
</xs:complexType>
Elements DataStreamDefinition
The properties of a data stream
ExternalDesignState
An optional element that retrieves the private state of the data source builder
when the builder exits. The data source builder uses this information to return to
the state of its last session.
PrivateConnectionProperties
Properties of the connection that a report developer cannot edit in the design tool.
PublicConnectionProperties
Properties of the connection that a report or query developer can edit for an ODA
connection component.
SessionEditMode
Specifies whether users can make changes in the ODA design tool.
SessionLocale
Specifies the application locale of the Actuate design tool. The application locale
specifies the time and date format, currency format, and other characteristics of
the data. The data source builder uses the same locale as the Actuate design tool,
if possible. If the Actuate design tool uses the Japanese locale, the data source
builder uses the Japanese locale in its design session. If your data source builder
code does not support the specified locale, it should display a message to the user
that lists the supported locales. The user can then change the Actuate design
tool’s locale to a supported locale.
See also DataStreamDefinition
DesignSessionResponse
Definition of the data stream and connection that an ODA data source builder
returns when the builder exits.
Schema <xs:complexType name="DesignSessionResponse">
<xs:all>
<xs:element name="ResponseState"
type="actu:ResponseState">
</xs:element>
<xs:element name="ExternalDesignState"
type="actu:ExternalState" minOccurs="0">
</xs:element>
<xs:element name="PublicConnectionProperties"
type="actu:ConnectionProperties" minOccurs="0" />
<xs:element name="PrivateConnectionProperties"
type="actu:ConnectionProperties" minOccurs="0" />
<xs:element name="DataStreamDefinition"
type="actu:DataStreamDefinition" minOccurs="0" />
</xs:all>
</xs:complexType>
Elements DataStreamDefinition
The properties of a data stream.
ExternalDesignState
An optional element that specifies the private state of the data source builder
when it exits. The data source builder uses this information to return to the state
of its last session.
PrivateConnectionProperties
The properties of the connection that cannot be edited in the design tool.
PublicConnectionProperties
The properties of the connection that a report or query developer can edit for an
ODA connection component.
ResponseState
The state of the ODA data source builder when it exits. Valid values are:
■ OK indicates that the data source builder session succeeded. The design tool
can consume and save the data.
■ UserCancelled indicates that the user stopped the data source builder session.
■ LoginFailed indicates that the data source builder is not able to establish a
connection using ConnectionProperties in DesignSessionRequest.
See also DataStreamDefinition
DynamicConditionReference
Description of the data source column that an ad hoc parameter filters.
Schema <xs:complexType name="DynamicConditionReference">
<xs:all>
<xs:element name="Identifier" type="xs:string"/>
<xs:element name="IdentifierNativeTypeCode"
type="xs:short"/>
</xs:all>
</xs:complexType>
Elements Identifier
The name of the referenced data source column.
IdentifierNativeTypeCode
The native data type of the referenced column in the data source.
DynamicQuery
Definition of the input parameter’s dynamic query, if any. Specifying
DynamicQuery enables an ODA host, such as e.Report Designer Professional, to
provide users with a dynamic list of values from which they can select top-level
scalar parameter values.
ExternalState
Private state of the previous data source builder session.
Schema <xs:complexType name="ExternalState">
<xs:all>
<xs:element name="Version" type="xs:string">
</xs:element>
<xs:element name="StateInfo" type="actu:StateInfo">
</xs:element>
</xs:all>
</xs:complexType>
Elements StateInfo
Private data that is formatted by the data source builder to describe the state of its
last design session. Can be either String or binary format.
Version
The version of the external state’s data format.
HorizontalAlignment
HorizontalAlignment values are left, center, right, or automatic. The default value
is Automatic. If the HorizontalAlignment value is automatic, the design tool
determines the alignment based on its own default rules.
Schema <xs:simpleType name="HorizontalAlignment" final="restriction">
<xs:restriction base="xs:string">
<xs:enumeration value="Automatic"/>
<xs:enumeration value="Left"/>
<xs:enumeration value="Center"/>
<xs:enumeration value="Right"/>
</xs:restriction>
</xs:simpleType>
Elements Automatic
Center
Left
Right
InputFieldDefinition
Definition of an input parameter field.
Schema <xs:complexType name="InputFieldDefinition">
<xs:all>
<xs:element name="Name" type="xs:string">
</xs:element>
<xs:element name="DisplayName" type="xs:string"
minOccurs="0">
<xs:element name="Description" type="xs:string"
minOccurs="0">
</xs:element>
<xs:element name="DataType" type="actu:OdaScalarDataType">
</xs:element>
Description
The description of the input parameter field.
DisplayName
The display name of the input parameter field.
FieldControlType
The type of control for the input parameter field. Valid values are:
■ ControlList
■ ControlListAllowNew
■ ControlTextBox
IsHidden
Indicates whether the input parameter field is hidden or visible.
IsRequired
Indicates whether the input parameter field is required.
Name
A unique name for the input parameter field.
SelectValueList
Deprecated. Use SelectNameValueList.
SelectNameValueList
A list of selectable values and their corresponding display names for the input
parameter field. For each value, use the XML data format that corresponds to the
ODA data type of the input parameter field. For example, an input parameter
with the timestamp data type should have the following format:
yyyy-mm-ddThh:mm:ss
InputParameterDefinition
Definition of a scalar or complex input parameter. An input parameter consists of
attributes such as the parameter name, data type, default value, and so on. A
complex parameter also contains a collection of fields, which are defined in the
RecordDefinition element.
Schema <xs:complexType name="InputParameterDefinition">
<xs:all>
<xs:element name="Group" type="xs:string" minOccurs="0">
</xs:element>
<xs:element name="Name" type="xs:string">
</xs:element>
<xs:element name="DataType" type="actu:OdaDataType">
</xs:element>
<xs:element name="DefaultValue" type="xs:string"
minOccurs="0">
<xs:element name="Description" type="xs:string"
minOccurs="0">
</xs:element>
<xs:element name="IsRequired" type="xs:boolean"
minOccurs="0">
</xs:element>
<xs:element name="IsPassword" type="xs:boolean"
minOccurs="0">
</xs:element>
<xs:element name="IsHidden" type="xs:boolean"
minOccurs="0">
</xs:element>
only a specific value for the parameter, use the XML data format that corresponds
to the ODA data type of the input parameter field. For example, an input
parameter with the timestamp data type should have the following format:
yyyy-mm-ddThh:mm:ss
Description
The description of the input parameter field.
DisplayName
The display name of the input parameter.
DynamicCondition
An optional element that describes the data source column that is filtered by an
ad hoc parameter. This element only applies to a scalar input parameter.
DynamicValueList
A dynamic list of values that a user can select for a scalar input parameter.
Group
The parameter group to which the input parameter belongs.
IsHidden
Indicates whether the input parameter is hidden.
IsPassword
Indicates whether to mask the input parameter value.
IsRequired
Indicates whether the input parameter is required.
Name
The name of the input parameter.
RecordDefinition
The definition of complex input parameter fields.
SelectValueList
Deprecated. Use SelectNameValueList.
SelectNameValueList
A list of selectable values and their corresponding display names for the input
parameter. If a user can use the parameter to provide an expression that specifies
additional conditions, use QBE syntax to create each value. For information about
QBE syntax, Working with Reports using Actuate Information Console. If a user can
provide only a specific value for the parameter, create each value using the XML
data format that corresponds to the ODA data type of the input parameter. For
example, an input parameter with the timestamp data type should have the
following format:
yyyy-mm-ddThh:mm:ss
NameValuePair
The definition of a name and its corresponding value.
Schema <xs:complexType name="NameValuePair">
<xs:all>
<xs:element name="Name" type="xs:string" />
<xs:element name="Value" type="xs:string" />
</xs:all>
</xs:complexType>
Elements Name
The name that corresponds to the value. For example, the name can be the
display name for an input parameter value. The string can be empty.
Value
The value. The string can be empty.
OdaDataType
Open data access data types. The definition and range of values for each data
type is specific to the programming language the ODA data source uses. For
example, an ODA driver that is implemented in Java maps its native data types,
which are expressed as java.sql.Types, to the corresponding ODA data type. The
design tool maps and converts the ODA data types to one of its data types using
the DataTypeMapping element of odaconfig.xml. For example, the native data
type DOUBLE maps to the ODA data type double. You also can assign an
alternate ODA data type to a native type, as shown in the following example:
<DataTypeMapping>
<NativeDataType>DOUBLE</NativeDataType>
<NativeDataTypeCode>8</NativeDataTypeCode>
<OdaScalarDataType>Double</OdaScalarDataType>
<AlternativeODADataTypes>
<OdaScalarDataType>Integer</OdaScalarDataType>
<OdaScalarDataType>String</OdaScalarDataType>
</AlternativeODADataTypes>
</DataTypeMapping>
Schema <xs:simpleType name="OdaDataType" final="restriction">
<xs:restriction base="xs:string">
<xs:enumeration value="Date" />
<xs:enumeration value="Double" />
<xs:enumeration value="Integer" />
<xs:enumeration value="String" />
<xs:enumeration value="Structure" />
<xs:enumeration value="Table" />
Clob
Date
Decimal
Double
Integer
String
Structure
Table
Time
Timestamp
OdaScalarDataType
Open data access scalar data types. The definition and range of values for each
data type is specific to the programming language that the ODA data source uses.
Schema <xs:simpleType name="OdaScalarDataType" final="restriction">
<xs:restriction base="xs:string">
<xs:enumeration value="Date" />
<xs:enumeration value="Double" />
<xs:enumeration value="Integer" />
<xs:enumeration value="String" />
<xs:enumeration value="Time" />
<xs:enumeration value="Timestamp" />
<xs:enumeration value="Decimal"/>
<xs:enumeration value="Blob"/>
<xs:enumeration value="Clob"/>
</xs:restriction>
</xs:simpleType>
Elements Blob
Clob
Date
Decimal
Double
Integer
String
Time
Timestamp
OutputFieldDefinition
Definition of an output parameter field
Schema <xs:complexType name="OutputFieldDefinition">
<xs:all>
<xs:element name="Name" type="xs:string">
</xs:element>
<xs:element name="Description" type="xs:string"
minOccurs="0">
</xs:element>
<xs:element name="DisplayName" type="xs:string"
minOccurs="0">
</xs:element>
<xs:element name="NativeTypeCode" type="xs:short">
</xs:element>
<xs:element name="NativeTypeName" type="xs:string">
</xs:element>
</xs:all>
</xs:complexType>
Elements Description
A description of the parameter
DisplayName
The display name of the output parameter or output parameter field
Name
The name of the output parameter or output parameter field
NativeTypeCode
The native type code of the output parameter or output parameter field.
odaconfig.xml maps the native data type of the open source to an ODA data type.
Then, the design tool uses the ODA data type to map to its own native data type.
A value of 0 means that the open source native type is unknown.
NativeTypeName
The native type name of the output parameter or output parameter field
OutputParameterDefinition
Definition of a complex output parameter. A complex output parameter consists
of attributes, such as the parameter name, data type, default value, and so on. It
also contains a collection of fields, which are defined in the RecordDefinition
element.
Schema <xs:complexType name="OutputParameterDefinition">
<xs:all>
<xs:element name="Attributes"
type="actu:OutputFieldDefinition">
</xs:element>
<xs:element name="RecordDefinition"
type="actu:ArrayOfOutputFieldDefinition" minOccurs="0">
</xs:element>
</xs:all>
</xs:complexType>
Elements RecordDefinition
The definition of a complex output parameter field
Property
A property name-value pair
Schema <xs:complexType name="Property">
<xs:all>
<xs:element name="Name" type="xs:string">
</xs:element>
<xs:element name="Value" type="xs:string">
</xs:element>
</xs:all>
</xs:complexType>
Elements Name
The property name
Value
The property value
ResponseState
Indicates to the design tool how to proceed after data source builder exits
Schema <xs:simpleType name="ResponseState" final="restriction">
<xs:restriction base="xs:string">
<xs:enumeration value="Ok" />
<xs:enumeration value="UserCancelled" />
<xs:enumeration value="LoginFailed" />
<xs:enumeration value="ProviderError" />
</xs:restriction>
</xs:simpleType>
Elements LoginFailed
Indicates that the data source builder is not able to establish a connection using
the connection properties in DesignSessionRequest
Ok
Indicates that the data source builder session succeeded. The design tool can
consume and save the data.
UserCancelled
Indicates that the user stopped the data source builder session
ProviderError
Indicates that a failure occurred that is unrelated to a login failure or a user
cancelling
ResultColumn
Definition of a result set column
Schema <xs:complexType name="ResultColumn">
<xs:all>
<xs:element name="Name" type="xs:string">
</xs:element>
<xs:element name="Position" type="xs:unsignedShort">
</xs:element>
<xs:element name="DisplayName" type="xs:string"
minOccurs="0">
</xs:element>
<xs:element name="NativeTypeCode" type="xs:short">
</xs:element>
<xs:element name="NativeTypeName" type="xs:string">
</xs:element>
<xs:element name="DisplayLength" type="xs:short"
minOccurs="0">
</xs:element>
DisplayLength
The default display length of the data column. The design tool uses this value to
set the default length of the corresponding data control. A value of -1 means that
the length is unknown.
DisplayName
The business name of the column. The design tool uses this name as a default
column label and as a reference name in the value expression of a data control.
Heading
The name of the column in the column header in the data source.
HelpText
The balloon help text for this column. A user can access this balloon text for
additional information about the column, such as when the user is selecting a
value for a filter condition.
HorizontalAlignment
Horizontal alignment of the column value within the available display space.
Lineage
The original source of the column value. This value provides context information
to help a user diagnose problems with the value. This element does not apply to
derived values.
Name
The name of data row column. This is the name that the run-time driver
recognizes. The design tool uses this name as an identifier in dialog boxes for
sorting, filtering, and other tasks.
NativeTypeCode
The native data type code of the column. odaconfig.xml maps the native data
type of the open source to an ODA data type. Then, the design tool uses the ODA
data type to map to one of its data types. A value of 0 means that the native type
is unknown.
NativeTypeName
The native data type name of the column. This name appears in such tools as the
data row editor.
Position
The 1-based position of a column within the result set when the report or Actuate
query runs.
TextFormat
Indicates whether the data column’s string values are in plain text, HTML, or RTF
format. The default value is Plain.
Wrap
Indicates whether to apply word wrapping. The default value is None. If None,
there is no word wrapping. A value of Word enables word wrapping.
See also ColumnAxisInfo
HorizontalAlignment
ResultSetDefinition
The definition of a single result set that the data stream returns. Each
ResultSetDefinition is a named collection of data columns. A result set maps to a
Data Row component in the design tool. A data stream must have at least one
result set. You define the result set in terms of data columns.
Schema <xs:complexType name="ResultSetDefinition">
<xs:all>
<xs:element name="Name" type="xs:string">
</xs:element>
<xs:element name="ResultSetColumns"
type="actu:ArrayOfResultColumn">
</xs:element>
</xs:all>
</xs:complexType>
Elements Name
The name of the result set
ResultSetColumns
A collection of data columns for this result set
See also ResultColumn
SessionEditMode
Specifies whether users can make changes in the ODA design tool.
SessionEditMode can have one of the following values:
■ Editable
The default value. This value indicates that the Actuate design tool will accept
and use changes that a user makes using the ODA design tool.
■ ReadOnly
This value indicates that the Actuate design tool will not use changes that a
user makes using the ODA design tool. To avoid frustrating users, the ODA
design tool should not permit a user to make changes when you use the
ReadOnly setting.
SessionLocale
The user locale on the client machine that hosts the design tool. For example, if
the primary design tool runs in Japanese, the data source builder uses the
Japanese locale in its design session. SessionLocale can differ from the default
locale set in the design tool. Not all data source builders honor all locales. For
definitions of the values for SessionLocale, see Working in Multiple Locales using
Actuate Basic Technology.
Schema <xs:simpleType name="SessionLocale" final="restriction">
<xs:restriction base="xs:string">
<xs:enumeration value="ar_AE"/>
<xs:enumeration value="ar_BH"/>
<xs:enumeration value="ar_DZ"/>
<xs:enumeration value="ar_EG"/>
<xs:enumeration value="ar_IQ"/>
<xs:enumeration value="ar_JO"/>
<xs:enumeration value="ar_KW"/>
<xs:enumeration value="ar_LB"/>
<xs:enumeration value="ar_LY"/>
<xs:enumeration value="ar_MA"/>
<xs:enumeration value="ar_OM"/>
<xs:enumeration value="ar_QA"/>
<xs:enumeration value="ar_SA"/>
<xs:enumeration value="ar_SY"/>
<xs:enumeration value="ar_TN"/>
<xs:enumeration value="ar_YE"/>
<xs:enumeration value="bg_BG"/>
<xs:enumeration value="cs_CZ"/>
<xs:enumeration value="da_DK"/>
<xs:enumeration value="de_AT"/>
<xs:enumeration value="de_CH"/>
<xs:enumeration value="de_DE"/>
<xs:enumeration value="de_LI"/>
<xs:enumeration value="el_GR"/>
<xs:enumeration value="en_AU"/>
<xs:enumeration value="en_BZ"/>
<xs:enumeration value="en_CA"/>
<xs:enumeration value="en_GB"/>
<xs:enumeration value="en_IE"/>
<xs:enumeration value="en_NZ"/>
<xs:enumeration value="en_US"/>
<xs:enumeration value="en_ZA"/>
<xs:enumeration value="es_ES"/>
<xs:enumeration value="es_MX"/>
<xs:enumeration value="et_EE"/>
<xs:enumeration value="fa_IR"/>
<xs:enumeration value="fi_FI"/>
<xs:enumeration value="fr_CA"/>
<xs:enumeration value="fr_CH"/>
<xs:enumeration value="fr_FR"/>
<xs:enumeration value="he_IL"/>
<xs:enumeration value="hr_HR"/>
<xs:enumeration value="hu_HU"/>
<xs:enumeration value="id_ID"/>
<xs:enumeration value="in_ID"/>
<xs:enumeration value="it_CH"/>
<xs:enumeration value="it_IT"/>
<xs:enumeration value="iw_IL"/>
<xs:enumeration value="ja_JP"/>
<xs:enumeration value="ko_KR"/>
<xs:enumeration value="lv_LV"/>
<xs:enumeration value="nl_BE"/>
<xs:enumeration value="nl_NL"/>
<xs:enumeration value="no_NO"/>
<xs:enumeration value="no_NY"/>
<xs:enumeration value="pl_PL"/>
<xs:enumeration value="pt_BR"/>
<xs:enumeration value="pt_PT"/>
<xs:enumeration value="ro_RO"/>
<xs:enumeration value="ru_RU"/>
<xs:enumeration value="sk_SK"/>
<xs:enumeration value="sl_SI"/>
<xs:enumeration value="sq_AL"/>
<xs:enumeration value="sr_YU"/>
<xs:enumeration value="sv_FI"/>
<xs:enumeration value="sv_SE"/>
<xs:enumeration value="th_TH"/>
<xs:enumeration value="tr_TR"/>
<xs:enumeration value="uk_UA"/>
<xs:enumeration value="zh_CN"/>
<xs:enumeration value="zh_HK"/>
<xs:enumeration value="zh_SG"/>
<xs:enumeration value="zh_TW"/>
</xs:restriction>
</xs:simpleType>
StateInfo
The state of the previous data source builder session
Schema <xs:complexType name="StateInfo">
<xs:choice>
<xs:element name="StateInfoString" type="xs:string">
</xs:element>
<xs:element name="StateInfoBlob" type="xs:base64Binary">
</xs:element>
</xs:choice>
</xs:complexType>
Elements StateInfoString
State information in String format
StateInfoBlob
State information in binary format. Encode the string in base64 format. For more
information about the base64 encoding scheme, see RFC 2045 at
http://www.ietf.org/rfc/rfc2045.txt.
Class FileHandler
Syntax public class FileHandler extends StreamHandler
Description FileHandler is a class that publishes LogRecords to a specified file.
LogManager.getLogger( ) sets a new FileHandler if the log directory has changed
or the log file name has changed.
Constructors
Syntax public FileHandler(java.lang.String filename)
Constructs a FileHandler object to publish LogRecords to the specified file. The
LogRecords are formatted using the default SimpleFormatter class. Calling
publish( ) creates the physical file and any applicable parent directories.
Parameters filename
The file in which the LogRecords are published
Syntax public FileHandler(java.lang.String filename, LogFormatter formatter)
Constructs a FileHandler object to publish LogRecords to the specified, pre-
existing file. The LogRecords are formatted using the specified LogFormatter. If
the FileHandler instance exists, calling publish( ) creates the physical file and any
applicable parent directories.
Parameters filename
The file in which the LogRecords are published
formatter
The LogFormatter to use to format the LogRecords
Method summary
Table 19-1 lists the methods for class FileHandler.
Table 19-1 Methods for Class FileHandler
Method Description
close( ) Closes the current FileHandler.
publish( ) Publishes a record. It also creates the log file and parent
directories if they do not exist.
FileHandler.close
Syntax public void close()
Closes the current FileHandler
FileHandler.publish
Syntax public void publish(LogRecord record)
Publishes a record to the log file. If necessary, it creates the log file and parent
directories before it publishes a record to the log file.
Parameters record
The record to publish to the log file
Interface Filter
Syntax public interface Filter
Description Use a Filter to provide more control over what is logged. Each Handler object can
have an associated Filter. The Handler calls isLoggable( ) to check whether to
publish a record.
Method summary
Table 19-2 describes the method for interface Filter.
Table 19-2 Method for interface Filter
Method Description
isLoggable( ) Checks whether the record should be published.
Filter.isLoggable
Syntax public boolean isLoggable(LogRecord record)
Description Checks whether to publish the record
Parameters record
The log record to check
Returns True if the log record should be published
Class Handler
Syntax public abstract class Handler extends Object
Description Handler is an abstract class that obtains records from a Logger and outputs them
to a specified destination. This class is inherited by all log handlers that publish
records to a console, file, or other destinations. For example, StreamHandler
inherits this class and publishes records to a stream.
Constructor
Syntax public Handler( )
Constructs a Handler.
Method summary
Table 19-3 lists the methods for class Handler.
Table 19-3 Methods for class Handler
Method Description
close( ) Closes the current Handler and frees resources
flush( ) Flushes the buffered output.
getFilter( ) Gets the Filter that is associated with this
Handler.
getFormatter( ) Gets the LogFormatter that is associated with
this Handler.
getLevel( ) Gets the Level that is associated with this
Handler.
getLoggingErrorHandler( ) Gets the LoggingErrorHandler that is associated
with this Handler.
isLoggable( ) Checks whether the specified record should be
logged.
publish( ) Formats and publishes a record.
reportError( ) Reports an error to the that is associated
LoggingErrorHandler.
setFilter( ) Sets the Filter to use for this Handler.
setFormatter( ) Sets the LogFormatter to use for this Handler.
setLevel( ) Sets the Level to use for this Handler.
setLoggingErrorHandler( ) Sets the LoggingErrorHandler to use for this
Handler.
Handler.close
Syntax public void close( )
Closes the current Handler
Handler.flush
Syntax public abstract void flush( )
Flushes the buffered output
Handler.getFilter
Syntax public Filter getFilter( )
Gets the Filter that is associated with this Handler
Returns The associated Filter instance
Handler.getFormatter
Syntax public LogFormatter getFormatter( )
Gets the LogFormatter that is associated with this Handler
Returns The associated LogFormatter instance
Handler.getLevel
Syntax public Level getLevel( )
Gets the log level set for the Handler. The log level limits the records that are
published.
Returns The level instance for this Handler
Handler.getLoggingErrorHandler
Syntax public LoggingErrorHandler getLoggingErrorHandler( )
Gets the error handler that is associated with this Handler
Returns A LoggingErrorHandler instance
Handler.isLoggable
Syntax public boolean isLoggable(LogRecord record)
Checks whether to log the specified record by determining that the record has a
high enough log level, passes the associated Filter, and passes any other checks
that the Handler specifies.
Parameters record
The log record to check
Returns True to log the log record
Handler.publish
Syntax public void publish(LogRecord record)
Publishes a record to the appropriate destination if it has a sufficiently high log
level, and passes any associated Filter. Publish( ) also formats the record, if
necessary.
Parameters record
The log record to format and publish
Handler.reportError
Syntax public void reportError(java.lang.String message, javal.lang.Exception exception,
int errorCode)
Reports an error to the associated LoggingErrorHandler
Parameters errorCode
The error code of the error
exception
The exception that caused the error
message
The error message
Handler.setFilter
Syntax public void setFilter(Filter filter)
Sets the Filter for this Handler
Parameters filter
The filter to set
Handler.setFormatter
Syntax public void setFormatter(LogFormatter formatter)
Sets the formatter that will format the log records
Parameters formatter
The formatter to set
Handler.setLevel
Syntax public void setLevel(Level level)
Sets the log level to limit the records that this Handler publishes
Parameters level
The log level to set
Handler.setLoggingErrorHandler
Syntax public void setLoggingErrorHandler(LoggingErrorHandler errorHandler)
Sets the LoggingErrorHandler for this Handler
Parameters errorHandler
The error handler to use for this Handler
Interface IBlob
Syntax public interface IBlob
Description IBlob is an interface for processing a binary large object (BLOB) data value. You
need to implement this interface only if your ODA driver supports the BLOB data
type. The methods in this interface require getting a handle for the IBLOB object.
If the BLOB is used in an ODA result set column, use IResultSet.getBlob( ) to
obtain a handle for the IBLOB object. If the BLOB is used in an ODA output
parameter, use ICallStatement.getBlob( ) to obtain a handle for the IBLOB object.
A BLOB cannot be used as an ODA input parameter.
Method summary
Table 19-4 lists the methods for interface IBlob.
Table 19-4 Methods for interface IBlob
Method Description
getBinaryStream( ) Returns the entire BLOB value as a Java input stream
getBytes( ) Returns a Java input stream that contains a part of the
BLOB value, starting from the specified position in the
BLOB and continuing for the specified number of bytes
length( ) Returns the number of bytes in the BLOB value
IBlob.getBinaryStream
Syntax public InputStream getBinaryStream( ) throws OdaException
Returns a handle to the entire BLOB value
Returns The contents of the BLOB as a Java input stream of uninterpreted bytes
Throws OdaException if a data source error occurs
IBlob.getBytes
Syntax public byte[ ] getBytes( long position, int length ) throws OdaException
An optional method that returns part of the BLOB value, starting from the
position that is indicated by the position parameter, and continuing for the
number of bytes that the length parameter specifies. If the BLOB contains fewer
bytes after the specified position than the number that the length parameter
requires, getBytes( ) returns the BLOB value up to the end of the BLOB.
This method has a default implementation to provide this functionality when you
do not implement this method explicitly. Consider implementing this method if
you can optimize processing the BLOB based on your knowledge of the type of
data that it contains.
Parameters length
The number of bytes to return. Using a negative value for length returns all bytes
through the end of the BLOB.
position
The position of the starting byte. The first byte in the BLOB is at position 1.
Returns A Java byte array that contains a specific part of the contents of the BLOB that is
identified by its position
Throws OdaException if a data source error occurs.
IBlob.length
Syntax public long length( ) throws OdaException
An optional method that returns the number of bytes in a BLOB
Returns The number of bytes in a BLOB
Throws OdaException if a data source error occurs
Interface IClob
Syntax public interface IClob
Description IClob is an interface for processing a character large object (CLOB) data value.
You need to implement this interface only if your ODA driver supports the CLOB
data type. The methods in this interface require getting a handle for the ICLOB
object. If the CLOB is used in an ODA result set column, use IResultSet.getClob( )
to obtain a handle for the ICLOB object. If the CLOB is used in an ODA output
parameter, use ICallStatement.getClob( ) to obtain a handle for the ICLOB object.
A CLOB cannot be used as an ODA input parameter.
Method summary
Table 19-5 lists the methods for interface IClob.
Table 19-5 Methods for interface IClob
Method Description
getCharacterStream( ) Returns the entire CLOB value as a Java input stream
getSubString( ) Returns a String that contains part of the CLOB value
length( ) Returns the number of characters in the CLOB value
IClob.getCharacterStream
Syntax public Reader getCharacterStream( ) throws OdaException
Returns a handle to the value of the entire CLOB
Returns A java.io.Reader object that contains the CLOB value
Throws OdaException if a data source error occurs
IClob.getSubString
Syntax public String getSubString( long position, int length ) throws OdaException
An optional method that returns the part of the CLOB value, starting from the
position that is indicated by the position parameter, and continuing for the
number of characters that the length parameter specifies. If the CLOB contains
fewer characters after the specified position than the number that the length
parameter specifies, getSubString( ) returns the CLOB value through the end of
the CLOB.
This method has a default implementation to provide this functionality when you
do not implement this method explicitly. Consider implementing this method if
you can optimize processing the CLOB based on your knowledge of the type of
data that it contains.
Parameters length
The number of characters to return. Using a negative value for length returns all
characters through the end of the CLOB.
position
The position of the starting character. The first character in the CLOB is at
position 1.
Returns A string that contains part of the CLOB value
Throws OdaException if a data source error occurs
IClob.length
Syntax public long length( ) throws OdaException
An optional method that returns the number of characters in a CLOB
Returns The number of characters in a CLOB
Throws OdaException if a data source error occurs
Interface ICallStatement
Syntax public interface ICallStatement extends IStatement
Description ICallStatement is an interface for callable statements. ICallStatement implements
the mandatory methods that it inherits from IStatement, except executeQuery( ).
ICallStatement is required only if the ODA driver supports:
■ Accessing result sets by name
■ Using complex input or output parameters
All callable statement implementations, such as stored procedures and R/3
BAPIs, implement this interface.
Call ICallStatement interface methods only after calling IStatement.prepare( ).
Method summary
Table 19-6 lists the methods for interface ICallStatement.
Table 19-6 Methods for interface ICallStatement
Method Description
findOutParameter( ) Returns the 1-based index of the specified output scalar
or structure parameter.
getBigDecimal( ) Returns the decimal value from the specified output
parameter.
getBlob( ) Returns the BLOB value from the specified output
parameter.
getClob( ) Returns the CLOB value from the specified output
parameter.
getDate( ) Returns the java.sql.Date value from the specified
output parameter.
getDouble( ) Returns the double value from the specified output
parameter.
getInt( ) Returns the integer value from the specified output
parameter.
getMetaDataOf( ) Returns the metadata of the specified result.
getResultSet( ) A mandatory method that returns the named result as
an IResultSet object instance or returns null.
getResultSetNames( ) An optional method that returns the names of result
sets that this ICallStatement can return.
ICallStatement.findOutParameter
Syntax public int findOutParameter(java.lang.String parameterName)
throws OdaException
Returns the 1-based index of the specified output scalar or structure parameter.
Implement this method when the driver supports output parameters and named
parameters.
Parameters parameterName
The name of the output parameter
Returns The index of the output parameter
Throws OdaException if a data source error occurs
ICallStatement.getBigDecimal
Syntax public BigDecimal getBigDecimal(int parameterId) throws OdaException
Returns the decimal value from the output parameter at the specified position
Parameters parameterId
The 1-based index position of the parameter
Returns The decimal value
Throws OdaException if a data source error occurs
Syntax public BigDecimal getBigDecimal(java.lang.String parameterName) throws
OdaException
Returns the decimal value from the output parameter with the specified name
Parameters parameterName
Name of the parameter
Returns The decimal value
Throws OdaException if a data source error occurs
ICallStatement.getBlob
Syntax public IBlob getIBlob(int index) throws OdaException
Returns BLOB value in an output parameter, using the parameter position to
identify the desired parameter. After using ICallStatement.getBlob( ), an ODA
driver must keep the IBLOB object and the BLOB’s data accessible until the driver
closes the result set.
Parameters parameterId
The 1-based index of the parameter
Returns The BLOB value. Returns null if the parameter has a null value.
Throws OdaException if a data source error occurs
ICallStatement.getClob
Syntax public IClob getIClob(int index) throws OdaException
Returns CLOB value in an output parameter, using the parameter position to
identify the desired parameter. After using ICallStatement.getClob( ), an ODA
driver must keep the ICLOB object and the CLOB’s data accessible until the
driver closes the result set.
Parameters parameterId
The 1-based index of the parameter
Returns The CLOB that represents the value. Returns null if the parameter has a null
value.
Throws OdaException if a data source error occurs
Syntax public IClob getIClob(java.lang.String columnName) throws OdaException
Returns CLOB value in an output parameter, using the parameter name to
identify the desired parameter. After using ICallStatement.getClob( ), an ODA
driver must keep the ICLOB object and the CLOB’s data accessible until the
driver closes the result set.
Parameters parameterName
Name of the parameter
Returns The CLOB value. Returns null if the parameter has a null value.
Throws OdaException if a data source error occurs
ICallStatement.getDate
Syntax public java.sql.Date getDate(java.lang.String parameterName)
throws OdaException
Returns the java.sql.Date value for a named output parameter. Implement this
method when the driver supports output parameters, named parameters, and the
Date data type.
Parameters parameterName
The name of the parameter
Returns The java.sql.Date value of the named parameter
Throws OdaException if a data source error occurs
Syntax public Date getDate(int parameterId)
throws OdaException
Returns the java.sql.Date value of an output parameter that is identified by index.
Implement this method when the driver supports output parameters and the
Date data type.
Parameters parameterId
The 1-based index of the parameter
Returns The java.sql.Date value of the parameter
Throws OdaException if a data source error occurs
ICallStatement.getDouble
Syntax public double getDouble(java.lang.String parameterName)
throws OdaException
Returns the double value of a named output parameter. Implement this method
when the driver supports output parameters, named parameters, and the Double
data type.
Parameters parameterName
The name of the output parameter
Returns The double value
Throws OdaException if a data source error occurs
Syntax public double getDouble(int parameterId)
throws OdaException
Returns the double value for an output parameter that is identified by index.
Implement this method when the driver supports output parameters and the
double data type.
Parameters parameterId
The 1-based index of the parameter
Returns The double value
Throws OdaException if a data source error occurs
ICallStatement.getInt
Syntax public int getInt(java.lang.String parameterName)
throws OdaException
Returns the integer of an output parameter that is identified by name. Implement
this method when the driver supports output parameters, named parameters,
and the integer data type.
Parameters parameterName
The name of the parameter
Returns The integer value
Throws OdaException if a data source error occurs
Syntax public int getInt(int parameterId)
throws OdaException
Returns the integer value of an output parameter that is identified by index.
Implement this method when the driver supports output parameters and the
integer data type.
Parameters parameterId
The 1-based index of the parameter
Returns The integer value
Throws OdaException if a data source error occurs
ICallStatement.getMetaDataOf
Syntax public IResultSetMetaData getMetaDataOf(String resultSetName)
throws OdaException
Returns an instance of IResultSetMetaData. Implement this method when the
driver supports named result sets.
Parameters resultSetName
The name of the result set
Returns The metadata of the specified result
Throws OdaException if a data source error occurs
ICallStatement.getResultSet
Syntax public com.actuate.oda.IResultSet getResultSet(java.lang.String resultSetName)
throws OdaException
Returns the specified result as an IResultSet object instance, or returns null. Call
this method once for each result set.
Parameters resultSetName
The name of the target result set
Returns An IResultSet object instance or null
Throws OdaException if a data source error occurs
ICallStatement.getResultSetNames
Syntax public java.lang.String[] getResultSetNames( )
throws OdaException
An optional method that returns the names of result sets that the current
ICallStatement can return
Returns An array of result set names
Throws OdaException if a data source error occurs
ICallStatement.getRow
Syntax public com.actuate.oda.IRowSet getRow(java.lang.String parameterName)
throws OdaException
An optional method that returns the structure value from an output parameter
that is identified by name. Does not return table structures. Implement this
method when the driver supports named complex output parameters.
Parameters parameterName
The name of the output parameter
Returns The structure value
Throws OdaException if a data source error occurs
Syntax public com.actuate.oda.IRowSet getRow(int parameterId)
throws OdaException
An optional method that returns the structure value from an output parameter
that is identified by index. Does not return table structures. Implement this
method when the driver supports complex output parameters.
Parameters parameterId
The 1-based index of the parameter
Returns The structure value
Throws OdaException if data source error occurs
ICallStatement.getSortSpec
Syntax public SortSpec getSortSpec(java.lang.String resultSetName) throws
OdaException
Returns the associated SortSpec instance that specifies how to sort the result set
columns
Parameters resultSetName
The name of the result set
Returns The SortSpec that is associated with the specified result set or null if no SortSpec
is associated
Throws OdaException if a data source error occurs
ICallStatement.getString
Syntax public java.lang.String getString(java.lang.String parameterName)
throws OdaException
Returns the String value from an output parameter that is identified by name.
You can implement this method to return the String representation of a
non-String type parameter. The format of the returned string is implementation-
dependent. Implement this method when the driver supports output parameters,
named parameters, and the String data type.
Parameters parameterName
The name of the parameter
Returns The String value
Throws OdaException if data source error occurs
Syntax public java.lang.String getString(int parameterId) throws OdaException
Returns the String value from an output parameter that is identified by index.
You can use this method to return the String representation of a non-String type
parameter. The format of the returned string is implementation-dependent.
Implement this method when the driver supports output parameters and the
String data type.
Parameters parameterId
The 1-based index of the parameter
Returns The String value of the specified output parameter
Throws OdaException if a data source error occurs
ICallStatement.getTime
Syntax public java.sql.Time getTime(java.lang.String parameterName)
throws OdaException
Returns the java.sql.Time value for an output parameter that is identified by
name. Implement this method when the driver supports output parameters,
named parameters, and the Time data type.
Parameters parameterName
The name of the parameter
Returns The Time value of the parameter
Throws OdaException if a data source error occurs
Syntax public java.sql.Time getTime(int parameterId)
throws OdaException
Returns the java.sql.Time value for an output parameter that is identified by
index. Implement this method when the driver supports output parameters and
the Time data type.
parameterId
The 1-based index of the parameter
Returns The Time value of the parameter
Throws OdaException if a data source error occurs
ICallStatement.getTimestamp
Syntax public java.sql.Timestamp getTimestamp(java.lang.String parameterName)
throws OdaException
Returns the java.sql.Timestamp value for an output parameter that is identified
by name. Implement this method when the driver supports output parameters,
named parameters, and the Timestamp data type.
Parameters parameterName
The name of the parameter
Returns The Timestamp value
Throws OdaException if data source error occurs
Syntax public java.sql.Timestamp getTimestamp(int parameterId)
throws OdaException
ICallStatement.setNewRow
Syntax public com.actuate.oda.IRowSet setNewRow(java.lang.String parameterName)
throws OdaException
An optional method that returns an instance of IRowSet that represents the
specified single row input parameter. Implement this method when the driver
supports named complex input parameters. The client calls the IRowSet setter
methods to populate the input parameter. For example:
IRowSet myStruct = myStatement.setNewRow( "MyStructureName” );
myStruct.next();
myStruct.setString( 1, "myValue” );
Parameters parameterName
The name of the input parameter
Returns An IRowSet instance
Throws OdaException if data source error occurs
Syntax public com.actuate.oda.IRowSet setNewRow(int parameterId)
throws OdaException
An optional method that returns an instance of IRowSet that represents the
specified single row input parameter. Implement this method when the driver
supports complex input parameters. The client calls the IRowSet setter methods
to populate the input parameter. For example:
IRowSet myStruct = myStatement.setNewRow( 1 );
myStruct.next();
myStruct.setString( 1, “myValue” );
Parameters parameterId
The 1-based index of the parameter
Returns An instance of IRowSet
Throws OdaException if a data source error occurs
ICallStatement.setNewRowSet
Syntax public com.actuate.oda.IRowSet setNewRowSet(java.lang.String
parameterName) throws OdaException
An optional method that returns an instance of IRowSet that represents the
specified table input parameter. Implement this method when the driver supports
named complex input parameters. The client calls the IRowSet setter methods to
populate the input parameter. For example:
IRowSet myTable = myStatement.setNewRowSet( “MyStructureName”
);
myTable.add( );
myTable.setString( 1, “myValue1” );
myTable.add( );
myTable.setString( 1, “myValue2” );
Parameters parameterName
The name of the parameter
Returns An IRowSet instance
Throws OdaException if a data source error occurs
Syntax public com.actuate.oda.IRowSet setNewRowSet(int parameterId)
throws OdaException
An optional method that returns an instance of IRowSet that represents the
specified table input parameter. Implement this method when the driver supports
complex input parameters. The client calls the IRowSet setter methods to
populate the input parameter. For example:
IRowSet myTable = myStatement.setNewRowSet( 1 );
myTable.add();
myTable.setString( 1, “myValue1” );
myTable.add();
myTable.setString( 1, “myValue2” );
Parameters parameterId
The 1-based index of the parameter
Returns An instance of IRowSet
Throws OdaException if a data source error occurs
ICallStatement.setSortSpec
Syntax public void setSortSpec(java.lang.String resultSetName, SortSpec sortBy) throws
OdaException
Associates the specified SortSpec instance with the specified result set columns to
indicate how to sort the result set. Calling setSortSpec( ) with a null argument
clears the previously associated SortSpec. If no sort specification is set, then the
rows of a result set have an implementation-specific ordering, and the
getSortSpec( ) method returns null.
Parameters resultSetName
The name of the result set
sortBy
The SortSpec instance to associate
Throws OdaException if the specified sort specification is not valid or is not supported by
the driver
ICallStatement.wasNull
Syntax public boolean wasNull( ) throws OdaException
Indicates whether the value of the last output parameter a getter method read is
null. Implement this method when the driver supports output parameters. In
each getter method, set any data structures used by wasNull( ).
Returns True if the last call to a get method is null
Throws OdaException if a data source error occurs
Interface IConnection
Syntax public interface IConnection
Description Defines the connection interface. This interface provides access to the rest of the
open data access framework. Some IDataSourceMetaData methods, such as
getDataSourceObjects( ), expect or require an open connection.
Method summary
Table 19-7 lists the methods for interface IConnection.
Table 19-7 Methods for interface IConnection
Method Description
close( ) A mandatory method that closes the connection.
(continues)
IConnection.close
Syntax public void close( ) throws OdaException
A mandatory method that closes the connection
Throws OdaException if a data source error occurs
IConnection.commit
Syntax public void commit( ) throws OdaException
An optional method that makes permanent all changes that were implemented
since the previous commit or roll-back. Use this method if the driver can manage
transactions.
Throws OdaException if a data source error occurs
IConnection.createStatement
Syntax public com.actuate.oda.IStatement createStatement(java.lang.String
dataSourceType) throws OdaException
A mandatory method that returns an IStatement instance that is based on the data
source type. The data source type is implementation-dependent. For example, the
valid data source type for SAP MDX is MDX.
Parameters dataSourceType
A String representation of the class of the data source type
Returns An IStatement object instance
Throws OdaException if a data source error occurs
IConnection.getMetaData
Syntax public com.actuate.oda.IConnectionMetaData getMetaData( )
throws OdaException
A mandatory method that returns an instance of IConnectionMetaData that
contains information about the capabilities of the driver. Can be called before
opening the connection.
Returns An IConnectionMetaData object instance
Throws OdaException if a data source error occurs
Syntax public com.actuate.oda.IDataSourceMetaData getMetaData(java.lang.String
dataSourceType) throws OdaException
A mandatory method that returns an instance of IDataSourceMetaData that is
based on the data source type. The data source type is implementation-
dependent. For example, the valid data source type for SAP ODS is ODS. Can be
called before opening the connection.
Parameters dataSourceType
String representation of the class of the data source type
Returns An IDataSourceMetaData object instance
Throws OdaException if a data source error occurs
IConnection.isOpened
Syntax public boolean isOpened( ) throws OdaException
A mandatory method that verifies that a connection has been established. Can be
called before calling IConnection.open. If isOpened( ) depends on objects that
open( ) instantiates, isOpened( ) should verify that those objects are instantiated.
Returns True if a connection is established
Throws OdaException if a data source error occurs
IConnection.open
Syntax public void open(java.util.Properties connProperties) throws OdaException
A mandatory method that establishes a connection that is based on specified
connection properties
Parameters connProperties
The properties that are necessary to establish a connection
Throws OdaException if a data source error occurs
IConnection.rollback
Syntax public void rollback( ) throws OdaException
An optional method that undoes all changes that were implemented since the
previous commit or rollback. Use this method if the driver can manage
transactions.
Throws OdaException if a data source error occurs
Interface IConnectionFactory
Syntax public interface IConnectionFactory
Description IConnectionFactory is the interface from which all connection factory
implementations derive.
Method summary
IConnectionFactory.getConnection
Syntax public com.actuate.oda.IConnection getConnection(java.lang.String
connectionClassName) throws OdaException
A mandatory method that returns an IConnection object that can establish a
connection to the target object. The specified connection is the fully qualified class
name of the connection class.
Parameters connectionClassName
An optional String that represents the class name of the IConnection. A null or
empty String returns the default IConnection object for the IConnectionFactory.
Returns An instance of IConnection
Throws OdaException if a data source error occurs
See also IConnection
IConnectionFactory.setLogConfiguration
Syntax public void setLogConfiguration(int logLevel, java.lang.String logDirectory,
java.lang.String logPrefix, java.lang.String formatterClassName) throws
OdaException
Sets the logging configuration of the ODA run-time driver. An ODA driver can
handle the logging configuration internally or use the ODA logging classes and
interface in the com.actuate.oda.util.logging package.
Parameters formatterClassName
The fully qualified class name of a LogFormatter implementation class
logDirectory
The absolute path of the log directory
logLevel
The minimum level of log records to publish
logPrefix
The prefix to use in the log-file name
Throws OdaException if an ODA driver error occurs
See also LogManager.createLogger( )
Interface IConnectionMetaData
Syntax public interface IConnectionMetaData
Description Comprehensive information about the connection.
The features that a connection supports depends on the driver that works with it.
In addition, a driver can implement a feature that the connection does not offer.
An ODA driver implements IConnectionMetaData to describe the connection and
the driver to the Actuate design tool. For example, IConnectionMetaData
describes the maximum number of connections that the driver can support and
the maximum number of statements that the driver can support for a data source
type. The data provider must ensure that IConnectionMetaData matches the
capabilities of the driver. An IConnectionMetaData method throws OdaException
if it gets information about a feature that the driver does not support.
All IConnectionMetaData methods can be called before the connection is open.
Method summary
Table 19-9 lists the methods for interface IConnectionMetaData.
Table 19-9 Methods for interface IConnectionMetaData
Method Description
getConnection( ) A mandatory method that returns the connection
that produced this metadata object.
getDriverMajorVersion( ) A mandatory method that returns the major
version number of this ODA driver.
getDriverMinorVersion( ) A mandatory method that returns the minor
version number of this ODA driver.
getDriverName( ) A mandatory method that returns the name of this
ODA driver.
getDriverVersion( ) A mandatory method that returns the version
number of this ODA driver as a String.
IConnectionMetaData.getConnection
Syntax public com.actuate.oda.IConnection getConnection( ) throws OdaException
A mandatory method that returns the connection that produced this metadata
object
Returns The connection that produced this metadata object
Throws OdaException if a data source error occurs
IConnectionMetaData.getDriverMajorVersion
Syntax public int getDriverMajorVersion( )
A mandatory method that returns this ODA driver’s major version number
Returns The ODA driver’s major version number
IConnectionMetaData.getDriverMinorVersion
Syntax public int getDriverMinorVersion( )
A mandatory method that returns this ODA driver’s minor version number
Returns The ODA driver’s minor version number
IConnectionMetaData.getDriverName
Syntax public java.lang.String getDriverName( ) throws OdaException
A mandatory method that returns the name of this ODA driver
Returns The ODA driver’s name
Throws OdaException if a data source error occurs
IConnectionMetaData.getDriverVersion
Syntax public java.lang.String getDriverVersion( ) throws OdaException
A mandatory method that returns the version number of this ODA driver as a
String
Returns The ODA driver’s version number
Throws OdaException if a data source error occurs
IConnectionMetaData.getMaxConnections
Syntax public int getMaxConnections( ) throws OdaException
A mandatory method that returns the maximum number of active connections
that the driver can support
Returns The maximum number of connections of any type that can be open concurrently.
Returns 0 if there is no limit or the limit is unknown.
Throws OdaException if a data source error occurs
IConnectionMetaData.getMaxStatements
Syntax public int getMaxStatements( ) throws OdaException
A mandatory method that returns the maximum number of active statements of
data source types that the driver can support for this connection
Returns The maximum number of any type of statements that can be prepared and
executed concurrently. Returns 0 if there is no limit or the limit is unknown.
Throws OdaException if a data source error occurs
IConnectionMetaData.getOdaMajorVersion
Syntax public int getOdaMajorVersion( ) throws OdaException
A mandatory method that returns the major version number of the ODA interface
that this driver supports
Returns The major version number for the ODA interface
Throws OdaException if a data source error occurs
IConnectionMetaData.getOdaMinorVersion
Syntax public int getOdaMinorVersion( ) throws OdaException
A mandatory method that returns the minor version number of the ODA
interface that this driver supports
Returns The minor version number for the ODA interface
Throws OdaException if a data source error occurs
Interface IDataSourceMetaData
Syntax public interface IDataSourceMetaData
Description Comprehensive information about the data source.
Data source metadata describes the features that a data source supports. A driver
can also implement a feature the underlying data source does not offer. The
methods in IDataSourceMetaData return information about the capabilities of a
specified driver and a specified data source. For example, IDataSourceMetaData
can indicate whether the data source supports getting multiple IResultSet objects
from a single call to the method IStatement.execute( ) or whether the data source
supports input or output parameters. Ensure that IDataSourceMetaData matches
the capabilities of the driver. An IDataSourceMetaData method throws
OdaException if it gets information about a feature that the driver does not
support.
Field summary
Table 19-10 lists the fields for interface IDataSourceMetaData.
Table 19-10 Fields for interface IDataSourceMetaData
Field Description
public static final int A constant that indicates that each sorted column
sortModeColumnOrder can have a different sort order.
public static final int A constant that indicates that dynamic sorting is not
sortModeNone supported.
public static final int A constant that indicates that only one column can
sortModeSingleColumn be sorted.
public static final int A constant that indicates that all sorted columns
sortModeSingleOrder must be in the same sort order.
public static final int A constant that indicates that
sqlStateSQL99 OdaException.getSQLState returns a SQL99
SQLSTATE value.
public static final int A constant that indicates that
sqlStateXOpen OdaException.getSQLState returns an
X/Open SQL CLI SQLSTATE value.
Method summary
Table 19-11 lists the methods for interface IDataSourceMetaData.
Table 19-11 Methods for interface IDataSourceMetaData
Method Description
getConnection( ) A mandatory method that returns the connection
that produced this metadata object.
getDataSource A mandatory method that returns the major version
MajorVersion( ) number of the data source.
IDataSourceMetaData.getConnection
Syntax public com.actuate.oda.IConnection getConnection( ) throws OdaException
A mandatory method that returns the connection that produced this metadata
object
Returns The connection that produced this metadata object
Throws OdaException if a data source error occurs
IDataSourceMetaData.getDataSourceMajorVersion
Syntax public int getDataSourceMajorVersion( ) throws OdaException
A mandatory method that returns the major version number of the underlying
data source
Returns The major version number of the data source
Throws OdaException if a data source error occurs
IDataSourceMetaData.getDataSourceMinorVersion
Syntax public int getDataSourceMinorVersion( ) throws OdaException
A mandatory method that returns the minor version number of the underlying
data source
Returns The minor version number of the data source
Throws OdaException if a data source error occurs
IDataSourceMetaData.getDataSourceObjects
Syntax public com.actuate.oda.IResultSet getDataSourceObjects(java.lang.String
catalog, java.lang.String schema, java.lang.String object,
java.lang.String version) throws OdaException
An optional method that returns the collection of objects that are in a data source
catalog. Valid arguments to this method are implementation-dependent. Each
driver must define the metadata for the IResultSet that is returned. Using driver-
specific classes and methods, a driver can extend the metadata that is returned.
Parameters catalog
The data source object catalog
object
The search pattern for the data source object name
schema
The search pattern for the schema or owner name of the data source object. Can
be empty if it does not apply to the connected data source.
version
The data source object version
Returns An IResultSet instance of the data source objects
Throws OdaException if a data source error occurs
IDataSourceMetaData.getDataSourceProductName
Syntax public java.lang.String getDataSourceProductName( ) throws OdaException
A mandatory method that returns the name of the data source product
Returns The data source product’s name
Throws OdaException if a data source error occurs
IDataSourceMetaData.getDataSourceProduct
Version
Syntax public java.lang.String getDataSourceProductVersion( ) throws OdaException
A mandatory method that returns the version number of the data source product
as a String
Returns The version number of the data source
Throws OdaException if a data source error occurs
IDataSourceMetaData.getSortMode
Syntax public int getSortMode( )
Returns the sort mode that this data source supports. The sort mode is one of the
following constants:
■ sortModeColumnOrder
■ sortModeNone
■ sortModeSingleColumn
■ sortModeSingleOrder
Returns An integer that indicates which sort mode the data source supports
See also Class SortSpec
IDataSourceMetaData.getSQLStateType
Syntax public int getSQLStateType( ) throws OdaException
A mandatory method that indicates whether the SQLSTATE that
OdaException.getSQLState( ) returns is X/Open SQL CLI or SQL99
Returns The type of SQLSTATE, which is either sqlStateXOpen or sqlStateSQL99
Throws OdaException if a data source error occurs
IDataSourceMetaData.supportsInParameters
Syntax public boolean supportsInParameters( ) throws OdaException
A mandatory method that indicates whether the data source supports input
parameters to IStatement
Returns True if the data source supports input parameters
Throws OdaException if a data source error occurs
IDataSourceMetaData.supportsMultipleOpen
Results
Syntax public boolean supportsMultipleOpenResults( ) throws OdaException
A mandatory method that indicates whether the data source supports returning
multiple IResultSet objects simultaneously from an ICallStatement object
Returns True if an ICallStatement object can return multiple IResultSet objects
simultaneously
Throws OdaException if a data source error occurs
IDataSourceMetaData.supportsMultipleResultSets
Syntax public boolean supportsMultipleResultSets( ) throws OdaException
A mandatory method that indicates whether the data source supports getting
multiple IResultSet objects from a single call to IStatement.execute( )
Returns True if a single call to IStatement.execute( ) can get multiple IResultSet objects
Throws OdaException if a data source error occurs
IDataSourceMetaData.supportsNamedParameters
Syntax public boolean supportsNamedParameters( ) throws OdaException
A mandatory method that indicates whether the data source supports named
parameters to IStatement
Returns True if the data source supports named parameters
Throws OdaException if a data source error occurs
IDataSourceMetaData.supportsNamedResultSets
Syntax public boolean supportsNamedResultSets( ) throws OdaException
A mandatory method that indicates whether the data source supports getting one
or more IResultSet objects by name
Returns True if the data source supports getting one or more IResultSet objects by name
Throws OdaException if a data source error occurs
IDataSourceMetaData.supportsOutParameters
Syntax public boolean supportsOutParameters( ) throws OdaException
A mandatory method that indicates whether the data source supports output
parameters to ICallStatement
Returns True if the data source supports output parameters
Throws OdaException if a data source error occurs
Interface IParameterMetaData
Syntax public interface IParameterMetaData
Description IParameterMetaData is an optional interface that represents metadata for
parameters of a prepared statement. All indexes in this interface are 1-based.
Field summary
Method summary
Table 19-13 lists the methods for interface IParameterMetaData.
Table 19-13 Methods for interface IParameterMetaData
Method Description
getParameterCount( ) A mandatory method that returns the number
of parameters that are in the prepared statement
object for which this IParameterMetaData object
contains information.
getParameterMode( ) A mandatory method that returns the input or
output mode of the specified parameter.
getParameterType( ) A mandatory method that returns the
java.sql.Types type of the specified parameter.
getParameterTypeName( ) A mandatory method that returns the data
source-specific type name for the specified
parameter.
getPrecision( ) An optional method that returns the maximum
number of digits that can appear to the right of
the decimal point for the specified parameter.
IParameterMetaData.getParameterCount
Syntax public int getParameterCount( ) throws OdaException
A mandatory method that returns the number of parameters in the prepared
statement object for which the IParameterMetaData object contains information
Returns The number of parameters
Throws OdaException if a data source error occurs
IParameterMetaData.getParameterMode
Syntax public int getParameterMode(int param) throws OdaException
A mandatory method that returns the input and output mode of the specified
parameter
Parameters param
The 1-based index of the parameter
Returns The input and output mode of the parameter. Valid values are:
■ parameterModeUnknown
■ parameterModeIn
■ parameterModeInOut
■ parameterModeOut
Throws OdaException if a data source error occurs
IParameterMetaData.getParameterType
Syntax public int getParameterType(int param) throws OdaException
A mandatory method that returns the java.sql.Types type of the specified
parameter. All java.sql.Types data types, such as ARRAY, INTEGER, and
STRUCT, are valid return values. An ODA provider does not necessarily return
all types.
Parameters param
The 1-based index of the parameter
Returns The java.sql.Types type of the parameter
Throws OdaException if a data source error occurs
IParameterMetaData.getParameterTypeName
Syntax public java.lang.String getParameterTypeName(int param) throws OdaException
A mandatory method that returns the data source type name for the specified
parameter type
Parameters param
The 1-based index of the parameter
Returns The name of the parameter type
Throws OdaException if a data source error occurs
IParameterMetaData.getPrecision
Syntax public int getPrecision(int param) throws OdaException
An optional method that returns the maximum number of digits that can appear
to the right of the decimal point for the specified parameter. getPrecision( )
typically applies only to numeric data types. The ODA data source determines
which java.sql.Types apply. The maximum precision that is allowed on a data
type can vary depending on the data source.
Parameters param
The 1-based index of the parameter
Returns The precision of the parameter or -1 if precision is not applicable
Throws OdaException if a data source error occurs
IParameterMetaData.getScale
Syntax public int getScale(int param) throws OdaException
An optional method that returns the maximum number of digits that can appear
to the right of the decimal point for the specified parameter. getScale( ) typically
applies only to numeric data types. The ODA data source determines which
java.sql.Types apply. The data source determines the maximum scale for a data
type.
Parameters param
The 1-based index of the parameter
Returns The scale of the parameter or -1 if scale does not apply
Throws OdaException if a data source error occurs
IParameterMetaData.isNullable
Syntax public int isNullable(int param) throws OdaException
An optional method that indicates whether the specified parameter supports null
values
Parameters param
The 1-based index of the parameter
Returns The nullability of the parameter. Valid values are:
■ parameterNullableUnknown
■ parameterNoNulls
■ parameterNullable
Throws OdaException if a data source error occurs
Interface IResultSet
Syntax public interface IResultSet
Description IResultSet is the interface for all result sets. An IResultSet object maintains a
cursor that points to its current data row. Initially, the cursor is before the first
row. The next( ) method moves the cursor to the next row until there are no more
rows or until it reaches the maximum number of rows that can be returned.
The ODA host typically sets the MaxRows property for the result set to zero to
retrieve the entire result set. To ensure that the ODA driver returns the correct
result set, you must test explicitly for a maxRows size of zero in next( ).
Method summary
Table 19-14 lists the methods for interface IResultSet.
Table 19-14 Methods for interface IResultSet
Method Description
close( ) A mandatory method that closes the cursor for the current
IResultSet.
findColumn( ) An optional method that returns the column index of the
specified column name.
getBigDecimal( ) Returns the decimal value of the specified column in the
current row.
getBlob( ) Gets the value of the specified column in the current row as
an IBlob.
getClob( ) Gets the value of the specified column in the current row as
an IClob.
getDate( ) Gets the value of the specified column in the current row as
a java.sql.Date.
getDouble( ) Gets the value of the specified column in the current row as
a double.
getInt( ) Gets the value of the specified column in the current row as
an int.
getMetaData( ) A mandatory method that returns the metadata that is
associated with the current IResultSet.
getRow( ) An optional method that returns the 1-based index position
of the current row.
getString( ) Gets the value of the specified column in the current row as
a String.
getTime( ) Gets the value of the specified column in the current row as
a java.sql.Time.
getTimestamp( ) Gets the value of the specified column in the current row as
a java.sql.Timestamp.
next( ) A mandatory method that moves the cursor down one row
from its current position.
setFetchSize( ) Deprecated. Use setMaxRows( ).
setMaxRows( ) Specifies the maximum number of rows that can be fetched
from this result set.
IResultSet.close
Syntax public void close( ) throws OdaException
A mandatory method that closes the cursor that is associated with the current
IResultSet
Throws OdaException if a data source error occurs
IResultSet.findColumn
Syntax public int findColumn(java.lang.String columnName) throws OdaException
An optional method that returns the column index of the column that is identified
by name. Implement this method when the driver supports access to result set
columns by name.
Parameters columnName
The name of the column
Returns The 1-based column index
Throws OdaException if a data source error occurs
IResultSet.getBigDecimal
Syntax public BigDecimal getBigDecimal(int index) throws OdaException
Returns the decimal value of the column that is identified by its position in the
current row
Parameters index
The position of the column
Returns The decimal value
Throws OdaException if a data source error occurs
Syntax public BigDecimal getBigDecimal(java.lang.String columnName) throws
OdaException
Returns the decimal value of the column in the current row that is identified by
name
Parameters columnName
Name of the column
Returns The decimal value
Throws OdaException if a data source error occurs
IResultSet.getBlob
Syntax public IBlob getIBlob(int index) throws OdaException
Returns the BLOB value in the current row for a column, using the column
position to identify the desired column. After using IResultSet.getBlob( ), an ODA
driver must keep the IBLOB object and the BLOB’s data accessible until the driver
closes the result set.
Parameters index
The position of the column
Returns The BLOB value. Returns null if the specific column has a null value.
Throws OdaException if a data source error occurs
Syntax public IBlob getIBlob(java.lang.String columnName) throws OdaException
Returns the BLOB value in the current row for a column, using the column name
to identify the desired column. After using IResultSet.getBlob( ), an ODA driver
must keep the IBLOB object and the BLOB’s data accessible until the driver closes
the result set.
Parameters columnName
The column name
Returns The BLOB value. Returns null if the specific column has a null value.
Throws OdaException if a data source error occurs
IResultSet.getClob
Syntax public IClob getIClob(int index) throws OdaException
Returns CLOB value in the current row for a column, using the column position
to identify the desired column. After using IResultSet.getClob( ), an ODA driver
must keep the ICLOB object and the CLOB’s data accessible until the driver closes
the result set.
Parameters index
The position of the column
Returns The CLOB value. Returns null if the specific column has a null value.
Throws OdaException if a data source error occurs
Syntax public IClob getIClob(java.lang.String columnName) throws OdaException
Returns CLOB value in the current row for a column, using the column name to
identify the desired column. After using IResultSet.getClob( ), an ODA driver
must keep the ICLOB object and the CLOB’s data accessible until the driver closes
the result set.
Parameters columnName
The column name
Returns The CLOB value. Returns null if the specific column has a null value.
Throws OdaException if a data source error occurs
IResultSet.getDate
Syntax public java.sql.Date getDate(int index) throws OdaException
Gets the value of the column in the current row as a java.sql.Date. Mandatory if
the driver supports the Date data type.
Parameters index
The 1-based column index
Returns The java.sql.Date value of the specified column of the current row
Throws OdaException if a data source error occurs
Syntax public Date getDate(String columnName) throws OdaException
Gets the value of the specified column in the current row as a java.sql.Date.
Mandatory if the driver supports the Date data type and accessing result set
columns by name.
Parameters columnName
The column name
Returns The java.sql.Date value of the specified column of the current row
Throws OdaException if a data source error occurs
IResultSet.getDouble
Syntax public double getDouble(int index) throws OdaException
Gets the value of the specified column in the current row as a double. Mandatory
if the driver supports the double data type.
Parameters index
The 1-based column index
Returns The double value of the specified column of the current row
Throws OdaException if a data source error occurs
Syntax public double getDouble(String columnName) throws OdaException
Gets the value of the specified column in the current row as a double. Mandatory
if the driver supports the double data type and accessing result set columns by
name.
Parameters columnName
The column name
Returns The double value of the specified column of the current row
Throws OdaException if a data source error occurs
IResultSet.getInt
Syntax public int getInt(int index) throws OdaException
Gets the value of the specified column in the current row as an int. Mandatory if
the driver supports the integer data type.
Parameters index
The 1-based column index
Returns The integer value of the specified column of the current row
Throws OdaException if a data source error occurs
Syntax public int getInt(String columnName) throws OdaException
Gets the value of the specified column in the current row as an int. Mandatory if
the driver supports the integer data type and accessing result set columns by
name.
Parameters columnName
The column name
Returns The integer value of the specified column of the current row
Throws OdaException if a data source error occurs
IResultSet.getMetaData
Syntax public com.actuate.oda.IResultSetMetaData getMetaData( )
throws OdaException
A mandatory method that returns the metadata that is associated with the current
IResultSet
Returns The metadata for the IResultSet
Throws OdaException if a data source error occurs
IResultSet.getRow
Syntax public int getRow( ) throws OdaException
An optional method that returns the current row’s 1-based index position
Returns The 1-based index position of the current row
Throws OdaException if a data source error occurs
IResultSet.getString
Syntax public java.lang.String getString(int index) throws OdaException
Gets the value of the specified column in the current row as a String. Mandatory if
the driver supports the String data type. getString( ) can provide the String value
of a non-String column. The format of the string that is returned is
implementation-dependent.
Parameters index
The 1-based column index
Returns The string value of the specified column of the current row
Throws OdaException if a data source error occurs
Syntax public String getString(String columnName) throws OdaException
Gets the value of the named column in the current row as a String. Mandatory if
the driver supports the String data type and accessing result set columns by
name. getString( ) can provide the String value of a non-String column. The
format of the string that is returned is implementation-dependent.
Parameters columnName
The column name
Returns The string value of the specified column of the current row
Throws OdaException if a data source error occurs
IResultSet.getTime
Syntax public java.sql.Time getTime(int index) throws OdaException
Gets the value of the specified column in the current row as a java.sql.Time.
Mandatory if the driver supports the Time data type.
Parameters index
The 1-based column index
Returns The java.sql.Time value of the specified column of the current row
Throws OdaException if a data source error occurs
Syntax public Time getTime(String columnName) throws OdaException
Gets the value of the named column in the current row as a java.sql.Time.
Mandatory if the driver supports the Time data type and accessing result set
columns by name.
Parameters columnName
The column name
Returns The java.sql.Time value of the specified column of the current row
Throws OdaException if a data source error occurs
IResultSet.getTimestamp
Syntax public java.sql.Timestamp getTimestamp(int index) throws OdaException
Gets the value of the specified column in the current row as a java.sql.Timestamp.
Mandatory if the driver supports the Timestamp data type.
Parameters index
The 1-based column index
Returns The java.sql.Timestamp value of the specified column of the current row
Throws OdaException if a data source error occurs
Syntax public Timestamp getTimestamp(String columnName) throws OdaException
Gets the value of the named column in the current row as a java.sql.Timestamp.
Mandatory if the driver supports the Timestamp data type and accessing result
set columns by name.
Parameters columnName
The column name
Returns The java.sql.Timestamp value of the specified column of the current row
Throws OdaException if a data source error occurs
IResultSet.next
Syntax public boolean next( ) throws OdaException
A mandatory method that moves the cursor down one row from its current
position
Returns True if there is a subsequent data row and the maximum rows limit has not been
reached
Throws OdaException if a data source error occurs
Example public boolean next( ) throws OdaException
{
if( m_maxRows != 0 && m_rowsReturned >= m_maxRows )
return false;
// else process the next row
}
IResultSet.setMaxRows
Syntax public void setMaxRows(int max) throws OdaException
Specifies the maximum number of rows to fetch from this result set. This value
should not be greater than the maximum number of rows that is specified in the
related IStatement. A value of zero means that there is no limit.
Parameters max
The maximum number of rows to fetch from this IResultSet
Throws OdaException if a data source error occurs
IResultSet.wasNull
Syntax public boolean wasNull( ) throws OdaException
A mandatory method that checks whether the value of the previous getter
method is invalid or null. Call immediately after the get method. In each getter
method, set any data structures used by wasNull( ).
Returns True if the previous get method call was invalid or null
Throws OdaException if a data source error occurs
Interface IResultSetMetaData
Syntax public interface IResultSetMetaData
Description IResultSetMetaData is the metadata interface for all metadata implementations.
IResultSetMetaData represents a row that contains metadata for each column that
corresponds to the result set.
All indexes in this interface are 1-based.
Field summary
Table 19-15 lists the fields for interface IResultSetMetaData.
Table 19-15 Fields for interface IResultSetMetaData
Field Description
public static final int A constant that indicates that a column does not
columnNoNulls allow null values.
public static final int A constant that indicates that a column allows
columnNullable null values.
public static final int A constant that indicates that the nullability of the
columnNullableUnknown values for a column is unknown.
Method summary
Table 19-16 lists the methods for interface IResultSetMetaData.
Table 19-16 Methods for interface IResultSetMetaData
Method Description
getColumnCount( ) A mandatory method that returns the number of
columns in the corresponding IResultSet object.
getColumnDisplayLength( ) A mandatory method that returns the display
length of a specified column.
getColumnLabel( ) A mandatory method that returns the suggested
title of a specified column for use in the column
heading and data row variable name.
getColumnName( ) A mandatory method that returns the name of a
specified column.
getColumnType( ) A mandatory method that returns the
java.sql.Types type of a specified column.
IResultSetMetaData.getColumnCount
Syntax public int getColumnCount( ) throws OdaException
A mandatory method that returns the number of columns in the corresponding
IResultSet object
Returns The number of columns
Throws OdaException if a data source error occurs
IResultSetMetaData.getColumnDisplayLength
Syntax public int getColumnDisplayLength(int index) throws OdaException
A mandatory method that returns the display length of the specified column
Parameters index
The 1-based column index
Returns The column’s display length
Throws OdaException if a data source error occurs
IResultSetMetaData.getColumnLabel
Syntax public java.lang.String getColumnLabel(int index) throws OdaException
A mandatory method that returns the suggested title of a specified column for
use in the column heading and data row variable name
Parameters index
The 1-based column index
Returns The recommended column title
Throws OdaException if a data source error occurs
IResultSetMetaData.getColumnName
Syntax public java.lang.String getColumnName(int index) throws OdaException
A mandatory method that returns the name of the specified column
Parameters index
The 1-based column index
Returns The column name
Throws OdaException if a data source error occurs
IResultSetMetaData.getColumnType
Syntax public int getColumnType(int index) throws OdaException
A mandatory method that returns the type of the specified column. All
java.sql.Types data types, such as ARRAY, INTEGER, and STRUCT, are valid
return values. An ODA driver or data source does not necessarily return every
type.
Parameters index
The 1-based column index
Returns The java.sql.Types type of the column
Throws OdaException if a data source error occurs
IResultSetMetaData.getColumnTypeName
Syntax public java.lang.String getColumnTypeName(int index) throws OdaException
A mandatory method that returns the type name of the specified column
Parameters index
The 1-based column index
Returns The column type name
Throws OdaException if a data source error occurs
IResultSetMetaData.getPrecision
Syntax public int getPrecision(int index) throws OdaException
An optional method that returns the maximum number of decimal digits of the
specified column. getPrecision( ) typically applies only to numeric data types. The
driver determines which java.sql.Types apply. The maximum precision that is
allowed on a data type can vary depending on the data source.
Parameters index
The 1-based column index
Returns The column precision. Returns -1 if precision does not apply.
Throws OdaException if a data source error occurs
IResultSetMetaData.getScale
Syntax public int getScale(int index) throws OdaException
An optional method that returns the maximum number of digits that can appear
to the right of the decimal point for the specified column. getScale( ) typically
applies only to numeric data types. The ODA data source determines which
java.sql.Types apply and sets the maximum scale for a data type.
Parameters index
The 1-based column index
Returns The column scale or -1 if scale does not apply
Throws OdaException if a data source error occurs
IResultSetMetaData.isNullable
Syntax public int isNullable(int index) throws OdaException
An optional method that indicates the nullability of values in the specified
column
Parameters index
The 1-based column index
Returns The nullability status of the specified column. Valid values are:
■ columnNoNulls
■ columnNullable
■ columnNullableUnknown
Interface IRowSet
Syntax public interface IRowSet extends IResultSet
Description IRowSet is an interface for representing a complex structure or table. All complex
structures or tables implement this interface. IRowSet is useful for representing
complex parameter data values at run time. A collection of one row can be used
as a structure.
This interface is required only if the driver supports complex input or output
parameters. A complex parameter’s metadata can be obtained from its inherited
getMetaData( ) method.
An implementation of IRowSet must implement the mandatory methods that it
inherits from IResultSet.
Method summary
Table 19-17 lists the methods for interface IRowSet.
Table 19-17 Methods for interface IRowSet
Method Description
absolute( ) A mandatory method that moves the cursor to the specified
row.
add( ) Appends a new row to the end of this collection, and moves
the cursor to the new row’s position.
clear( ) An optional method that removes all the elements from this
collection.
isEmpty( ) A mandatory method that determines whether this
collection contains any elements.
previous( ) An optional method that moves the cursor up one element
from its current position.
setBigDecimal( ) Sets the decimal value at the designated column.
setDate( ) Sets the date value at the specified column.
setDouble( ) Sets the double value at the specified column.
setInt( ) Sets the integer value at the specified column.
setString( ) Sets the string value at the specified column.
setTime( ) Sets the time value at the specified column.
setTimestamp( ) Sets the time stamp value at the specified column.
IRowSet.absolute
Syntax public boolean absolute(int rowIndex) throws OdaException
A required method that moves the cursor to the specified row
Parameters rowIndex
The 1-based row number
Returns True if the cursor moves successfully to the row
Throws OdaException if a data source error occurs
IRowSet.add
Syntax public int add( ) throws OdaException
Appends a new row to the end of this collection and moves the cursor to the
position of the new row. Mandatory only for input parameters.
Returns Zero if add( ) fails to add a new row. Otherwise, returns the 1-based row index of
the new row.
Throws OdaException if a data source error occurs
IRowSet.clear
Syntax public void clear( ) throws OdaException
An optional method that removes all elements from this collection
Throws OdaException if a data source error occurs
IRowSet.isEmpty
Syntax public boolean isEmpty( ) throws OdaException
A mandatory method that determines whether this collection contains elements
Returns True if the collection is empty
Throws OdaException if a data source error occurs
IRowSet.previous
Syntax public boolean previous( ) throws OdaException
An optional method that moves the cursor up one element from its current
position
Returns True if the cursor moves to a valid row
Throws OdaException if a data source error occurs
IRowSet.setBigDecimal
Syntax public void setBigDecimal(int columnIndex, BigDecimal value)
throws OdaException
Sets the decimal value of the column that is identified by its position in the
current row
Parameters columnIndex
The 1-based index position of the column
value
The decimal value
Throws OdaException if a data source error occurs
Syntax public void setBigDecimal(java.lang.String columnName, BigDecimal value)
throws OdaException
Sets the decimal value of the column in the current row that is identified by name
Parameters columnName
Name of the column
value
The decimal value
Throws OdaException if a data source error occurs
IRowSet.setDate
Syntax public void setDate(int columnIndex, java.sql.Date value) throws OdaException
Sets the date value at the specified column. Mandatory only for input parameters.
Implement this method when the driver supports the Date data type.
Parameters columnIndex
The 1-based index of the column
value
The java.sql.Date value
Throws OdaException if a data source error occurs
Syntax public void setDate(java.lang.String columnName, java.sql.Date value)
throws OdaException
Sets the date value at the column that is identified by name. Mandatory only for
input parameters that support setting columns by name. Implement this method
when the driver supports the Date data type.
Parameters columnName
The name of the column
value
The java.sql.Date value
Throws OdaException if a data source error occurs
IRowSet.setDouble
Syntax public void setDouble(int columnIndex, double value) throws OdaException
Sets the double value at the specified column. Mandatory only for input
parameters. Implement this method when the driver supports the double data
type.
Parameters columnIndex
The 1-based index of the column
value
The double value
Throws OdaException if a data source error occurs
Syntax public void setDouble(java.lang.String columnName, double value)
throws OdaException
Sets the double value at the column that is identified by name. Mandatory only
for input parameters that support setting columns by name. Implement this
method when the driver supports the double data type.
Parameters columnName
The name of the column
value
The double value
Throws OdaException if a data source error occurs
IRowSet.setInt
Syntax public void setInt(int columnIndex, int value) throws OdaException
Sets the integer value at the specified column. Mandatory only for input
parameters. Implement this method when the driver supports the integer data
type.
Parameters columnIndex
The 1-based index of the column
value
The integer value
Throws OdaException if a data source error occurs
Syntax public void setInt(java.lang.String columnName, int value)
throws OdaException
Sets the integer value at the column that is identified by name. Mandatory only
for input parameters that support setting columns by name. Implement this
method when the driver supports the integer data type.
Parameters columnName
The name of the column
value
The integer value
Throws OdaException if a data source error occurs
IRowSet.setString
Syntax public void setString(int columnIndex, java.lang.String value)
throws OdaException
Sets the string value at the specified column. Mandatory only for input
parameters. Implement this method when the driver supports the String data
type. Not all ODA drivers support setString() on a non-String type column. The
format of the string parameter is implementation-dependent.
Parameters columnIndex
The 1-based index of the column
value
The string value
Throws OdaException if a data source error occurs
Syntax public void setString(java.lang.String columnName, java.lang.String value)
throws OdaException
Sets the string value at the column that is identified by name. Mandatory only for
input parameters that support setting columns by name. Implement this method
when the driver supports the String data type. Not all ODA drivers support
setString() on a non-String type column. The format of the string parameter is
implementation-dependent.
Parameters columnName
The name of the column
value
The string value
Throws OdaException if a data source error occurs
IRowSet.setTime
Syntax public void setTime(int columnIndex, java.sql.Time value)
throws OdaException
Sets the time value at the specified column. Mandatory only for input parameters.
Implement this method when the driver supports the Time data type.
Parameters columnIndex
The 1-based index of the column
value
The java.sql.Time value
Throws OdaException if a data source error occurs
Syntax public void setTime(java.lang.String columnName, java.sql.Time value)
throws OdaException
Sets the time value at the column that is identified by name. Mandatory only for
input parameters that support setting columns by name. Implement this method
when the driver supports the Time data type.
Parameters columnName
The name of the column
value
The java.sql.Time value
Throws OdaException if a data source error occurs
IRowSet.setTimestamp
Syntax public void setTimestamp(int columnIndex, java.sql.Timestamp value)
throws OdaException
Sets the time stamp value at the specified column. Mandatory only for input
parameters. Implement this method when the driver supports the Timestamp
data type.
Parameters columnIndex
The 1-based index of the column
value
The java.sql.Timestamp value
Throws OdaException if a data source error occurs
Syntax public void setTimestamp(java.lang.String columnName,
java.sql.Timestamp value) throws OdaException
Sets the time stamp value at the column that is identified by name. Mandatory
only for input parameters that support setting columns by name. Implement this
method when the driver supports the Timestamp data type.
Parameters columnName
The name of the column
value
The java.sql.Timestamp value
Throws OdaException if a data source error occurs
IRowSet.size
Syntax public int size( ) throws OdaException
A mandatory method that returns the number of elements that are in this
collection
Returns The size of this collection
Throws OdaException if a data source error occurs
Interface IStatement
Syntax public interface IStatement
Description IStatement is the root interface in the statement hierarchy. A statement is any
string that is capable of returning data when it executes. You must always prepare
IStatement before you call execute( ). For example:
if ( statement.prepare( "SELECT * FROM TABLE" ) )
{
// prepare succeeded
statement.execute();
}
// else handle statement error
When an ODA driver or data source does not support a capability that a run-time
interface exposes, the implementation for the statement setter methods should
throw an UnsupportedOperationException. At a minimum, the message of the
UnsupportedOperationException should contain the name of the class and
method to provide the context of the exception, as shown in the following
example:
public class MyStatementClass extends IStatement
{
public void setInt( int parameterId, int value )
{
// is not supported by this Statement class
throw new UnsupportedOperationException
"MyStatementClass.setInt( int parameterId,
int value )" );
}
}
Method summary
Table 19-18 lists the methods for interface IStatement.
Table 19-18 Methods for interface IStatement
Method Description
clearInParameters( ) An optional method to reset all input parameters to
their default values.
close( ) A mandatory method that closes the current
statement.
(continues)
IStatement.clearInParameters
Syntax public void clearInParameters( ) throws OdaException
An optional method that resets all input parameters to their default values. If you
have used other IStatement methods, such as setInt( ), to set a new value for an
individual parameter, you can use this method to remove all changes from all
input parameters.
Throws OdaException if a data source error occurs
IStatement.close
Syntax public void close( ) throws OdaException
A mandatory method that closes this statement
Throws OdaException if a data source error occurs
IStatement.execute
Syntax public boolean execute( ) throws OdaException
IStatement.executeQuery
Syntax public com.actuate.oda.IResultSet executeQuery( ) throws OdaException
A mandatory method that executes the statement’s prepared query and returns a
single ResultSet object. Call this method only after you call prepare( ).
Returns An IResultSet instance
Throws OdaException if a data source error occurs
Syntax public com.actuate.oda.IResultSet executeQuery(java.lang.String command)
throws OdaException
An alternative to executeQuery( ), this method is equivalent to calling
prepare( command ) then executeQuery( ). This method executes the statement’s
query and returns a single ResultSet object. It is available only for drivers that do
not support input parameters.
Parameters command
The new query to associate with this statement
Returns An IResultSet instance
Throws OdaException if a data source error occurs
IStatement.findInParameter
Syntax public int findInParameter(java.lang.String parameterName)
throws OdaException
An optional method that returns the 1-based index of the specified input scalar or
structure parameter. Implement this method if the driver supports named input
parameters.
Parameters parameterName
The name of the input parameter
Returns The 1-based index of the named input parameter
Throws OdaException if a data source error occurs
IStatement.getMaxRows
Syntax public int getMaxRows( ) throws OdaException
Returns the maximum number of rows that can be retrieved from each result set
of this IStatement
Returns The maximum number of rows to retrieve from each result set
Throws OdaException if a data source error occurs
IStatement.getMetaData
Syntax public com.actuate.oda.IResultSetMetaData getMetaData( )
throws OdaException
Returns the metadata of the current result set for this prepared statementCall this
method only after you call prepare( ). If you call this method before the
IStatement is executed, the returned metadata refers to the first result set.
Returns An IResultSetMetaData instance
Throws OdaException if a data source error occurs
Syntax public com.actuate.oda.IResultSetMetaData getMetaData(java.lang.String
command) throws OdaException
Returns the metadata of the first result set for this IStatement with the specified
command. This method is equivalent to prepare( command ) then getMetaData().
Parameters command
The new command to associate with this IStatement
IStatement.getMoreResults
Syntax public boolean getMoreResults( ) throws OdaException
Moves the cursor to the IStatement’s next result set. This method also implicitly
closes the current IResultSet object that was obtained from the previous call to
getResultSet( ). Implement this method when the data source supports getting
multiple IResultSet objects from a single call to the IStatement.execute( ) method.
Returns True if there are more results in this IStatement instance
Throws OdaException if a data source error occurs
IStatement.getParameterMetaData
Syntax public com.actuate.oda.IParameterMetaData getParameterMetaData( )
throws OdaException
An optional method that returns the number, types, and properties of the current
prepared IStatement’s parameters. Call this method only after you call prepare( ).
Returns An IParameterMetaData object that contains information about the parameters of
this prepared IStatement
Throws OdaException if a data source error occurs
IStatement.getParameterType
Syntax public int getParameterType(int parameterId) throws OdaException
Returns the java.sql.Types type for the specified parameter. All java.sql.Types
data types, such as ARRAY, INTEGER, and STRUCT, are valid return values. An
ODA driver does not necessarily return all types. Implement getParameterType( )
when the driver supports input or output parameters.
Parameters parameterId
The 1-based index of the input or output parameter
Returns The type of the input or output parameter
Throws OdaException if a data source error occurs
Syntax public int getParameterType(java.lang.String parameterName)
throws OdaException
Returns the java.sql.Types type for the named parameter. All java.sql.Types data
types, such as ARRAY, INTEGER, and STRUCT, are valid return values. An ODA
provider does not necessarily return all types. Implement getParameterType( )
when the driver supports named input or output parameters.
Parameters parameterName
The name of the input or output parameter
Returns The java.sql.Types type of the input or output parameter
Throws OdaException if a data source error occurs
IStatement.getResultSet
Syntax public com.actuate.oda.IResultSet getResultSet( ) throws OdaException
Returns the current result as an IResultSet object instance. Call this method only
once for each result set and only when the data source supports getting multiple
IResultSet objects from a single call to the IStatement.execute( ) method.
Returns An IResultSet object instance
Throws OdaException if a data source error occurs
IStatement.getSortSpec
Syntax public SortSpec getSortSpec( ) throws OdaException
Returns the sort specification that is associated with this IStatement
Returns The SortSpec that is associated with this IStatement or null if no SortSpec is
associated
Throws OdaException if a data source error occurs
IStatement.prepare
Syntax public void prepare(java.lang.String command) throws OdaException
A mandatory method that determines whether the command is a valid form of
the implemented IStatement class. The command to perform this verification
cannot be empty or null.
Parameters command
The String to check
Throws OdaException if a data source error occurs
IStatement.setBigDecimal
Syntax public void setBigDecimal(int parameterID, BigDecimal value)
throws OdaException
Sets the designated parameter to the specified decimal value
Parameters parameterId
The 1-based index position of the input parameter
value
The decimal value
Throws OdaException if a data source error occurs
IStatement.setDate
Syntax public void setDate(int parameterId, java.sql.Date value) throws OdaException
Sets the specified input parameter to a Date value. Implement this method when
the driver supports the Date data type and input parameters.
Parameters parameterId
The 1-based index of the input parameter
value
The java.sql.Date value
Throws OdaException if a data source error occurs
Syntax public void setDate(java.lang.String parameterName, java.sql.Date value)
throws OdaException
Sets the named parameter to a Date value. Implement this method when the
driver supports the Date data type and named input parameters.
Parameters parameterName
The name of the input parameter
value
The java.sql.Date value
Throws OdaException if a data source error occurs
IStatement.setDouble
Syntax public void setDouble(int parameterId, double value) throws OdaException
Sets the specified parameter to a double value. Implement this method when the
driver supports the double data type and input parameters.
Parameters parameterId
The 1-based index of the input parameter
value
The double value
Throws OdaException if a data source error occurs
Syntax public void setDouble(java.lang.String parameterName, double value)
throws OdaException
Sets the named parameter to a double value. Implement this method when the
driver supports the double data type and named input parameters.
Parameters parameterName
The name of the input parameter
value
The double value
Throws OdaException if a data source error occurs
IStatement.setInt
Syntax public void setInt(int parameterId, int value) throws OdaException
Sets the specified parameter to an integer value. Implement this method when the
driver supports the Integer data type and input parameters.
Parameters parameterId
The 1-based index of the parameter
value
An integer value
Throws OdaException if a data source error occurs
Syntax public void setInt(java.lang.String parameterName, int value)
throws OdaException
Sets the named parameter to an integer value. Implement this method when the
driver supports the integer data type and named input parameters.
Parameters parameterName
The name of the parameter
value
An integer value
Throws OdaException if a data source error occurs
IStatement.setMaxRows
Syntax public void setMaxRows(int max) throws OdaException
Specifies the maximum number of rows that can be fetched in each result set of
this IStatement. A value of zero means that there is no limit.
Parameters max
The maximum number of rows to fetch
Throws OdaException if a data source error occurs
IStatement.setProperty
Syntax public void setProperty(java.lang.String name, java.lang.String value)
throws OdaException
Sets the named property to the specified value. setProperty( ) supports multiple
calls that use the same property name. The processing of this method is
implementation-dependent. Call setProperty( ) before you call execute( ) or
executeQuery( ).
Parameters name
The name of the property
value
The value to set to the named property
Throws OdaException if a data source error occurs
See also IStatement.setPropertyInfo
IStatement.setPropertyInfo
Syntax public void setPropertyInfo(java.util.Properties info) throws OdaException
Set the property values for this IStatement. setPropertyInfo( ) supports
associating a single property name with a single property value. The processing
of this method is implementation-dependent. Call setPropertyInfo( ) before you
call execute( ) or executeQuery( ).
Parameters info
A list of arbitrary string tag-value pairs
Throws OdaException if a data source error occurs
See also IStatement.setProperty
IStatement.setSortSpec
Syntax public void setSortSpec(SortSpec sortBy) throws OdaException
Specifies the sort specification for this IStatement. Call this method before the
IStatement is executed or before getMoreResults( ) is called.
After you call setSortSpec( ), you can add additional sort keys. The final sort
specification is applied to the result set or sets at execution.
The ODA driver must validate the type of sort specifications that the data source
supports.
Calling setSortSpec( ) with a null argument clears the previously associated
SortSpec. If no sort specification is set, the rows of a result set have an
implementation-specific order, and the getSortSpec( ) method returns null.
Parameters sortBy
The sort specification to associate
Throws OdaException if the specified sort specification is not valid or is not supported by
the driver
IStatement.setString
Syntax public void setString(int parameterId, java.lang.String value)
throws OdaException
Sets the specified parameter to the given string value. Not all open data sources
or drivers support setString( ) on a non-String type parameter. Implement this
method when the driver supports the String data type and input parameters. The
format of the string parameter is implementation-dependent.
Parameters parameterId
The 1-based index of the parameter
value
A String value
Throws OdaException if a data source error occurs
Syntax public void setString(java.lang.String parameterName, java.lang.String value)
throws OdaException
Sets the parameter that is identified by name to the given string value. Not all
open data sources or drivers support setString( ) on a non-String type parameter.
Implement this method when the driver supports the String data type and named
input parameters. The format of the string parameter is implementation-
dependent.
Parameters parameterName
The name of the parameter
value
A String value
Throws OdaException if a data source error occurs
IStatement.setTime
Syntax public void setTime(int parameterId, java.sql.Time value)
throws OdaException
Sets the specified parameter to a Time value. Implement this method when the
driver supports the Time data type and input parameters.
Parameters parameterId
The 1-based index of the parameter
value
The java.sql.Time value
Throws OdaException if a data source error occurs
Syntax public void setTime(java.lang.String parameterName, java.sql.Time value)
throws OdaException
Sets the parameter that is identified by name to a Time value. Implement this
method when the driver supports the Time data type and named input
parameters.
Parameters parameterName
The name of the parameter
value
The java.sql.Time value
Throws OdaException if a data source error occurs
IStatement.setTimestamp
Syntax public void setTimestamp(int parameterId, java.sql.Timestamp value)
throws OdaException
Sets the specified parameter to a Timestamp value. Implement this method when
the driver supports the Timestamp data type and input parameters.
Parameters parameterId
The 1-based index of the parameter
value
The java.sql.Timestamp value
Throws OdaException if a data source error occurs
Syntax public void setTimestamp(java.lang.String parameterName,
java.sql.Timestamp value) throws OdaException
Sets the parameter that is identified by name to a Timestamp value. Implement
this method when the driver supports the Timestamp data type and named input
parameters.
Parameters parameterName
The name of the parameter
value
The java.sql.Timestamp value
Throws OdaException if a data source error occurs
Class Level
Syntax public final class Level extends Object
Description Level indicates a log level. Use log levels to limit the types of records that are
logged. When you specify a log level, you limit the records that are logged to only
those that are at the specified log level or higher.
The log level is an integer value that is identified by one of the following
constants, which are listed in increasing numerical value:
■ ALL
■ FINEST
■ FINER
■ FINE
■ CONFIG
■ INFO
■ WARNING
■ SEVERE
■ OFF
Constructor
Syntax public Level(java.lang.String name, int value)
Constructs a Level instance that has the specified name and log-level value
Parameters name
The name of the Level instance
value
The log-level value
Field summary
Table 19-19 lists the fields for class Level.
Table 19-19 Fields for class Level
Field Description
ALL A constant that indicates the value of the ALL log level.
This constant is a very large negative number to ensure
that it is below any other constants that are used as
log-level values.
Method summary
Level.equals
Syntax public Boolean equals(java.lang.Object obj)
Checks whether the current Level instance has the same log-level value as the
Object that is passed in as a parameter
Parameters obj
The Object to compare
Returns True if the two objects have the same log-level value
Level.getName
Syntax public java.lang.String getName( )
Gets the log-level name for the current Level instance
Returns A string that contains the log-level name
Level.hashCode
Syntax public int hashCode( )
Generates and returns a hash code that is based on the log-level value
Returns The integer value of the generated hash code
Level.intValue
Syntax public int intValue( )
Gets the log-level value of the current Level instance
Returns An integer that indicates the log-level value
Class LogFormatter
Syntax public abstract class LogFormatter extends Object
Description LogFormatter is an abstract class that converts log records to formatted strings
based on rules that are specified in format( ). The default formatter class,
SimpleFormatter, implements this class. All custom formatter classes must:
■ Inherit from the LogFormatter class
■ Implement the format( ) method
■ Be included in the DriverLibraries section of the driver’s configuration file,
odaconfig.xml
Constructor
Syntax protected LogFormatter( )
Constructs a LogFormatter object
Method summary
Table 19-21 describes the method for class LogFormatter.
Table 19-21 Method for class LogFormatter
Method Description
format( ) Format the specified log record into a string.
LogFormatter.format
Syntax public abstract String format(LogRecord record)
Formats the specified log record as a string
Parameters record
The log record to format
Returns The formatted string
Example public String format(LogRecord record)
{
return ret;
}
Class Logger
Syntax public class Logger extends Object
Description Logger supports logging messages for an application. Create a logger using
LogManager.createLogger( ).
Constructor
Syntax protected Logger(java.lang.String loggerName)
Use LogManager.createLogger instead of this constructor to create a Logger.
Method summary
Table 19-22 lists the methods for class Logger.
Table 19-22 Methods for class Logger
Method Description
config( ) Logs a CONFIG-level message.
fine( ) Logs a FINE-level message.
finer( ) Logs a FINER-level message.
finest( ) Logs a FINEST-level message.
getHandler( ) Gets the associated Handler for this logger.
getLevel( ) Gets the log level that is required to log a message with
this Logger.
getName( ) Gets the name of this Logger.
info( ) Logs an INFO-level message.
isLoggable( ) Checks whether this logger can log an error or
information at the specified level.
log( ) Logs a message at the specified level.
log( ) Logs an exception at the specified level.
setHandler( ) Sets the Handler for this Logger.
setLevel( ) Sets the level that is required to log messages with this
Logger.
severe( ) Logs a SEVERE-level message for an error.
severe( ) Logs a SEVERE-level message for an error or
exception.
warning( ) Logs a WARNING-level message.
Logger.config
Syntax public void config(java.lang.String message)
Logs a CONFIG-level message
Parameters message
The message to log
Logger.fine
Syntax public void fine(java.lang.String message)
Logs a FINE-level message
Parameters message
The message to log
Logger.finer
Syntax public void finer(java.lang.String message)
Logs a FINER-level message
Parameters message
The message to log
Logger.finest
Syntax public void finest(java.lang.String message)
Logs a FINEST-level message
Parameters message
The message to log
Logger.getHandler
Syntax protected Handler getHandler( )
Gets the associated Handler
Returns The associated Handler
Logger.getLevel
Syntax public Level getLevel( )
Gets the log level that is specified for the Logger
Returns The associated Level
Logger.getName
Syntax public java.lang.String getName( )
Gets the name of the Logger
Returns The name of the Logger
Logger.isLoggable
Syntax public boolean isLoggable(Level level)
Checks whether this logger can log the specified log level. If the Logger’s log
level is OFF, no log level is loggable, because OFF is the highest level. For more
information, see Class Level, earlier in this chapter.
Returns True if the specified log level is higher or equal to the Logger’s level
Logger.info
Syntax public void info(java.lang.String message)
Logs an INFO-level message
Parameters message
The message to log
Logger.log
Syntax public void log(Level level, java.lang.String message)
Logs a message at the specified level
Parameters level
The log level of the log message
message
The message to log
Syntax public void log(Level level, java.lang.Throwable thrown)
Logs an error or exception at the specified level
Parameters level
The log level of the log message
throwable
The error message or exception to log
Logger.setHandler
Syntax protected void setHandler(Handler handler)
Sets the associated Handler
Returns The Handler to use with this Logger
Logger.setLevel
Syntax public void setLevel(Level level)
Sets the log level that is specified for the Logger
Returns The log level required to log messages with this Logger
Logger.severe
Syntax public void severe(java.lang.String message)
Logs a SEVERE-level error message
Parameters message
The message to log
Logger.warning
Syntax public void warning(java.lang.String message)
Logs a WARNING-level message
Parameters message
The message to log
Class LoggingErrorHandler
Syntax public class LoggingErrorHandler extends Object
Description You can associate a LoggingErrorHandler with a Handler or an instance of a
Handler subclass. The LoggingErrorHandler processes any exceptions that occur
during logging. Without a LoggingErrorHandler, the log caller is not notified of
errors that occur during logging. After you create a LoggingErrorHandler, use
Handler.setLoggingErrorHandler( ) to associate the LoggingErrorHandler with
the appropriate Handler.
Constructor
Syntax public LoggingErrorHandler( )
Creates a LoggingErrorHandler instance
Field summary
Table 19-23 lists the fields for class LoggingErrorHandler.
Table 19-23 Fields for class LoggingErrorHandler
Field Description
CLOSE_FAILURE A constant that indicates failure while closing an
OutputStream.
FLUSH_FAILURE A constant that indicates failure while flushing an
OutputStream.
FORMAT_FAILURE A constant that indicates failure while formatting.
GENERIC_FAILURE A constant that indicates a type of failure that is not
covered by the other constants.
OPEN_FAILURE A constant that indicates failure while opening an
OutputStream.
WRITE_FAILURE A constant that indicates failure while writing an
OutputStream.
Method summary
Table 19-24 describes the method for class LoggingErrorHandler.
Table 19-24 Methods for class LoggingErrorHandler
Method Description
error( ) Outputs the message, exception, and error code to
System.err when a failure occurs.
LoggingErrorHandler.error
Syntax public void error(java.lang.String message, java.lang.Exception exception, int
errorCode)
Outputs the message, exception, and error code to System.err when a failure
occurs. The error code is one of the following constants: CLOSE_FAILURE,
FLUSH_FAILURE, FORMAT_FAILURE, GENERIC_FAILURE, OPEN_FAILURE,
WRITE_FAILURE. For more information about these constants, see the field
summary for this class.
Parameters message
The error message
errorCode
The error code constant
exception
The exception that caused the Handler to fail
Class LogManager
Syntax public static class LogManager extends Object
Description LogManager is a class to that maintains a set of Loggers. You can use
LogManager to create and retrieve Loggers. You can use related classes to log
information to the Loggers. To use LogManager, the ODA driver must specify the
<TraceLogging> element in its configuration file, odaconfig.xml.
Method summary
Table 19-25 lists the methods for class LogManager.
Table 19-25 Methods for class LogManager
Method Description
createLogger( ) Returns a Logger that has the specified name and
necessary log configuration information.
getLogFileName( ) Deprecated. Examine the odaconfig.xml file for the
prefix and log directory that was used to create log
file names.
getLogger( ) Returns a new Logger that has the specified name
and log configuration information or returns an
existing Logger that has the specified name and
updated log configuration information.
getLogLevel( ) Deprecated. Use Logger.getLevel( ).
logConfig( ) Deprecated. Use Logger.config( ).
logException( ) Deprecated. Use Logger.exception( ).
logFine( ) Deprecated. Use Logger.fine( ).
logFiner( ) Deprecated. Use Logger.finer( ).
logFinest( ) Deprecated. Use Logger.finest( ).
logInfo( ) Deprecated. Use Logger.info( ).
logSevere( ) Deprecated. Use Logger.severe( ).
logWarning( ) Deprecated. Use Logger.warning( ).
setLogConfiguration( ) Deprecated. Use LogManager.getLogger( ).
LogManager.createLogger
Syntax public Logger createLogger(java.lang.String loggerName, int logLevel,
java.lang.String logDirectory, java.lang.String logPrefix, java.lang.String
formatterClassName) throws IllegalArgumentException
Creates a Logger that has the specified name and the specified log configuration
information. Specify a name that is appropriate to the application using the log to
avoid name collision. Each logger must have a unique name, because the
LogManager manages the loggers by name. For example, use javax.sql as the
name of a logger for a javax.sql package.
The format of the log file names is <logPrefix>-YYMMDD-hhmmss.log.
If you do not specify a formatterClassName or provide a null value, the default
LogFormatter class is used to convert log records to formatted strings. If you
create a custom log formatter, the class must inherit from
com.actuate.oda.logging.LogFormatter and implement format( ) as specified for
LogFormatter.format( ).
Parameters formatterClassName
The name of the logFormatter class to use
logDirectory
The directory in which to store the log files
loggerName
The name of the logger to create
logLevel
The log level that is required for messages to be logged
logPrefix
The required file-name prefix for the log-file name
Returns The created Logger instance
Throws IllegalArgumentException if a Logger of that name already exists
LogManager.getLogger
Syntax public static Logger getLogger(java.lang.String loggerName)
Gets the existing Logger with the specified name
Parameters loggerName
The name of the logger to create
Returns The Logger instance with the specified name, or null if no Logger with that name
exists
Syntax public static Logger getLogger(java.lang.String loggerName, int logLevel,
java.lang.String logDirectory, java.lang.String logPrefix, java.lang.String
formatterClassName)
If no Logger has the specified name, getLogger( ) creates the Logger with the
specified name and log configuration information. If a Logger with the specified
name exists, getLogger( ) updates the Logger with the specified log configuration
information. The Logger continues to use the same log files unless you specify a
different log directory or log prefix.
Parameters formatterClassName
The name of the logFormatter class to use
logDirectory
The directory to store the log files
loggerName
The name of the logger to create
logLevel
The log level that is required for messages to be logged
logPrefix
The required file-name prefix for the log-file name
Returns The created or updated Logger instance that has the specified name
Class LogRecord
Syntax public class LogRecord extends Object implements Serializable
Description LogRecord contains information that a Logger can log
Constructor
Syntax public LogRecord(Level level, java.lang.String message)
Constructs a LogRecord instance
Parameters level
The level of the log message
message
The message to log
Method summary
Table 19-26 lists the methods for class LogRecord.
Table 19-26 Methods for class LogRecord
Method Description
getLevel( ) Gets the log level.
getMessage( ) Gets the log message.
getMillis( ) Gets the log time.
getThrown( ) Gets the associated error or exception.
setLevel( ) Sets the log level to the specified level.
setMessage( ) Sets the log message to the specified value.
setMillis( ) Sets the log time to the specified value.
setThrown( ) Sets the specified error or exception.
LogRecord.getLevel
Syntax public Level getLevel( )
LogRecord.getMessage
Syntax public String getMessage( )
Gets the log message of the log record
Returns A String that contains the log message
LogRecord.getMillis
Syntax public long getMillis( )
Gets the log time of the log record
Returns The log time
LogRecord.getThrown
Syntax public java.lang.Throwable getThrown( )
Gets the error or exception of the log record
Returns A Throwable instance for the error or exception
LogRecord.setLevel
Syntax public void setLevel(Level level)
Sets the log level for the log record
Parameters level
The log level
LogRecord.setMessage
Syntax public void setMessage(java.lang.String message)
Sets the log message for the log record
Parameters message
The log message
LogRecord.setMillis
Syntax public void setMillis(long millis)
Sets the log time of the log record
Parameters millis
The log time
LogRecord.setThrown
Syntax public void setThrown(java.lang.Throwable thrown)
Sets the error or exception for the log record
Parameters thrown
The Throwable for the error or exception
Class OdaException
Syntax public class OdaException extends Exception
Description An exception that provides information about a data source access error or other
errors. An open data access exception communicates errors from the data source
driver to the Actuate design tool or Actuate iServer. Each OdaException provides
the following information:
■ A string that describes the error. This string is the Java Exception message,
which you can retrieve using getMessage( ).
■ A SQLSTATE string, which follows the conventions of either XOPEN
SQLSTATE or SQL 99. Use IDataSourceMetaData.getSQLStateType( ) to
determine whether the driver returns XOPEN or SQL 99.
■ An integer error code that is specific to each vendor. The underlying data
source returns this error code.
OdaException inherits from java.lang.Exception.
External Actuate’s open data access framework recognizes only OdaException and
exceptions RuntimeException. An open data source implementation can contain code that
throws other exceptions, such as ParseException or IOException. To make these
types of exceptions available to the Actuate design tool or Actuate iServer,
complete the following tasks in this order:
■ Catch the exception.
■ Construct an OdaException.
■ Call OdaException.initCause( ).
■ Pass in the exception.
Localizing OdaException provides a basis exception class for describing data source errors
exceptions but does not provide a mechanism for localizing the messages. An ODA driver
must provide its own message localization, if localization is required. The driver
can pass localized messages into the OdaException instance or localize the
message another way. You can create an exception subclass from OdaException to
support message localization. For example, a subclass can have the following
constructor:
public MyOdaExceptionSubClass( int errorCode,
Locale locale );
MyOdaExceptionSubClass.getLocalizedMessage can look up the error message
that is associated with the error number.
Non- When an ODA driver or data source does not support a capability that a run-time
supported interface exposes, the implementation for the statement setter methods should
operations throw an UnsupportedOperationException. At a minimum, the message of the
Constructors
Syntax public OdaException( )
Constructs an OdaException object where the message defaults to null,
SQLSTATE defaults to null, and vendorCode defaults to 0
Syntax public OdaException(java.lang.String message)
Constructs an OdaException object with a message. The SQLSTATE defaults to
null, and vendorCode defaults to 0.
Parameters message
A description of the exception
Syntax public OdaException(java.lang.String message, java.lang.String sqlState)
Constructs an OdaException object with a message and SQLSTATE. The
vendorCode defaults to 0.
Parameters message
A description of the exception
sqlState
An XOPEN or SQL 99 code that identifies the exception
Syntax public OdaException(java.lang.String message, java.lang.String sqlState,
int vendorCode)
Constructs a fully specified OdaException object
Parameters message
A description of the exception
sqlState
An XOPEN or SQL 99 code that identifies the exception
vendorCode
An exception code that the data source vendor specifies
Method summary
Table 19-27 lists the methods for class OdaException.
Table 19-27 Methods for class OdaException
Method Description
getCause( ) Returns the cause of this OdaException or null if the
cause is nonexistent or unknown.
getErrorCode( ) Returns the vendor-specific exception code for this
OdaException object.
getNextException( ) Returns the OdaException that is chained to this
OdaException object.
getSQLState( ) Returns the SQLSTATE of this OdaException object.
initCause( ) Initializes the cause of this OdaException to the
specified value.
setNextException( ) Adds an OdaException object to the end of the
OdaException chain.
OdaException.getCause
Syntax public java.lang.Throwable getCause( )
Returns the cause of this OdaException or null if the cause is nonexistent or
unknown
Overrides getCause in class Throwable
Returns The cause of this OdaException or null if the cause is nonexistent or unknown
OdaException.getErrorCode
Syntax public int getErrorCode( )
Returns the vendor-specified exception code for this OdaException object
Returns The vendor’s error code
OdaException.getNextException
Syntax public com.actuate.oda.OdaException getNextException( )
Returns the OdaException that is chained to this OdaException object
Returns The next OdaException object in the chain or null if there are none
OdaException.getSQLState
Syntax public java.lang.String getSQLState( )
Returns the SQLSTATE of this OdaException object
Returns The SQLSTATE value
OdaException.initCause
Syntax public java.lang.Throwable initCause(java.lang.Throwable cause)
throws IllegalArgumentException, IllegalStateException
Initializes the cause of this OdaException to the specified value. Call this method
only once.
Overrides initCause in class Throwable
Parameters cause
The cause of this OdaException. A null value indicates that the cause is
nonexistent or unknown.
Returns A reference to this OdaException
Throws java.lang.IllegalArgumentException if the cause is this OdaException, or
IllegalStateException if this method has already been called on this OdaException
OdaException.setNextException
Syntax public void setNextException(com.actuate.oda.OdaException nextException)
Adds an OdaException object to the end of the OdaException chain
Parameters nextException
The new OdaException object to add to the OdaException chain
Class SimpleFormatter
Syntax public class SimpleFormatter extends LogFormatter
Description Formats the information that is provided in the LogRecord
Constructor
Syntax public SimpleFormatter( )
Constructs a SimpleFormatter instance
Method summary
Table 19-28 describes the method for class SimpleFormatter.
Table 19-28 Method for class SimpleFormatter
Method Description
format( ) Creates a formatted String that contains the
information in the LogRecord.
SimpleFormatter.format
Syntax public java.lang.String format(LogRecord record)
Creates a formatted String that contains the information in the LogRecord
Specified format in class LogFormatter
by
Parameters record
The LogRecord to format
Returns The formatted String
Class SortSpec
Syntax public class SortSpec extends Object
Description A class that encapsulates one or more sort keys to associate with an IStatement.
This association enables an ODA host to dynamically specify how to sort one or
more individual result set columns. This ability is particularly useful for data
sources that do not accept sorting specifications, such as an ORDER BY clause, in
the command text. Sort modes provide information about the types of sorting
that are available. You can extend this class to provide additional ways to handle
sort modes and keys.
Constructor
Syntax public SortSpec(int sortMode)
Constructs a SortSpec instance that is based on the sortMode. The sort mode can
be one of the following constants:
■ sortModeColumnOrder
■ sortModeNone
■ sortModeSingleColumn
■ sortModeSingleOrder
For more information about these constants, see the Field summary section of the
IDataSourceMetaData interface.
Parameters sortMode
The sort mode
Field summary
Table 19-29 lists the fields for class SortSpec.
Table 19-29 Fields for class SortSpec
Fields Description
sortAsc A constant that indicates ascending sort order.
sortDesc A constant that indicates descending sort order.
Method summary
SortSpec.addSortKey
Syntax public void addSortKey(java.lang.String columnName, int sortOrder)
Adds a sort key to specify the dynamic sort criteria for ODA providers that
support one of the following sort modes:
■ sortModeColumnOrder
■ sortModeNone
■ sortModeSingleColumn
■ sortModeSingleOrder
An IllegalStateException is thrown if the specified sort key does not conform to
the sortMode of the SortSpec.
The sort criteria are specified using an ordered list of one or more sort keys. Data
is sorted primarily by the first sort key. Within each first sort key value, the data is
sorted by the second sort key, and so on. For each sort key, specify the column
name and a sort-order constant. Sort-order constants are either sortAsc or
sortDesc. For more information about the sort-order constants, see the Field
summary section of this class.
Parameters columnName
The name of the result set column to sort
sortOrder
The value that represents the sort order
Throws ■ IllegalArgumentException if columnName is empty or if sort order is not one
of the sort order constants
■ IllegalStateException in the situations that are described in Table 19-31
Table 19-31 Exceptions raised when adding sortMode
sortMode Exception that is raised by attempting to add
sortModeNone Any sort key.
sortModeSingleColumn A second sort key.
sortModeSingleOrder A sort key with a sort order that doesn’t match the
sort order of any existing sort keys.
SortSpec.getSortColumn
Syntax public java.lang.String getSortColumn(int index)
Returns the result set column name of the sort key at the specified index position.
The index starts at position one.
Parameters index
The index of the sort key
Returns The name of the result set column for the specified sort key
Throws IndexOutOfBoundsException if the index is less than one or greater than the
number of sort keys
SortSpec.getSortColumns
Syntax public java.lang.String[] getSortColumns
Returns an array of all column names in the sort keys of a SortSpec instance with
a sortModeSingleOrder sort mode
Returns An array of column names if the SortSpec instance has sort keys or an empty
array if the SortSpec instance does not have sort keys
SortSpec.getSortKeyCount
Syntax public int getSortKeycount( )
Returns the number of sort keys that are associated with the SortSpec instance
Returns The number of sort keys that are associated with the SortSpec instance
SortSpec.getSortMode
Syntax public int getSortMode( )
Returns the sort mode of this SortSpec. The sort mode is one of the
IDataSourceMetaData sortMode field values:
■ sortModeColumnOrder
■ sortModeNone
■ sortModeSingleColumn
■ sortModeSingleOrder
Returns Returns the sort mode of the SortSpec
SortSpec.getSortOrder
Syntax public int getSortOrder( )
Returns the sort order for all sort keys of a SortSpec instance with
sortModeSingleOrder sort mode. Sort order constants are either sortAsc or
sortDesc.
Returns The sort order that is specified for the SortSpec instance, or sortAsc if no sort
order is specified for the SortSpec instance
Throws IllegalStateException if the mode of the Sort Spec instance is not
sortModeSingleOrder
Syntax public int getSortOrder(int index)
Returns the sort order for the sort key at the index position. The index starts at
position 1.
Parameters index
The index position of the sort key
Returns The sort order that is specified for the sort key at the index position
Throws IndexOutOfBoundsException if the index is less than one or greater than the
number of sort keys
SortSpec.toString
Syntax public java.lang.String toString( )
Returns a string representation of the SortSpec
Returns A string representation of the SortSpec
Class StreamHandler
Syntax public class StreamHandler extends Handler
Description StreamHandler obtains records from a Logger and outputs them to a stream
Constructor
Syntax public StreamHandler( )
Constructs a StreamHandler with no output stream
Syntax public StreamHandler(OutputStream output, LogFormatter formatter)
Constructs a StreamHandler with the specified output stream and LogFormatter
Parameters formatter
The LogFormatter to use to format the records
output
The output stream to use to publish records
Method summary
Table 19-32 lists methods for class StreamHandler.
Table 19-32 Methods for class StreamHandler
Method Description
close( ) Closes the current StreamHandler and frees up
resources that the StreamHandler uses.
finalize( ) Cleans up the StreamHandler by calling
StreamHandler.close( ).
flush( ) Flushes the buffered output to the output stream.
isLoggable( ) Checks whether to log the specified record and
whether the StreamHandler has an associated output
stream.
publish( ) Formats and publishes the specified record.
setFormatter( ) Sets the LogFormatter.
setLevel( ) Sets the Level.
setOutputStream( ) Sets the output stream.
StreamHandler.close
Syntax public void close( )
Closes the current output stream
StreamHandler.finalize
Syntax public void finalize( )
Cleans up this StreamHandler by calling StreamHandler.close( )
StreamHandler.flush
Syntax public void flush( )
Flushes the buffered output to the output stream
Specified flush in class Handler
by
StreamHandler.isLoggable
Syntax public boolean isLoggable(LogRecord record)
Checks whether to log the specified record by determining whether the record
has a sufficiently high log level, the record passes the associated Filter, and the
StreamHandler has an associated output stream.
Overrides isLoggable in class Handler
Parameters record
The log record to check
Returns True to log the record
StreamHandler.publish
Syntax public void publish(LogRecord record)
Publishes a record to the appropriate destination if it has a sufficiently high log
level, passes any associated Filter, and the StreamHandler has an associated
output stream. Publish( ) also formats the record, if necessary.
Specified publish in class Handler
by
Parameters record
The log record to format and publish
StreamHandler.setFormatter
Syntax public void setFormatter(LogFormatter formatter)
Sets the formatter that will format the log records. If the formatter is null,
SimpleFormatter is the default formatter.
Overrides setFormatter in class Handler
Parameters formatter
The formatter to set
StreamHandler.setOutputStream
Syntax public void setOutputStream(OutputStream outStream)
Sets the output stream
Parameters outStream
The output stream
Class StringSubstitutionUtil
Syntax public final class StringSubstitutionUtil extends Object
Description StringSubstitutionUtil supports locating embedded delimited strings and
replacing them with different strings. Strings can be substituted by index position
or by name.
Typically this class is used to identify and replace parameters. For example, if
variables are identified by a preceding colon, such as :MyVariable,
StringSubstitutionUtil can replace :MyVariable with the string that was defined to
replace that variable name.
Method summary
Table 19-33 lists methods for class StringSubstitutionUtil.
Table 19-33 Methods for class StringSubstitutionUtil
Method Description
getDelimitedStringCount( ) Returns the number of delimited strings in the
text argument.
substituteByIndex( ) Substitutes strings based on their index positions.
substituteByName( ) Substitutes strings based on their names.
StringSubstitutionUtil.getDelimitedStringCount
Syntax public static int getDelimitedStringCount(java.lang.String text, java.lang.String
startDelimiter)
Returns the number of named and unnamed delimited strings in the text
argument. An unnamed delimited string consists of only the delimiters. A named
delimited string has a start delimiter that is followed immediately by a name and
optionally by an end delimiter. Use this syntax if your named delimited string is
not marked by an end delimiter. For example, if the start delimiter is ?, ? is an
unnamed delimited string, and ?parameter1 is a named delimited string.
Parameters startDelimiter
The string that contains the delimiter
StringSubstitutionUtil.substituteByIndex
Syntax public static java.lang.String substituteByIndex(java.lang.String text,
java.lang.String startDelimiter, List substitutionList)
Finds strings that are marked by a start delimiter, and substitutes them based on
their position in the text. Each string is replaced by the corresponding string in
the indexed substitution list. A startDelimiter cannot be preceded by an
alphanumeric character, an underscore, or an escape character.
Parameters startDelimiter
The string that contains the delimiter that marks the beginning of the string to
replace
substitutionList
The list of values to substitute for the delimited strings
text
The string that contains delimited strings
Returns A String that contains the text with all delimited strings substituted
Throws NullPointerException if the text, startDelimiter, or substitutionList is null
Example If myList contains "ID" and "NAME":
substituteByIndex("SELECT STUDENT.:COLUMN, STUDENT.:COLUMN FROM
STUDENT", ":", MyList)
returns:
"SELECT STUDENT.ID, STUDENT.NAME FROM STUDENT"
Example If myList contains "1000" and "2000":
substituteByIndex("SELECT ID FROM CUSTOMER WHERE ID >=
:startRange AND ID <= :endRange", ":", MyList)
returns:
"SELECT ID FROM CUSTOMER WHERE ID >= 1000 AND ID <= 2000"
StringSubstitutionUtil.substituteByName
Syntax public static java.lang.String substituteByName(java.lang.String text,
java.lang.String startDelimiter, Map nameValues)
Finds strings that are marked by a start delimiter, and substitutes them based on
their name
Parameters nameValues
The map of pairs of names and values to use in substituting strings
startDelimiter
The string that contains the delimiter that marks the beginning of the string to
replace
text
The string that contains delimited strings
Returns A String that contains the text with all delimited strings substituted
Throws NullPointerException if the text, startDelimiter, or nameValues is null
Example If myMap specifies the following pairs:
PARAM, "PEOPLE"
PARAM1, "NAME"
then:
substituteByName("SELECT ?PARAM.?PARAM1 FROM ?PARAM","?",
myMap)
returns:
"SELECT PEOPLE.NAME FROM PEOPLE"
Example If myMap specifies the following pairs:
startRange, "1000"
endRange, "2000"
then:
substituteByName("SELECT ID FROM CUSTOMER WHERE ID >=
:startRange AND ID <= :endRange",":", myMap)
returns:
"SELECT ID FROM CUSTOMER WHERE ID >= 1000 AND ID <= 2000"
Syntax public static java.lang.String substituteByName(java.lang.String text,
java.lang.String startDelimiter, java.lang.String endDelimiter, Map
nameValues)
Finds the beginning and end of strings that are marked by delimiters, and
substitutes them based on their name
Parameters endDelimiter
The string that contains the delimiter that marks the end of the string to replace
nameValues
The map of pairs of names and values to use in substituting strings
startDelimiter
The string that contains the delimiter that marks the beginning of the string to
replace
text
The string that contains delimited strings
Returns A String that contains the text with all delimited strings substituted
Throws NullPointerException if the text, startDelimiter, endDelimiter, or nameValues is
null
Example If myMap specifies the following pairs:
PARAM, "PEOPLE"
PARAM1, "NAME"
then:
substituteByName("SELECT :PARAM:.:PARAM1: FROM :PARAM:", ":",
":", myMap)
returns:
"SELECT PEOPLE.NAME FROM PEOPLE"
Example If myMap specifies the following pair:
number, "1000"
then:
substituteByName("SELECT ID FROM CUSTOMER WHERE ID =
<start>number<end> AND SID =
<start>number<end>","<start>","<end>", myMap)
returns:
"SELECT ID FROM CUSTOMER WHERE ID = 1000 AND SID <= 1000"
Index 565
AcOdaConnection class 386, 402 naming 155, 156
AcOdaInterfaces.jar 391 restrictions for 189
AcOdaSource class 386, 402 setting properties for 156–157
AcODBCConnection class 100 viewing properties for 156
AcOracleConnection class 100 add method 505
AcSAPRfmSource class 280 Add new slice to Group dialog box 253
AcSingleInputFilter class 35 Add to new group command 252
AcSQLQuerySource class 163 adding
AcSqlQuerySource class 161 aggregate functions 119, 121, 371
AcTextQuerySource class 161 columns
Actuate Basic to data rows 70
accessing stored procedures with 194–203 to designs 65
creating locale-specific reports and 429 to queries 116, 119, 132, 352
customizing data sources and 41 components 6, 97
developing with 30 conditions
implementing custom drivers with 386 to filters. See filter conditions
mapping variable types for 195 to queries 123–129, 151, 154, 155
throwing errors and 543 configuration files to designs 17
Actuate Data Integration Service Connection connections 5, 8, 25, 96
option 289, 290 controls to frames 184
Actuate Data Integration Service Data Source custom data source builders 387
option 289, 291 custom data sources 40, 79
Actuate Foundation Class Library 30 data filters 49, 50, 51, 53
Actuate Foundation Classes 100 data row variables 39, 65
See also classes data sources 25
Actuate SQL 340, 345 default connections 20, 22
See also SQL statements dynamic filters 314–316
Actuate SQL compiler 309 formulas 118, 119, 121
Actuate SQL data types 355, 356 functions to expressions 295
Actuate SQL expressions. See SQL functions to queries 341
expressions libraries to configurations 386
Actuate SQL grammar 345, 346 ODA drivers 386
Actuate SQL identifiers 352 parameters to expressions 150
Actuate SQL keywords 351 parameters to queries 323, 341, 356
ad hoc data access 288 sorting criteria 42, 43, 550
ad hoc data filters stored procedures 177–179, 183
See also information objects tables to queries 109, 112, 341
applying 430 titles to reports 148
defining conditions for 313, 319, 321 addition operator 359
deleting 313, 322 AdditiveExpression declaration (SQL) 347
ad hoc parameters addSortKey method 550
See also ad hoc data filters AddToDriver property 408
adding to queries 154, 155, 156, 347 Adhoc Conditions page (Textual Query
assigning values to 125, 311, 319 Editor) 156
changing properties for 154 Adhoc Parameters page (Textual Query
creating 153, 155 Editor) 156
filtering data with 154, 155 AdHocParameter declaration (SQL) 347
Index 567
Auto Contents group (Properties page) 74, connecting to 284
337 developing queries for 462
Auto Joins command 109 displaying information about 272
Automatic element 432 displaying parameters for 273, 274
AutoSort value 42 locating 268, 269, 270
averages 371 selecting 268
AVG function 371 BapiAxisDataFetchSize property 256, 258
axes BapiFsDataFetchSize property 256, 258
See also MDX queries BAPIs (business object APIs) 255, 256, 257
adding attributes to 225, 228 See also BAPI data sources
adding cross-products to 229–230 BASC keyword (MDX queries) 246
building data sets for 226 base64 encoding 447
changing type 232 BDESC keyword (MDX queries) 246
creating 225–228 BETWEEN operator 358
defining multiple 227 BEx queries. See MDX queries; SAP BW BEx
deleting 236, 245, 248 Query Builder
filtering values on 247, 248, 249, 251 BigDecimal values 506, 518
including empty members in 233, 236 binary large object values. See BLOB values
laying out reports and 239–242 binary streams 459
moving 232 BindColumn method 195
removing cross-products from 230, 231 BindDataRow method 243, 264
restricting members returned for 247 BindParameter method 164
selecting data for 225 Blank Report option 259
sorting values on 245, 246, 247 blank values 137
Axes page (SAP BW BEx Query Builder) BLOB data type 459
accessing 226 Blob element
defining cross-products on 229 OdaDataType type 438
defining SAP BW axes on 226 OdaScalarDataType type 439
filtering empty members on 236 BLOB values 459, 460, 464, 494
laying out reports and 239 Blocked layout style 241
moving axes on 232 Boolean values 362
removing cross-products on 231 See also conditional expressions
removing data sets on 237 brackets ([ ]) characters
removing properties on 238 MDX queries and 253
removing SAP BW axes and 236 SAP Variables and 244
axis (defined) 220 Browser page (SAP R/3 Data Source
Axis element 442 Builder) 268, 271, 272, 273
AxisType element 426 buffered output 555
AxisType type 425 Builder icon 119
BuildFromRow method 38
B building reports. See creating reports;
backing up report files 166 designing reports
backslash (\) character 364 business names (MDX queries) 223, 224
balloon help 443 business object APIs. See BAPIs
BAPI data sources business objects
See also SAP R/3 data sources See also BAPI data sources
changing parameters for 275 changing parameters for 275
Index 569
Check Stored Procedure setting 188 SAP R/3 Data Source Builder 268
Choose Axis for Order Clause dialog box 246 statements 513
Choose Axis to Filter on dialog box 248, 250 text files 84
Choose Database page 20, 25 code
Choose Layout Style page 239 See also Actuate Basic
class files 391 accessing text files and 5, 83
class libraries 30 creating locale-specific reports and 429
class loader conflicts 411 customizing data streams and 34
Class Variable dialog box 51, 79, 81, 262 executing stored procedures and 199
class variables 262, 263 filtering data and 46, 49
classes implementing custom drivers with 386
connection components and 100 referencing column names in 105, 141
custom drivers and 450 sorting data and 43
data row components and 36 throwing errors and 543
design components and 30 verifying input values with 154
development environment for 30 code points 357
ODA drivers and 386, 387, 390, 391 collections
ODA Java reference for 451 adding rows to 504, 505
reusing 386 getting data source objects for 484
ClassName property 408 getting size 510
CLASSPATHs 410 removing elements in 505
clear method 505 testing for elements in 506
Clear Query icon 133, 254 colon (:) character 150
clearInParameters method 513 parameter names and 312
client software 8, 95 query statements and 151, 155
Clipboard 131 SAP Variables and 244
CLOB data type 460 column aliases
Clob element changing 304
OdaDataType type 438 information objects and 306
OdaScalarDataType type 439 restrictions for 332
CLOB values 461, 465, 494 SQL queries and 352
close method column axes 225, 227, 229
FileHandler 453 See also axes; MDX queries
Handler 456 Column command 227
IConnection 474 Column Editor
IResultSet 493 accessing 68, 70
IStatement 513 changing columns with 68
StreamHandler 555 changing queries and 140
CLOSE_FAILURE constant 535 overview 65
closing setting column attributes in 66, 70
connections 100, 474 column headers 184
data adapters 34 column headings
files 34 data rows and 66
Information Object Query Builder 293 result sets and 443
input adapters 36 SAP BW reports and 225
output streams 555 Column Name property 156
SAP BW BEx Query Builder 217, 254 column names
Index 571
Columns page (Textual Query Editor) 141 concatenation operator 363
COM interfaces 220 Conceal Value property 327
comma (,) character 78, 315 concurrent connections 8
Command element 389, 427 CondExpr declaration (SQL) 347
command line arguments (ODA drivers) 388, Condition command 248
409, 422 conditional expressions 155, 347, 350
comma-separated values files. See CSV files See also Boolean values
comments 352 conditional sections 7, 60
commit method 474 ConditionalPrimary declaration (SQL) 347
Compare method 45 conditions
CompareKeys method 46 See also filter conditions
comparison operators 358 adding to queries 123–129
comparisons 46, 105, 357, 358 aggregating data and 123, 127, 128, 129
compiler 309 applying at run time 127
Complex type (SAP Variables) 244 creating joins and 306
component libraries 25 defining output columns and 303
Component Object Models. See COM deleting from queries 126, 127, 128, 129
interfaces joins and 306
component palettes. See Toolbox placing on row retrieval 123, 126, 127
Component Properties dialog box 9 queries and 314
components removing join 308
See also specific type running stored procedures and 189
accessing data and 5 Conditions page (Query Editor)
adding 6, 97 defining ad hoc parameters on 154
developing 30 defining conditions on 125, 126
instantiating 33 deleting conditions from 126, 127
publishing 7 CONFIG constant 525
referencing 25, 33 CONFIG level messages 531
saving 60 config method 531
subclassing 25 CONFIG_LEVEL constant 525
computed columns. See computed fields ConfigKey property 24
computed data row variables 39, 65, 66, 67 Configuration file for connections
Computed Field command 118 parameter 23
computed fields 305, 318 configuration files
building expressions for 67, 119 See also configurations
changing attributes of 65 accessing ODA 392
creating 39, 116, 118–119 accessing sample 15
defining for information objects 374 adding data sources to 396
deleting 123 changing 387, 397
entering expressions for 305 creating 15, 393, 396
grouping on 318 defining schemas for 397
naming 118 elements in 16, 19, 23, 24
restrictions for 374 including in designs 17
setting conditions for 128 installing 387, 396
sorting on 317 loading 387, 393
computed values. See calculations overview 12
concatenation 346, 363 removing from designs 14
Index 573
adding to frames 184 input parameters 195, 434
changing data row types and 66 joins 112, 113, 306–308, 309
prompting for input and 314, 316, 324, list of values 314, 316
433, 435 MDX queries 220, 221, 223, 226
setting values for 38 multi-table reports 50
ControlTextBox value 433, 435 ODA drivers 386
ControlType element 435 ODBC data sources 91
conversions 407 ODS data sources 261
converting character case 363 Oracle stored functions 189
converting graphical queries to textual 134– Oracle stored procedures 188, 189
136, 162 output parameters 195, 440
copying parameterized queries 341, 356
query statements 131 predefined connections 12
report files 166 predefined data sources 25, 396
copyright information 419 query data sources 97–99
CopyrightNotice element 419 report parameters 148, 153
cost-based optimization (joins) 378–380, 381 report titles 148
COUNT function 371, 376 SAP login configurations 208, 209, 215
counting non-null values 371 sort filters 45, 144
CPointer data type 199, 200 SQL queries. See queries
crashes 255 statement objects 475
Create New Data Source dialog box 93 subqueries 354–355
createLogger method 392, 538 summary data 120, 121
createStatement method 475 textual queries 99, 104, 131–134
creating union filters 53
aggregate expressions 120, 121 criteria. See conditions
aggregate filters 319, 320, 321, 322 cross tabulation. See crosstabs
aggregate rows 120–123 Crossjoin with Set… command 229
application logger 530 cross-products 229–232, 238
class variables 262 See also MDX queries
computed data row variables 39 crosstab headings 225
computed fields 39, 116, 118–119 Crosstab layout style 241
conditional expressions 128, 129 crosstabs
configuration files 15, 393, 396 defining default layout for 426
connections 8–9, 30, 90 SAP BW data sources and 241, 242
crosstabs 225, 241, 242 CSV files
custom data source builder 387 accessing data in 78
custom data sources 40, 47, 79, 396 closing 84
custom drivers 386, 450 customizing data sources for 79
data adapters 31, 33, 36 defining data row variables for 81
data filters 50 displaying data from 83, 85
data rows 36 opening 84
database cursors 195 retrieving data from 83
dynamic data filters 314–316 cubes. See data cubes
executable files 59 Currency data type 196
graphical queries 99, 105 current date and time 368
input filters 49 CURRENT_DATE function 368
Index 575
specifying slices for 251–253 changing column properties from 67
data dictionary 112, 165, 168 changing display names and 139
data filter classes 35 displaying data rows with 63
data filter components removing columns with 72
adding to data streams 31, 35 reordering columns from 63
adding to designs 47, 49 selecting columns with 70
as transient objects 31 Data Row Editor command 63
changing methods for 33 data row objects 36, 195
defined 6 See also rows
data filters data row variables
adding to queries 314 adding to designs 65
aggregating data and 319, 321, 322 binding columns to 36, 195
creating dynamic 314–316 changing 65
defining parameters as 148, 249, 311 creating computed fields with 39, 65, 116
getting 456 defined 36
placing on information objects 311, 315 defining for
predefining 311 custom data sources 34, 41
prompting for input and 314, 316 SAP BW ODS data sources 259, 262, 263
removing ad hoc 313 text file data sources 81
removing aggregate 321, 322 displaying 63, 141
removing dynamic 313 getting column names for 501
removing static 312 setting column attributes for 66
setting at run time 148, 247, 248, 344 setting data types for 66
setting control type for 316 viewing attributes of 65
setting default values for 316 data rows. See rows
setting log handler 458 data sets
Data Integration Option 48 See also result sets
Data Integration Service Connection adding measures to 226
option 289, 290 building for
Data Integration Service Data Source SAP BW data sources 225, 226
option 289, 291 combining 229
data object executable files 59 defined 220
See also information objects deleting 237
Data Preview page (Information Object including empty members in 233, 236
Query Builder) 302, 334 placing cross-products in 229–230
data providers 220 removing cross-products and 230, 231
See also SAP BW InfoProviders removing empty members in 235
data row components removing properties for 238
See also rows specifying slices for 251
adding to designs 97, 98, 262 data source builder. See ODA data source
as transient objects 31 builder
customizing 37 Data Source command 221
defined 6 data source components
displaying 63 See also data sources
placing variables in 65 adding to configuration files 25
Data Row Editor adding to report sections 100
accessing 63 as transient objects 31
Index 577
creating SQL queries and 138, 355 instantiating data row objects for 36
defining information object parameters joining multiple tables in 113
and 323, 327 limiting rows returned from 123
defining SAP BW variables and 244 logging into 96
displaying output column 332 removing obsolete tables in 172
filtering data and 313 restricting data retrieval from 148
getting native data source 141 retrieving data from 90
mapping external 393, 406 retrieving distinct values from 303
mapping to running consistency checks for 168
native data source types 66 selecting tables from 106, 109
Oracle databases 189 setting paths for 167
maximum precision allowed for 490 sorting data from 42, 142
synchronizing queries and 166 synchronizing stored procedures in 176,
data warehouses 243 188
Database Browser 106, 108, 109 updating 171
database clients 8, 95, 167 verifying connections for 167
Database Connection command 25, 95 DataDirect drivers 94
database connection components 5, 7, 8 DataFont property 73, 74, 336
See also connection components DataRow components. See data row
Database Connection dialog box 25, 26 components
database connection types 95 DataSource components. See data source
database cursors components
associating with class variables 263 DataSource element 407
closing 493 DataSource type 406
creating 195 DataSources element 414
defined 100 DataSources type 407
executing queries and 164 DataStream components. See data stream
moving 499, 505, 506, 516 components
opening 34 DataStreamDefinition element
setting position of 491 DesignSessionRequest type 388, 389, 428
Database Login dialog box 9, 133 DesignSessionResponse type 388, 389,
database schemas 390, 429
accessing data and 90 DataStreamDefinition type 426
determining if current 169 DataType declaration (SQL) 347
updating 165, 168 DataType element
database servers. See servers InputFieldDefinition type 433
databases InputParameterDefinition type 435
See also data sources DataTypeMapping element 406, 407, 408, 437
accessing data in 34, 90, 100, 104 DataTypeMappings type 407
accessing with stored procedures 176 DataValue variable 37
calling stored procedures in 176, 177, 194 Date data type 196, 507, 518
choosing 25, 94 Date element
connecting to 7, 25, 95, 96, 100 OdaDataType type 438
creating queries for 104, 160, 344 OdaScalarDataType type 439
displaying stored procedures in 180, 182 date stamps 367, 368, 369, 370
filtering data from 35, 148 DATEADD function 368
installing localized 92 DATEDIFF function 369
Index 579
DesignerSpecificType element 408 See also MDX queries
designing reports 4, 14 creating SAP BW axes and 225
See also designs filtering 247, 249
DesignLibrary property 409 selecting 223
designs directory paths
See also page layouts component libraries and 20
accessing configuration files 14
ODA data sources and 387, 390, 426 connection configurations and 18
SAP BW data sources and 208 custom drivers and 394
accessing stored procedures for 177–179, data source drivers 168
183 executable files 410
adding file-based data sources 167
connections to 20, 22, 23 information objects 314, 352
SAP BEx queries to 214 log files 418
SAP BW ODS data streams to 259 ODA design tools 409
building computed values for 39 ODA drivers 393, 412
building custom data sources and 388 disconnecting from databases 100
creating xvii disjunction 362
creating connections in 7–9, 96 Disk-based Data Row Sorter setting 45
creating SQL queries and 98 Display Control Type property 328
defining alternative data types for 407, 413 Display Format property 305, 328
developing 30 display formats. See formats; formatting
including configurations in 17 Display length field 141
installing custom drivers for 386, 393 Display Length property 305, 328
migrating to production environments 24 Display Name property 305, 328, 396
referencing components in 33 display names
referencing data sources in 167 See also DisplayName element
removing default configurations for 14 column headings 66
retrieving data for 9 columns 139
sample configurations for 15 control types 316
saving 40 data source lists 396, 406
selecting data sources for 25, 83, 386, 396 ODA connections 405
viewing data row variables in 63 ODA input parameters 433, 436
DesignSessionRequest element 388, 389 ODA output parameters 439
DesignSessionRequest type 428 property values 416
DesignSessionResponse element 388, 390 result set column names 431, 443
DesignSessionResponse type 429 structure or table parameters 278
design-time interface 390, 409, 414 DisplayFormat element 442
DesignTimeInterface element 388, 414 displaying
DesignTimeInterface type 409 business objects 268, 269
Details page (SAP R/3 Data Source column names 172
Builder) 276, 278, 282 connection properties 9, 178
developing reports 13, 42 data 58, 110, 117
development environment 30 data row variables 63, 141
DimensionAttribute element 425 data rows 58, 59, 60, 62
DimensionMember element 425 default values 137
dimensions error messages 300
Index 581
duplicate rows 303 encapsulated SQL queries 288
dynamic data filters 311, 313, 314–316, 344 encoding 447
Dynamic list of values setting 316, 325 Encyclopedia volumes 292
dynamic sorting 41, 42 accessing information objects in 288, 296,
DynamicCondition element 436 302, 352
DynamicConditionReference type 430 updating 296, 302
DynamicQuery type 430 equality comparisons 358
DynamicValueList element 436 equality operator 306, 307
equals method 526
E equi-joins 113
e.Analysis 305 equijoins 310
e.Report Designer 386 error codes 536, 543
e.Report Designer Professional error constants 535
conditionalized queries and 123, 125 error messages
custom drivers and 386 See also errors
data-processing functionality for 30 connecting to data sources and 100
JVM heap size for 255 creating 543
nonstandard installations and 167 displaying 300
ODA data sources and 387 logging 533, 534
sample configuration file for 13 outputting 536
SAP BW BEx Query Builder and 217 error method 536
SAP R/3 Data Source Builder and 268 errors
supported connections for 8 See also exceptions
supported data sources for 9 failed connections and 100
supported databases for 176 information object queries and 300
synchronization tools in 165 log records and 541, 542
text file data sources and 5, 83 LoggingErrorHandler and 457, 458, 535
undefined parameters and 149 MDX queries and 254
verifying input and 154 ODA data sources and 543
e.reporting servers. See iServer; servers out-of-memory 254, 255
e.Spreadsheet Designer SAP BW data sources and 254, 255, 256
custom drivers and 386 SAP data sources and 267, 284
ODA data sources and 387 SQL queries and 122
SAP BW BEx Query Builder and 217 unsupported methods and 450
e.Spreadsheet reports. See spreadsheet escape characters 350, 364
reports ESCAPE keyword 364
e.Spreadsheet server. See iServer example ODA driver 386
Edit SQL button 332 exception class 543
Edit SQL tab 135 exceptions
Editable value 444 See also errors
editors 15 getting 541
See also specific Actuate editor initializing 546
elements (XML) 404, 422 logging 533, 534, 535
Enable Group By and Having editors outputting 536
setting 122 providing information with 543
EnableCBO pragma 378, 379 returning cause of 545
throwing 542
Index 583
changing data row variables and 62 prompting for 247, 248, 250, 344
changing default values for 39 removing from queries 312, 314
comparing values in 46 setting default values for 247, 248
defining class variables for 81 Filter Empty Members setting 233, 236
displaying database 110 filter expressions 247, 248, 249, 251
displaying variables for 82 See also MDX queries
limiting number returned 9 Filter interface 453
restricting retrieval of 148 Filter property 311
retrieving with data row variables 36 filter specification. See filter expressions
selecting 19, 70 FilterClause declaration (SQL) 347
specifying as primary keys 114 FilterEmptyMeasures property 233, 234, 235
Fields command 82, 183 filtering business objects 270
Fields dialog box 82 filtering data
file DSNs 91, 92 databases and 148
file names 79, 80, 83 graphical queries and 152, 154
file numbers 79 guidelines for 46
file paths. See paths information objects and 148, 310, 311, 319
file-based databases 167 input sources and 31, 35, 47
FileHandler class 391, 452 multiple data sources and 48
files non-sequential data streams and 34
See also specific file type ODA data sources and 430
accessing ODA data sources and 386 ODBC data sources and 148
backing up 166 SAP BW data sources and 236
closing 34 SAP BW InfoProviders and 247–251
configuring environments and. See SQL queries and 105, 135, 148
configuration files text file data sources and 85
copying report 166 textual queries and 151
creating configuration 393, 396 filters
loading configuration 13 See also data filter components
saving temporary 388 adding to queries 314
specifying connection properties in 12 aggregating data and 319, 321, 322
Filter class 391 creating 6, 46, 50, 53
filter classes 35 creating dynamic 314–316
filter conditions customizing 34, 36, 49
See also filtering data; filters defining conditions for. See filter
adding to graphical queries 152, 154 conditions
adding to MDX queries 247 defining parameters as 148, 151, 154, 249,
adding to textual queries 151, 155 311
aggregating data and 320, 321, 322 getting 456
creating for information objects 311 instantiating data rows for 36
creating for SAP InfoProviders 247 overview 35
creating with Actuate SQL 314 placing on information objects 311, 315
defining 311, 313, 314 predefining 311
defining ad hoc 154, 155 prompting for input and 314, 316
defining static 149, 151, 152 removing ad hoc 313
deleting 314 removing aggregate 321, 322
linking 311 removing dynamic 313
Index 585
functions ICallStatement 465
See also methods IResultSet 495
aggregation and 371 getDelimitedStringCount method 557
current user and 372 getDouble method
numeric data types and 360 ICallStatement 466
SQL queries and 295, 341 IResultSet 495
stored procedures and 181 getDriverMajorVersion method 479
string data types and 362 getDriverMinorVersion method 479
substrings and 364, 366 getDriverName method 480
summary data and 119 getDriverVersion method 480
timestamp values and 367 getErrorCode method 546
fundamental data types. See data types getFilter method 456
getFormatter method 456
G getHandler method 532
General command (Options) 13 getInt method
General page (Options) 13 ICallStatement 467
generating IResultSet 496
error messages 100 getLevel method
executable files 59 Handler 456
reports 5 Logger 532
GENERIC_FAILURE constant 535 LogRecord 540
getBigDecimal method getLogger method 539
ICallStatement 464 getLoggingErrorHandler method 457
IResultSet 493 getMaxConnections method 480
getBinaryStream method 459 getMaxRows method 515
getBlob method getMaxStatements method 480
ICallStatement 464 getMessage method 541
IResultSet 465, 494 getMetaData method
getBytes method 459 IConnection 475
getCause method 545 IResultSet 496
getCharacterStream method 461 IStatement 515
getColumnCount method 501 getMetaDataOf method 467
getColumnDisplayLength method 501 getMillis method 541
getColumnLabel method 501 getMoreResults method 516
getColumnName method 502 getName method
getColumnType method 502 Level 526
getColumnTypeName method 502 Logger 532
getConnection method getNextException method 546
IConnectionFactory 477 getOdaMajorVersion method 481
IConnectionMetaData 479 getOdaMinorVersion method 481
IDataSourceMetaData 483 GetOutputParameter method 195, 200
getDataSourceMajorVersion method 484 getParameterCount method 489
getDataSourceMinorVersion method 484 getParameterMetaData method 516
getDataSourceObjects method 484 getParameterMode method 489
getDataSourceProductName method 485 getParameterType method
getDataSourceProductVersion method 485 IParameterMetaData 490
getDate method IStatement 516
Index 587
returning distinct values for 303 IdentifierNativeTypeCode element 430
returning from queries 344 identifiers (SQL) 346, 351, 352
viewing available columns for 318 IDriver interface 450
GUIs. See user interfaces illegal characters 352
import parameter types 276, 277, 279
H import parameters (SAP data) 275, 276, 279,
Handler class 391, 455 280
Has Null property 305 IN operator 359
hashCode method 526 Include element (configurations) 17
HAVING clause 127, 319, 344, 348 Indexed property 305
See also SQL statements indexes (SQL queries) 380, 381
Having page (Information Object INFO constant 525
Editor) 320, 321 INFO level messages 532
Having page (Information Object Query info method 532
Builder) 319, 320, 321, 322 INFO_LEVEL constant 525
Having page (Query Editor) InfoObjects. See information objects
displaying 128 InfoProviders (SAP BW)
removing conditions from 128, 129 accessing 221
setting conditions on 123, 125, 128, 129 filtering data from 247–251
HavingClause declaration (SQL) 348 querying 214, 221, 242, 251
Heading element 443 retrieving data from 222, 247
Heading property 305, 328 selecting 222, 223
heap 255 troubleshooting memory problems
Help Text property 305, 328 with 254–258
HelpText element 443 Information Object Data Source Editor 292
hidden parameters 278, 328 Information Object Designer
Hide report parameter setting 278 accessing SAP data sources and 253
hierarchies (MDX queries) 245, 246 creating queries and 254, 325, 344
hints 372 multiple data sources and 48
Horizontal Alignment property 305, 328 Information Object Editor
HorizontalAlignment element 443 creating joins with 306
HorizontalAlignment type 432 defining output columns and 303
filtering data with 310, 314, 320
I grouping data with 318, 319
removing filter conditions with 312, 314,
IBlob interface 458 321
ICallStatement interface 391, 462 Information Object Query Builder 295
IClob interface 460 accessing 293
IConnection interface 391, 392, 473 changing queries with 331
IConnectionFactory interface 476 creating joins and 306
IConnectionMetaData interface 391, 478 creating joins with 306, 310
IConnectionMetaData method 450 creating queries with 294, 297, 300, 331
icons 30, 189 defining output columns and 303
IDataSourceMetaData interface 392, 481 defining parameters with 323, 329, 330
IDataSourceMetaData method 450 filtering data with 319, 320, 321
Identifier element 430 filtering information objects and 310, 311,
IDENTIFIER token (SQL) 346 313
Index 589
accessing multiple 31 invalid values 137, 154, 499
filtering data in 31, 35, 46, 47 IParameterMetaData interface 392, 487
opening 34 IParameterMetaData method 450
retrieving data from 31, 36 IResultSet interface 392, 491
sorting data in 49 IResultSetMetaData interface 392, 500
InputFieldDefinition element 422 IRowSet interface 392, 504
InputFieldDefinition type 432 IS NOT NULL operator 362
InputParameterDefinition element 423 IS NULL operator 362
InputParameterDefinition type 434 IsDefault attribute (configurations) 20, 22
InputParameters element 389, 427 IsDefault property 20
installation isEmpty method 506
configuration files 387, 396 IsEnabled element 431
localized databases 92 iServer
nonstandard locations 167 See also servers
ODA drivers 386, 387, 393–394 accessing information objects and 289
SAP GUI clients 208 defining connections for 7
SAP Java Connector libraries 208, 209, 266 installing custom drivers for 393, 396
SAP MetaData Interface 266 installing ODA drivers for 393
INTEGER data type 355, 356 iServer Explorer 297
Integer data type 196, 508, 519 IsHidden element
Integer element InputFieldDefinition type 434
OdaDataType type 438 InputParameterDefinition type 436
OdaScalarDataType type 439 isLoggable method
INTEGER_LITERAL token (SQL) 346 Filter 454
integers Handler 457
See also numbers Logger 532
arithmetic operations and 359 StreamHandler 555
getting 467, 496 isNullable method
setting values for 508, 519 IParameterMetaData 491
SQL conventions for 346, 355 IResultSetMetaData 503
Integration service isOpened method 475
calculating data and 359 IsPassword element 436
comparing values and 357, 358 IsRequired element
connecting to 289 InputFieldDefinition type 434
defining joins and 310 InputParameterDefinition type 436
running queries and 344 IStatement interface 392, 511
interfaces Item command 226, 228
See also user interfaces Items command 227
custom drivers and 387, 388, 450
ODA drivers and 391, 450 J
ODA Java reference for 451 Java classes 450
predefined data sources and 386 Java Connector libraries 209
InterfaceType element 417 Java interfaces 391, 450
InterfaceType type 411 Java Metadata Interface (SAP data) 266
international reporting solutions. See locales Java Object Interface 255
intValue method 527 Java Virtual Machines. See JVMs
invalid expressions 154
Index 591
loading logging levels 456, 458, 524
configuration files 13, 387, 393 logging package 417, 418, 477
custom data drivers 393 LoggingErrorHandler class 392, 535
ODA driver libraries 417 logical operators 362
text files 84 logical values 362
local connections 5 See also Boolean values
local parameters 149, 185, 329 login failures 441
locales login information 267
developing user interfaces for 390, 445 LoginFailed element 441
installing localized databases for 92 LogLevel element 418
specifying 429 LogManager class 392, 537
locating LogRecord class 392, 540
business objects 268, 269, 270 Long data type 196
embedded strings 557 LOWER function 105, 363
stored procedures 182 lowercase conversions 363
Location element 412 LTRIM function 366
log files
configuring 418, 477 M
creating error handler for 535 mandatory variables (SAP BW) 242, 244
filtering 453, 456, 458 mapping
formatting records for 528, 548 ODA data types 393, 406, 407, 412, 437,
getting logging level for 541 438
getting messages in 541 SAP parameters 279
publishing records to 453, 454, 457 mapping variable types 195
running SAP BW BEx queries and 256 maps (information objects) 288, 352
setting formatter for 458, 556 matching character patterns 315, 341, 364
setting logging levels for 541 mathematical operators 359
streaming records for 554 matrix reports. See crosstabs
writing application messages to 530 MAX function 371
log handler 455 Max memory per query parameter 310
log method 533 maximum values 371
log records 528, 548 MDX (defined) 220
LogDirectory element 418 MDX page (SAP BW BEx Query Builder) 254
LogFilenamePrefix element 418 MDX queries
LogFormatter class 392, 528 accessing additional information for 221
LogFormatter objects 456 adding cross-products to 229–230
logger 392, 530 adding filter conditions to 247
Logger class 392, 530 adding slices to 251–253
Logger objects 537, 538, 540 changing 236
logging constants 524 clearing 254
logging error handler 535 comparing measures with 249
logging information (ODA creating 220, 221, 223, 226, 475
configurations) 392 defining axes values for 225–228, 239
logging into defining data sets for 220, 225, 226
databases 96 defining for InfoProviders 214, 221, 242,
SAP BW data sources 208, 209, 215, 222 251
SAP R/3 data sources 209, 222, 268
Index 593
multiplication 359 restrictions for 66
MultiplicativeExpression declaration Names options (Database Browser) 108
(SQL) 348 name-value pairs 424, 437, 440
multi-table queries 112, 113 NameValuePair element 423
multi-table reports 50 NameValuePair type 437
Multivalue type (SAP Variables) 244 naming
ad hoc parameters 155, 156
N aggregate expressions 121
Name element columns. See column names
DataSource type 406 computed fields 118
DataStreamDefinition type 427 custom drivers 394
InputFieldDefinition type 434 input parameters 185
InputParameterDefinition type 436 ODA drivers 414
NameValuePair type 437 ODBC data sources 94
ODA connections and 405 output columns 304
OutputFieldDefinition type 439 output parameters 328
Property type 440 report parameters 149
PropertyType type 416 result sets 390
ResultColumn type 443 SAP ODS data sources 262
ResultSetDefinition type 390, 444 static parameters 153
Name property 306, 328 table or structure parameters 278
name qualification options (Database tables 109
Browser) 108 native data types (Column Editor) 66
named parameters (SAP statements) 464, 487 native data types. See data types
NamedParameter declaration (SQL) 348 native database connection types 95
names native database drivers 94, 97
See also display names NativeDataType element 413
accessing data sources and 91 NativeDataTypeCode element 413
adding space separators to 155 NativeDataTypeType element 412
as SQL identifiers 352 NativeTypeCode element
changing display 139 OutputFieldDefinition type 439
changing stored procedure 182 ResultColumn type 443
changing table 171 NativeTypeName element
defaults for column and table 63 OutputFieldDefinition type 440
duplicating 304 ResultColumn type 443
duplicating parameter 149 NCHAR data types 189
duplicating table 109 negation 362
entering synonyms as 106 nested loop joins 310, 342
extracting IDs associated with 197 nested sections 60
generating input parameter variable 185 network connections 5
getting column 501, 502 NewConnection method 30
getting data source 485 next method 499
getting driver 480 NON EMPTY clause 233
getting Logger 532 non file-based databases 167
getting result set 468 non-formatted data 58
qualifying 132 non-null values 371
non-sequential data access 34
Index 595
getting session information for 428, 430 OdaScalarDataType type 413, 438
retrieving data for 428 ODBC administrator utility 91
setting application locale for 429 ODBC Data Source Administrator 92
ODA driver libraries 410 ODBC data sources
ODA drivers accessing 91
accessing configurations for 392, 393 accessing data in 90, 100, 104
accessing data with 386, 422 accessing stored procedures in 176
accessing sample 386 building queries for 104, 160
adding configuration files for 393 configuring 91, 92
backward compatibility for 415 connecting to 8, 26, 91, 95, 96, 100
building user interface for 388–389, 511 creating 91
calling statements for 462 defining run-time parameters for 150
changing configurations for 387, 397 displaying 92
configuring 396, 414 filtering data in 148
creating 386, 450 limiting rows returned from 123
customizing properties for 408 naming 94
debugging 388 restricting data retrieval from 148
defining connection information for 405, retrieving data from 9, 90
478 selecting 94
defining operating system for 415 setting paths for 167
defining schemas for 397, 404 specifying parameter type for 185
generating reports and 387, 391 updating schemas for 168
getting metadata for 475 verifying connections for 167
getting names 480 ODBC DBMS module 189
getting number of connections for 480 ODBC drivers 90, 93, 113
getting number of statements for 480 ODBC Microsoft Access Setup dialog box 93
getting version 479, 480 ODS data source components 261
installing 386, 387, 393–394 ODS data sources 261, 264
loading libraries for 417 ODS data streams 259–264
naming 394, 414 ODS objects 259, 262
overview 386 OFF constant 525
retaining temporary files for 388 OFF_LEVEL constant 525
running 387 Ok element 441
setting exceptions for 481, 511, 543, 544 OLAP data providers 220
setting logging configurations for 418, 477 OLAP terminology 220
specifying interface version for 393 OLE DB for OLAP specification 220
specifying language for 411 OnColumnLayout element 426
ODA Java reference 449, 451 Online Analytical Processing. See OLAP
ODA metadata interfaces 478, 481, 487, 500 OnRead method 34, 39
oda package 391 OnRow method 38
ODA run-time interface 417, 450, 481 open data access data drivers. See ODA data
odaconfig.xml 393, 397, 404 drivers
OdaDataType type 437 open data access data sources. See ODA data
OdaException class 392, 543 sources
OdaException objects 544 open database connectivity. See ODBC
ODAInterfaceVersion element 415 open method 476
OdaScalarDataType element 404, 413 OPEN_FAILURE constant 535
Index 597
determining if null values in 473 page layout styles 239
determining if supported 487 page layouts 58, 218, 239, 426
finding 464 See also designs
getting data source type 490 page numbers 73, 336
getting data type of 490, 516 PageDecorationFont property 73, 74, 336
getting date values in 466 paging 255
getting decimal values in 464 palettes. See Toolbox
getting number of 489 parallel sections 7, 60
getting numeric precision for 490 parameter definitions 185
getting numeric values in 466, 467 parameter information icon (SAP R/3
getting string values in 469 Builder) 273
getting structure values for 468 parameter mode constants 488, 489
getting time values for 470 Parameter Mode property 328
getting time values in 470 parameter passing 342
getting values of 195 Parameter Properties dialog box 80
listing definitions for 423, 424 Parameter Properties page 152, 156
overview 185 ParameterDeclaration declaration (SQL) 348
returning multiple result sets from 199, parameterized queries
200 See also stored procedures
returning specified 464 creating 341, 356
returning structure values for 468 defining parameters for 244, 322, 323, 341
returning time stamps for 470 filtering data with 151, 247, 344
setting decimal values for 518 getting number of parameters in 489
setting field definitions for 439 joining tables with 343
specifying as type 185 viewing parameters for 137
testing for 464 parameterModeIn constant 488
testing for null values in 473, 491 parameterModeInOut constant 488
output stream error constants 535 parameterModeOut constant 488
output streams parameterModeUnknown constant 488
closing 555 parameterNoNulls constant 488
flushing 456, 555 parameterNullable constant 488
setting 556 parameterNullableUnknown constant 488
writing log records to 554 parameters
OutputFieldDefinition element 423 accessing 392, 450
OutputFieldDefinition type 439 adding to expressions 150, 320
OutputParameterDefinition element 424 adding to queries. See parameterized
OutputParameterDefinition type 440 queries
OutputParameters element 389, 427 assigning data types to 149, 152, 323, 327
overriding methods 105 assigning values to 137, 278, 323, 330, 353
overriding report connections 12 binding to SQL statements 164
owner information 107 blank values and 137
Owner pattern match setting 108 changing business object 275
changing data types for 153
P changing display names for 278
page footers 73, 336 changing properties for 152, 154, 156, 329
page headers 73 connecting to ODA data sources and 386,
422
Index 599
predefined data drivers 386 data row columns 67, 141
predefined data sources 25, 386, 396 data source server connections 9
predefined databases 25 database connections 95, 97
predefined filters 311 fonts 73, 335
Prepare method 100, 199 information object parameters 324, 327
prepare method 517 information objects 73
Presorted setting 44, 144, 145 inheriting 329
presorting data 43, 44, 144 MDX queries 228
Preview Column Data button 117 name-value pairs for 424, 440
Preview Data command 133, 136 native data sources 422
Preview Data dialog box 110, 117 ODA data sources 389, 416, 426, 520
Preview Query Data dialog box 137 ODA data streams 426
Preview Table Data command 110 ODA statement objects 520
previewing data 110, 117, 160, 334 ODBC connections 9
previewing result sets 133, 136 output columns 304, 305, 333
previous method 506 prompt parameters 324, 325
primary keys 112, 113 run-time parameters 149
See also joins SAP BW connection components 257
primary result sets 282, 427 SAP BW data streams 256, 258
PrimaryExpression declaration (SQL) 348 SAP BW login configurations 211, 215, 261
PrimaryResultSet element 389, 427 SAP data sets 238
private properties 427 SAP login configurations 208, 210
PrivateConnectionProperties element SAP Variables 244
DesignSessionRequest type 389, 428 setting data source 21, 24
DesignSessionResponse type 390, 429 static parameters 152
PrivateProperties element 389, 427 stored procedures 178
privileges 289 table 112
procedures 189 textual queries and 134
See also methods Properties command 97
ProductName element 419 Properties element
programming environment 30 Connection type 405
Progress databases 8, 9 DataSource type 406
See also databases Properties page
Progress page (Information Object Query accessing 60
Builder) 302 changing font settings on 73, 336
Prompt editor 314, 316, 324, 325 creating custom data sources and 40
Prompt editor button 325 database connections and 26
prompting for input 149, 150, 316 defining input filters from 51
prompting for parameters 184, 324, 325, 329 setting database connections and 97
prompting for query expressions 153 setting information object properties 292
prompting for user input 149 setting SAP BW fetch size properties
prompting for user-specified values 150 on 257, 258
properties setting sorting options from 44, 45
See also Properties page Properties type 415
ad hoc parameters 154, 156 Property attribute (configurations) 20
custom data source builder and 387 Property element 412, 416, 424
custom drivers and 386, 422 property lists 408, 412
Index 601
query data source components 97, 98 QueryText element 431
query data sources question mark (?) character 155
accessing databases and 100 quotation mark characters. See double
accessing ODBC data sources and 100 quotation mark character; single quotation
adding 97–99 mark character
creating for textual queries 131
retrieving multiple tables and 50 R
query data streams 97, 214, 221 R/3 Basis software 266
Query Editor radio buttons 435
See also graphical queries; queries random data access 34
adding tables to 109 range of values 125
changing column order with 119 range test operator 358
changing data types with 119 read privilege 289
changing join operator for 114 read-only queries 43, 44
changing SQL statements with 115 ReadOnly value 444
changing table properties with 111 reconfiguring ODA drivers 387, 397
creating aggregate rows with 120 RecordDefinition element
creating computed fields with 118, 119 InputParameterDefinition type 436
creating joins with 113 OutputParameterDefinition type 440
creating queries with 36 records
defining ad hoc parameters with 154 See also rows
defining user-specified conditions copying values from 36
with 150 creating joins for 113
deleting joins from 115 determining logging status for 457
determining synchronization status 169 filtering 46
displaying data sources and owner formatting log file 528, 548
information for 107 getting formatter for 456
displaying query statements 130, 161 getting logging level for 456
freezing columns and rows in 110 grouping 122
opening 106 matching from multiple tables 112
overview 104, 106 outputting to specific destination 455
refreshing data dictionary for 168 publishing to log files 453, 454, 457
removing columns with 117, 122 retrieving 34, 100
removing conditions with 126, 127, 128, setting formatter for 458
129 sorting 42, 121
removing tables from 111 reducing JVM heap size 255
resizing columns for 110 REFCUR3.GETMGRDATA function 190, 191
selecting columns with 116 Reference names field 141
setting conditions with 126, 128, 129 references
setting Database Browser options for 108 aliases and 344
sorting with 143 column names and 105, 141
summarizing data with 121 component libraries and 25
verifying connection properties 167 database views and 341
query extensions 341 information objects and 264, 352
query operators. See operators pattern-matching and 341
QueryParameterDeclaration declaration report components and 33
(SQL) 348
Index 603
adding titles to 148 defining output columns for 303–304
changing default data access for 30 determining column axis type in 425
changing fonts for 73 duplicating dimensions and 225
creating for excluding SAP BW data for 244, 247, 251
custom data sources 42 filtering data for 311
data from multiple sources 48 getting column names for 551
information objects 289 getting columns in 493, 501, 502
ODA data sources and 428, 444 getting current 517
SAP BW data sources 214, 219, 239, 259 getting metadata for 467, 497, 515
stored procedure data sources 177, 183, getting names of 468
194 getting number of rows returnable 515
text file data sources 78, 83 getting sort order for 469
customizing 30 getting specified 468
designing. See designing reports; designs joining tables and 112, 342
generating 5 mapping data types to 138, 141
installing custom drivers for 387, 391 missing columns in 243
laying out 58 moving cursors in 491, 499, 516
overview 4 naming 390
presorting data for 44 previewing 133, 136
running 387 removing empty members for 235
selecting data for 9, 34, 123 removing output columns from 304
ReportType property 59, 60, 63 renaming stored procedures and 182
request and response streams 422, 428, 429 returning distinct values for 303
request-and-response formats 388, 393, 422 returning from
Requester dialog box 85, 149, 154 information objects 342
Requester page (Information Console) 125 ODA data sources 388, 389, 390, 392
required connections 5 ODS data sources 264
required data streams 177 Oracle data sources 188, 190
required parameters 137 SAP BW data sources 224, 225, 226, 244,
Required property 328 251
reserved words (Actuate SQL) 351 SAP R/3 data sources 276, 282
resizing columns 66, 105, 110, 141 stored functions 189
resources 14 stored procedures 181, 186, 195
response states (ODA) 441 returning multiple 190, 199–203, 486, 487,
ResponseState element 390, 430 516
ResponseState type 441 running queries for 100, 427, 514, 520
Result Columns page 181, 183 setting new rows for 471, 472
result set interface 491 setting number of rows returned 499, 520
result sets sorting data in 473, 549
accessing 450 sorting for
changing 138–141 SAP BW data sources 245–247
changing column order in 304 sorting from Textual Query Editor 144
closing cursors in 493 specifying as primary 282, 427
defining columns for 133, 424, 441, 444 specifying new rows for 471
defining metadata for 500 specifying tables for 472
defining multidimensional attributes summarizing data from 120
for 425 testing for null values in 499
Index 605
setting default values for 247, 248 SAP BW BEx Query Cubes 34
run-time interface (ODA) 417, 450, 481 See also data cubes
run-time parameters 504 SAP BW BEx Query data streams 214
run-time queries 126, 149, 153, 311, 341 SAP BW data sources
run-time values 149, 325 accessing 210
RunTimeInterface type 417 accessing data in 214
building crosstabs for 225, 241, 242
S building queries for 36
sample configuration file 13, 15 building reports for 214, 219, 225, 239, 259
sample databases 92 changing data layouts for 232
sample ODA driver 386 changing designs for 219
sample ODBC data sources 91 choosing layouts for 218, 239
Sample Parameter Values command 180, 181 clearing queries for 254
Sample Parameter Values dialog box 181, connecting to 8, 210, 215, 222, 257, 260
187, 188 customizing data streams for 34
sample values 180, 186 filtering data in 236, 247–251
sample_configuration_file.xml 15 limiting data returned from 220, 243
SAP BW BEx queries. See SAP BW BEx Query logging in to 208, 209, 215, 222
Builder retrieving data from 9, 210, 217, 223, 255
SAP BW BEx Query Builder selecting InfoProvider for 222, 223
See also MDX queries selecting queries for 224
building data sets for 224 setting up environments for 208
building queries with 214, 220, 221, 223, sorting result sets for 245–247
253 troubleshooting memory problems
clearing queries from 254 with 254–258
closing 217, 254 verifying queries for 254
defining axes values in 226 SAP BW data streams 255, 256, 258
defining cross-products in 229 SAP BW InfoProviders
defining slices with 251 accessing 221
defining variables with 243 filtering data from 247–251
deleting axes with 236 querying 214, 221, 242, 251
deleting data sets for 237 retrieving data from 222, 247
deleting properties with 238 selecting 222, 223
displaying MDX queries in 254 troubleshooting memory problems
displaying technical names in 224 with 254–258
filtering data with 248, 249, 251 SAP BW login configurations 208, 209, 215,
filtering empty members with 236 261
limiting data returned 220, 247, 251 SAP BW ODS data sources 261, 264
moving axes in 232 SAP BW ODS data streams 254, 259–264
opening 221, 239 SAP BW ODS objects 259, 262
removing cross-products with 230, 231 SAP BW ODS option 261
retrieving data with 217, 220, 223 SAP BW run-time log files 256
setting sort order from 245, 247 SAP connection components 210, 256, 257,
solving memory problems for 256 260
updating metadata for 224 SAP Connection option 260
viewing metadata and 223 SAP documentation 214, 223
SAP GUI clients 208
Index 607
Select Component dialog box 8, 96 SessionEditMode type 444
Select Database dialog box 94 SessionLocale element 390, 429
Select join type settings 308 SessionLocale type 445
select painter. See Query Editor setBigDecimal method
SELECT statements IRowSet 506
See also SQL statements IStatement 518
automatically generating 104, 130 SetClause declaration (SQL) 349
building manually 104, 131 setDate method
creating 131 IRowSet 507
creating joins with 343 IStatement 518
database cursors and 100 setDouble method
Describe Query operations and 133, 140 IRowSet 507
filtering data with 340, 344 IStatement 518
grouping data with 344 setFilter method 458
naming parameters for 153, 155 setFormatter method
nesting 127 Handler 458
obtaining 161, 163 StreamHandler 556
OrderBy property and 44 setHandler method 533
ordering data with 344 setInt method
parameter names in 155 IRowSet 508
type casting rules for 341 IStatement 519
Selection command 250 SetJavaThreadContextClassLoader
selection formulas. See parameters element 411
SelectItem declaration (SQL) 349 setLevel method
SelectList declaration (SQL) 349 Handler 458
SelectNameValueList element 436 Logger 533
SelectStatement declaration (SQL) 349 LogRecord 541
SelectValueList element setLogConfiguration method 392, 477
InputFieldDefinition type 434 setLoggingErrorHandler method 458
InputParameterDefinition type 436 setMaxRows method
PropertyType type 416 IResultSet 499
SelectWithoutFrom declaration (SQL) 349 IStatement 520
SelectWithoutOrder declaration (SQL) 349 setMessage method 541
semicolon (;) character 244 setMillis method 542
separators (numbers) 312, 323 setNewRow method 471
sequential sections 7, 60 setNewRowSet method 472
serial values 370 setNextException method 547
server login configurations 208, 210 setOutputStream method 556
server names 8 setProperty method 520
servers setPropertyInfo method 520
See also iServer sets (MDX queries) 220
connecting to 8, 9, 95, 97 See also data sets; result sets
logging in to SAP data sources and 208, setSortSpec method
210 ICallStatement 472
running textual queries and 133 IStatement 521
session state 431, 447 setString method
SessionEditMode element 429 IRowSet 508
Index 609
SortSpec class 392, 549 substrings and 364, 366
source code timestamp values and 367
See also Actuate Basic SQL identifiers 352
accessing text files and 5, 83 SQL keywords 351
creating locale-specific reports and 429 SQL operators 341, 358
customizing data streams and 34 See also operators
executing stored procedures and 199 SQL page (Query Editor) 130, 161
filtering data and 46, 49 SQL parameters 322–324
implementing custom drivers with 386 SQL Preview page 301
referencing column names in 105, 141 SQL Preview page (Information Object Query
sorting data and 43 Builder) 332, 340
throwing errors and 543 SQL statements
verifying input values with 154 See also queries
Source parameter field 329, 330 adding column names to 352
source parameters 328–330 adding conditions to 151, 154, 155
space characters. See white space characters adding filters to 311, 319, 344
special characters adding functions to 119, 121, 341
See also specific character adding parameters to 323, 341, 356
column aliases and 304 adding sort keys to 144
filter conditions and 314 applying conditions with 123, 125, 126,
query statements and 315, 322 127, 129
specialized reporting 148 binding parameters to 164
Specify Parameter Values dialog box 137 building automatically 104, 106
spreadsheet files 34 building manually 104
spreadsheet reports building text-based. See textual queries
accessing SAP data sources and 266 copying 131
creating queries for 311 creating 340, 475
spreadsheet server. See iServer deleting filter conditions in 314
SQL compiler 309 displaying 129, 130, 161, 301
SQL conventions (Actuate) 345 entering at run time 126, 149, 153, 341
SQL data sources. See query data sources overriding 162, 163
SQL data types 355, 356 referencing aliases and 344
listed 355 referencing columns in 173
SQL databases referencing information objects in 352
See also databases referencing parameters in 341
connecting to 8 referencing tables or views in 111, 341
retrieving data from 9, 34, 36 removing column references in 173
SQL editor removing columns from 117, 122
accessing information objects and 295, 331 removing conditions from 127, 129
creating queries and 332 removing tables from 111
SQL editor icon 331 reordering columns in 119
SQL expressions 125, 126, 129, 295, 356 select all operator in 133
SQL functions selecting columns for 116, 119, 120, 352
aggregating data and 371 selecting predefined data sources for 386
current user and 372 selecting tables for 106, 109, 112, 341, 372
numeric data types and 360 updating 163, 164, 165, 173
string data types and 362 SQL text editor. See SQL editor
Index 611
entering parameters for 184, 185 getting length of 363
entering sample values for 180, 186 getting output parameter 469
executing on Oracle databases 188, 196, getting version numbers as 480
199 locating embedded 557
executing programmatically 195 matching characters in 315, 341, 364
extracting IDs from 197 parsing 364
extracting return values from 197 returning sort specification as 553
filtering data with 46 returning substrings in 366
overview 176 setting maximum length for 355
placing data in reports from 183–184 setting values for 323, 509
renaming 182 trimming white space in 366
retrieving data with 90, 131, 183 StringSubstitutionUtil class 392, 557
returning results sets for 177, 181 structure definition icon (SAP R/3
returning status values with 195 Builder) 274
searching for 182 Structure Definition page (SAP R/3 Data
selecting 179, 180, 182 Source Builder) 274
setting sort order for 43, 44 Structure element 438
specifying parameter type for 185 structure parameters
synchronizing 176, 188 ODA data sources and 464, 468
verifying contents 188 SAP data sources and 276, 278
StoredProcedureSource data stream 177, 178 structures 504
StreamedResultSetBufferSize element 417 subclassing components 25
StreamHandler class 392, 554 subqueries
streaming log records 554 creating 341, 354–355
String data type 196, 509, 521 grouping data and 344
string data types 355 matching character patterns and 341
String element optimizing 354
ArrayOfString type 405, 425 returning scalar values 342
OdaDataType type 438 SubQuery declaration (SQL) 350
OdaScalarDataType type 439 substituteByIndex method 560
string functions 362, 364, 366 substituteByName method 561
string operators 362 SUBSTRING function 365
string parameters 356 substrings 364, 366, 461
string substitution 557, 560, 561 subtraction 359
strings subtraction operator 359
assigning to parameters 323, 330, 521 SUM function 371, 376
casting rules for 357 summarizing data 119, 120–123
comparing 105, 357, 358 summary data 120, 121, 371
concatenating 346, 363 supportsInParameters method 486
converting case 363 supportsMultipleOpenResults method 486
creating list of values and 314 supportsMultipleResultSets method 486
entering in filter conditions 312, 320 supportsNamedParameters method 487
entering in SQL statements 355 supportsNamedResultSets method 487
expressions and 119, 121 supportsOutParameters method 487
formatting 528, 548 synchronization tools 165
getting column values as 497 Synchronize button 305
getting delimited 557 Synchronize icon 330
Index 613
opening 84 overview 104
retrieving data from 78, 83 restrictions for 141
specifying connection properties in 12 sorting with 144
Text Format property 306 updating information for 133
text formats 443 textual query editor 295
text strings. See strings third-party databases 185
TextFormat element 443 thousands separator 312, 323
textual queries threshold values (SQL indexes) 381, 382
adding parameters to 152–153, 155, 156 time
applying conditions with 151, 155 See also time stamps
building expressions for 295 getting 470, 498, 541
building for information objects 331 setting 509, 522, 542
case-insensitivity in 105 Time data type 509, 522
changing 132, 134 Time element
changing result sets for 138, 140 OdaDataType type 438
changing statements for 162 OdaScalarDataType type 439
clearing 133 time stamps
converting graphical queries to 98, 134– assigning to parameters 330
136, 162 comparing 358
creating 99, 104, 131–134 filtering 312, 320
displaying output columns for 332 getting 470, 498
displaying parameters for 333 setting 510, 522
displaying statements for 161 specifying default 323
filtering data with 105, 135, 155 SQL conventions for 346, 355, 356
overriding statements for 162 TIMESTAMP data type 355
previewing 133, 136, 160 Timestamp data type 356, 510, 522
qualifying table names for 132 Timestamp element
saving 331 OdaDataType type 438
selecting columns for 132 OdaScalarDataType type 439
setting properties for 134 timestamp functions 367
sorting data with 144, 145 TIMESTAMP_STRING token (SQL) 346
synchronizing 163, 164 TitleFont property 73, 74, 336
tracking changes to 171 titles 73, 336
trimming trailing spaces for 105 adding to reports 148
undoing changes to 133 Toggle Unique Names icon 224
updating 164 tokens (SQL grammar) 346
textual query data sources 98, 131 Toolbox 6, 98
See also query data sources toString method 553
Textual Query Editor totals 184, 371
accessing 131 TraceLogging element 417
changing properties with 134 TraceLogging type 418
defining ad hoc parameters with 156 trailing spaces 105
defining static parameters with 152, 153 transactions
displaying context menu for 132 committing 474
displaying SQL statements 161 rolling back 284, 476
entering SQL statements with 36, 132 transient files. See temporary files
erasing statements in 133 transient objects 31
Index 615
aggregating. See aggregation assigning values to 243, 244
assigning to parameters 137, 150, 278, 323, associating with data rows 36, 65
330, 353 binding to columns 195
assigning to variables 243, 244 changing 62, 65
choosing from lists 324, 325 connecting to text files and 79
comparing 46, 105, 357, 358 creating computed fields and 39, 116, 118
computing 39, 118 defining data sources and 40
counting non-null 371 defining static 80
displaying default 137 displaying 63, 82, 141
entering default 323, 327 merging data rows and 51
entering invalid 137 naming parameters and 185
entering null 500 redefining attributes of 65
getting decimal precision for 490, 503 specifying parameters as 80, 185, 322
hiding 327 Variables page (Properties) 79, 262
hiding parameters and 278 Variant data types 119, 196
inputting sample 180, 186 variant strings 356
prompting for 149, 150, 154 Vendor element 419
QBE conventions for 125 VendorInfo type 419
returning largest 360 VendorPhone element 419
returning smallest 360 VendorURL element 419
returning unique 114 Verify MDX button 254
rounding 361 verifying stored procedure content 188
SAP parameters and 280 Version element 419, 432
selecting at run time 149, 153, 311, 325 version numbers
selecting data and 123 getting custom driver 479, 480
setting date 507, 518 getting data source 484, 485
setting decimal 506, 518 getting ODA interface 481
setting for controls 38 Viewer 60
setting numeric 507, 508, 519 viewing
setting string 509, 521 business objects 268, 269
setting time 509, 522 column names 172
setting time stamp 510 connection properties 9, 178
testing for invalid 499 data 58, 110, 117
testing for null 362, 473, 499, 503 data row variables 63, 141
testing range of 358 data rows 58, 59, 60, 62
testing sets of 359 default values 137
verifying user-specified 154 error messages 300
ValueSelectItem declaration (SQL) 350 information objects 296, 302
ValueSelectList declaration (SQL) 350 MDX queries 253, 254
VARCHAR data type 355 nested sections 60
variable names 66 ODBC data sources 92
variable type mappings 195 ODBC drivers 93
variables output columns 332
See also data row variables owner information 107
accessing multiple data sources and 54 performance statistics 137
adding to SAP BEx queries 242–244 query statements 130
assigning to ODS objects 262 report parameters 333
Index 617
618 Accessing Data