Guidelines
When subclassing IliTable, the following guidelines should be respected:
-
The following virtual member functions may be overloaded for both one- and two-tier tables:
|
Member Function |
Overload |
|
getRowsCount |
mandatory |
|
getValue |
mandatory |
|
updateRow |
optional |
|
insertRow |
optional |
|
deleteRow |
optional |
|
moveRow |
optional |
|
allowRowMove |
optional |
|
updateRowInCache |
optional |
|
insertRowInCache |
optional |
|
deleteRowInCache |
optional |
-
The following virtual member functions may be overloaded for two-tier tables:
|
Member Function |
Overload |
|
clearRows |
mandatory |
|
select |
mandatory |
|
isSelectDone |
mandatory |
|
fetchCompleted |
optional |
|
fetchNext |
optional |
|
fetchAll |
optional |
-
The subclass should be designed to notify the Data Access library when certain events occur. Notification is performed by calling the appropriate function from the following:
|
Member Function |
When Called |
|
allRowsDeleted |
Called when the clearRows member function is called. |
|
tableChanged |
Called when the IliTable object has undergone a significant number of changes. |
|
rowInserted |
Called just after a new row has been inserted in the table. |
|
rowsInserted |
Called just after a sequence of rows has been inserted. Note that instead of calling this member function, the rowInserted member function may be called repeatedly, once for each row. |
|
rowToBeChanged |
Called just before a row is changed. |
|
rowChanged |
Called just after a row has changed. |
|
rowToBeDeleted |
Called just before a row is removed. |
|
rowDeleted |
Called just after a row has been removed. |
|
rowMoved |
Called just after a row has moved to another position. |
|
rowsExchanged |
Called just after two rows have exchanged positions. |
|
rowFetched |
Called just after a new row has been fetched from a remote database and inserted into the local row cache (the rowInserted member function must also be called). |
|
rowsFetched |
Called just after a sequence of rows has been fetched. Note that instead of calling this member function, the rowFetched member function may be called repeatedly, once for each row. |
|
cellChanged |
Called just after a cell has changed. If more than one cell has changed in a row, it is preferable to call the rowChanged member function once, instead of calling cellChanged many times. |
|
raiseError |
Called each time an error occurs. The error is described by an IliErrorMessage object. |
Note that in many instances, the implementor of an IliTable object can choose to notify certain events by calling one or another member function.
For instance, if two cells in a given row are changed, the IliTable object implementor can choose to do one of the following:
-
Call cellChanged twice.
or
-
Call rowChanged once.
Similarly, the insertion of two or more consecutive rows in the table, can be notified in one of the following ways:
-
By repeatedly calling rowInserted, once for each row.
or
-
By calling rowsInserted once.
As a consequence, when a given event can be notified either by calling one member function or another, an IliTable object using a table hook to monitor changes undergone by the table should overload both member functions, otherwise some events may be missed.