Example code for an object API-based client application.
package test;
import com.sybase.persistence.*;
import com.sybase.collections.*;
class MyCallbackHandler extends DefaultCallbackHandler
{
public int onSynchronize(ObjectList groups,
com.sybase.persistence.SynchronizationContext context)
{
System.out.println("OnSynchronize is called with user context: " + context.getUserContext());
return SynchronizationAction.CONTINUE;
}
}
public class JavaMain extends net.rim.device.api.ui.UiApplication{
public JavaMain() { }
public static void main(String [] args) throws Exception
{
//Configure synchronization profile to point to your host and port
TestDB.getSynchronizationProfile().setServerName( "localhost" );
TestDB.getSynchronizationProfile().setPortNumber(2480);
//If the application requires a callback (for example, to allow the client framework to provide
//notification of synchronization results),register the callback
//function after setting up the connection profile, by executing
MyCallbackHandler callback = new MyCallbackHandler();
TestDB.registerCallbackHandler(callback);
//Login to Unwired Server. This step is required for application initialization.
TestDB.loginToSync("supAdmin", "s3pAdmin");
//Subscribe to Unwired Server. Unwired Server creates a subscription for this particular application.
TestDB.subscribe();
//Synchronize with Unwired Server. Synchronization uploads all the local changes and downloads new data with related subscriptions.
ObjectList sgs = new ObjectList();
sgs.add(TestDB.getSynchronizationGroup("default"));
TestDB.beginSynchronize(sgs, "mycontext");
//Wait for synchronization to complete. May not be required for a typical UI application.
Thread.sleep(1000*10);
//List all customer MBO instances from the local database using a named query. FindAll is a pre-defined object query.
//Alternatively you can use Dynamic Query to MBO instances too.
ObjectList customers = Customer.findAll();
for(int i = 0; i < customers.size(); i++)
{
Customer customer = (Customer)(customers.elementAt(i));
System.out.println("customer: " + customer.getFname() + " " + customer.getLname()
+ " " + customer.getId() + customer.getCity());
}
//Find a particular MBO instance.
Customer cust = Customer.findByPrimaryKey(441);
cust.setAddress( "1 Sybase Dr.");
cust.setPhone( "9252360000");
//Update the customer MBO instance. Save to the local database.
cust.save();
//Submit the pending changes. The changes are ready for upload, but have not yet been uploaded to the Unwired Server.
cust.submitPending();
//Upload the pending changes to the Unwired Server and get the replay results and all the changed MBO instances.
TestDB.beginSynchronize(sgs, "mycontext");
//Unsubscribe the device application if the application is no longer used.
TestDB.unsubscribe();
}
}