SampleApp.m contains this example code.
#import "SampleApp.h" #import "SampleApp_Customer.h" #import "CallbackHandler.h" #import "SampleApp_SampleAppDB.h" #import "SampleApp_LogRecordImpl.h" #import "SampleApp_Sales_order.h" #import "SampleApp_LocalKeyGenerator.h" #import "SampleApp_KeyGenerator.h" #import "SUPMessageClient.h" @implementation SampleApp +(void)subscribeToDB { [SampleApp_SampleAppDB subscribe]; } +(void)beginLogin { if ([SampleApp_SampleAppDB getOnlineLoginStatus].status != SUPLoginSuccess) { [SampleApp_SampleAppDB beginOnlineLogin:@"supAdmin" password:@"s3pAdmin"]; } } +(void)runAPITests { MBOLog(@"============================="); MBOLog(@"TestPersonalizationParameters"); MBOLog(@"============================="); [SampleApp TestPersonalizationParameters]; MBOLog(@"============================="); MBOLog(@"TestSynchronizationParameters"); MBOLog(@"============================="); [SampleApp TestSynchronizationParameters]; MBOLog(@"============================="); MBOLog(@"TestfindAll"); MBOLog(@"============================="); [SampleApp Testfind]; MBOLog(@"============================="); MBOLog(@"TestCreate"); MBOLog(@"============================="); [SampleApp TestCreate]; MBOLog(@"============================="); MBOLog(@"TestUpdate"); MBOLog(@"============================="); [SampleApp TestUpdate]; MBOLog(@"============================="); MBOLog(@"TestDelete"); MBOLog(@"============================="); [SampleApp TestDelete]; MBOLog(@"============================="); MBOLog(@"Print Logs"); MBOLog(@"============================="); [SampleApp printLogs]; [SampleApp_SampleAppDB unsubscribe]; } +(void)PrintCustomerSalesOrderData { SampleApp_Customer *onecustomer = nil; SUPObjectList *cl = nil; MBOLog(@"Customer data is:"); cl = [SampleApp_Customer findAll]; if(cl && [cl length] > 0 ) { int i; for(i=0; i<[cl length]; i++) { onecustomer = [cl item:i]; if (onecustomer) { MBOLog(@"%@ %@, %@, %@, %@",onecustomer.fname, onecustomer.lname,onecustomer.address,onecustomer.city, onecustomer.state); SUPObjectList *sl = [onecustomer salesOrders]; if(sl) { if([sl length] > 0) MBOLog(@" This customer's sales orders are"); else MBOLog(@" This customer has no sales orders"); for(SampleApp_Sales_order *so in sl) MBOLog(@"%@ %@,%d",so.order_date,so.region,so.sales_rep); } } } } } /***Retrieve data based on the synchronization parameter value.***/ + (void)TestSynchronizationParameters { SampleApp_CustomerSynchronizationParameters* sp = [SampleApp_Customer getSynchronizationParameters]; sp.size = 3; sp.user = @"userone"; sp.city = @"Raleigh"; [sp save]; while ([SampleApp_SampleAppDB hasPendingOperations]) { [NSThread sleepForTimeInterval:1]; } [self PrintCustomerSalesOrderData]; } /******Retrieve data based on the personalization parameter value*****/ + (void)TestPersonalizationParameters { SampleApp_PersonalizationParameters *pp = nil; pp = [SampleApp_SampleAppDB getPersonalizationParameters]; pp.PKCity = @"New York"; [pp save]; while ([SampleApp_SampleAppDB hasPendingOperations]) { [NSThread sleepForTimeInterval:1]; } [self PrintCustomerSalesOrderData]; } /*******Print logs record data from LogrecordImpl*****/ +(void)printLogs { MBOLog(@"******* printLogs *******"); SUPQuery *query = [SUPQuery getInstance]; SUPObjectList *loglist = [SampleApp_SampleAppDB getLogRecords:query]; for(id o in loglist) { SampleApp_LogRecordImpl *log = (SampleApp_LogRecordImpl*)o; MBOLog(@"Log Record %llu: Operation = %@, Timestamp = %@, MBO = %@, key = %@, message = %@", log.messageId,log.operation, [SUPDateTimeUtil toString:log.timestamp],log.component,log.entityKey,log.message); } } /************************************find************************************/ /***Find all the customer records and print the first record to the console*/ +(void)Testfind { SampleApp_Customer *onecustomer = nil; SUPObjectList *cl = [SampleApp_Customer findAll]; if(cl && [cl length] > 0 ) { onecustomer = [cl item:0]; if (onecustomer) { MBOLog(@"the full customer record data is : %@", onecustomer); } } } /*****************************Create ***********************************/ /*****Create new customer and sales order records in the local database and call submitPending to send the changes to the server *****/ +(void)TestCreate { long key1 = [SampleApp_KeyGenerator generateId]; long key2 = [SampleApp_KeyGenerator generateId]; [SampleApp_KeyGenerator submitPendingOperations]; while ([SampleApp_SampleAppDB hasPendingOperations]) { [NSThread sleepForTimeInterval:1]; } SampleApp_Customer *c = [[ SampleApp_Customer alloc] init]; [c autorelease]; c.id_ = [SampleApp_LocalKeyGenerator generateId]; c.fname = @"Dorothi"; c.lname = @"Scranton"; c.address = @"One Money Street"; c.city = @"smallVille"; c.state = @"MA"; c.zip = @"97429"; c.phone = @"2112222345"; c.company_name = @"iAnywhere"; c.surrogateKey = key1; SUPObjectList *orderlist = [ SampleApp_Sales_orderList getInstance]; SampleApp_Sales_order *o1 = [[SampleApp_Sales_order alloc] init]; [o1 autorelease]; o1.id_ = [SampleApp_LocalKeyGenerator generateId]; o1.order_date = [NSDate date]; o1.fin_code_id = @"r1"; o1.region = @"Eastern"; o1.sales_rep = 902; o1.surrogateKey = key2; [ o1 setCustomer:c]; [orderlist add:o1]; [c setSalesOrders:orderlist]; [c save]; [c refresh]; [c submitPending]; assert(c.pending == YES); while ([SampleApp_SampleAppDB hasPendingOperations]) { [NSThread sleepForTimeInterval:1]; } } /******************************Update *********************************/ /****Update an existing customer and sales record in the device database and call submitPending to send the changes to the server. **********/ + (void)TestUpdate { SUPObjectList *cl = [SampleApp_Customer findAll]; SampleApp_Customer *onecustomer = [cl item:0]; SampleApp_Sales_order *order = [onecustomer.salesOrders item:0]; onecustomer.fname = @"Johnny"; order.region = @"South"; [onecustomer save]; [onecustomer refresh]; [order refresh]; [onecustomer submitPending]; while ([SampleApp_SampleAppDB hasPendingOperations]) { [NSThread sleepForTimeInterval:1]; } } /***************************** Delete ***************************/ /*Delete an existing record from the database and call submitPending to send the changes to the server.****/ + (void) TestDelete { SUPObjectList *sl = [SampleApp_Sales_order findAll]; SampleApp_Sales_order *order = [sl item:0]; [order delete]; [order.customer submitPending]; while ([SampleApp_SampleAppDB hasPendingOperations]) { [NSThread sleepForTimeInterval:1]; } } @end