diff --git a/openbis-ipad/Research/BisMac.xcodeproj/project.xcworkspace/xcuserdata/cramakri.xcuserdatad/UserInterfaceState.xcuserstate b/openbis-ipad/Research/BisMac.xcodeproj/project.xcworkspace/xcuserdata/cramakri.xcuserdatad/UserInterfaceState.xcuserstate index 7345d96e8c7055059da28a7a7001fffdb8691226..70bcb756bcfffa2b3abac7114c2cc4b1481b983c 100644 Binary files a/openbis-ipad/Research/BisMac.xcodeproj/project.xcworkspace/xcuserdata/cramakri.xcuserdatad/UserInterfaceState.xcuserstate and b/openbis-ipad/Research/BisMac.xcodeproj/project.xcworkspace/xcuserdata/cramakri.xcuserdatad/UserInterfaceState.xcuserstate differ diff --git a/openbis-ipad/openBIS/openBIS.xcodeproj/project.pbxproj b/openbis-ipad/openBIS/openBIS.xcodeproj/project.pbxproj index 3c925024885555cece3847ca4cf0adc9afc62f14..dc43368d744b9b98339ec6ded6cd7e9853b3279d 100644 --- a/openbis-ipad/openBIS/openBIS.xcodeproj/project.pbxproj +++ b/openbis-ipad/openBIS/openBIS.xcodeproj/project.pbxproj @@ -7,6 +7,7 @@ objects = { /* Begin PBXBuildFile section */ + 362B81EC163FFB6C00127554 /* CISDOBIpadServiceManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 362B81EB163FFB6C00127554 /* CISDOBIpadServiceManager.m */; }; 364D509E161C6ADB00A739B0 /* openBISData.sqlite in Resources */ = {isa = PBXBuildFile; fileRef = 364D509C161C6ADB00A739B0 /* openBISData.sqlite */; }; 3687D8FF162D3AB500622690 /* openbis-icon-72.png in Resources */ = {isa = PBXBuildFile; fileRef = 3687D8FD162D3AB500622690 /* openbis-icon-72.png */; }; 3687D900162D3AB500622690 /* openbis-icon-144.png in Resources */ = {isa = PBXBuildFile; fileRef = 3687D8FE162D3AB500622690 /* openbis-icon-144.png */; }; @@ -73,6 +74,8 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ + 362B81EA163FFB6C00127554 /* CISDOBIpadServiceManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CISDOBIpadServiceManager.h; sourceTree = "<group>"; }; + 362B81EB163FFB6C00127554 /* CISDOBIpadServiceManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CISDOBIpadServiceManager.m; sourceTree = "<group>"; }; 364D5098161C6A3600A739B0 /* readme.md */ = {isa = PBXFileReference; lastKnownFileType = text; path = readme.md; sourceTree = "<group>"; }; 364D509C161C6ADB00A739B0 /* openBISData.sqlite */ = {isa = PBXFileReference; lastKnownFileType = file; path = openBISData.sqlite; sourceTree = "<group>"; }; 3687D8FD162D3AB500622690 /* openbis-icon-72.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "openbis-icon-72.png"; sourceTree = "<group>"; }; @@ -279,6 +282,8 @@ 36F71ED0161C453D00C87277 /* CISDOBIpadEntity.m */, 36F71ED1161C453D00C87277 /* CISDOBIpadService.h */, 36F71ED2161C453D00C87277 /* CISDOBIpadService.m */, + 362B81EA163FFB6C00127554 /* CISDOBIpadServiceManager.h */, + 362B81EB163FFB6C00127554 /* CISDOBIpadServiceManager.m */, 36F71ED3161C453D00C87277 /* CISDOBJsonRpcCall.h */, 36F71ED4161C453D00C87277 /* CISDOBJsonRpcCall.m */, 36F71ED6161C453D00C87277 /* persistent-data-model.xcdatamodeld */, @@ -457,6 +462,7 @@ 36F71EE8161C453D00C87277 /* CISDOBJsonRpcCall.m in Sources */, 36F71EE9161C453D00C87277 /* persistent-data-model.xcdatamodeld in Sources */, 36F97A2E1628123F005D063E /* CISDOBOpenBisModel.m in Sources */, + 362B81EC163FFB6C00127554 /* CISDOBIpadServiceManager.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; diff --git a/openbis-ipad/openBIS/openBIS.xcodeproj/project.xcworkspace/xcuserdata/cramakri.xcuserdatad/UserInterfaceState.xcuserstate b/openbis-ipad/openBIS/openBIS.xcodeproj/project.xcworkspace/xcuserdata/cramakri.xcuserdatad/UserInterfaceState.xcuserstate index 48bcf26b924ed9d598bc0dab5e48b311e6dd620a..35f28ec216f2c166b4a44d311abc0302462c7dda 100644 Binary files a/openbis-ipad/openBIS/openBIS.xcodeproj/project.xcworkspace/xcuserdata/cramakri.xcuserdatad/UserInterfaceState.xcuserstate and b/openbis-ipad/openBIS/openBIS.xcodeproj/project.xcworkspace/xcuserdata/cramakri.xcuserdatad/UserInterfaceState.xcuserstate differ diff --git a/openbis-ipad/openBIS/openBIS/CISDOBAppDelegate.h b/openbis-ipad/openBIS/openBIS/CISDOBAppDelegate.h index 245d5ddba823aec5e95eb8904c1af8b3d766518d..71d8b0e3bb525ce02abc6bfed11472e2c03d80e4 100644 --- a/openbis-ipad/openBIS/openBIS/CISDOBAppDelegate.h +++ b/openbis-ipad/openBIS/openBIS/CISDOBAppDelegate.h @@ -23,7 +23,7 @@ #import <UIKit/UIKit.h> -@class CISDOBOpenBisModel; +@class CISDOBOpenBisModel, CISDOBIpadServiceManager; @interface CISDOBAppDelegate : UIResponder <UIApplicationDelegate> @property (strong, nonatomic) UIWindow *window; @@ -32,6 +32,7 @@ @property (readonly, strong, nonatomic) NSManagedObjectModel *managedObjectModel; @property (readonly, strong, nonatomic) NSPersistentStoreCoordinator *persistentStoreCoordinator; @property (readonly, strong, nonatomic) CISDOBOpenBisModel *rootOpenBisModel; +@property (readonly, strong, nonatomic) CISDOBIpadServiceManager *serviceManager; - (void)saveContext; - (NSURL *)applicationDocumentsDirectory; diff --git a/openbis-ipad/openBIS/openBIS/CISDOBAppDelegate.m b/openbis-ipad/openBIS/openBIS/CISDOBAppDelegate.m index 476da61e8f9a0ebaf98946b4eca481b3ab24b127..14483242836bf0b7f494661ac697225f4587c4a5 100644 --- a/openbis-ipad/openBIS/openBIS/CISDOBAppDelegate.m +++ b/openbis-ipad/openBIS/openBIS/CISDOBAppDelegate.m @@ -25,6 +25,8 @@ #import "CISDOBMasterViewController.h" #import "CISDOBOpenBisModel.h" +#import "CISDOBIpadServiceManager.h" +#import "CISDOBAsyncCall.h" @implementation CISDOBAppDelegate @@ -32,6 +34,7 @@ @synthesize managedObjectModel = _managedObjectModel; @synthesize persistentStoreCoordinator = _persistentStoreCoordinator; @synthesize rootOpenBisModel = _rootOpenBisModel; +@synthesize serviceManager = _serviceManager; - (void)configureControllers; { @@ -65,6 +68,14 @@ [self configureControllers]; CISDOBMasterViewController *controller = [self masterViewController]; controller.openBisModel = self.rootOpenBisModel; + + // Initialize the connection to openBIS + CISDOBAsyncCall *call = [self.serviceManager loginUser: @"admin" password: @"password"]; + call.success = ^(id result) { + [controller didConnectServiceManager: self.serviceManager]; + }; + [call start]; + return YES; } @@ -162,10 +173,26 @@ _rootOpenBisModel = [[CISDOBOpenBisModel alloc] init]; _rootOpenBisModel.managedObjectContext = self.managedObjectContext; + _rootOpenBisModel.serviceManager = self.serviceManager; return _rootOpenBisModel; } +- (CISDOBIpadServiceManager *)serviceManager +{ + if (_serviceManager) return _serviceManager; + + NSURL *storeUrl = [[self applicationDocumentsDirectory] URLByAppendingPathComponent:@"openBISData.sqlite"]; + NSURL *openbisUrl = [NSURL URLWithString: @"https://localhost:8443"]; + + NSError *error; + _serviceManager = + [[CISDOBIpadServiceManager alloc] + initWithStoreUrl: storeUrl openbisUrl: openbisUrl trusted: YES error: &error]; + + return _serviceManager; +} + #pragma mark - Application's Documents directory // Returns the URL to the application's Documents directory. diff --git a/openbis-ipad/openBIS/openBIS/CISDOBMasterViewController.h b/openbis-ipad/openBIS/openBIS/CISDOBMasterViewController.h index 0a126623f07f5a134136bc80028a5a3e5ab4b1fe..d1f6f47894c685e4228238261999804d2aff9043 100644 --- a/openbis-ipad/openBIS/openBIS/CISDOBMasterViewController.h +++ b/openbis-ipad/openBIS/openBIS/CISDOBMasterViewController.h @@ -23,7 +23,7 @@ #import <UIKit/UIKit.h> -@class CISDOBDetailViewController, CISDOBOpenBisModel; +@class CISDOBDetailViewController, CISDOBOpenBisModel, CISDOBIpadServiceManager; #import <CoreData/CoreData.h> @@ -32,4 +32,7 @@ @property (strong, nonatomic) CISDOBDetailViewController *detailViewController; @property (strong, nonatomic) CISDOBOpenBisModel *openBisModel; +// Server Communication +- (void)didConnectServiceManager:(CISDOBIpadServiceManager *)serviceManager; + @end diff --git a/openbis-ipad/openBIS/openBIS/CISDOBMasterViewController.m b/openbis-ipad/openBIS/openBIS/CISDOBMasterViewController.m index b71f4952a2ef1096423c2a02eb2481eeb877ac01..31881c7a0eea008f06d665f36ccc0511dca93e13 100644 --- a/openbis-ipad/openBIS/openBIS/CISDOBMasterViewController.m +++ b/openbis-ipad/openBIS/openBIS/CISDOBMasterViewController.m @@ -227,6 +227,14 @@ } */ +#pragma mark - Server Communication +- (void)didConnectServiceManager:(CISDOBIpadServiceManager *)serviceManager +{ + [self.openBisModel syncRootEntities: ^(id result) { + [self.tableView reloadData]; + }]; +} + #pragma mark - Properties diff --git a/openbis-ipad/openBIS/openBIS/CISDOBOpenBisModel.h b/openbis-ipad/openBIS/openBIS/CISDOBOpenBisModel.h index 7b4e6d5cac288c5fe635c962976c90d2667483e9..60c2341293d06033af9863ff523743a0bc1678c2 100644 --- a/openbis-ipad/openBIS/openBIS/CISDOBOpenBisModel.h +++ b/openbis-ipad/openBIS/openBIS/CISDOBOpenBisModel.h @@ -23,7 +23,7 @@ #import <Foundation/Foundation.h> #import "CISDOBShared.h" -@class CISDOBIpadEntity; +@class CISDOBIpadEntity, CISDOBIpadServiceManager; /** * \brief A model for the interaction with openBIS. @@ -37,6 +37,7 @@ @property (weak, nonatomic) id <NSFetchedResultsControllerDelegate> delegate; @property (weak, nonatomic) CISDOBOpenBisModel *parentModel; +@property (weak, nonatomic) CISDOBIpadServiceManager *serviceManager; // Initialize - (id)initWithParentModel:(CISDOBOpenBisModel *)parentModel; //!< The designated initializer @@ -60,6 +61,8 @@ - (BOOL)deleteObjectAtIndexPath:(NSIndexPath *)indexPath error:(NSError **)error; //!< Return YES if operation succeeded // Server Communication +- (void)syncRootEntities:(SuccessBlock)success; + //! Get the full selected object from the server and invoke the success block when the data is here - (void)syncSelectedObjectForDetailOnSuccess:(SuccessBlock)success; diff --git a/openbis-ipad/openBIS/openBIS/CISDOBOpenBisModel.m b/openbis-ipad/openBIS/openBIS/CISDOBOpenBisModel.m index c5a4d3eb127cf10e26b425c82b4a6600ce2c3a83..c24e77be6832936df32c8f96778ffa86505f7351 100644 --- a/openbis-ipad/openBIS/openBIS/CISDOBOpenBisModel.m +++ b/openbis-ipad/openBIS/openBIS/CISDOBOpenBisModel.m @@ -22,6 +22,8 @@ #import "CISDOBOpenBisModel.h" #import "CISDOBIpadEntity.h" +#import "CISDOBIpadServiceManager.h" +#import "CISDOBAsyncCall.h" @implementation CISDOBOpenBisModel @@ -42,6 +44,7 @@ if (self.parentModel) { self.managedObjectContext = parentModel.managedObjectContext; + self.serviceManager = parentModel.serviceManager; } return self; @@ -120,6 +123,14 @@ } #pragma mark - Server Communication +- (void)syncRootEntities:(SuccessBlock)success; +{ + // The manager has connected, initialize the root + CISDOBAsyncCall *call = [self.serviceManager retrieveRootLevelEntities]; + call.success = success; + [call start]; +} + - (void)syncSelectedObjectForDetailOnSuccess:(SuccessBlock)success { // Load the image if necessary