Walkthrough of important functions and user actions
Document the request lifecycle (sort of a stacktrace) of how the csv
runtime plug-in works.
-
from when a user enters the information about a dataset
-
to creating the query used to access data in the dataset
-
to actually querying for data in the dataset
Break it up into discrete pieces to make it easier, but show me which classes
and important methods are called.
:::::::::::::::
User starts Eclipse BIRT, creates new report, starts the new Data Source
wizard.
User selects the data source they would like, clicks Next.
User fills in information (properties) of the data source.
User clicks "Test Connection" button, and the plug-in starts up:
FlatfilePlugin(Activator).start()
FlatFileDriver.getConnection()
Connection.isOpen()
Connection.open()
Connection.getMetaData() [DataSetMetaData]
DataSetMetaData.constructor()
DataSetMetaData.getDataSourceProductVersion()
DataSetMetaData.getDataSourceProductName()
DataSetMetaData.getDataSourceProductName()
DataSetMetaData.getDataSourceProductVersion() //
not sure why these are
called twice
Connection.isOpen()
Connection.close()
If the button is not clicked, nothing happens in the runtime driver.
User clicks Finish.
User starts new Data Set wizard. They select the correct Data Source and
Data Set type and click Next.
To generate the custom UI present in the FlatFile plug-in, the plug-in is
started up and data is grabbed.
FlatfilePlugin(Activator).start()
FlatFileDriver.getConnection()
Connection.open()
Connection.newQuery()
Connection.isOpen()
FlatFileQuery.constructor() //
we are query for the column names and types
and such.
FlatFileQuery.prepare() //
in the FlatFile plug-in, this is passed "select *
from feedstats.csv" at this point, where feedstats.csv was the default csv file
in the directory
Connection.isOpen()
ResultSetMetaData.constructor()
FlatFileQuery.executeQuery()
ResultSet.constructor()
FlatFileQuery.getMetaData() [ResultSetMetaData]
ResultSetMetaData.getColumnSOMETHING()
ResultSetMetaData.getColumnSOMETHING()
...
ResultSetMetaData.getColumnSOMETHING() //
a total of 43 calls to
ResultSetMetaData
ResultSetMetaData.getColumnSOMETHING() //
these are functions like
getColumnCount, getColumnName...etc.
Connection.close()
User goes through the GUI and forms the query. In the FlatFile plug-in,
this involves selecting columns.
User clicks next to finalize the query.
FlatFileDriver.getConnection()
Connection.open()
Connection.newQuery()
Connection.isOpen()
FlatFileQuery.constructor()
FlatFileQuery.prepare() //
this is the actual query sent to the runtime
driver, though not necessarily what will be sent to the server (or in this case
the..file. here, it was: select "Date", "Subscribers", "Hits" from
feedstats.csv :
{"Date","Date",STRING;"Subscribers","Subscribers",STRING;"Hits","Hits",STRING}
Connection.isOpen()
ResultSetMetaData.constructor()
FlatFileQuery.executeQuery()
ResultSet.constructor()
FlatFileQuery.getMetaData() [ResultSetMetaData]
ResultSetMetaData.getColumnSOMETHING()
ResultSetMetaData.getColumnSOMETHING()
...
ResultSetMetaData.getColumnSOMETHING() //
23 of these calls this
time.
ResultSetMetaData.getColumnSOMETHING()
Connection.close()
User designs the report. I'll just drag the data set directly to the
blank report.
User builds the report. I'll just "View Report as HTML."
FlatFileDriver.getConnection()
Connection.isOpen()
Connection.open()
Connection.newQuery()
Connection.isOpen()
FlatFileQuery.constructor()
FlatFileQuery.prepare(
select "Date", "Subscribers", "Hits" from
feedstats.csv :
{"Date","Date",STRING;"Subscribers","Subscribers",STRING;"Hits","Hits",STRING}
)
Connection.isOpen()
ResultSetMetaData.constructor()
FlatFileQuery.getMetaData() [ResultSetMetaData]
ResultSetMetaData.getColumnSOMETHING()
ResultSetMetaData.getColumnSOMETHING()
...
ResultSetMetaData.getColumnSOMETHING()
ResultSetMetaData.getColumnSOMETHING() //
25 of these
FlatFileQuery.executeQuery()
ResultSet.constructor()
Connection.isOpen()
ResultSet.next()
ResultSetMetaData.getColumnSOMETHING()
ResultSetMetaData.getColumnSOMETHING()
...
ResultSetMetaData.getColumnSOMETHING()
ResultSetMetaData.getColumnSOMETHING() //
120 of these!
Connection.isOpen()
ResultSet.next()
Connection.isOpen()
ResultSet.next()
...
Connection.isOpen()
ResultSet.next()
Connection.isOpen() //
17 of these sets
ResultSet.next() //
of 2 commands
ResultSetMetaData.getColumnSOMETHING()
FlatFileQuery.close()
Connection.isOpen()
Connection.close()
The report is generated.