Changeset 588
- Timestamp:
- 06/13/2008 03:57:37 PM (4 years ago)
- Location:
- branches/CoreData/SapphireFrappliance
- Files:
-
- 1 added
- 13 modified
-
Browser/SapphireBrowser.m (modified) (1 diff)
-
MetaData/SapphireMObjects/SapphireCategoryDirectory.m (modified) (4 diffs)
-
MetaData/SapphireMObjects/SapphireDirectoryMetaData.m (modified) (5 diffs)
-
MetaData/SapphireMarkMenu.m (modified) (1 diff)
-
MetaData/Support/SapphireBasicDirectoryFunctions.h (modified) (8 diffs)
-
MetaData/Support/SapphireBasicDirectoryFunctionsDefines.h (modified) (1 diff)
-
MetaData/Support/SapphireDirectory.h (modified) (2 diffs)
-
MetaData/Support/SapphireDirectory.m (added)
-
MetaData/Support/SapphireEntityDirectory.m (modified) (2 diffs)
-
MetaData/Support/SapphireFilteredFileDirectory.m (modified) (1 diff)
-
MetaData/Support/SapphireMovieCategories.m (modified) (1 diff)
-
MetaData/Support/SapphireMovieDirectory.m (modified) (2 diffs)
-
MetaData/Support/SapphireObjectDirectory.m (modified) (1 diff)
-
Sapphire.xcodeproj/project.pbxproj (modified) (4 diffs)
Legend:
- Unmodified
- Added
- Removed
-
branches/CoreData/SapphireFrappliance/Browser/SapphireBrowser.m
r585 r588 310 310 result = [SapphireFrontRowCompat textMenuItemForScene:scene folder:YES]; 311 311 id <SapphireDirectory> meta = [metaData metaDataForDirectory:name]; 312 watched = [meta watchedValue];313 favorite = [meta favoriteValue];312 watched = ![meta containsFileMatchingPredicate:[SapphireApplianceController unwatchedPredicate]]; 313 favorite = [meta containsFileMatchingPredicate:[SapphireApplianceController favoritePredicate]]; 314 314 } 315 315 /*Check for a file next*/ -
branches/CoreData/SapphireFrappliance/MetaData/SapphireMObjects/SapphireCategoryDirectory.m
r585 r588 14 14 cachedDirs = [[NSMutableArray alloc] init]; 15 15 cachedMetaFiles = [[NSMutableArray alloc] init]; 16 16 Basic_Directory_Function_Inits 17 17 18 return self; 18 19 } … … 90 91 NSMutableArray *dirs = [[[self valueForKeyPath:dirsKey] allObjects] mutableCopy]; 91 92 if(filterPredicate != nil) 92 [dirs filterUsingPredicate:filterPredicate]; 93 { 94 int i, count = [dirs count]; 95 for(i=0; i<count; i++) 96 { 97 id <SapphireDirectory> dir = [dirs objectAtIndex:i]; 98 if(![dir containsFileMatchingFilterPredicate:filterPredicate]) 99 { 100 [dirs removeObjectAtIndex:i]; 101 i--; 102 count--; 103 } 104 } 105 } 93 106 94 107 [cachedMetaFiles setArray:dirs]; … … 193 206 } 194 207 195 - (void)invoke RecursivelyOnFiles:(NSInvocation *)fileInv208 - (void)invokeOnAllFiles:(NSInvocation *)fileInv 196 209 { 197 210 NSArray *files = cachedMetaFiles; … … 214 227 if(fetchPred != nil) 215 228 { 216 NSPredicate *final = [NSCompoundPredicate andPredicateWithSubpredicates:[NSArray arrayWithObjects:pred, fetchPred, nil]];229 NSPredicate *final = [NSCompoundPredicate andPredicateWithSubpredicates:[NSArray arrayWithObjects:pred, fetchPred, filterPredicate, nil]]; 217 230 return entityExists(SapphireFileMetaDataName, [self managedObjectContext], final); 218 231 } -
branches/CoreData/SapphireFrappliance/MetaData/SapphireMObjects/SapphireDirectoryMetaData.m
r586 r588 80 80 } 81 81 82 - (id)initWithEntity:(NSEntityDescription *)entity insertIntoManagedObjectContext:(NSManagedObjectContext *)context 83 { 84 self = [super initWithEntity:entity insertIntoManagedObjectContext:context]; 85 if(self == nil) 86 return self; 87 88 Basic_Directory_Function_Inits 89 90 return self; 91 } 92 82 93 - (void) dealloc 83 94 { … … 212 223 NSArray *candidates = [[self.metaDirsSet allObjects] filteredArrayUsingPredicate:pred]; 213 224 if([candidates count]) 214 return [candidates objectAtIndex:0]; 215 216 candidates = [[self.linkedDirsSet allObjects] filteredArrayUsingPredicate:pred]; 217 if([candidates count]) 218 return ((SapphireDirectorySymLink *)[candidates objectAtIndex:0]).directory; 225 ret = [candidates objectAtIndex:0]; 226 else 227 { 228 candidates = [[self.linkedDirsSet allObjects] filteredArrayUsingPredicate:pred]; 229 if([candidates count]) 230 ret = ((SapphireDirectorySymLink *)[candidates objectAtIndex:0]).directory; 231 } 232 [ret setFilterPredicate:filterPredicate]; 219 233 220 234 return nil; … … 387 401 for(i=0; i<count; i++) 388 402 { 389 if(![[allDirs objectAtIndex:i] c heckPredicate:filterPredicate])403 if(![[allDirs objectAtIndex:i] containsFileMatchingFilterPredicate:filterPredicate]) 390 404 { 391 405 [allDirs removeObjectAtIndex:i]; … … 402 416 { 403 417 SapphireDirectorySymLink *link = [linkedDirsObjects objectAtIndex:i]; 404 if([[link directory] c heckPredicate:filterPredicate])418 if([[link directory] containsFileMatchingFilterPredicate:filterPredicate]) 405 419 [allDirs addObject:link]; 406 420 } … … 442 456 } 443 457 444 /*Function to invoke a command on all files in a subtree*/ 445 - (void)invokeRecursivelyOnFiles:(NSInvocation *)fileInv 458 - (void)invokeOnAllFiles:(NSInvocation *)fileInv 446 459 { 447 460 NSManagedObjectContext *moc = [self managedObjectContext]; -
branches/CoreData/SapphireFrappliance/MetaData/SapphireMarkMenu.m
r575 r588 403 403 { 404 404 case COMMAND_MARK_WATCHED: 405 [dirMeta setWatchedValue:YES];405 setSubtreeToWatched(dirMeta, YES); 406 406 break; 407 407 case COMMAND_MARK_UNWATCHED: 408 [dirMeta setWatchedValue:YES];408 setSubtreeToWatched(dirMeta, NO); 409 409 break; 410 410 case COMMAND_MARK_FAVORITE: 411 [dirMeta setFavoriteValue:YES];411 setSubtreeToFavorite(dirMeta, YES); 412 412 break; 413 413 case COMMAND_MARK_NOT_FAVORITE: 414 [dirMeta setFavoriteValue:NO];414 setSubtreeToFavorite(dirMeta, NO); 415 415 break; 416 416 case COMMAND_MARK_TO_REFETCH_TV: 417 [dirMeta setToReimportFromMask:IMPORT_TYPE_TVSHOW_MASK];417 setSubtreeToReimportFromMask(dirMeta, IMPORT_TYPE_TVSHOW_MASK); 418 418 break; 419 419 case COMMAND_MARK_TO_REFETCH_MOVIE: 420 [dirMeta setToReimportFromMask:IMPORT_TYPE_MOVIE_MASK];420 setSubtreeToReimportFromMask(dirMeta, IMPORT_TYPE_MOVIE_MASK); 421 421 break; 422 422 case COMMAND_MARK_TO_DELETE_METADATA: 423 [dirMeta clearMetaData];423 setSubtreeToClearMetaData(dirMeta); 424 424 break; 425 425 case COMMAND_TOGGLE_SKIP: -
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 } -
branches/CoreData/SapphireFrappliance/MetaData/Support/SapphireBasicDirectoryFunctionsDefines.h
r575 r588 26 26 NSPredicate *filterPredicate; /*!< @brief The filter to apply to this directory*/\ 27 27 id <SapphireMetaDataDelegate> delegate; /*!< @brief The delegate to inform of changes*/\ 28 NSNumber *watchedCache; /*!< @brief Cached value of watched predicate*/\ 29 NSNumber *favoriteCache; /*!< @brief Cached value of favorite predicate*/\ 28 NSMutableDictionary *predicateCache; /*!< @brief Cached value of watched, favorite, and other predicates*/\ 29 30 31 #define Basic_Directory_Function_Inits \ 32 predicateCache = [[NSMutableDictionary alloc] init];\ 33 30 34 31 35 #define Basic_Directory_Function_Deallocs \ 32 36 [filterPredicate release];\ 33 37 [delegate release];\ 34 [ watchedCache release];\35 [favoriteCache release]; 38 [predicateCache release];\ 39 -
branches/CoreData/SapphireFrappliance/MetaData/Support/SapphireDirectory.h
r585 r588 175 175 176 176 /*! 177 * @brief Returns if directory contains any unwatched files178 *179 * @return YES if all files are watched, NO otherwise180 */181 - (BOOL)watchedValue;182 183 /*!184 * @brief Returns if directory contains any unwatched files185 *186 * @return an NSNumber with a YES if all files are watched, NO otherwise187 */188 - (NSNumber *)watched;189 190 /*!191 * @brief Set subtree as watched with restriction as to predicate. Does not follow symlinks192 *193 * @param watched YES if set to watched, NO if set to unwatched194 */195 - (void)setWatchedValue:(BOOL)watched;196 197 /*!198 * @brief Set subtree as watched with restriction as to predicate. Does not follow symlinks199 *200 * @param watched An NSNumber that is YES if set to watched, NO if set to unwatched201 */202 - (void)setWatched:(NSNumber *)watched;203 204 /*!205 * @brief Returns if directory contains any favorite files206 *207 * @return YES if any files are favorite, NO otherwise208 */209 - (BOOL)favoriteValue;210 211 /*!212 * @brief Returns if directory contains any favorite files213 *214 * @return an NSNumber with a YES if any files are favorite, NO otherwise215 */216 - (NSNumber *)favorite;217 218 /*!219 * @brief Set subtree as favorite with restriction as to predicate. Does not follow symlinks220 *221 * @param favorite YES if set to favorite, NO if set to not-favorite222 */223 - (void)setFavoriteValue:(BOOL)favorite;224 225 /*!226 * @brief Set subtree as favorite with restriction as to predicate. Does not follow symlinks227 *228 * @param favorite An NSNumber that is YES if set to favorite, NO if set to not-favorite229 */230 - (void)setFavorite:(NSNumber *)favorite;231 232 /*!233 177 * @brief Check to see if any filtered files match the predicate 234 178 * 235 179 * @param pred The predicate to check 236 180 */ 237 - (BOOL)checkPredicate:(NSPredicate *)pred; 238 239 /*! 240 * @brief Set subtree to re-import from the specified source with restriction as to predicate. Does not follow symlinks 241 * 242 * @param source The source on which to re-import 243 */ 244 - (void)setToReimportFromMask:(int)mask; 245 246 /*! 247 * @brief Clear metadata for an entire subtree with restriction as to predicate. Does not follow symlinks 248 */ 249 - (void)clearMetaData; 181 - (BOOL)containsFileMatchingPredicate:(NSPredicate *)pred; 182 183 /*! 184 * @brief Checks to see if directory contains any files with filter 185 * 186 * @param filter The filter predicate to test 187 */ 188 - (BOOL)containsFileMatchingFilterPredicate:(NSPredicate *)pred; 189 190 /*! 191 * @brief Invoke a command on all files contained within this directory within filter 192 * 193 * @param fileInv The invokation to invoke 194 */ 195 - (void)invokeOnAllFiles:(NSInvocation *)fileInv; 250 196 251 197 /*! … … 305 251 - (void)clearPredicateCache; 306 252 307 @end 253 /*! 254 * @brief The managed object context 255 * 256 * @return The managed object context for the metadata 257 */ 258 - (NSManagedObjectContext *)managedObjectContext; 259 260 @end 261 262 /*! 263 * @brief Set subtree to watched or unwatched with restriction as to predicate. Does not follow symlinks 264 * 265 * @param dir The subtree 266 * @param watched YES if watched, NO otherwise 267 */ 268 void setSubtreeToWatched(id <SapphireDirectory> dir, BOOL watched); 269 270 /*! 271 * @brief Set subtree to favorite or not favorite with restriction as to predicate. Does not follow symlinks 272 * 273 * @param dir The subtree 274 * @param favorite YES if favorite, NO otherwise 275 */ 276 void setSubtreeToFavorite(id <SapphireDirectory> dir, BOOL favorite); 277 278 /*! 279 * @brief Set subtree to re-import from the specified source with restriction as to predicate. Does not follow symlinks 280 * 281 * @param dir The subtree 282 * @param mask The source(s) on which to re-import 283 */ 284 void setSubtreeToReimportFromMask(id <SapphireDirectory> dir, int mask); 285 286 /*! 287 * @brief Clear metadata for an entire subtree with restriction as to predicate. Does not follow symlinks 288 */ 289 void setSubtreeToClearMetaData(id <SapphireDirectory> dir); -
branches/CoreData/SapphireFrappliance/MetaData/Support/SapphireEntityDirectory.m
r585 r588 34 34 moc = [context retain]; 35 35 nameKey = [@"name" retain]; 36 Basic_Directory_Function_Inits 36 37 37 38 return self; … … 102 103 { 103 104 id obj = [objects objectAtIndex:i]; 104 if(filterPredicate != nil && ![obj c heckPredicate:filterPredicate])105 if(filterPredicate != nil && ![obj containsFileMatchingFilterPredicate:filterPredicate]) 105 106 continue; 106 107 NSString *key = [obj valueForKey:nameKey]; -
branches/CoreData/SapphireFrappliance/MetaData/Support/SapphireFilteredFileDirectory.m
r585 r588 33 33 moc = [context retain]; 34 34 fetchPredicate = [pred retain]; 35 Basic_Directory_Function_Inits 35 36 36 37 return self; -
branches/CoreData/SapphireFrappliance/MetaData/Support/SapphireMovieCategories.m
r585 r588 47 47 [directors release]; 48 48 [genres release]; 49 49 Basic_Directory_Function_Inits 50 50 51 return self; 51 52 } -
branches/CoreData/SapphireFrappliance/MetaData/Support/SapphireMovieDirectory.m
r585 r588 79 79 [oscar setPath:@"@MOVIES/Academy Award Winning"]; 80 80 [oscar setNameKey:@"movie.title"]; 81 81 Basic_Directory_Function_Inits 82 82 83 return self; 83 84 } … … 105 106 for(i=0; i<count; i++) 106 107 { 107 if([[subDirs objectAtIndex:i] c heckPredicate:filterPredicate])108 if([[subDirs objectAtIndex:i] containsFileMatchingFilterPredicate:filterPredicate]) 108 109 [ret addObject:[names objectAtIndex:i]]; 109 110 } -
branches/CoreData/SapphireFrappliance/MetaData/Support/SapphireObjectDirectory.m
r585 r588 34 34 value = [key retain]; 35 35 cachedDirs = [[NSArray alloc] init]; 36 36 Basic_Directory_Function_Inits 37 37 38 return self; 38 39 } -
branches/CoreData/SapphireFrappliance/Sapphire.xcodeproj/project.pbxproj
r585 r588 70 70 F535C7440DF2353900716DA9 /* CoreData.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F535C7420DF2353900716DA9 /* CoreData.framework */; }; 71 71 F541CBF50D9C2D19002F9278 /* SapphireRadioSetting.m in Sources */ = {isa = PBXBuildFile; fileRef = F541CBF40D9C2D19002F9278 /* SapphireRadioSetting.m */; }; 72 F544602A0E030D5100311C03 /* SapphireDirectory.m in Sources */ = {isa = PBXBuildFile; fileRef = F54460290E030D5100311C03 /* SapphireDirectory.m */; }; 72 73 F565A1FD0C5BE81F00AE7110 /* SapphireAudioPlayer.m in Sources */ = {isa = PBXBuildFile; fileRef = F565A1FC0C5BE81F00AE7110 /* SapphireAudioPlayer.m */; }; 73 74 F565A34A0C5BF69D00AE7110 /* SapphireAudioMedia.m in Sources */ = {isa = PBXBuildFile; fileRef = F565A3490C5BF69D00AE7110 /* SapphireAudioMedia.m */; }; … … 340 341 F541CBF30D9C2D19002F9278 /* SapphireRadioSetting.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SapphireRadioSetting.h; sourceTree = "<group>"; }; 341 342 F541CBF40D9C2D19002F9278 /* SapphireRadioSetting.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SapphireRadioSetting.m; sourceTree = "<group>"; }; 343 F54460290E030D5100311C03 /* SapphireDirectory.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SapphireDirectory.m; sourceTree = "<group>"; }; 342 344 F565A1FB0C5BE81F00AE7110 /* SapphireAudioPlayer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SapphireAudioPlayer.h; sourceTree = "<group>"; }; 343 345 F565A1FC0C5BE81F00AE7110 /* SapphireAudioPlayer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SapphireAudioPlayer.m; sourceTree = "<group>"; }; … … 894 896 F5241ECB0DFDBD0200A0083F /* SapphireBasicDirectoryFunctionsImports.h */, 895 897 F5C55EC70DE90F7000661563 /* SapphireDirectory.h */, 898 F54460290E030D5100311C03 /* SapphireDirectory.m */, 896 899 F52949C90DEB809E004F8F4F /* SapphireEntityDirectory.h */, 897 900 F52949CA0DEB809E004F8F4F /* SapphireEntityDirectory.m */, … … 1212 1215 F59BB9180DF43C3E00EC11A2 /* SapphireMetaDataUpgrading.m in Sources */, 1213 1216 F59BBB1C0DF4E2B900EC11A2 /* SapphireFilteredFileDirectory.m in Sources */, 1217 F544602A0E030D5100311C03 /* SapphireDirectory.m in Sources */, 1214 1218 ); 1215 1219 runOnlyForDeploymentPostprocessing = 0;
