From 81c0c123c2b79293a343abd067c1c752f8f8416c Mon Sep 17 00:00:00 2001
From: juanf <juanf>
Date: Mon, 26 Aug 2013 13:06:15 +0000
Subject: [PATCH] SP-823 / BIS-500: Stored cache per server and basic sync fix

SVN: 29673
---
 .../BisKit/Classes/CISDOBIpadServiceManager.h |   5 ++++-
 .../BisKit/Classes/CISDOBIpadServiceManager.m |   9 ++++++---
 .../UserInterfaceState.xcuserstate            | Bin 22937 -> 38480 bytes
 .../objc/openBIS/openBIS/CISDOBAppDelegate.m  |  13 ++++++++++++-
 .../openBIS/CISDOBDetailViewController.m      |   4 ++++
 .../objc/openBIS/openBIS/CISDOBOpenBisModel.m |   2 +-
 6 files changed, 27 insertions(+), 6 deletions(-)

diff --git a/openbis-ipad/source/objc/BisKit/Classes/CISDOBIpadServiceManager.h b/openbis-ipad/source/objc/BisKit/Classes/CISDOBIpadServiceManager.h
index 156816357d7..08cca814155 100644
--- a/openbis-ipad/source/objc/BisKit/Classes/CISDOBIpadServiceManager.h
+++ b/openbis-ipad/source/objc/BisKit/Classes/CISDOBIpadServiceManager.h
@@ -46,10 +46,12 @@ FOUNDATION_EXPORT NSString *const CISDOBIpadServiceDidRetrieveDetailsForEntityNo
 FOUNDATION_EXPORT NSString *const CISDOBIpadServiceWillSynchEntitiesNotification;
 FOUNDATION_EXPORT NSString *const CISDOBIpadServiceDidSynchEntitiesNotification;
 
+FOUNDATION_EXPORT NSString *const CISDOBIpadServiceWillSynchPruningEntitiesNotification;
+FOUNDATION_EXPORT NSString *const CISDOBIpadServiceDidSynchPruningEntitiesNotification;
+
 FOUNDATION_EXPORT NSString *const CISDOBIpadServiceWillSearchForEntitiesNotification;
 FOUNDATION_EXPORT NSString *const CISDOBIpadServiceDidSearchForEntitiesNotification;
 
-
 //
 // Errors that can happen in the service manager
 //
