DTP Connectivity Ganymede

For Ganymede, we will focus on Must Have (MH) items before Like to Have (LTH) items.

Connectivity

Things to Consider...

1) Ability to pre-populate a connection UI with driver definitions. (This already exists with the ability to auto-create a default instance of a particular driver template at startup.) (MH) (BZ entry: 202641[1])

2) Provide common user interface for selecting existing connection profiles. Features of this UI should include filtering of the existing connections based on an arbitrary set of attributes and it should display an extensible set of properties for the selected connection. (This already partly exists with the ability to host the DSE on a dialog page/composite/wizard/property/preference page where necessary.) (MH) (BZ entry: 202643[2])

4) Ability to inject from a runtime instance of a profile at startup to populate a profile in the DSE. This may be supported already with the repository code. (MH) (BZ entry: 202647[4])

5) Filtering needs to become much more extensible and flexible. Perhaps split out catalog-loader (SQL-level) filtering from client-level (viewer-level) filtering. Also provide the capability to use client-level filtering by default, if a db-specific extension did not implement catalog-loader filtering. (MH) (BZ entries: 200140[5], 177272[6], 199689[7])

6) Provide extensible encryption capabilities for exporting profiles. Perhaps a new extension point to register an encryption method. Need to research different encryption methods. (LTH) (BZ entry: 202648 [8])

Possibly add a new extension point that points to a class and provides a name and description for the encryption provider. The encryption provider (IProfileEncryptionProvider) would implement two methods (similar to BIRT's IEncryptionHelper) -

The current encryption/decryption method will be moved to this extension point and used as the default method.

When exporting via the Export dialog, the user can select via a drop-down list from the list of available encryption providers (or the drop-down will be disabled if only the default is available).

When importing, the Import routine will look at the file and (somehow) determine which encryption provider was used and decrypt accordingly or pop up a message indicating that the encryption method is not available.

We will need to change the internal ConnectionProfileMgmt class (that does the saves and loads of profiles) so it would take one of these encryption providers to handle encrypting and decrypting the streams.

8) Focus on sorting and see if we can come up with ways to make that work for various levels of the DSE within the Platform's Common Navigator Framework (see if any changes are upcoming for Ganymede) (LTH) (BZ entries: 150592[10])

9) Connection timeout such that connections in the DSE will be closed if unused for a certain amount of time specified in a preference page. This is a WTP feature that needs to be ported to DTP. It will probably need to be redesigned as the DSE in DTP is not exclusive to database connections and it may not make sense to timeout connections to other types of servers. (MH) (BZ entry: 202653[11])

Perhaps look at it so that each individual server type implements an extension point (perhaps an extension on the CP extension point), listens in a server-specific way for disconnects, and then triggers a reconnect. It will be difficult to handle in the generic case.

Here is the UI from WTP to use as a starting point:

10) Provide enablement support for JNDI connections for getting a pooled JDBC connection through a JNDI service. Check out Apache Tomcat 5.5.x and BEA WebLogic 8.1 as examples. Both are fairly simple to use and configure. However, Tomcat does not support client-side access, which we will need in the DSE. (LTH) (BZ entries: 202640[12])

-------------(End) Bugs for Consideration---------------

24) Refactor Generic JDBC Connection profile plug-ins so that the Generic JDBC Connection profile can be excluded from the new connection wizard by adopters. (MH) (BZ entry: 203837 [30])

25) The filtering support should handle multiple predicates that are ANDed together so that more complex filters can be specified. (LTH) (BZ Entry: 203834 [31])

26) There needs to be a strict separation between plug-ins with UI dependencies and non-UI dependencies. Adopters have the need to access core functionality such as connection profiles, driver templates, connection management, DDL generators and catalog loaders from command-line tooling or without the UI components installed in the product. Some of the use-cases include programmatically creating a connection to a database, browsing the catalog metadata, generating DDL and executing the DDL. As a connectivity requirement, it is specifically focused on the generic JDBC and Derby plug-ins, however, it also has implications in the enablement project. (MH) 203158

27) The version decoration that appears on the connection nodes in the DSE should allow vendors to format product and version information in a format that is meaningful to the vendor's customers. The current three-part version number is too restrictive and should be optional. (MH) (BZ entry: 203829 [32])

28) There needs to be a connection profile wizard that can provide different UIs for
different driver definitions and a way to contribute new driver definition specific UIs through an
extension point.(MH) (BZ entry: 204620 [33])

29) The generate DDL wizard should allow the user the option to execute the DDL against a database connection. The implementation will utilize the existing connection UI from #2 above. (MH) (BZ entry: 204748 [34])

30) There needs to be way to connect the managed connection in a connection profile that does not display the connection error but instead returns it programmically so that the invoker can decide how to handle it. Basically, a method like IConnectionProfile.createConnection() that works on the managed connection. (MH) (BZ entry: 205250 [35])

Open Data Access (ODA)

The ODA framework currently integrates with the Connection Profile framework to provide an uniform way for connectivity with heterogenous data sources. It does not directly integrate with the Database (JDBC) profile category. This integration project aims to provide out-of-box support of the DTP JDBC connection profile types, and to enable an ODA-compliant consumer application to utilize the specialized RDBMS support available in the Enablement projects.

The SQL Query Builder planned in Ganymede is a powerful tool that allows users the freedom to create queries to access a relational data source without detail knowledge of the SQL syntax. The same tool also provides the option to edit a SQL query text directly. Any editing made in either the textual or graphical pane would be automatically reflected in the other.

This integration project plans to provide ODA adapters to the the SQL Query Builder and SQL Query Model. With the adapters, an ODA-compliant consumer application can consume the builder, as well as other custom ODA providers, through the same ODA API.

The ODA framework currently provides support for a consumer application to retrieve and process data in the form of rows and columns. An ODA data provider for a multi-dimensional data source would have to flatten its data into a tabular result set. That works well for those ODA-compliant consumer applications that want to consume tabular data sets. However, there are other types of applications, such as OLAP tools, that would prefer to consume data in a multi-dimensional result set. This project aims to extend the ODA API to provide design-time and runtime support of multi-dimensional result sets.