Changeset 588 for branches/CoreData/SapphireFrappliance/MetaData/Support/SapphireBasicDirectoryFunctions.h
- Timestamp:
- 06/13/08 15:57:37 (4 years ago)
- Files:
-
- 1 modified
Legend:
- Unmodified
- Added
- Removed
-
branches/CoreData/SapphireFrappliance/MetaData/Support/SapphireBasicDirectoryFunctions.h
r585 r588 23 23 24 24 #ifndef RECURSIVE_FUNCTIONS_ALREADY_DEFINED 25 /*Function to invoke a command on all files in a subtree*/ 26 - (void)invokeRecursivelyOnFiles:(NSInvocation *)fileInv 25 - (void)invokeOnAllFiles:(NSInvocation *)fileInv 27 26 { 28 27 NSArray *files = [self metaFiles]; … … 43 42 if(fetchPred != nil) 44 43 { 45 NSPredicate *final = [NSCompoundPredicate andPredicateWithSubpredicates:[NSArray arrayWithObjects:pred, fetchPred, nil]];44 NSPredicate *final = [NSCompoundPredicate andPredicateWithSubpredicates:[NSArray arrayWithObjects:pred, fetchPred, filterPredicate, nil]]; 46 45 return entityExists(SapphireFileMetaDataName, [self managedObjectContext], final); 47 46 } … … 61 60 { 62 61 id <SapphireDirectory> dir = [self metaDataForDirectory:[dirs objectAtIndex:i]]; 63 if(dir != nil && [dir c heckPredicate:pred])62 if(dir != nil && [dir containsFileMatchingPredicate:pred]) 64 63 return YES; 65 64 } … … 86 85 #endif 87 86 88 - (BOOL) internalWatchedValue87 - (BOOL)containsFileMatchingPredicate:(NSPredicate *)pred 89 88 { 90 return ![self checkPredicate:[SapphireApplianceController unwatchedPredicate]]; 91 } 92 93 - (BOOL)watchedValue 94 { 95 if(watchedCache != nil) 96 return [watchedCache boolValue]; 97 BOOL ret = [self internalWatchedValue]; 98 watchedCache = [[NSNumber alloc] initWithBool:ret]; 89 id key = filterPredicate; 90 if(filterPredicate == nil) 91 key = [NSNull null]; 92 NSMutableDictionary *cacheForFilter = [predicateCache objectForKey:key]; 93 if(cacheForFilter == nil) 94 { 95 cacheForFilter = [[NSMutableDictionary alloc] init]; 96 [predicateCache setObject:cacheForFilter forKey:key]; 97 [cacheForFilter release]; 98 } 99 NSNumber *cache = [cacheForFilter objectForKey:pred]; 100 if(cache != nil) 101 return [cache boolValue]; 102 103 BOOL ret = [self checkPredicate:pred]; 104 [cacheForFilter setObject:[NSNumber numberWithBool:ret] forKey:pred]; 99 105 return ret; 100 106 } 101 107 102 - ( NSNumber *)watched108 - (BOOL)containsFileMatchingFilterPredicate:(NSPredicate *)pred 103 109 { 104 if(watchedCache != nil) 105 return watchedCache; 106 NSNumber *ret = [NSNumber numberWithBool:[self internalWatchedValue]]; 107 watchedCache = [ret retain]; 110 NSPredicate *tpred = filterPredicate; 111 filterPredicate = nil; 112 BOOL ret = [self checkPredicate:pred]; 113 filterPredicate = tpred; 114 108 115 return ret; 109 }110 111 - (void)setWatchedValue:(BOOL)watched112 {113 [self setWatched:[NSNumber numberWithBool:watched]];114 }115 116 - (void)setWatched:(NSNumber *)watched117 {118 SEL select = @selector(setWatched:);119 NSInvocation *inv = [NSInvocation invocationWithMethodSignature:[[SapphireFileMetaData class] instanceMethodSignatureForSelector:select]];120 [inv setSelector:select];121 [inv setArgument:&watched atIndex:2];122 [self invokeRecursivelyOnFiles:inv];123 [SapphireMetaDataSupport save:[self managedObjectContext]];124 [watchedCache release];125 watchedCache = [watched retain];126 }127 128 - (BOOL)internalFavoriteValue129 {130 return [self checkPredicate:[SapphireApplianceController favoritePredicate]];131 }132 133 - (BOOL)favoriteValue134 {135 if(favoriteCache != nil)136 return [favoriteCache boolValue];137 BOOL ret = [self internalFavoriteValue];138 favoriteCache = [[NSNumber alloc] initWithBool:ret];139 return ret;140 }141 142 - (NSNumber *)favorite143 {144 if(favoriteCache != nil)145 return favoriteCache;146 NSNumber *ret = [NSNumber numberWithBool:[self internalFavoriteValue]];147 favoriteCache = [ret retain];148 return ret;149 }150 151 - (void)setFavoriteValue:(BOOL)favorite152 {153 [self setFavorite:[NSNumber numberWithBool:favorite]];154 }155 156 - (void)setFavorite:(NSNumber *)favorite157 {158 SEL select = @selector(setFavorite:);159 NSInvocation *inv = [NSInvocation invocationWithMethodSignature:[[SapphireFileMetaData class] instanceMethodSignatureForSelector:select]];160 [inv setSelector:select];161 [inv setArgument:&favorite atIndex:2];162 [self invokeRecursivelyOnFiles:inv];163 [SapphireMetaDataSupport save:[self managedObjectContext]];164 [favoriteCache release];165 favoriteCache = [favorite retain];166 116 } 167 117 168 118 - (void)clearPredicateCache 169 119 { 170 BOOL report = NO;171 120 id <SapphireDirectory> myParentDir = [self parentDirectory]; 121 [predicateCache removeAllObjects]; 122 /* BOOL report = NO; 172 123 if(watchedCache != nil) 173 124 { … … 188 139 report = YES; 189 140 } 190 if(report) 141 if(report)*/ 191 142 [myParentDir clearPredicateCache]; 192 143 } … … 196 147 [filterPredicate release]; 197 148 filterPredicate = [predicate retain]; 198 [self clearPredicateCache];199 149 } 200 150 … … 234 184 NSNumber *num = [NSNumber numberWithInt:mask]; 235 185 [inv setArgument:&num atIndex:2]; 236 [self invoke RecursivelyOnFiles:inv];186 [self invokeOnAllFiles:inv]; 237 187 [SapphireMetaDataSupport save:[self managedObjectContext]]; 238 188 } … … 243 193 NSInvocation *inv = [NSInvocation invocationWithMethodSignature:[[SapphireFileMetaData class] instanceMethodSignatureForSelector:select]]; 244 194 [inv setSelector:select]; 245 [self invoke RecursivelyOnFiles:inv];195 [self invokeOnAllFiles:inv]; 246 196 [SapphireMetaDataSupport save:[self managedObjectContext]]; 247 197 }
