DTP Connectivity Ganymede Project Plan: First Draft
DTP Connectivity Ganymede
Beside each entry, we will put the following acronyms:
- MH for Must Have
- LTH for Like To Have
For Ganymede, we will focus on Must Have (MH) items before Like to Have (LTH) items.
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)
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)
3) Provide best-practices for prompting users when to create new profiles, select existing profiles, and prompt the user for authentication information. Perhaps create code sample to help demonstrate best practices. (MH) (BZ entry: 202644 )
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)
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, 177272, 199689)
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 )
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) -
public String encrypt ( String input ); public String decrypt ( String output );
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.
7) Provide plug-in wizards to aid driver template and connection profile development. (MH) (BZ entries: 151738)
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)
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)
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.
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)
-------------------Bugs for Consideration (Start)-----------
12) Connection profile with commas in its driver files names will fail (LTH) (BZ 202338)
13) Default DB Location should be platform specific (LTH) (BZ 201682 )
14) Need a way to access connection information for table in DSE (MH) (BZ 198000 )
15) Usability items for Driver Managment/Editing (LTH) (BZ 164534 )
16) Display properties for SQL objects when selected in DSE (LTH) (BZ 154169 )
17) Detect cp name collision only within repository (MH) (BZ 200774 )
18) Connection is already closed when aboutToClose() is calling (MH) (BZ 199509 )
20) Need ability to repurpose DSE content/actions for other viewers (MH) (BZ 194859 )
21) Preference pages inconsistent (MH) (BZ 193791 )
22) org.eclipse.datatools.connectivity.db.generic has dependency to UI (MH) (BZ 192828 )
23) Need mechanism for supporting migration of driver definitions (MH) (BZ 184807 )
-------------(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)
25) The filtering support should handle multiple predicates that are ANDed together so that more complex filters can be specified. (LTH)
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.
Open Data Access (ODA)
1) Integrates with Database (JDBC) connection profile category (MH)
2) Integrates with the visual SQL Builder and SQL Query Model for use by ODA consumer applications (MH)
3) Support for multi-dimensional result sets (LTH)
Bugs: 11, 14, 17, 18
General UI: 2, 16, 21
Migration: 1, 4, 6, 12, 13, 23
New Functionality: 9, 10, 25
Refactoring: 20, 22, 24
Usability: 3, 5, 7, 8, 15, 19
Must Haves (20): 1, 2, 3, 4, 5, 7, 9, 11, 14, 17, 18, 19, 20, 21, 22, 23, 24 ODA-1, ODA-2, ODA-3
Like To Haves (8): 6, 8, 10, 12, 13, 15, 16, 25