Rogue Wave JViews TGO Sample: Table Component - Data Source API


Description

This sample shows how to use the Rogue Wave JViews TGO data source API to create business objects.

How to Use the Sample

The sample shows a table that contains various types of predefined JTGO business objects. The table allows you to select rows, as well as to move and resize columns. You can choose the class of objects to display with a combo box in the lower part of the screen.

How to Run the Sample as an Application

This sample can also be run as an application. The installation directory contains an executable JAR file, table-datasourceAPI.jar, that allows you to execute the sample with a double click from a file browser. Note that if you are using Internet Explorer, you can open the installation directory and execute the JAR file from the browser. This technique may not work in other Web browsers.

Alternatively, you can run the sample application from the command line. First check that the Ant utility is properly configured. If not, see the instructions on how to configure Ant for Rogue Wave JViews.

Then, go to the installation directory of the sample and type:

ant run

Topics Covered

Detailed Description

This sample shows how to specify and populate the business model using only the API. It is nearly identical to sample basic.Main, but here the data source API is used instead of an XML file.
The business model is controlled by the mutable data source interface (ilog.cpl.datasource.IlpMutableDataSource), which allows the creation of parent-child and link-extremity relationships. This API is internally used by the default data source implementation (ilog.tgo.datasource.IltDefaultDataSource) when processing business data through XML. It can also be invoked by applications that directly manipulate business data.

The available methods to define business data relationships are:


The data source is attached to the table component through an adapter (ilog.cpl.table.IlpTableListAdapter) which converts business objects into representation objects that are stored in the table component model (ilog.cpl.table.IlpTableModel). The business model is mapped to the table model, preserving the objects relationships.

The best way to create the relationships and business objects will vary from one application to another. In this sample, the business objects are known in advance and not intended to change. They are created by static methods of class datasourceAPI.ObjectCreationSupport while their relationships are managed by method createBusinessData() (in class datasourceAPI.Main). This helps illustrate that the business objects and their relationships do not necessarily have to be created at the same time.

When reloading the business objects (method reloadBusinessObjects() in class datasourceAPI.Main), the data source is first cleared, then followed by a call to method createBusinessData() (in class datasourceAPI.Main) so that the business objects and relationships are re-created accordingly.

Considerations: The order in which the business objects and their relationships are defined in the data sources is very important. It is recommended to create the relationships before adding the business objects so that the adapter does not have to recreate the representation objects due to changes in the business object relationships notified by the data source. The following rules should be taken into account:

1. Create relationships first
It is recommended to create the business objects relationships before adding the objects into the data source.

2. Add children before their parent
Although this is not mandatory for the table component, it is also recommended to add the child objects before the parent objects into the data source.

3. Add endpoints before their links
Similarly, it is better to add the two endpoints of a link before adding the link itself.

The example below illustrates the three rules above:
  datasource.setParent(parent, child);
  datasource.setLink(link, endPointA, endPointB);
  datasource.addObject(endPointA);
  datasource.addObject(endPointB);
  datasource.addObject(link);
  datasource.addObject(child);
  datasource.addObject(parent);


Installation Directory

The Table Component - Data Source API sample is installed here.

Classes Involved

Source Files

Copyright © Rogue Wave Software, Inc. 1997, 2015. All rights reserved. Legal terms.