Changeset 622
- Timestamp:
- 07/04/08 22:12:30 (6 months ago)
- Files:
-
- branches/CoreData/SapphireFrappliance/MetaData/SapphireMObjects/SapphireCategoryDirectory.m (modified) (9 diffs)
- branches/CoreData/SapphireFrappliance/MetaData/SapphireMObjects/SapphireSeason.m (modified) (1 diff)
- branches/CoreData/SapphireFrappliance/MetaData/SapphireMObjects/SapphireTVShow.m (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
branches/CoreData/SapphireFrappliance/MetaData/SapphireMObjects/SapphireCategoryDirectory.m
r609 r622 2 2 #import "SapphireBasicDirectoryFunctionsImports.h" 3 3 #import "SapphireFileSorter.h" 4 #import "CoreDataSupportFunctions.h" 4 5 5 6 @implementation SapphireCategoryDirectory … … 30 31 } 31 32 33 - (NSString *)dirsValueFromFiles 34 { 35 return nil; 36 } 37 38 - (NSString *)fileNameValue 39 { 40 return @"path"; 41 } 42 43 - (NSString *)dirNameValue 44 { 45 return nil; 46 } 32 47 33 48 - (NSString *)metaFilesValue; … … 36 51 } 37 52 38 - (NSString *)dirsValueFromFiles39 {40 return nil;41 }42 43 - (NSString *)fileNameValue44 {45 return @"path";46 }47 48 - (NSString *)dirNameValue49 {50 return nil;51 }52 53 53 - (NSPredicate *)metaFileFetchPredicate 54 54 { … … 69 69 { 70 70 NSString *metaFilesKey = [self metaFilesValue]; 71 if(metaFilesKey == nil) 71 if(metaFilesKey != nil) 72 { 73 //This is the slow method 74 NSMutableArray *files = [[[self valueForKeyPath:metaFilesKey] allObjects] mutableCopy]; 75 if(filterPredicate != nil) 76 [files filterUsingPredicate:filterPredicate]; 77 78 [cachedMetaFiles setArray:files]; 79 return [files autorelease]; 80 } 81 NSPredicate *fetchPredicate = [self metaFileFetchPredicate]; 82 if(fetchPredicate == nil) 72 83 return nil; 73 84 74 NS MutableArray *files = [[[self valueForKeyPath:metaFilesKey] allObjects] mutableCopy];85 NSPredicate *combPredicate; 75 86 if(filterPredicate != nil) 76 [files filterUsingPredicate:filterPredicate]; 87 combPredicate = [NSCompoundPredicate andPredicateWithSubpredicates:[NSArray arrayWithObjects:fetchPredicate, filterPredicate, nil]]; 88 else 89 combPredicate = fetchPredicate; 90 91 NSMutableArray *files = [doFetchRequest(SapphireFileMetaDataName, [self managedObjectContext], combPredicate) mutableCopy]; 77 92 78 93 [cachedMetaFiles setArray:files]; … … 85 100 } 86 101 87 - (NSMutableArray *)internalDirectoryFetch 88 { 89 NSString *dirsKey = [self dirsValueFromFiles]; 90 if(dirsKey == nil) 91 return nil; 92 93 NSArray *dirs = [[cachedMetaFiles valueForKeyPath:dirsKey] mutableCopy]; 94 return [dirs autorelease]; 102 - (NSMutableArray *)internalDirectoryFetchFromFiles:(NSArray *)files 103 { 104 return nil; 105 } 106 107 - (void)prefetch:(NSArray *)files 108 { 95 109 } 96 110 … … 112 126 - (void)reloadDirectoryContents 113 127 { 114 [[self managedObjectContext] refreshObject:self mergeChanges: YES];128 [[self managedObjectContext] refreshObject:self mergeChanges:NO]; 115 129 [cachedLookup removeAllObjects]; 116 130 [cachedFiles removeAllObjects]; … … 119 133 int sortValue = self.sortMethodValue; 120 134 NSMutableArray *files = [self internalFileFetch]; 135 [self prefetch:files]; 121 136 if([files count] != 0) 122 137 { … … 137 152 } 138 153 139 NSMutableArray *dirs = [self internalDirectoryFetch ];154 NSMutableArray *dirs = [self internalDirectoryFetchFromFiles:files]; 140 155 if([dirs count] != 0) 141 156 { … … 189 204 while((obj = [objEnum nextObject]) != nil) 190 205 { 191 [moc refreshObject:obj mergeChanges: YES];192 } 193 194 [moc refreshObject:self mergeChanges: YES];206 [moc refreshObject:obj mergeChanges:NO]; 207 } 208 209 [moc refreshObject:self mergeChanges:NO]; 195 210 } 196 211 branches/CoreData/SapphireFrappliance/MetaData/SapphireMObjects/SapphireSeason.m
r599 r622 50 50 } 51 51 52 - (NSString *)metaFilesValue;53 {54 return @"episodes.@distinctUnionOfSets.files";55 }56 57 52 - (NSPredicate *)metaFileFetchPredicate 58 53 { branches/CoreData/SapphireFrappliance/MetaData/SapphireMObjects/SapphireTVShow.m
r603 r622 1 1 #import "SapphireTVShow.h" 2 #import "SapphireSeason.h" 3 #import "SapphireEpisode.h" 4 #import "SapphireSubEpisode.h" 2 5 #import "CoreDataSupportFunctions.h" 3 6 #import "SapphireMetaDataSupport.h" … … 42 45 } 43 46 44 - (NSString *)dirsValueFromFiles45 {46 return @"@distinctUnionOfObjects.tvEpisode.season";47 }48 49 47 - (NSString *)dirNameValue 50 48 { 51 49 return @"seasonName"; 52 }53 54 - (NSString *)metaFilesValue;55 {56 return @"episodes.@distinctUnionOfSets.files";57 50 } 58 51 … … 77 70 } 78 71 72 static inline NSArray *getEpsFromFiles(NSManagedObjectContext *moc, NSArray *files) 73 { 74 NSSet *epIds = [NSSet setWithArray:[files valueForKeyPath:@"tvEpisode.objectID"]]; 75 76 NSPredicate *epPredicate = [NSPredicate predicateWithFormat:@"SELF IN %@", epIds]; 77 return doFetchRequest(SapphireEpisodeName, moc, epPredicate); 78 } 79 80 - (NSMutableArray *)internalDirectoryFetchFromFiles:(NSArray *)files 81 { 82 NSManagedObjectContext *moc = [self managedObjectContext]; 83 NSArray *eps = getEpsFromFiles(moc, files); 84 85 NSSet *seasonIds = [NSSet setWithArray:[eps valueForKeyPath:@"season.objectID"]]; 86 NSPredicate *seasonPred = [NSPredicate predicateWithFormat:@"SELF IN %@", seasonIds]; 87 NSMutableArray *ret = [doFetchRequest(SapphireSeasonName, moc, seasonPred) mutableCopy]; 88 return [ret autorelease]; 89 } 90 91 - (void)prefetch:(NSArray *)files 92 { 93 NSManagedObjectContext *moc = [self managedObjectContext]; 94 NSArray *eps = getEpsFromFiles(moc, files); 95 96 NSPredicate *subEpsPred = [NSPredicate predicateWithFormat:@"episode IN %@", eps]; 97 doFetchRequest(SapphireSubEpisodeName, moc, subEpsPred); 98 } 99 79 100 @end
