This diagram
shows the interaction between the Controller object, the
GotoEvent object and all the other actors that are used
to process this navigation event.
The Controller servlet calls the GotoEvent's
processEvent method.
The GotoEvent object parses the position string
and build a FieldValues data structure representing the values
of the fields decoded from that position.
The position string uses the following format:
field(0).id : field(0).length : field(0).value - ... - field(n).id : field(n).length : field(n).value
and contains data for all the fields of the current table.
It calls table.mapChildFieldValues
if the event was generated by a parent-child table;
else calls table.getFieldValues.
Note: the Table's mapChildFieldValues method is used to
build a new FieldValues object
that inherits the fields' names from the child table
and the fields' values from the parent table.
Having the FieldValues data for the input position,
the GotoEvent object try to build
the key position string.
It uses the same format as position string:
field(0).id : field(0).length : field(0).value - ... - field(n).id : field(n).length : field(n).value
but contains data only for the fields that define the key set for the current table.
The GotoEvent object gets the
DataSourceList instance and remove the
DataSourceFactory associated to the current table
and to the current the current request URI from its internal list.
(the current request URI example value:
/bookstore_v1_1_x_20030819/tests/testAUTHOR_list.jsp?AUTHOR)
The GotoEvent object instantiates a new
DataSourceFactory object and stores it into the
DataSourceList
The GotoEvent object calls the
DataSourceFactory.getCurrent method passing
to it the key position string to return a new
ResultSetVector object
to the Controller