@@ -88,6 +90,7 @@ typedef void (^MocSaveBlock)(CISDOBIpadServiceManager *serviceManager, NSArray *
 @property (readonly) NSOperationQueue *queue;
 @property (readonly) NSString *sessionToken;
 @property (nonatomic, getter=isOnline) BOOL online;
+@property (nonatomic, getter=isSyncDone) BOOL syncDone;
 
 @property(strong, nonatomic) NSDate *lastRootSetUpdateDate;
 
diff --git a/openbis-ipad/source/objc/BisKit/Classes/CISDOBIpadServiceManager.m b/openbis-ipad/source/objc/BisKit/Classes/CISDOBIpadServiceManager.m
index 5f33869793d..fb6b3a3553f 100644
--- a/openbis-ipad/source/objc/BisKit/Classes/CISDOBIpadServiceManager.m
+++ b/openbis-ipad/source/objc/BisKit/Classes/CISDOBIpadServiceManager.m
@@ -39,6 +39,8 @@ NSString *const CISDOBIpadServiceWillRetrieveDetailsForEntityNotification = @"CI
 NSString *const CISDOBIpadServiceDidRetrieveDetailsForEntityNotification = @"CISDOBIpadServiceDidRetrieveDetailsForEntityNotification";
 NSString *const CISDOBIpadServiceWillSynchEntitiesNotification = @"CISDOBIpadServiceWillSynchEntitiesNotification";
 NSString *const CISDOBIpadServiceDidSynchEntitiesNotification = @"CISDOBIpadServiceDidSynchEntitiesNotification";
+NSString *const CISDOBIpadServiceWillSynchPruningEntitiesNotification = @"CISDOBIpadServiceWillSynchPruningEntitiesNotification";
+NSString *const CISDOBIpadServiceDidSynchPruningEntitiesNotification = @"CISDOBIpadServiceDidSynchPruningEntitiesNotification";
 NSString *const CISDOBIpadServiceWillSearchForEntitiesNotification = @"CISDOBIpadServiceWillSearchForEntitiesNotification";
 NSString *const CISDOBIpadServiceDidSearchForEntitiesNotification = @"CISDOBIpadServiceDidSearchForEntitiesNotification";
 
@@ -126,7 +128,7 @@ static NSManagedObjectContext* GetMainThreadManagedObjectContext(NSURL* storeUrl
         // Restrict this queue to processing operations serially
     [_queue setMaxConcurrentOperationCount: 1];
     self.online = NO;
-    
+    self.syncDone = NO;
     return self;
 }
 
@@ -644,7 +646,7 @@ static NSManagedObjectContext* GetMainThreadManagedObjectContext(NSURL* storeUrl
 - (void)run
 {
     if (!self.pruneCutoffDate) return;
-    
+    [[NSNotificationCenter defaultCenter] postNotificationName: CISDOBIpadServiceWillSynchPruningEntitiesNotification object: self];
     BOOL success;
     NSError *error;
     // Remove entities that were not updated since the prune cutoff date
@@ -655,7 +657,8 @@ static NSManagedObjectContext* GetMainThreadManagedObjectContext(NSURL* storeUrl
         [(NSMutableArray *)_deletedEntityPermIds addObject: entity.permId];
         [self.managedObjectContext deleteObject: entity];
     }
-    
+    self.serviceManager.syncDone = YES;
+    [[NSNotificationCenter defaultCenter] postNotificationName: CISDOBIpadServiceDidSynchPruningEntitiesNotification object: self];
     success = [self.managedObjectContext save: &error];
     if (!success) {
         self.error = error;
diff --git a/openbis-ipad/source/objc/openBIS/openBIS.xcodeproj/project.xcworkspace/xcuserdata/juanf.xcuserdatad/UserInterfaceState.xcuserstate b/openbis-ipad/source/objc/openBIS/openBIS.xcodeproj/project.xcworkspace/xcuserdata/juanf.xcuserdatad/UserInterfaceState.xcuserstate
index 3ebd4f609bca7d45d1b29939a76dc19b9dfe413d..0fe81a140016828bf27d26df9fa19bcf4b2c51ab 100644
GIT binary patch
literal 38480
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
Zx+Gc^UGra)iHVJU;BH4B_<u&L{{<L=%}oFR

delta 12696
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
E52-I8;{X5v

diff --git a/openbis-ipad/source/objc/openBIS/openBIS/CISDOBAppDelegate.m b/openbis-ipad/source/objc/openBIS/openBIS/CISDOBAppDelegate.m
index b09f18db207..10e77f1eb6c 100644
--- a/openbis-ipad/source/objc/openBIS/openBIS/CISDOBAppDelegate.m
+++ b/openbis-ipad/source/objc/openBIS/openBIS/CISDOBAppDelegate.m
@@ -32,6 +32,16 @@
 #import "CISDOBAuthenticationChallengeConfirmationDialog.h"
 #import "CISDOBIpadEntity.h"
 
+NSURL *StoreUrlFromOpenbisUrl(NSURL *applicationDocumentsDirectory, NSURL *openbisUrl)
+{
+    NSString *host = [openbisUrl host];
+    NSNumber *port = [openbisUrl port];
+    
+    NSString *pathString = (port) ? [NSString stringWithFormat: @"%@_%@-data.sqlite", host, port] : [NSString stringWithFormat: @"%@-data.sqlite", host];
+    NSURL *storeUrl = [applicationDocumentsDirectory URLByAppendingPathComponent: pathString];
+    return storeUrl;
+}
+
 @implementation CISDOBAppDelegate
 
 @synthesize rootOpenBisModel = _rootOpenBisModel;
@@ -67,6 +77,7 @@
 
 - (void)verifyLoginURL:(NSURL *)openbisUrl username:(NSString *)username password:(NSString *)password sender:(CISDOBLoginViewController *)controller
 {
+    
     NSError *error;
     if (![self initializeServiceManager: openbisUrl error: &error]) {
         [controller showError: error];
@@ -247,7 +258,7 @@
 - (BOOL)initializeServiceManager:(NSURL *)openbisUrl error:(NSError **)error
 {
     
-    NSURL *storeUrl = [[self applicationDocumentsDirectory] URLByAppendingPathComponent:@"openBISData.sqlite"];
+    NSURL *storeUrl = StoreUrlFromOpenbisUrl([self applicationDocumentsDirectory], openbisUrl);
         
     _serviceManager =
         [[CISDOBIpadServiceManager alloc]
diff --git a/openbis-ipad/source/objc/openBIS/openBIS/CISDOBDetailViewController.m b/openbis-ipad/source/objc/openBIS/openBIS/CISDOBDetailViewController.m
index bf7b8d8d8c0..a0831032f03 100644
--- a/openbis-ipad/source/objc/openBIS/openBIS/CISDOBDetailViewController.m
+++ b/openbis-ipad/source/objc/openBIS/openBIS/CISDOBDetailViewController.m
@@ -404,6 +404,10 @@
         [self setStatusText: @"Synching entities with cache..."];
     } else if ([CISDOBIpadServiceDidSynchEntitiesNotification isEqualToString: [note name]]) {
         [self clearStatusText];
+    } else if ([CISDOBIpadServiceWillSynchPruningEntitiesNotification isEqualToString: [note name]]) {
+        [self setStatusText: @"Pruning entities from cache..."];
+    } else if ([CISDOBIpadServiceDidSynchPruningEntitiesNotification isEqualToString: [note name]]) {
+        [self clearStatusText];
     } else if ([CISDOBIpadServiceWillDrillOnEntityNotification isEqualToString: [note name]]) {
         [self setStatusText: @"Retrieving drill information..."];
     } else if ([CISDOBIpadServiceDidDrillOnEntityNotification isEqualToString: [note name]]) {
diff --git a/openbis-ipad/source/objc/openBIS/openBIS/CISDOBOpenBisModel.m b/openbis-ipad/source/objc/openBIS/openBIS/CISDOBOpenBisModel.m
index 50b5ef986d6..0b277213868 100644
--- a/openbis-ipad/source/objc/openBIS/openBIS/CISDOBOpenBisModel.m
+++ b/openbis-ipad/source/objc/openBIS/openBIS/CISDOBOpenBisModel.m
@@ -66,7 +66,7 @@
     NSString *filterScope = @"Filter";
     
     // Search is only possible if we are online
-    if (self.isOnline) {
+    if (self.isOnline && self.serviceManager.isSyncDone) {
         NSArray *searchDomains = self.serviceManager.service.clientPreferences.searchDomains;
         for (NSDictionary *domain in searchDomains) {
             NSString *label = [domain objectForKey: @"label"];
-- 
GitLab