Inheritance diagram for org.openmobileis.examples.server.synchro.BaseDataFODBSyncTarget:
FODB synchronisation is done per collection. Each collection is synchronized independently. FODBSyncTarget is the server side collection synchro connector to the server database. In the example the server database is a HSQL db with one table. We use a JDBCBaseDataFactory that make SQL query and the mapping beween BaseData object and SQL in made by BaseDataFODBSyncTarget method. There is two type of synchronisation : * incrementale synchronisation: Terminal modification is updated server side and if everything is ok, server side modifications are send to the terminal and updated in the terminal. * full or complete synchronisation : Terminal modification is updated server side and if everything is ok, the terminal collection file is generated server side and send to the terminal and updated in one file copy. This mode is done for the terminal init database (first synchro) or when there is too much server side object getUpdateMaxNbRow(). When there is too much object it's more efficient to generate the object collection on the server side and to copy the collection file on the terminal than to update each object one at a time. getUpdateMaxNbRow() return the threshold. When there is more object to update, the synchronization is forced to be full for the collection.
Definition at line 67 of file BaseDataFODBSyncTarget.java.
Public Member Functions | |
BaseDataFODBSyncTarget () | |
String | getCollectionName () |
Object | getCollectionObjectWithId (String id) throws OpenMSPException |
It is use by the synchro service to get an object from the database when it has to be updated on the terminal. | |
void | updateCollectionObject (Object obj) throws OpenMSPException |
Implement the update part of the database. | |
void | deleteCollectionObject (String id) throws OpenMSPException |
Implement the delete part of the database. | |
SynchroConflicResolver | getConflicResolver () |
When a conflic is detected, the synchro service use this conflic resolver to determine the action to do. | |
Array | getAllCollectionObject () throws OpenMSPException |
It's call when a complete synchronisation is done to fill the terminal database with all object. | |
SynchroAtomicObject[] | getAllModifiedAtomicObjectSince (long syncnumber) throws OpenMSPException |
Return all atomic object uid modified since specified syncnumber. | |
int | getUpdateMaxNbRow () |
Return the max number of row that update file can contains If more than max row must be updated on the PDA, a complete synchronisation will be started, the database file will be send. | |
void | updateSynchroDB (FastObjectDB db) throws OpenMSPException |
call by synchronisation service during complete synchronisation to update the generated db collection. | |
void | connect (Credential cred) throws UserNotFoundException, ServiceException |
call at the beginning of the collection synchronisation. | |
void | disconnect () |
call at the end of the collection synchronisation. |
|
call at the beginning of the collection synchronisation.
Implements org.openmobileis.database.fastobjectdb.synchro.server.FODBSyncTarget. Definition at line 215 of file BaseDataFODBSyncTarget.java. |
|
Implement the delete part of the database. Call by the synchro service when a object has been deleted on the terminal.
Implements org.openmobileis.database.fastobjectdb.synchro.server.FODBSyncTarget. Definition at line 148 of file BaseDataFODBSyncTarget.java. References org.openmobileis.examples.server.database.JDBCBaseDataFactory.delete(). |
|
call at the end of the collection synchronisation.
Implements org.openmobileis.database.fastobjectdb.synchro.server.FODBSyncTarget. Definition at line 221 of file BaseDataFODBSyncTarget.java. |
|
It's call when a complete synchronisation is done to fill the terminal database with all object. If no complete synchronisation can occurs (getUpdateMaxNbRow() always return -1), the method is never call. So no implementation is needed. Complete synchronisation is a convenient way to optimize the terminal synchronisation. some time it's make less time to generate the Terminal complete collection on the server side than to synchronize all modifications.
Implements org.openmobileis.database.fastobjectdb.synchro.server.FODBSyncTarget. Definition at line 169 of file BaseDataFODBSyncTarget.java. References org.openmobileis.common.util.collection.Array.add(), org.openmobileis.examples.server.database.JDBCBaseDataFactory.getAllBaseData(), and org.openmobileis.examples.simpleappli.data.BaseData.setData(). |
|
Return all atomic object uid modified since specified syncnumber. Syncnumber is a number incremented for each synchro request. It can be converted to a timestamp with the SyncNumberManager. It's preferable to use number increment for synchronisation than timestamp to avoid desynchronized clock problem. Terminal and server can be desynchronized at the system cloc level of a few second. A synchronisation can elapse less than a few second. This can leads to synchronisation problem that can be difficult to track. Implements org.openmobileis.database.fastobjectdb.synchro.server.FODBSyncTarget. Definition at line 190 of file BaseDataFODBSyncTarget.java. References org.openmobileis.examples.server.synchro.BaseDataFODBSyncTarget.getCollectionName(). |
|
Implements org.openmobileis.database.fastobjectdb.synchro.server.FODBSyncTarget. Definition at line 85 of file BaseDataFODBSyncTarget.java. Referenced by org.openmobileis.examples.server.synchro.BaseDataFODBSyncTarget.getAllModifiedAtomicObjectSince(). |
|
It is use by the synchro service to get an object from the database when it has to be updated on the terminal.
Implements org.openmobileis.database.fastobjectdb.synchro.server.FODBSyncTarget. Definition at line 93 of file BaseDataFODBSyncTarget.java. References org.openmobileis.examples.server.database.JDBCBaseDataFactory.getBaseData(), and org.openmobileis.examples.simpleappli.data.BaseData.setData(). |
|
When a conflic is detected, the synchro service use this conflic resolver to determine the action to do. We provide default conflic resolver behaviours.
Implements org.openmobileis.database.fastobjectdb.synchro.server.FODBSyncTarget. Definition at line 161 of file BaseDataFODBSyncTarget.java. |
|
Return the max number of row that update file can contains If more than max row must be updated on the PDA, a complete synchronisation will be started, the database file will be send. If return -1 (default implementation) max row in not taken into account (ie always update file) Implements org.openmobileis.database.fastobjectdb.synchro.server.FODBSyncTarget. Definition at line 201 of file BaseDataFODBSyncTarget.java. |
|
Implement the update part of the database. Call by the synchro service when a object has been modified on the terminal. There's only an update method, no insert because on the server side we can't know if it's an update on an insert. Because of synchronisation problems, a created object on the terminal can be synchronized two time. So for each modified object on the terminal you have to validate if it's already exist.
Implements org.openmobileis.database.fastobjectdb.synchro.server.FODBSyncTarget. Definition at line 114 of file BaseDataFODBSyncTarget.java. References org.openmobileis.examples.server.database.JDBCBaseDataFactory.create(), org.openmobileis.common.util.database.ManagerDB.getConnection(), org.openmobileis.examples.simpleappli.data.BaseData.getData(), org.openmobileis.common.util.database.AbstractQueryManager.getDbManager(), org.openmobileis.examples.simpleappli.data.BaseData.getId(), and org.openmobileis.examples.server.database.JDBCBaseDataFactory.update(). |
|
call by synchronisation service during complete synchronisation to update the generated db collection. Use to modifiy db objects before the db files are send to the Terminal. Empty is nothing has to ne done.
Implements org.openmobileis.database.fastobjectdb.synchro.server.FODBSyncTarget. Definition at line 208 of file BaseDataFODBSyncTarget.java. |