Lesson 3: Add synchronization to the application

In this lesson, you add synchronization capabilities to your application.

  1. In the HomeScreen constructor, add a Sync menu item.

    // Add a menu item
    addMenuItem(_addToListMenuItem);
            
    // Add sync menu item
    addMenuItem(_syncMenuItem);        
                   
    // Create database and connect
    try{ ...
  2. Define the menu item in the class variables declarations.



    private MenuItem _addToListMenuItem = new MenuItem("Add", 1, 1){
        public void run() {
            onAddToList();
        }
    };
    private MenuItem _syncMenuItem = new MenuItem("Sync", 2, 1){
        public void run() {
            onSync();
        }
    };
  3. Create the onSync method.



    private void onSync(){
        try{
            if( _da.sync() ){
                _statusLabel.setText("Synchronization succeeded");
            } else {
                _statusLabel.setText("Synchronization failed");
              }
            this.refreshNameList();
        } catch ( Exception ex){
            Dialog.alert( ex.toString() );
        }
    }
  4. Define the syncParms and streamParms variables within the DataAccess class.

    private static SyncParms _syncParms;
    private static StreamHTTPParms _streamParms;
  5. In the DataAccess class, add a sync method.



    public boolean sync() {
        try {
            if(_syncParms == null){
                String host = "relayserver.sybase.com/ias_relay_server/client/rs_client.dll/tomslee.HelloBlackBerry";
                _syncParms = _conn.createSyncParms( "mluser", "HelloBlackBerrySyncModel" );
                _syncParms.setPassword("mlpassword");
                _streamParms = _syncParms.getStreamParms();
                _streamParms.setPort( 8081 ); // use your own
                _streamParms.setHost( host ); // use your own
                if(host != null && _host.equals("relayserver.sybase.com/ias_relay_server/client/rs_client.dll/tomslee.HelloBlackBerry")) {
                    _streamParms.setURLSuffix("/ias_relay_server/client/rs_client.dll/tomslee.HelloBlackBerry");
                }
            }
        
            public boolean complete() {
                try{
                    _conn.checkpoint();
                    _conn.release();
                    _conn = null;
                    _da = null;
                    return true;
                }
                catch(Exception e){
                    return false;
        }
    }

    The synchronization parameters object, SyncParms, includes the user name and password that you specified when deploying the synchronization model. It also includes the name of the synchronization model you created. In MobiLink, this name now refers to the synchronization version, or a set of synchronization logic, that was deployed to your consolidated database.

    The stream parameters object, StreamHTTPParms, indicate the host name and port number of the MobiLink server. When you start the MobiLink server in the next lesson, use your own computer name for simulator testing and select a port that is available. Do not use localhost as your computer name. You can use port 80 if you have no web server running on your computer.

    Note

    When using a real device, use an externally visible machine or a machine that is accessible from the BlackBerry Enterprise Server your device is paired to, such as the Sybase hosted relay server. For more information on the relay server, see Introduction to the Relay Server.

  6. Compile your application.