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.