From 3447f3f89d787aaa14c62275ec56955b9a3af9da Mon Sep 17 00:00:00 2001 From: cramakri <cramakri> Date: Fri, 12 Oct 2012 09:55:15 +0000 Subject: [PATCH] Introduced a proper model SVN: 27164 --- .../UserInterfaceState.xcuserstate | Bin 57335 -> 58017 bytes .../openBIS/openBIS/CISDOBAppDelegate.m | 2 +- .../openBIS/CISDOBMasterViewController.h | 4 +- .../openBIS/CISDOBMasterViewController.m | 57 +++++++----------- .../openBIS/openBIS/CISDOBOpenBisModel.h | 3 +- .../openBIS/openBIS/CISDOBOpenBisModel.m | 57 ++++++++++++++++++ 6 files changed, 83 insertions(+), 40 deletions(-) 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 4aafb5de0c758b66ed527e9d5bc8d8db96dc5dc4..03927c4f6ff207b0f6316ab6ac2e2c3138641c2a 100644 GIT binary patch delta 24237 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 delta 24086 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 I{}y-p7a!!fEC2ui diff --git a/openbis-ipad/openBIS/openBIS/CISDOBAppDelegate.m b/openbis-ipad/openBIS/openBIS/CISDOBAppDelegate.m index e9d068f0170..6bbbfa69db8 100644 --- a/openbis-ipad/openBIS/openBIS/CISDOBAppDelegate.m +++ b/openbis-ipad/openBIS/openBIS/CISDOBAppDelegate.m @@ -55,7 +55,7 @@ { // Initialize the controller CISDOBMasterViewController *controller = [self masterViewController]; - controller.managedObjectContext = self.managedObjectContext; + controller.openBisModel = self.openBisModel; return YES; } diff --git a/openbis-ipad/openBIS/openBIS/CISDOBMasterViewController.h b/openbis-ipad/openBIS/openBIS/CISDOBMasterViewController.h index 4fe19d74dbc..d970df5ca84 100644 --- a/openbis-ipad/openBIS/openBIS/CISDOBMasterViewController.h +++ b/openbis-ipad/openBIS/openBIS/CISDOBMasterViewController.h @@ -23,15 +23,15 @@ #import <UIKit/UIKit.h> -@class CISDOBDetailViewController; +@class CISDOBDetailViewController, CISDOBOpenBisModel; #import <CoreData/CoreData.h> @interface CISDOBMasterViewController : UITableViewController <NSFetchedResultsControllerDelegate> @property (strong, nonatomic) CISDOBDetailViewController *detailViewController; +@property (strong, nonatomic) CISDOBOpenBisModel *openBisModel; @property (strong, nonatomic) NSFetchedResultsController *fetchedResultsController; -@property (strong, nonatomic) NSManagedObjectContext *managedObjectContext; @end diff --git a/openbis-ipad/openBIS/openBIS/CISDOBMasterViewController.m b/openbis-ipad/openBIS/openBIS/CISDOBMasterViewController.m index 6f070b5d8f6..cf5a12d9e7f 100644 --- a/openbis-ipad/openBIS/openBIS/CISDOBMasterViewController.m +++ b/openbis-ipad/openBIS/openBIS/CISDOBMasterViewController.m @@ -25,6 +25,7 @@ #import "CISDOBDetailViewController.h" #import "CISDOBIpadEntity.h" +#import "CISDOBOpenBisModel.h" @interface CISDOBMasterViewController () - (void)configureCell:(UITableViewCell *)cell atIndexPath:(NSIndexPath *)indexPath; @@ -148,7 +149,7 @@ if ([object.childrenPermIds count] > 0) { UIStoryboard *storyboard = self.storyboard; CISDOBMasterViewController *controller = [storyboard instantiateViewControllerWithIdentifier:@"Drill"]; - controller.managedObjectContext = self.managedObjectContext; + controller.openBisModel = self.openBisModel; controller.title = object.summaryHeader; // TODO Initialize the fetch results controller @@ -168,36 +169,23 @@ } } +- (void)configureCell:(UITableViewCell *)cell atIndexPath:(NSIndexPath *)indexPath +{ + CISDOBIpadEntity *object = [self.fetchedResultsController objectAtIndexPath:indexPath]; + cell.textLabel.text = [object valueForKey:@"summaryHeader"]; + cell.detailTextLabel.text = [object valueForKey:@"summary"]; + if ([object.childrenPermIds count] > 0) { + cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator; + } else { + cell.accessoryType = UITableViewCellAccessoryNone; + } +} + #pragma mark - Fetched results controller - (NSFetchedResultsController *)fetchedResultsController { - if (_fetchedResultsController != nil) { - return _fetchedResultsController; - } - - NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init]; - NSEntityDescription *entity = [NSEntityDescription entityForName: @"CISDOBIpadEntity" inManagedObjectContext: self.managedObjectContext]; - [fetchRequest setEntity:entity]; - [fetchRequest setFetchBatchSize:20]; - - NSSortDescriptor *groupSortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"group" ascending: NO]; - NSSortDescriptor *summaryHeaderSortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"summaryHeader" ascending: YES]; - NSArray *sortDescriptors = @[groupSortDescriptor, summaryHeaderSortDescriptor]; - [fetchRequest setSortDescriptors:sortDescriptors]; - - NSFetchedResultsController *aFetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest: fetchRequest managedObjectContext: self.managedObjectContext sectionNameKeyPath: @"group" cacheName: @"Master"]; - aFetchedResultsController.delegate = self; - self.fetchedResultsController = aFetchedResultsController; - - NSError *error = nil; - if (![self.fetchedResultsController performFetch:&error]) { - // TODO Implement error handling - NSLog(@"Unresolved error %@, %@", error, [error userInfo]); - abort(); - } - - return _fetchedResultsController; + return self.openBisModel.fetchedResultsController; } - (void)controllerWillChangeContent:(NSFetchedResultsController *)controller @@ -260,16 +248,13 @@ } */ -- (void)configureCell:(UITableViewCell *)cell atIndexPath:(NSIndexPath *)indexPath + +#pragma mark - Properties + +- (void)setOpenBisModel:(CISDOBOpenBisModel *)openBisModel { - CISDOBIpadEntity *object = [self.fetchedResultsController objectAtIndexPath:indexPath]; - cell.textLabel.text = [object valueForKey:@"summaryHeader"]; - cell.detailTextLabel.text = [object valueForKey:@"summary"]; - if ([object.childrenPermIds count] > 0) { - cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator; - } else { - cell.accessoryType = UITableViewCellAccessoryNone; - } + _openBisModel = openBisModel; + _openBisModel.delegate = self; } @end diff --git a/openbis-ipad/openBIS/openBIS/CISDOBOpenBisModel.h b/openbis-ipad/openBIS/openBIS/CISDOBOpenBisModel.h index d501eed5d41..e0b5d97c36e 100644 --- a/openbis-ipad/openBIS/openBIS/CISDOBOpenBisModel.h +++ b/openbis-ipad/openBIS/openBIS/CISDOBOpenBisModel.h @@ -25,12 +25,13 @@ /** * \brief A model for the interaction with openBIS. */ -@interface CISDOBOpenBisModel : NSObject { +@interface CISDOBOpenBisModel : NSObject <NSFetchedResultsControllerDelegate> { } @property (strong, nonatomic) NSFetchedResultsController *fetchedResultsController; @property (strong, nonatomic) NSManagedObjectContext *managedObjectContext; +@property (weak, nonatomic) id <NSFetchedResultsControllerDelegate> delegate; @end diff --git a/openbis-ipad/openBIS/openBIS/CISDOBOpenBisModel.m b/openbis-ipad/openBIS/openBIS/CISDOBOpenBisModel.m index 12867155a3c..571ff1d55d0 100644 --- a/openbis-ipad/openBIS/openBIS/CISDOBOpenBisModel.m +++ b/openbis-ipad/openBIS/openBIS/CISDOBOpenBisModel.m @@ -24,4 +24,61 @@ @implementation CISDOBOpenBisModel +#pragma mark - Fetched results controller + +- (NSFetchedResultsController *)fetchedResultsController +{ + if (_fetchedResultsController != nil) { + return _fetchedResultsController; + } + + NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init]; + NSEntityDescription *entity = [NSEntityDescription entityForName: @"CISDOBIpadEntity" inManagedObjectContext: self.managedObjectContext]; + [fetchRequest setEntity:entity]; + [fetchRequest setFetchBatchSize:20]; + + NSSortDescriptor *groupSortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"group" ascending: NO]; + NSSortDescriptor *summaryHeaderSortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"summaryHeader" ascending: YES]; + NSArray *sortDescriptors = @[groupSortDescriptor, summaryHeaderSortDescriptor]; + [fetchRequest setSortDescriptors:sortDescriptors]; + + NSFetchedResultsController *aFetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest: fetchRequest managedObjectContext: self.managedObjectContext sectionNameKeyPath: @"group" cacheName: @"Master"]; + aFetchedResultsController.delegate = self; + self.fetchedResultsController = aFetchedResultsController; + + NSError *error = nil; + if (![self.fetchedResultsController performFetch:&error]) { + // TODO Implement error handling + NSLog(@"Unresolved error %@, %@", error, [error userInfo]); + abort(); + } + + return _fetchedResultsController; +} + +- (void)controllerWillChangeContent:(NSFetchedResultsController *)controller +{ + [self.delegate controllerWillChangeContent: controller]; +} + +- (void)controller:(NSFetchedResultsController *)controller didChangeSection:(id <NSFetchedResultsSectionInfo>)sectionInfo + atIndex:(NSUInteger)sectionIndex forChangeType:(NSFetchedResultsChangeType)type +{ + [self.delegate controller: controller didChangeSection: sectionInfo atIndex: sectionIndex forChangeType: type]; +} + +- (void)controller:(NSFetchedResultsController *)controller didChangeObject:(id)anObject + atIndexPath:(NSIndexPath *)indexPath forChangeType:(NSFetchedResultsChangeType)type + newIndexPath:(NSIndexPath *)newIndexPath +{ + [self.delegate controller: controller didChangeObject: anObject + atIndexPath: indexPath forChangeType: type + newIndexPath: newIndexPath]; +} + +- (void)controllerDidChangeContent:(NSFetchedResultsController *)controller +{ + [self.delegate controllerDidChangeContent: controller]; +} + @end -- GitLab