Skip to content

Commit

Permalink
Added sorting parameters (ordered by last opened) to the collection r…
Browse files Browse the repository at this point in the history
…etrieval. Also added ability to limit the collection fetches to a certain number. In other words: grunt work for getting the default main view display to work.
  • Loading branch information
Rob Rhyne committed May 2, 2010
1 parent 69daaa4 commit 6fae708
Show file tree
Hide file tree
Showing 2 changed files with 32 additions and 7 deletions.
6 changes: 5 additions & 1 deletion Classes/BFDataManager.h
Expand Up @@ -45,8 +45,12 @@ typedef enum {

// Collection Access
- (NSArray *)allBriefcastsSortedAs:(BFDataManagerSortType)typeOfSort;
- (NSArray *)briefsFromBriefcast:(BriefcastRef *)briefcast sortedAs:(BFDataManagerSortType)typeOfSort;
- (NSArray *)briefcastsSortedAs:(BFDataManagerSortType)typeOfSort limitTo:(int)limit;

- (id<BFBriefDataSource>)allBriefsSortedAs:(BFDataManagerSortType)typeOfSort;
- (id<BFBriefDataSource>)briefsSortedAs:(BFDataManagerSortType)typeOfSort limitTo:(int)limit;
- (NSArray *)briefsFromBriefcast:(BriefcastRef *)briefcast sortedAs:(BFDataManagerSortType)typeOfSort;


// Singleton Access
- (BriefRef *)findBriefUsingURL:(NSString *)url;
Expand Down
33 changes: 27 additions & 6 deletions Classes/BFDataManager.m
Expand Up @@ -239,10 +239,6 @@ - (BriefRef *)addBriefAtPath:(NSString *)path usingData:(NSData *)data fromURL:(

// else, get the reference and update it's download date
else {
// [brief setDateLastDownloaded:[NSDate date]];
// [data writeToFile:destination atomically:YES];
//
// return brief;
return [self updateBrief:brief usingData:data];
}
}
Expand Down Expand Up @@ -270,6 +266,7 @@ - (BriefRef *)addBriefAtPath:(NSString *)path fromURL:(NSString *)url

return newRef;
}

- (BriefRef *)updateBrief:(BriefRef *)brief usingData:(NSData *)data
{
// update the brief meta data
Expand Down Expand Up @@ -329,11 +326,19 @@ - (void)removeBriefcast:(BriefcastRef *)briefcast
#pragma mark High-Level API

- (NSArray *)allBriefcastsSortedAs:(BFDataManagerSortType)typeOfSort
{
return [self briefcastsSortedAs:typeOfSort limitTo:-1];
}

- (NSArray *)briefcastsSortedAs:(BFDataManagerSortType)typeOfSort limitTo:(int)limit
{
// Build predicate to locate marker
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"fromURL <> %@", kBFLocallyStoredBriefURLString];

// TODO: implement sorting types
// defaults to lasted opened for now
NSSortDescriptor *sort = [[NSSortDescriptor alloc] initWithKey:@"dateLastOpened" ascending:NO];
NSArray *sortDescriptors = [NSArray arrayWithObjects:sort, nil];

NSMutableArray *arrayOfBriefcasts = [NSMutableArray array];

Expand All @@ -342,6 +347,10 @@ - (NSArray *)allBriefcastsSortedAs:(BFDataManagerSortType)typeOfSort
NSEntityDescription *entity = [NSEntityDescription entityForName:@"BriefcastRef" inManagedObjectContext:[self managedObjectContext]];
[request setEntity:entity];
[request setPredicate:predicate];
[request setSortDescriptors:sortDescriptors];

// handle limit
if (limit > 0) [request setFetchLimit:limit];

NSError *error;
NSMutableArray *mutableFetchResults = [[managedObjectContext executeFetchRequest:request error:&error] mutableCopy];
Expand Down Expand Up @@ -370,14 +379,26 @@ - (NSArray *)briefsFromBriefcast:(BriefcastRef *)briefcast sortedAs:(BFDataManag

- (id<BFBriefDataSource>)allBriefsSortedAs:(BFDataManagerSortType)typeOfSort;
{
// TODO: implement sorting types

return [self briefsSortedAs:typeOfSort limitTo:-1];
}

- (id<BFBriefDataSource>)briefsSortedAs:(BFDataManagerSortType)typeOfSort limitTo:(int)limit
{
NSMutableArray *arrayOfBriefs = [NSMutableArray array];

// TODO: implement sorting types
// defaults to lasted opened for now
NSSortDescriptor *sort = [[NSSortDescriptor alloc] initWithKey:@"dateLastOpened" ascending:NO];
NSArray *sortDescriptors = [NSArray arrayWithObjects:sort, nil];

// Fetch Data from the database
NSFetchRequest *request = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"BriefRef" inManagedObjectContext:[self managedObjectContext]];
[request setEntity:entity];
[request setSortDescriptors:sortDescriptors];

// handle limit
if (limit > 0) [request setFetchLimit:limit];

NSError *error;
NSMutableArray *mutableFetchResults = [[managedObjectContext executeFetchRequest:request error:&error] mutableCopy];
Expand Down

0 comments on commit 6fae708

Please sign in to comment.