From 66f7e49e065129871c13a904f64831bd28c4435f Mon Sep 17 00:00:00 2001 From: juanf <juanf> Date: Tue, 27 Aug 2013 07:42:22 +0000 Subject: [PATCH] SP-823 / BIS-500: Sync Fix in progress, maybe needs rollback. SVN: 29676 --- .../objc/BisKit/Classes/CISDOBIpadService.h | 5 ++- .../objc/BisKit/Classes/CISDOBIpadService.m | 20 ++++++++++- .../BisKit/Classes/CISDOBIpadServiceManager.h | 7 +++- .../BisKit/Classes/CISDOBIpadServiceManager.m | 31 +++++++++++------- .../contents | 4 +-- .../UserInterfaceState.xcuserstate | Bin 38480 -> 51741 bytes .../objc/openBIS/openBIS/CISDOBAppDelegate.m | 15 +++++++++ 7 files changed, 66 insertions(+), 16 deletions(-) diff --git a/openbis-ipad/source/objc/BisKit/Classes/CISDOBIpadService.h b/openbis-ipad/source/objc/BisKit/Classes/CISDOBIpadService.h index 3ca714ac9cd..1b6903cd9ff 100644 --- a/openbis-ipad/source/objc/BisKit/Classes/CISDOBIpadService.h +++ b/openbis-ipad/source/objc/BisKit/Classes/CISDOBIpadService.h @@ -63,7 +63,10 @@ id ObjectFromJsonData(NSString *jsonDataString, NSError **error); - (CISDOBAsyncCall *)listNavigationalEntities; //! Get all root-level entities from the openBIS ipad service for the specified navigational entities. This should return all the entities associated with that navigational entity that are considered part of the root set. The success block will be invoked with a collection of CISDOBIpadRawEntity objects. -- (CISDOBAsyncCall *)listRootLevelEntities:(NSArray *)permIds refcons:(NSArray *)refcons; +//- (CISDOBAsyncCall *)listRootLevelEntities:(NSArray *)permIds refcons:(NSArray *)refcons; + +//! Get all root-level entities from the openBIS ipad service for the specified navigational entities. This should return all the entities associated with that navigational entity that are considered part of the root set. Only returns objects that have changed since the date. The success block will be invoked with a collection of CISDOBIpadRawEntity objects. +- (CISDOBAsyncCall *)listChangesSince:(NSDate *)lastUpdateDate rootLevelEntity:(NSArray *)permIds refcons:(NSArray *)refcons; //! Get drill information from the openBIS ipad service -- this will include information about the children of the entity and possibly their children as well. The permIds and refcons collections must have the same cardinality. The success block will be invoked with a collection of CISDOBIpadRawEntity objects. - (CISDOBAsyncCall *)drillOnEntities:(NSArray *)permIds refcons:(NSArray *)refcons; diff --git a/openbis-ipad/source/objc/BisKit/Classes/CISDOBIpadService.m b/openbis-ipad/source/objc/BisKit/Classes/CISDOBIpadService.m index 622a76cbe37..7f7b04ce9e4 100644 --- a/openbis-ipad/source/objc/BisKit/Classes/CISDOBIpadService.m +++ b/openbis-ipad/source/objc/BisKit/Classes/CISDOBIpadService.m @@ -166,7 +166,7 @@ id ObjectFromJsonData(NSString *jsonDataString, NSError **error) CISDOBIpadServiceCall *serviceCall = [self createIpadServiceCallWithParameters: parameters]; return serviceCall; } - +/* - (CISDOBAsyncCall *)listRootLevelEntities:(NSArray *)permIds refcons:(NSArray *)refcons { NSUInteger count = [permIds count]; @@ -182,6 +182,24 @@ id ObjectFromJsonData(NSString *jsonDataString, NSError **error) if (serviceCall.timeoutInterval < 60.) serviceCall.timeoutInterval = 60.; return serviceCall; } +*/ +- (CISDOBAsyncCall *)listChangesSince:(NSDate *)lastUpdateDate rootLevelEntity:(NSArray *)permIds refcons:(NSArray *)refcons +{ + NSUInteger count = [permIds count]; + NSAssert([refcons count] == count, @"Drilling requires permIds and refcons. There must be an equal number of these."); + NSArray *entities; + entities = [self convertToEntitiesPermIds: permIds refcons: refcons count: count]; + NSDictionary *parameters = + [NSDictionary dictionaryWithObjectsAndKeys: + @"ROOT", @"requestKey", + entities, @"entities", + [NSString stringWithFormat: @"%f", [lastUpdateDate timeIntervalSince1970]], @"lastupdate", nil]; + CISDOBIpadServiceCall *serviceCall = [self createIpadServiceCallWithParameters: parameters]; + // Make sure the timeout interval is at least 60s + if (serviceCall.timeoutInterval < 60.) serviceCall.timeoutInterval = 60.; + return serviceCall; + +} - (NSArray *)convertToEntitiesPermIds:(NSArray *)permIds refcons:(NSArray *)refcons count:(NSUInteger)count { diff --git a/openbis-ipad/source/objc/BisKit/Classes/CISDOBIpadServiceManager.h b/openbis-ipad/source/objc/BisKit/Classes/CISDOBIpadServiceManager.h index 08cca814155..4334e753dd0 100644 --- a/openbis-ipad/source/objc/BisKit/Classes/CISDOBIpadServiceManager.h +++ b/openbis-ipad/source/objc/BisKit/Classes/CISDOBIpadServiceManager.h @@ -71,6 +71,8 @@ typedef void (^AuthenticationChallengeBlock)(CISDOBAsyncCall *call, NSURLAuthent typedef void (^MocSaveBlock)(CISDOBIpadServiceManager *serviceManager, NSArray *deletedEntityPermIds); +typedef void (^MocPostSaveBlock)(CISDOBIpadServiceManager *serviceManager); + /** @@ -90,7 +92,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 (getter=isSyncDone) BOOL syncDone; @property(strong, nonatomic) NSDate *lastRootSetUpdateDate; @@ -100,6 +102,9 @@ typedef void (^MocSaveBlock)(CISDOBIpadServiceManager *serviceManager, NSArray * //! Called before the service manager saves the managed object context which will delete the entities with the deletedEntityPermIds @property (copy, nonatomic) MocSaveBlock mocSaveBlock; +//! Called after the service manager successfully saves the managed object context +@property (copy, nonatomic) MocPostSaveBlock mocPostSaveBlock; + // Initialization - (id)initWithStoreUrl:(NSURL *)storeUrl openbisUrl:(NSURL *)openbisUrl trusted:(BOOL)trusted error:(NSError **)error; diff --git a/openbis-ipad/source/objc/BisKit/Classes/CISDOBIpadServiceManager.m b/openbis-ipad/source/objc/BisKit/Classes/CISDOBIpadServiceManager.m index fb6b3a3553f..cfa3e7b29a5 100644 --- a/openbis-ipad/source/objc/BisKit/Classes/CISDOBIpadServiceManager.m +++ b/openbis-ipad/source/objc/BisKit/Classes/CISDOBIpadServiceManager.m @@ -164,7 +164,11 @@ static NSManagedObjectContext* GetMainThreadManagedObjectContext(NSURL* storeUrl - (BOOL)saveManagedObjectContextDeleting:(NSArray *)deletedEntities error:(NSError **)error { if (self.mocSaveBlock) self.mocSaveBlock(self, deletedEntities); - return [self.managedObjectContext save: error]; + BOOL success = [self.managedObjectContext save: error]; + if (success) { + if (self.mocPostSaveBlock) self.mocPostSaveBlock(self); + } + return success; } - (void)pruneEntitiesNotifying:(CISDOBIpadServiceManagerCall *)managerCall @@ -319,13 +323,14 @@ static NSManagedObjectContext* GetMainThreadManagedObjectContext(NSURL* storeUrl CISDOBAsyncCall *call = [self.service listNavigationalEntities]; CISDOBIpadServiceManagerCall *managerCall = [[CISDOBIpadServiceManagerCall alloc] initWithServiceManager: self serviceCall: call]; + // Save the update date to be the time the call is constructed (i.e., before the call is made) + NSDate *timeOfCallConstruction = [NSDate date]; __weak CISDOBIpadServiceManager *weakSelf = self; call.success = ^(id result) { weakSelf.online = YES; - // Update the set update date - weakSelf.lastRootSetUpdateDate = [NSDate date]; + self.lastRootSetUpdateDate = timeOfCallConstruction; CISDOBIpadServiceManagerRetrieveRootSetCommand *command = [[CISDOBIpadServiceManagerRetrieveRootSetCommand alloc] init]; command.serviceManager = weakSelf; command.serviceManagerCall = managerCall; @@ -651,12 +656,16 @@ static NSManagedObjectContext* GetMainThreadManagedObjectContext(NSURL* storeUrl NSError *error; // Remove entities that were not updated since the prune cutoff date // Remove all entities that were not mentioned - NSFetchRequest *fetchRequest = [self.serviceManager fetchRequestForEntitiesNotUpdatedSince: self.pruneCutoffDate]; - NSArray *entitiesToDelete = [self.managedObjectContext executeFetchRequest: fetchRequest error: &error]; - for (CISDOBIpadEntity *entity in entitiesToDelete) { - [(NSMutableArray *)_deletedEntityPermIds addObject: entity.permId]; - [self.managedObjectContext deleteObject: entity]; - } + + // TODO Do not pune any more (change still in progress...) +// NSFetchRequest *fetchRequest = [self.serviceManager fetchRequestForEntitiesNotUpdatedSince: self.pruneCutoffDate]; +// NSArray *entitiesToDelete = [self.managedObjectContext executeFetchRequest: fetchRequest error: &error]; +// for (CISDOBIpadEntity *entity in entitiesToDelete) { +// [(NSMutableArray *)_deletedEntityPermIds addObject: entity.permId]; +// [self.managedObjectContext deleteObject: entity]; +// } + + // Could be an issue -- synchDone variable not updated in the main thread self.serviceManager.syncDone = YES; [[NSNotificationCenter defaultCenter] postNotificationName: CISDOBIpadServiceDidSynchPruningEntitiesNotification object: self]; success = [self.managedObjectContext save: &error]; @@ -809,7 +818,7 @@ static NSManagedObjectContext* GetMainThreadManagedObjectContext(NSURL* storeUrl NSArray *permIds = [NSArray arrayWithObject: navEntity.permId]; NSArray *refcons = [NSArray arrayWithObject: navEntity.refcon]; - CISDOBAsyncCall *call = [self.serviceManager.service listRootLevelEntities: permIds refcons: refcons]; + CISDOBAsyncCall *call = [self.serviceManager.service listChangesSince: self.serviceManager.lastRootSetUpdateDate rootLevelEntity: permIds refcons: refcons]; call.success = ^(id result) { [self.serviceManager syncEntities: result notifying: nil]; if (currentIndex+1 == count) { @@ -831,7 +840,7 @@ static NSManagedObjectContext* GetMainThreadManagedObjectContext(NSURL* storeUrl // listRootLevelEntites without arguments NSArray *permIds = [NSArray array]; NSArray *refcons = [NSArray array]; - CISDOBAsyncCall *call = [self.serviceManager.service listRootLevelEntities: permIds refcons: refcons]; + CISDOBAsyncCall *call = [self.serviceManager.service listChangesSince: self.serviceManager.lastRootSetUpdateDate rootLevelEntity: permIds refcons: refcons]; call.success = ^(id result) { [self.serviceManager syncEntities: result notifying: nil]; diff --git a/openbis-ipad/source/objc/BisKit/Classes/persistent-data-model.xcdatamodeld/persistent-data-model.xcdatamodel/contents b/openbis-ipad/source/objc/BisKit/Classes/persistent-data-model.xcdatamodeld/persistent-data-model.xcdatamodel/contents index 4d2005a5341..faff8ff020e 100644 --- a/openbis-ipad/source/objc/BisKit/Classes/persistent-data-model.xcdatamodeld/persistent-data-model.xcdatamodel/contents +++ b/openbis-ipad/source/objc/BisKit/Classes/persistent-data-model.xcdatamodeld/persistent-data-model.xcdatamodel/contents @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" standalone="yes"?> -<model name="" userDefinedModelVersionIdentifier="" type="com.apple.IDECoreDataModeler.DataModel" documentVersion="1.0" lastSavedToolsVersion="1811" systemVersion="11G56" minimumToolsVersion="Xcode 4.3" macOSVersion="Automatic" iOSVersion="Automatic"> +<model name="" userDefinedModelVersionIdentifier="" type="com.apple.IDECoreDataModeler.DataModel" documentVersion="1.0" lastSavedToolsVersion="2057" systemVersion="12D78" minimumToolsVersion="Xcode 4.3" macOSVersion="Automatic" iOSVersion="Automatic"> <entity name="CISDOBIpadEntity" representedClassName="CISDOBIpadEntity" syncable="YES"> <attribute name="category" optional="YES" attributeType="String" indexed="YES" syncable="YES"/> <attribute name="childrenPermIds" optional="YES" transient="YES" syncable="YES"/> @@ -22,6 +22,6 @@ <fetchRequest name="EntityAndChildren" entity="CISDOBIpadEntity" predicateString="SELF == $ENTITY OR permId IN $CHILDREN" fetchBatchSize="20"/> <fetchRequest name="RootEntities" entity="CISDOBIpadEntity" predicateString="rootLevel == 0" fetchBatchSize="20"/> <elements> - <element name="CISDOBIpadEntity" positionX="0" positionY="0" width="0" height="0"/> + <element name="CISDOBIpadEntity" positionX="0" positionY="0" width="128" height="270"/> </elements> </model> \ No newline at end of file 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 0fe81a140016828bf27d26df9fa19bcf4b2c51ab..b8286a113b469be908e8cc4a096977a566d8d7be 100644 GIT binary patch literal 51741 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⁢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 literal 38480 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 Zx+Gc^UGra)iHVJU;BH4B_<u&L{{<L=%}oFR diff --git a/openbis-ipad/source/objc/openBIS/openBIS/CISDOBAppDelegate.m b/openbis-ipad/source/objc/openBIS/openBIS/CISDOBAppDelegate.m index 10e77f1eb6c..e9fcc8a22a4 100644 --- a/openbis-ipad/source/objc/openBIS/openBIS/CISDOBAppDelegate.m +++ b/openbis-ipad/source/objc/openBIS/openBIS/CISDOBAppDelegate.m @@ -55,6 +55,8 @@ NSURL *StoreUrlFromOpenbisUrl(NSURL *applicationDocumentsDirectory, NSURL *openb - (NSString *)username { return [[NSUserDefaults standardUserDefaults] stringForKey: @"openbis_username"]; } - (NSString *)password { return [[NSUserDefaults standardUserDefaults] stringForKey: @"openbis_password"]; } +- (NSDate *)lastUpdatedDate { return [[NSUserDefaults standardUserDefaults] objectForKey: @"last_updated_date"]; } + - (NSURL *)openbisUrl { NSString *urlString = [[NSUserDefaults standardUserDefaults] stringForKey: @"openbis_server_url"]; return [NSURL URLWithString: urlString]; @@ -68,6 +70,11 @@ NSURL *StoreUrlFromOpenbisUrl(NSURL *applicationDocumentsDirectory, NSURL *openb { return [[NSUserDefaults standardUserDefaults] setObject: password forKey: @"openbis_password"]; } +- (void)setLastUpdatedDate:(NSDate *)lastUpdatedDate +{ + return [[NSUserDefaults standardUserDefaults] setObject: lastUpdatedDate forKey: @"last_updated_date"]; +} + - (void)setOpenbisUrl:(NSURL *)openbisUrl { return [[NSUserDefaults standardUserDefaults] setObject: [openbisUrl absoluteString] forKey: @"openbis_server_url"]; @@ -274,6 +281,10 @@ NSURL *StoreUrlFromOpenbisUrl(NSURL *applicationDocumentsDirectory, NSURL *openb if (!_serviceManager) return NO; } + // Initialize the lastUpdateDate of the service manager from the stored state + NSDate* lastUpdatedDate = [self lastUpdatedDate]; + _serviceManager.lastRootSetUpdateDate = lastUpdatedDate; + // Use a weak reference to self in blocks to avoid retain cycles __weak CISDOBAppDelegate *weakSelf = self; _serviceManager.authenticationChallengeBlock = ^(CISDOBAsyncCall *call, NSURLAuthenticationChallenge *challenge) { @@ -282,6 +293,10 @@ NSURL *StoreUrlFromOpenbisUrl(NSURL *applicationDocumentsDirectory, NSURL *openb _serviceManager.mocSaveBlock = ^(CISDOBIpadServiceManager *serviceManager, NSArray *deletedEntityPermIds) { [weakSelf serviceManager: serviceManager willSaveDeletingEntities: deletedEntityPermIds]; }; + _serviceManager.mocPostSaveBlock = ^(CISDOBIpadServiceManager *serviceManager) { + // Update the lastUpdateDate to the time the service manager was created + [weakSelf setLastUpdatedDate: serviceManager.lastRootSetUpdateDate]; + }; return YES; } -- GitLab