Skip to content
Snippets Groups Projects
Commit 3447f3f8 authored by cramakri's avatar cramakri
Browse files

Introduced a proper model

SVN: 27164
parent da6c06fb
No related branches found
No related tags found
No related merge requests found
...@@ -55,7 +55,7 @@ ...@@ -55,7 +55,7 @@
{ {
// Initialize the controller // Initialize the controller
CISDOBMasterViewController *controller = [self masterViewController]; CISDOBMasterViewController *controller = [self masterViewController];
controller.managedObjectContext = self.managedObjectContext; controller.openBisModel = self.openBisModel;
return YES; return YES;
} }
......
...@@ -23,15 +23,15 @@ ...@@ -23,15 +23,15 @@
#import <UIKit/UIKit.h> #import <UIKit/UIKit.h>
@class CISDOBDetailViewController; @class CISDOBDetailViewController, CISDOBOpenBisModel;
#import <CoreData/CoreData.h> #import <CoreData/CoreData.h>
@interface CISDOBMasterViewController : UITableViewController <NSFetchedResultsControllerDelegate> @interface CISDOBMasterViewController : UITableViewController <NSFetchedResultsControllerDelegate>
@property (strong, nonatomic) CISDOBDetailViewController *detailViewController; @property (strong, nonatomic) CISDOBDetailViewController *detailViewController;
@property (strong, nonatomic) CISDOBOpenBisModel *openBisModel;
@property (strong, nonatomic) NSFetchedResultsController *fetchedResultsController; @property (strong, nonatomic) NSFetchedResultsController *fetchedResultsController;
@property (strong, nonatomic) NSManagedObjectContext *managedObjectContext;
@end @end
...@@ -25,6 +25,7 @@ ...@@ -25,6 +25,7 @@
#import "CISDOBDetailViewController.h" #import "CISDOBDetailViewController.h"
#import "CISDOBIpadEntity.h" #import "CISDOBIpadEntity.h"
#import "CISDOBOpenBisModel.h"
@interface CISDOBMasterViewController () @interface CISDOBMasterViewController ()
- (void)configureCell:(UITableViewCell *)cell atIndexPath:(NSIndexPath *)indexPath; - (void)configureCell:(UITableViewCell *)cell atIndexPath:(NSIndexPath *)indexPath;
...@@ -148,7 +149,7 @@ ...@@ -148,7 +149,7 @@
if ([object.childrenPermIds count] > 0) { if ([object.childrenPermIds count] > 0) {
UIStoryboard *storyboard = self.storyboard; UIStoryboard *storyboard = self.storyboard;
CISDOBMasterViewController *controller = [storyboard instantiateViewControllerWithIdentifier:@"Drill"]; CISDOBMasterViewController *controller = [storyboard instantiateViewControllerWithIdentifier:@"Drill"];
controller.managedObjectContext = self.managedObjectContext; controller.openBisModel = self.openBisModel;
controller.title = object.summaryHeader; controller.title = object.summaryHeader;
// TODO Initialize the fetch results controller // TODO Initialize the fetch results controller
...@@ -168,36 +169,23 @@ ...@@ -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 #pragma mark - Fetched results controller
- (NSFetchedResultsController *)fetchedResultsController - (NSFetchedResultsController *)fetchedResultsController
{ {
if (_fetchedResultsController != nil) { return self.openBisModel.fetchedResultsController;
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 - (void)controllerWillChangeContent:(NSFetchedResultsController *)controller
...@@ -260,16 +248,13 @@ ...@@ -260,16 +248,13 @@
} }
*/ */
- (void)configureCell:(UITableViewCell *)cell atIndexPath:(NSIndexPath *)indexPath
#pragma mark - Properties
- (void)setOpenBisModel:(CISDOBOpenBisModel *)openBisModel
{ {
CISDOBIpadEntity *object = [self.fetchedResultsController objectAtIndexPath:indexPath]; _openBisModel = openBisModel;
cell.textLabel.text = [object valueForKey:@"summaryHeader"]; _openBisModel.delegate = self;
cell.detailTextLabel.text = [object valueForKey:@"summary"];
if ([object.childrenPermIds count] > 0) {
cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
} else {
cell.accessoryType = UITableViewCellAccessoryNone;
}
} }
@end @end
...@@ -25,12 +25,13 @@ ...@@ -25,12 +25,13 @@
/** /**
* \brief A model for the interaction with openBIS. * \brief A model for the interaction with openBIS.
*/ */
@interface CISDOBOpenBisModel : NSObject { @interface CISDOBOpenBisModel : NSObject <NSFetchedResultsControllerDelegate> {
} }
@property (strong, nonatomic) NSFetchedResultsController *fetchedResultsController; @property (strong, nonatomic) NSFetchedResultsController *fetchedResultsController;
@property (strong, nonatomic) NSManagedObjectContext *managedObjectContext; @property (strong, nonatomic) NSManagedObjectContext *managedObjectContext;
@property (weak, nonatomic) id <NSFetchedResultsControllerDelegate> delegate;
@end @end
...@@ -24,4 +24,61 @@ ...@@ -24,4 +24,61 @@
@implementation CISDOBOpenBisModel @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 @end
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment