Changeset 734
- Timestamp:
- 01/08/2009 09:03:22 PM (3 years ago)
- Location:
- branches/CoreData/SapphireFrappliance
- Files:
-
- 49 modified
-
FRAppliance/SapphireApplianceController.m (modified) (3 diffs)
-
FRAppliance/SapphireMetaDataUpgrading.m (modified) (2 diffs)
-
MetaData/Sapphire.xcdatamodeld/SapphireV1.xcdatamodel/elements (modified) (previous)
-
MetaData/Sapphire.xcdatamodeld/SapphireV1.xcdatamodel/layout (modified) (previous)
-
MetaData/Sapphire.xcdatamodeld/SapphireV2.xcdatamodel/elements (modified) (previous)
-
MetaData/Sapphire.xcdatamodeld/SapphireV2.xcdatamodel/layout (modified) (previous)
-
MetaData/SapphireMObjects/SapphireCast.h (modified) (1 diff)
-
MetaData/SapphireMObjects/SapphireCast.m (modified) (1 diff)
-
MetaData/SapphireMObjects/SapphireCollectionDirectory.h (modified) (1 diff)
-
MetaData/SapphireMObjects/SapphireCollectionDirectory.m (modified) (1 diff)
-
MetaData/SapphireMObjects/SapphireDirector.h (modified) (1 diff)
-
MetaData/SapphireMObjects/SapphireDirector.m (modified) (1 diff)
-
MetaData/SapphireMObjects/SapphireDirectoryMetaData.h (modified) (1 diff)
-
MetaData/SapphireMObjects/SapphireDirectoryMetaData.m (modified) (2 diffs)
-
MetaData/SapphireMObjects/SapphireDirectorySymLink.h (modified) (1 diff)
-
MetaData/SapphireMObjects/SapphireDirectorySymLink.m (modified) (2 diffs)
-
MetaData/SapphireMObjects/SapphireEpisode.h (modified) (1 diff)
-
MetaData/SapphireMObjects/SapphireEpisode.m (modified) (2 diffs)
-
MetaData/SapphireMObjects/SapphireFileMetaData.h (modified) (1 diff)
-
MetaData/SapphireMObjects/SapphireFileMetaData.m (modified) (6 diffs)
-
MetaData/SapphireMObjects/SapphireFileSymLink.h (modified) (1 diff)
-
MetaData/SapphireMObjects/SapphireFileSymLink.m (modified) (2 diffs)
-
MetaData/SapphireMObjects/SapphireGenre.h (modified) (1 diff)
-
MetaData/SapphireMObjects/SapphireGenre.m (modified) (1 diff)
-
MetaData/SapphireMObjects/SapphireJoinedFile.h (modified) (1 diff)
-
MetaData/SapphireMObjects/SapphireJoinedFile.m (modified) (1 diff)
-
MetaData/SapphireMObjects/SapphireMovie.h (modified) (1 diff)
-
MetaData/SapphireMObjects/SapphireMovie.m (modified) (6 diffs)
-
MetaData/SapphireMObjects/SapphireMoviePoster.h (modified) (1 diff)
-
MetaData/SapphireMObjects/SapphireMoviePoster.m (modified) (1 diff)
-
MetaData/SapphireMObjects/SapphireMovieTranslation.h (modified) (1 diff)
-
MetaData/SapphireMObjects/SapphireMovieTranslation.m (modified) (2 diffs)
-
MetaData/SapphireMObjects/SapphireSeason.h (modified) (1 diff)
-
MetaData/SapphireMObjects/SapphireSeason.m (modified) (1 diff)
-
MetaData/SapphireMObjects/SapphireSubEpisode.h (modified) (1 diff)
-
MetaData/SapphireMObjects/SapphireSubEpisode.m (modified) (1 diff)
-
MetaData/SapphireMObjects/SapphireTVShow.h (modified) (1 diff)
-
MetaData/SapphireMObjects/SapphireTVShow.m (modified) (2 diffs)
-
MetaData/SapphireMObjects/SapphireTVTranslation.h (modified) (1 diff)
-
MetaData/SapphireMObjects/SapphireTVTranslation.m (modified) (1 diff)
-
MetaData/SapphireMObjects/SapphireXMLData.h (modified) (1 diff)
-
MetaData/SapphireMObjects/SapphireXMLData.m (modified) (3 diffs)
-
MetaData/SapphireMObjects/SapphireXMLEpisodeData.h (modified) (1 diff)
-
MetaData/SapphireMObjects/SapphireXMLEpisodeData.m (modified) (1 diff)
-
MetaData/SapphireMObjects/SapphireXMLMovieData.h (modified) (2 diffs)
-
MetaData/SapphireMObjects/SapphireXMLMovieData.m (modified) (3 diffs)
-
MetaData/Support/SapphireMetaDataSupport.h (modified) (1 diff)
-
MetaData/Support/SapphireMetaDataSupport.m (modified) (2 diffs)
-
main_debug.m (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
-
branches/CoreData/SapphireFrappliance/FRAppliance/SapphireApplianceController.m
r733 r734 246 246 { 247 247 NSFileManager *fm = [NSFileManager defaultManager]; 248 NSString *storeFile = [applicationSupportDir() stringByAppendingPathComponent:@"metaData.sapphireData "];248 NSString *storeFile = [applicationSupportDir() stringByAppendingPathComponent:@"metaData.sapphireDataV2"]; 249 249 BOOL exists = [fm fileExistsAtPath:storeFile]; 250 NSString *plistFile = [applicationSupportDir() stringByAppendingPathComponent:@"metaData.plist"];251 BOOL oldExists = [fm fileExistsAtPath:plistFile];250 BOOL oldExists = [fm fileExistsAtPath:[applicationSupportDir() stringByAppendingPathComponent:@"metaData.sapphireData"]]; 251 oldExists |= [fm fileExistsAtPath:[applicationSupportDir() stringByAppendingPathComponent:@"metaData.plist"]]; 252 252 return !exists && oldExists; 253 253 } … … 257 257 { 258 258 if(storeFile == nil) 259 storeFile = [applicationSupportDir() stringByAppendingPathComponent:@"metaData.sapphireData "];259 storeFile = [applicationSupportDir() stringByAppendingPathComponent:@"metaData.sapphireDataV2"]; 260 260 NSFileManager *fm = [NSFileManager defaultManager]; 261 261 [fm constructPath:[storeFile stringByDeletingLastPathComponent]]; … … 264 264 265 265 NSString *mopath = [[NSBundle bundleForClass:[self class]] pathForResource:@"Sapphire" ofType:@"momd"]; 266 mopath = [mopath stringByAppendingPathComponent:@"SapphireV 1.mom"];266 mopath = [mopath stringByAppendingPathComponent:@"SapphireV2.mom"]; 267 267 NSURL *mourl = [NSURL fileURLWithPath:mopath]; 268 268 NSManagedObjectModel *model = [[NSManagedObjectModel alloc] initWithContentsOfURL:mourl]; -
branches/CoreData/SapphireFrappliance/FRAppliance/SapphireMetaDataUpgrading.m
r733 r734 25 25 26 26 @implementation SapphireMetaDataUpgrading 27 28 - (id) debugInit 29 { 30 self = [super init]; 31 32 moc = [SapphireApplianceController createManagedObjectContextForFile:nil]; 33 34 return self; 35 } 27 36 28 37 - (id) initWithScene: (BRRenderScene *) scene … … 112 121 } 113 122 123 - (NSManagedObjectContext *)createV1Moc:(NSString *)storeFile 124 { 125 NSURL *storeUrl = [NSURL fileURLWithPath:storeFile]; 126 NSError *error = nil; 127 128 NSString *mopath = [[NSBundle bundleForClass:[self class]] pathForResource:@"Sapphire" ofType:@"momd"]; 129 mopath = [mopath stringByAppendingPathComponent:@"SapphireV1.mom"]; 130 NSURL *mourl = [NSURL fileURLWithPath:mopath]; 131 NSManagedObjectModel *model = [[NSManagedObjectModel alloc] initWithContentsOfURL:mourl]; 132 133 NSPersistentStoreCoordinator *coord = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:model]; 134 if(![coord addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:storeUrl options:nil error:&error]) 135 { 136 SapphireLog(SAPPHIRE_LOG_ALL, SAPPHIRE_LOG_LEVEL_ERROR, @"Could not add store: %@", error); 137 138 [coord release]; 139 [model release]; 140 return nil; 141 } 142 143 NSManagedObjectContext *retmoc = [[NSManagedObjectContext alloc] init]; 144 [retmoc setUndoManager:nil]; 145 [retmoc setMergePolicy:NSMergeByPropertyObjectTrumpMergePolicy]; 146 [retmoc setPersistentStoreCoordinator:coord]; 147 148 [model release]; 149 [coord release]; 150 151 return retmoc; 152 } 153 114 154 - (void)doUpgrade:(id)obj 115 155 { 116 156 NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; 117 NSString *plistFile = [NSHomeDirectory() stringByAppendingPathComponent:@"Library/Application Support/Sapphire/metaData.plist"]; 118 [SapphireMetaDataSupport importPlist:[plistFile stringByDeletingLastPathComponent] intoContext:moc withDisplay:self]; 157 NSString *v1StoreFile = [NSHomeDirectory() stringByAppendingPathComponent:@"Library/Application Support/Sapphire/metaData.sapphireData"]; 158 NSFileManager *fm = [NSFileManager defaultManager]; 159 if([fm fileExistsAtPath:v1StoreFile]) 160 { 161 NSManagedObjectContext *oldContext = [self createV1Moc:v1StoreFile]; 162 if(oldContext != nil) 163 [SapphireMetaDataSupport importV1Store:oldContext intoContext:moc withDisplay:self]; 164 } 165 else 166 { 167 NSString *plistFile = [NSHomeDirectory() stringByAppendingPathComponent:@"Library/Application Support/Sapphire/metaData.plist"]; 168 [SapphireMetaDataSupport importPlist:[plistFile stringByDeletingLastPathComponent] intoContext:moc withDisplay:self]; 169 } 119 170 [SapphireMetaDataSupport save:moc]; 120 171 [self performSelectorOnMainThread:@selector(finished) withObject:nil waitUntilDone:NO]; -
branches/CoreData/SapphireFrappliance/MetaData/SapphireMObjects/SapphireCast.h
r540 r734 6 6 + (SapphireCast *)cast:(NSString *)cast inContext:(NSManagedObjectContext *)moc; 7 7 + (SapphireCast *)createCast:(NSString *)cast inContext:(NSManagedObjectContext *)moc; 8 + (NSDictionary *)upgradeV1CastFromContext:(NSManagedObjectContext *)oldMoc toContext:(NSManagedObjectContext *)newMoc; 8 9 @end -
branches/CoreData/SapphireFrappliance/MetaData/SapphireMObjects/SapphireCast.m
r623 r734 28 28 ret.name = cast; 29 29 return ret; 30 } 31 32 + (NSDictionary *)upgradeV1CastFromContext:(NSManagedObjectContext *)oldMoc toContext:(NSManagedObjectContext *)newMoc 33 { 34 NSMutableDictionary *lookup = [NSMutableDictionary dictionary]; 35 NSArray *oldCast = doFetchRequest(SapphireCastName, oldMoc, nil); 36 NSEnumerator *castEnum = [oldCast objectEnumerator]; 37 NSManagedObject *oldCastMember; 38 while((oldCastMember = [castEnum nextObject]) != nil) 39 { 40 SapphireCast *newCastMember = [NSEntityDescription insertNewObjectForEntityForName:SapphireCastName inManagedObjectContext:newMoc]; 41 NSString *name = [oldCastMember valueForKey:@"name"]; 42 newCastMember.name = name; 43 newCastMember.sortMethod = [oldCastMember valueForKey:@"sortMethod"]; 44 newCastMember.hasMajorRole = [oldCastMember valueForKey:@"hasMajorRole"]; 45 [lookup setObject:newCastMember forKey:name]; 46 } 47 return lookup; 30 48 } 31 49 -
branches/CoreData/SapphireFrappliance/MetaData/SapphireMObjects/SapphireCollectionDirectory.h
r729 r734 7 7 + (SapphireCollectionDirectory *)collectionAtPath:(NSString *)path mount:(BOOL)isMount skip:(BOOL)skip hidden:(BOOL)hidden manual:(BOOL)manual inContext:(NSManagedObjectContext *)moc; 8 8 + (SapphireCollectionDirectory *)collectionAtPath:(NSString *)path inContext:(NSManagedObjectContext *)moc; 9 + (SapphireCollectionDirectory *)upgradeV1CollectionDirectory:(NSManagedObject *)oldCol toContext:(NSManagedObjectContext *)newMoc; 9 10 + (NSArray *)availableCollectionDirectoriesInContext:(NSManagedObjectContext *)moc; 10 11 + (NSArray *)skippedCollectionDirectoriesInContext:(NSManagedObjectContext *)moc; -
branches/CoreData/SapphireFrappliance/MetaData/SapphireMObjects/SapphireCollectionDirectory.m
r729 r734 36 36 { 37 37 return [SapphireCollectionDirectory collectionAtPath:path mount:YES skip:NO hidden:NO manual:NO inContext:moc]; 38 } 39 40 + (SapphireCollectionDirectory *)upgradeV1CollectionDirectory:(NSManagedObject *)oldCol toContext:(NSManagedObjectContext *)newMoc 41 { 42 SapphireCollectionDirectory *ret = [NSEntityDescription insertNewObjectForEntityForName:MY_NAME inManagedObjectContext:newMoc]; 43 ret.hidden = [oldCol valueForKey:@"hidden"]; 44 ret.isMount = [oldCol valueForKey:@"isMount"]; 45 ret.manualCollection = [oldCol valueForKey:@"manualCollection"]; 46 ret.skip = [oldCol valueForKey:@"skip"]; 47 48 return ret; 38 49 } 39 50 -
branches/CoreData/SapphireFrappliance/MetaData/SapphireMObjects/SapphireDirector.h
r540 r734 6 6 + (SapphireDirector *)createDirector:(NSString *)director inContext:(NSManagedObjectContext *)moc; 7 7 + (SapphireDirector *)director:(NSString *)director inContext:(NSManagedObjectContext *)moc; 8 + (NSDictionary *)upgradeV1DirectorsFromContext:(NSManagedObjectContext *)oldMoc toContext:(NSManagedObjectContext *)newMoc; 8 9 @end -
branches/CoreData/SapphireFrappliance/MetaData/SapphireMObjects/SapphireDirector.m
r623 r734 29 29 } 30 30 31 + (NSDictionary *)upgradeV1DirectorsFromContext:(NSManagedObjectContext *)oldMoc toContext:(NSManagedObjectContext *)newMoc 32 { 33 NSMutableDictionary *lookup = [NSMutableDictionary dictionary]; 34 NSArray *oldDirectors = doFetchRequest(SapphireDirectorName, oldMoc, nil); 35 NSEnumerator *directorEnum = [oldDirectors objectEnumerator]; 36 NSManagedObject *oldDirector; 37 while((oldDirector = [directorEnum nextObject]) != nil) 38 { 39 SapphireDirector *newDirector = [NSEntityDescription insertNewObjectForEntityForName:SapphireDirectorName inManagedObjectContext:newMoc]; 40 NSString *name = [oldDirector valueForKey:@"name"]; 41 newDirector.name = name; 42 newDirector.sortMethod = [oldDirector valueForKey:@"sortMethod"]; 43 [lookup setObject:newDirector forKey:name]; 44 } 45 return lookup; 46 } 47 31 48 - (NSPredicate *)metaFileFetchPredicate 32 49 { -
branches/CoreData/SapphireFrappliance/MetaData/SapphireMObjects/SapphireDirectoryMetaData.h
r650 r734 20 20 + (SapphireDirectoryMetaData *)createDirectoryWithPath:(NSString *)path inContext:(NSManagedObjectContext *)moc; 21 21 + (SapphireDirectoryMetaData *)createDirectoryWithPath:(NSString *)path parent:(SapphireDirectoryMetaData *)parent inContext:(NSManagedObjectContext *)moc; 22 + (NSDictionary *)upgradeV1DirectoriesFromContext:(NSManagedObjectContext *)oldMoc toContext:(NSManagedObjectContext *)newMoc; 22 23 - (void)insertDictionary:(NSDictionary *)dict withDefer:(NSMutableDictionary *)defer andDisplay:(SapphireMetaDataUpgrading *)display; 23 24 - (void)rescanDirWithExistingDirs:(NSMutableArray *)existingDirs files:(NSMutableArray *)existingFiles symDirs:(NSMutableArray *)existingSymDirs symFiles:(NSMutableArray *)existingSymFiles; -
branches/CoreData/SapphireFrappliance/MetaData/SapphireMObjects/SapphireDirectoryMetaData.m
r696 r734 12 12 #import "SapphireMovie.h" 13 13 #import "NSManagedObject-Extensions.h" 14 #import "SapphireCollectionDirectory.h" 14 15 15 16 @implementation SapphireDirectoryMetaData … … 51 52 52 53 return [SapphireDirectoryMetaData internalCreateDirectoryWithPath:path parent:parent inContext:moc]; 54 } 55 56 + (NSDictionary *)upgradeV1DirectoriesFromContext:(NSManagedObjectContext *)oldMoc toContext:(NSManagedObjectContext *)newMoc 57 { 58 NSMutableDictionary *lookup = [NSMutableDictionary dictionary]; 59 NSArray *dirs = doFetchRequest(SapphireDirectoryMetaDataName, oldMoc, nil); 60 NSEnumerator *dirEnum = [dirs objectEnumerator]; 61 NSManagedObjectContext *oldDir; 62 while((oldDir = [dirEnum nextObject]) != nil) 63 { 64 SapphireDirectoryMetaData *newDir = [NSEntityDescription insertNewObjectForEntityForName:SapphireDirectoryMetaDataName inManagedObjectContext:newMoc]; 65 NSString *path = [oldDir valueForKey:@"path"]; 66 newDir.path = path; 67 NSManagedObject *oldCollection = [newDir valueForKey:@"collectionDirectory"]; 68 if(oldCollection != nil) 69 newDir.collectionDirectory = [SapphireCollectionDirectory upgradeV1CollectionDirectory:oldCollection toContext:newMoc]; 70 [lookup setObject:newDir forKey:path]; 71 } 72 dirEnum = [dirs objectEnumerator]; 73 while((oldDir = [dirEnum nextObject]) != nil) 74 { 75 NSString *path = [oldDir valueForKey:@"path"]; 76 NSString *parentPath = [oldDir valueForKeyPath:@"parent.path"]; 77 if(parentPath != nil) 78 ((SapphireDirectoryMetaData *)[lookup objectForKey:path]).parent = [lookup objectForKey:parentPath]; 79 } 80 return lookup; 53 81 } 54 82 -
branches/CoreData/SapphireFrappliance/MetaData/SapphireMObjects/SapphireDirectorySymLink.h
r540 r734 6 6 + (SapphireDirectorySymLink *)directoryLinkWithPath:(NSString *)path inContext:(NSManagedObjectContext *)moc; 7 7 + (SapphireDirectorySymLink *)createDirectoryLinkWithPath:(NSString *)path toPath:(NSString *)target inContext:(NSManagedObjectContext *)moc; 8 + (void)upgradeV1DirLinksFromContext:(NSManagedObjectContext *)oldMoc toContext:(NSManagedObjectContext *)newMoc directories:(NSDictionary *)dirLookup; 8 9 @end -
branches/CoreData/SapphireFrappliance/MetaData/SapphireMObjects/SapphireDirectorySymLink.m
r585 r734 1 1 #import "SapphireDirectorySymLink.h" 2 2 #import "SapphireDirectoryMetaData.h" 3 #import "CoreDataSupportFunctions.h" 3 4 4 5 @implementation SapphireDirectorySymLink … … 27 28 return ret; 28 29 } 30 31 + (void)upgradeV1DirLinksFromContext:(NSManagedObjectContext *)oldMoc toContext:(NSManagedObjectContext *)newMoc directories:(NSDictionary *)dirLookup 32 { 33 NSArray *links = doFetchRequest(SapphireDirectorySymLinkName, oldMoc, nil); 34 NSEnumerator *linkEnum = [links objectEnumerator]; 35 NSManagedObject *oldLink; 36 while((oldLink = [linkEnum nextObject]) != nil) 37 { 38 NSString *destinationPath = [oldLink valueForKeyPath:@"directory.path"]; 39 SapphireDirectoryMetaData *destination = nil; 40 if(destinationPath != nil) 41 destination = [dirLookup objectForKey:destinationPath]; 42 if(destination == nil) 43 continue; 44 45 NSString *containingPath = [oldLink valueForKeyPath:@"containingDirectory.path"]; 46 SapphireDirectoryMetaData *containing = nil; 47 if(containingPath != nil) 48 containing = [dirLookup objectForKey:containingPath]; 49 if(containing == nil) 50 continue; 51 52 SapphireDirectorySymLink *newLink = [NSEntityDescription insertNewObjectForEntityForName:SapphireDirectorySymLinkName inManagedObjectContext:newMoc]; 53 newLink.path = [oldLink valueForKey:@"path"]; 54 newLink.directory = destination; 55 newLink.containingDirectory = containing; 56 } 57 } 58 29 59 @end -
branches/CoreData/SapphireFrappliance/MetaData/SapphireMObjects/SapphireEpisode.h
r627 r734 6 6 NSArray *sortedSubEpisodes; 7 7 } 8 + (SapphireEpisode *)episode:(int)ep inSeason:(int)season forShow:(NSString *)show withPath:(NSString *)showPath inContext:(NSManagedObjectContext *)moc; 9 + (SapphireEpisode *)episodeTitle:(NSString *)title inSeason:(int)season forShow:(NSString *)show withPath:(NSString *)showPath inContext:(NSManagedObjectContext *)moc; 8 10 + (SapphireEpisode *)episodeWithDictionary:(NSDictionary *)dict inContext:(NSManagedObjectContext *)moc; 11 + (void)upgradeV1EpisodesFromContext:(NSManagedObjectContext *)oldMoc toContext:(NSManagedObjectContext *)newMoc file:(NSDictionary *)fileLookup; 9 12 10 13 - (int)episodeNumberValue; -
branches/CoreData/SapphireFrappliance/MetaData/SapphireMObjects/SapphireEpisode.m
r732 r734 8 8 #import "SapphireXMLData.h" 9 9 #import "SapphireApplianceController.h" 10 #import "CoreDataSupportFunctions.h" 10 11 11 12 @implementation SapphireEpisode … … 45 46 [ret addSubEpisodesObject:[SapphireSubEpisode createSubEpisodeTitle:title inEpisode:ret]]; 46 47 return ret; 48 } 49 50 + (void)upgradeV1EpisodesFromContext:(NSManagedObjectContext *)oldMoc toContext:(NSManagedObjectContext *)newMoc file:(NSDictionary *)fileLookup 51 { 52 NSArray *eps = doFetchRequest(SapphireEpisodeName, oldMoc, nil); 53 NSEnumerator *epEnum = [eps objectEnumerator]; 54 NSManagedObject *oldEp; 55 while((oldEp = [epEnum nextObject]) != nil) 56 { 57 NSArray *oldFilePaths = [oldEp valueForKeyPath:@"files.path"]; 58 NSEnumerator *pathEnum = [oldFilePaths objectEnumerator]; 59 NSString *path; 60 NSMutableSet *newFiles = [NSMutableSet set]; 61 while((path = [pathEnum nextObject]) != nil) 62 { 63 SapphireFileMetaData *newFile = [fileLookup objectForKey:path]; 64 if(newFile != nil) 65 [newFiles addObject:newFile]; 66 } 67 if([newFiles count] == 0) 68 continue; 69 70 NSNumber *seasonNum = [oldEp valueForKeyPath:@"season.seasonNumber"]; 71 NSString *showName = [oldEp valueForKeyPath:@"tvShow.name"]; 72 NSString *showPath = [oldEp valueForKeyPath:@"tvShow.showPath"]; 73 74 SapphireSeason *season = [SapphireSeason season:[seasonNum intValue] forShow:showName withPath:showPath inContext:newMoc]; 75 if(season == nil) 76 continue; 77 78 SapphireEpisode *newEp = [NSEntityDescription insertNewObjectForEntityForName:SapphireEpisodeName inManagedObjectContext:newMoc]; 79 newEp.season = season; 80 newEp.tvShow = season.tvShow; 81 [newEp.filesSet setSet:newFiles]; 82 83 NSEnumerator *subEpEnum = [[oldEp valueForKey:@"subEpisodes"] objectEnumerator]; 84 NSManagedObject *subEp; 85 while((subEp = [subEpEnum nextObject]) != nil) 86 [SapphireSubEpisode upgradeV1SubEpisode:subEp toContext:newMoc inEpisode:newEp]; 87 } 47 88 } 48 89 -
branches/CoreData/SapphireFrappliance/MetaData/SapphireMObjects/SapphireFileMetaData.h
r732 r734 68 68 } FileContainerType; 69 69 70 @class SapphireMetaDataUpgrading; 71 70 72 @interface SapphireFileMetaData : _SapphireFileMetaData {} 71 73 + (SapphireFileMetaData *)fileWithPath:(NSString *)path inContext:(NSManagedObjectContext *)moc; 72 74 + (SapphireFileMetaData *)createFileWithPath:(NSString *)path inContext:(NSManagedObjectContext *)moc; 73 75 + (SapphireFileMetaData *)createFileWithPath:(NSString *)path parent:(SapphireDirectoryMetaData *)parent inContext:(NSManagedObjectContext *)moc; 76 + (NSDictionary *)upgradeV1FilesFromContext:(NSManagedObjectContext *)oldMoc toContext:(NSManagedObjectContext *)newMoc withMovies:(NSDictionary *)movieLookup directories:(NSDictionary *)dirLookup; 74 77 75 78 - (void)insertDictionary:(NSDictionary *)dict withDefer:(NSMutableDictionary *)defer; -
branches/CoreData/SapphireFrappliance/MetaData/SapphireMObjects/SapphireFileMetaData.m
r732 r734 11 11 #import "SapphireFileSymLink.h" 12 12 #import "SapphireSettings.h" 13 #import "CoreDataSupportFunctions.h" 13 14 14 15 #import "SapphireTVShow.h" … … 134 135 135 136 return [SapphireFileMetaData internalCreateFileWithPath:path parent:parent inContext:moc]; 137 } 138 139 + (NSDictionary *)upgradeV1FilesFromContext:(NSManagedObjectContext *)oldMoc toContext:(NSManagedObjectContext *)newMoc withMovies:(NSDictionary *)movieLookup directories:(NSDictionary *)dirLookup 140 { 141 NSMutableDictionary *lookup = [NSMutableDictionary dictionary]; 142 NSArray *files = doFetchRequest(SapphireFileMetaDataName, oldMoc, nil); 143 NSEnumerator *fileEnum = [files objectEnumerator]; 144 NSManagedObject *oldFile; 145 while((oldFile = [fileEnum nextObject]) != nil) 146 { 147 SapphireFileMetaData *newFile = [NSEntityDescription insertNewObjectForEntityForName:SapphireFileMetaDataName inManagedObjectContext:newMoc]; 148 NSString *path = [oldFile valueForKey:@"path"]; 149 newFile.path = path; 150 newFile.parent = [dirLookup objectForKey:[oldFile valueForKeyPath:@"parent.path"]]; 151 newFile.audioDescription = [oldFile valueForKey:@"audioDescription"]; 152 newFile.audioFormatID = [oldFile valueForKey:@"audioFormatID"]; 153 newFile.duration = [oldFile valueForKey:@"duration"]; 154 newFile.favorite = [oldFile valueForKey:@"favorite"]; 155 newFile.fileClass = [oldFile valueForKey:@"fileClass"]; 156 newFile.fileContainerType = [oldFile valueForKey:@"fileContainerType"]; 157 newFile.hasVideo = [oldFile valueForKey:@"hasVideo"]; 158 newFile.importTypeValue = [[oldFile valueForKey:@"importType"] intValue] & ~IMPORT_TYPE_XML_MASK; 159 newFile.modified = [oldFile valueForKey:@"modified"]; 160 newFile.resumeTime = [oldFile valueForKey:@"resumeTime"]; 161 newFile.sampleRate = [oldFile valueForKey:@"sampleRate"]; 162 newFile.size = [oldFile valueForKey:@"size"]; 163 newFile.subtitlesDescription = [oldFile valueForKey:@"subtitlesDescription"]; 164 newFile.videoDescription = [oldFile valueForKey:@"videoDescription"]; 165 newFile.watched = [oldFile valueForKey:@"watched"]; 166 NSNumber *oldMovieNumber = [oldFile valueForKeyPath:@"movie.imdbNumber"]; 167 if(oldMovieNumber != nil) 168 newFile.movie = [movieLookup objectForKey:oldMovieNumber]; 169 170 [lookup setObject:newFile forKey:path]; 171 } 172 return lookup; 136 173 } 137 174 … … 402 439 [file addFileData:fileMeta]; 403 440 } 404 return updated ;441 return updated; 405 442 } 406 443 … … 680 717 - (void)setMovie:(SapphireMovie *)movie 681 718 { 682 SapphireMovie *oldMovie = s uper.movie;719 SapphireMovie *oldMovie = self.movie; 683 720 super.movie = movie; 684 721 if(movie != nil) … … 698 735 - (void)setTvEpisode:(SapphireEpisode *)ep 699 736 { 700 SapphireEpisode *oldEp = s uper.tvEpisode;737 SapphireEpisode *oldEp = self.tvEpisode; 701 738 super.tvEpisode = ep; 702 739 if(ep != nil) … … 709 746 self.xmlData.episode.episode = ep; 710 747 [oldEp clearPredicateCache]; 748 } 749 750 - (void)setXmlData:(SapphireXMLData *)data 751 { 752 super.xmlData = data; 753 if(data != nil) 754 { 755 data.episode.episode = self.tvEpisode; 756 data.movie.movie = self.movie; 757 } 711 758 } 712 759 -
branches/CoreData/SapphireFrappliance/MetaData/SapphireMObjects/SapphireFileSymLink.h
r540 r734 6 6 + (SapphireFileSymLink *)fileLinkWithPath:(NSString *)path inContext:(NSManagedObjectContext *)moc; 7 7 + (SapphireFileSymLink *)createFileLinkWithPath:(NSString *)path toPath:(NSString *)target inContext:(NSManagedObjectContext *)moc; 8 + (void)upgradeV1FileLinksFromContext:(NSManagedObjectContext *)oldMoc toContext:(NSManagedObjectContext *)newMoc directories:(NSDictionary *)dirLookup file:(NSDictionary *)fileLookup; 8 9 9 10 - (NSNumber *)watched; -
branches/CoreData/SapphireFrappliance/MetaData/SapphireMObjects/SapphireFileSymLink.m
r586 r734 2 2 #import "SapphireFileMetaData.h" 3 3 #import "SapphireDirectoryMetaData.h" 4 #import "CoreDataSupportFunctions.h" 4 5 5 6 @implementation SapphireFileSymLink … … 30 31 } 31 32 33 + (void)upgradeV1FileLinksFromContext:(NSManagedObjectContext *)oldMoc toContext:(NSManagedObjectContext *)newMoc directories:(NSDictionary *)dirLookup file:(NSDictionary *)fileLookup 34 { 35 NSArray *links = doFetchRequest(SapphireFileSymLinkName, oldMoc, nil); 36 NSEnumerator *linkEnum = [links objectEnumerator]; 37 NSManagedObject *oldLink; 38 while((oldLink = [linkEnum nextObject]) != nil) 39 { 40 NSString *destinationPath = [oldLink valueForKeyPath:@"file.path"]; 41 SapphireFileMetaData *destination = nil; 42 if(destinationPath != nil) 43 destination = [fileLookup objectForKey:destinationPath]; 44 if(destination == nil) 45 continue; 46 47 NSString *containingPath = [oldLink valueForKeyPath:@"containingDirectory.path"]; 48 SapphireDirectoryMetaData *containing = nil; 49 if(containingPath != nil) 50 containing = [dirLookup objectForKey:containingPath]; 51 if(containing == nil) 52 continue; 53 54 SapphireFileSymLink *newLink = [NSEntityDescription insertNewObjectForEntityForName:SapphireFileSymLinkName inManagedObjectContext:newMoc]; 55 newLink.path = [oldLink valueForKey:@"path"]; 56 newLink.file = destination; 57 newLink.containingDirectory = containing; 58 } 59 } 60 32 61 - (NSNumber *)watched 33 62 { -
branches/CoreData/SapphireFrappliance/MetaData/SapphireMObjects/SapphireGenre.h
r540 r734 6 6 + (SapphireGenre *)createGenre:(NSString *)genre inContext:(NSManagedObjectContext *)moc; 7 7 + (SapphireGenre *)genre:(NSString *)genre inContext:(NSManagedObjectContext *)moc; 8 + (NSDictionary *)upgradeV1GenresFromContext:(NSManagedObjectContext *)oldMoc toContext:(NSManagedObjectContext *)newMoc; 8 9 @end -
branches/CoreData/SapphireFrappliance/MetaData/SapphireMObjects/SapphireGenre.m
r623 r734 30 30 } 31 31 32 + (NSDictionary *)upgradeV1GenresFromContext:(NSManagedObjectContext *)oldMoc toContext:(NSManagedObjectContext *)newMoc 33 { 34 NSMutableDictionary *lookup = [NSMutableDictionary dictionary]; 35 NSArray *oldGenres = doFetchRequest(SapphireGenreName, oldMoc, nil); 36 NSEnumerator *genreEnum = [oldGenres objectEnumerator]; 37 NSManagedObject *oldGenre; 38 while((oldGenre = [genreEnum nextObject]) != nil) 39 { 40 SapphireGenre *newGenre = [NSEntityDescription insertNewObjectForEntityForName:SapphireGenreName inManagedObjectContext:newMoc]; 41 NSString *name = [oldGenre valueForKey:@"name"]; 42 newGenre.name = name; 43 newGenre.sortMethod = [oldGenre valueForKey:@"sortMethod"]; 44 [lookup setObject:newGenre forKey:name]; 45 } 46 return lookup; 47 } 48 32 49 - (NSPredicate *)metaFileFetchPredicate 33 50 { -
branches/CoreData/SapphireFrappliance/MetaData/SapphireMObjects/SapphireJoinedFile.h
r540 r734 5 5 @interface SapphireJoinedFile : _SapphireJoinedFile {} 6 6 + (SapphireJoinedFile *)joinedFileForPath:(NSString *)path inContext:(NSManagedObjectContext *)moc; 7 + (void)upgradeV1JoinedFileFromContext:(NSManagedObjectContext *)oldMoc toContext:(NSManagedObjectContext *)newMoc file:(NSDictionary *)fileLookup; 7 8 @end -
branches/CoreData/SapphireFrappliance/MetaData/SapphireMObjects/SapphireJoinedFile.m
r578 r734 18 18 } 19 19 20 + (void)upgradeV1JoinedFileFromContext:(NSManagedObjectContext *)oldMoc toContext:(NSManagedObjectContext *)newMoc file:(NSDictionary *)fileLookup 21 { 22 NSArray *joins = doFetchRequest(SapphireJoinedFileName, oldMoc, nil); 23 NSEnumerator *joinEnum = [joins objectEnumerator]; 24 NSManagedObject *oldJoin; 25 while((oldJoin = [joinEnum nextObject]) != nil) 26 { 27 NSString *destinationPath = [oldJoin valueForKeyPath:@"file.path"]; 28 SapphireFileMetaData *destination = nil; 29 if(destinationPath != nil) 30 destination = [fileLookup objectForKey:destinationPath]; 31 if(destination == nil) 32 continue; 33 34 NSArray *containingPaths = [oldJoin valueForKeyPath:@"joinedFiles.path"]; 35 NSEnumerator *pathEnum = [containingPaths objectEnumerator]; 36 NSString *path; 37 NSMutableSet *joined = [NSMutableSet set]; 38 while((path = [pathEnum nextObject]) != nil) 39 { 40 SapphireFileMetaData *join = [fileLookup objectForKey:path]; 41 if(join != nil) 42 [joined addObject:join]; 43 } 44 if([joined count] == 0) 45 continue; 46 47 SapphireJoinedFile *newJoin = [NSEntityDescription insertNewObjectForEntityForName:SapphireJoinedFileName inManagedObjectContext:newMoc]; 48 newJoin.file = destination; 49 [newJoin.joinedFilesSet setSet:joined]; 50 } 51 } 52 20 53 @end -
branches/CoreData/SapphireFrappliance/MetaData/SapphireMObjects/SapphireMovie.h
r732 r734 6 6 @interface SapphireMovie : _SapphireMovie {} 7 7 + (SapphireMovie *)movieWithIMDB:(int)imdbNumber inContext:(NSManagedObjectContext *)moc; 8 + (SapphireMovie *)createMovieWithIMDB:(int)imdbNumber inContext:(NSManagedObjectContext *)moc; 8 9 + (SapphireMovie *)movieWithDictionary:(NSDictionary *)dict inContext:(NSManagedObjectContext *)moc; 10 + (SapphireMovie *)movieWithTitle:(NSString *)title inContext:(NSManagedObjectContext *)moc; 11 + (SapphireMovie *)createMovieWithTitle:(NSString *)title inContext:(NSManagedObjectContext *)moc; 9 12 + (int)imdbNumberFromString:(NSString *)imdbStr; 13 + (NSDictionary *)upgradeV1MoviesFromContext:(NSManagedObjectContext *)oldMoc toContext:(NSManagedObjectContext *)newMoc withCast:(NSDictionary *)cast directors:(NSDictionary *)directors genres:(NSDictionary *)genres; 10 14 11 15 - (NSArray *)orderedCast; -
branches/CoreData/SapphireFrappliance/MetaData/SapphireMObjects/SapphireMovie.m
r732 r734 10 10 #import "SapphireXMLData.h" 11 11 #import "NSString-Extensions.h" 12 #import "SapphireMovieTranslation.h" 12 13 13 14 NSString *FILE_DID_CHANGE_MOVIE_NOTIFICATION = @"FileDidChangeMovie"; … … 40 41 ret = [NSEntityDescription insertNewObjectForEntityForName:SapphireMovieName inManagedObjectContext:moc]; 41 42 ret.imdbNumber = [NSNumber numberWithInt:imdbNumber]; 43 return ret; 44 } 45 46 + (SapphireMovie *)movieWithTitle:(NSString *)title inContext:(NSManagedObjectContext *)moc 47 { 48 NSPredicate *predicate = [NSPredicate predicateWithFormat:@"imdbNumber == nil && title == %@", title]; 49 return (SapphireMovie *)doSingleFetchRequest(SapphireMovieName, moc, predicate); 50 } 51 52 + (SapphireMovie *)createMovieWithTitle:(NSString *)title inContext:(NSManagedObjectContext *)moc 53 { 54 SapphireMovie *ret = [SapphireMovie movieWithTitle:title inContext:moc]; 55 if(ret != nil) 56 return ret; 57 58 ret = [NSEntityDescription insertNewObjectForEntityForName:SapphireMovieName inManagedObjectContext:moc]; 59 ret.title = title; 60 ret.imdbNumber = nil; 42 61 return ret; 43 62 } … … 98 117 } 99 118 119 + (NSDictionary *)upgradeV1MoviesFromContext:(NSManagedObjectContext *)oldMoc toContext:(NSManagedObjectContext *)newMoc withCast:(NSDictionary *)cast directors:(NSDictionary *)directors genres:(NSDictionary *)genres 120 { 121 NSMutableDictionary *lookup = [NSMutableDictionary dictionary]; 122 NSArray *oldMovies = doFetchRequest(SapphireMovieName, oldMoc, nil); 123 NSEnumerator *movieEnum = [oldMovies objectEnumerator]; 124 NSManagedObject *oldMovie; 125 while((oldMovie = [movieEnum nextObject]) != nil) 126 { 127 SapphireMovie *newMovie = [NSEntityDescription insertNewObjectForEntityForName:SapphireMovieName inManagedObjectContext:newMoc]; 128 NSNumber *imdbNumber = [oldMovie valueForKey:@"imdbNumber"]; 129 newMovie.imdbNumber = imdbNumber; 130 newMovie.imdbRating = [oldMovie valueForKey:@"imdbRating"]; 131 newMovie.imdbTop250Ranking = [oldMovie valueForKey:@"imdbTop250Ranking"]; 132 newMovie.MPAARating = [oldMovie valueForKey:@"MPAARating"]; 133 newMovie.orderedCastData = [oldMovie valueForKey:@"orderedCastData"]; 134 newMovie.orderedDirectorsData = [oldMovie valueForKey:@"orderedDirectorsData"]; 135 newMovie.orderedGenresData = [oldMovie valueForKey:@"orderedGenresData"]; 136 newMovie.oscarsWon = [oldMovie valueForKey:@"oscarsWon"]; 137 newMovie.plot = [oldMovie valueForKey:@"plot"]; 138 newMovie.releaseDate = [oldMovie valueForKey:@"releaseDate"]; 139 newMovie.title = [oldMovie valueForKey:@"title"]; 140 NSArray *castNames = [oldMovie valueForKeyPath:@"cast.name"]; 141 NSEnumerator *castEnum = [castNames objectEnumerator]; 142 NSString *name; 143 NSMutableSet *objSet = [NSMutableSet set]; 144 while((name = [castEnum nextObject]) != nil) 145 { 146 [objSet addObject:[cast objectForKey:name]]; 147 } 148 [newMovie.castSet setSet:objSet]; 149 NSArray *directorNames = [oldMovie valueForKeyPath:@"directors.name"]; 150 NSEnumerator *directorEnum = [directorNames objectEnumerator]; 151 objSet = [NSMutableSet set]; 152 while((name = [directorEnum nextObject]) != nil) 153 { 154 [objSet addObject:[directors objectForKey:name]]; 155 } 156 [newMovie.directorsSet setSet:objSet]; 157 NSArray *genreNames = [oldMovie valueForKeyPath:@"genres.name"]; 158 NSEnumerator *genreEnum = [genreNames objectEnumerator]; 159 objSet = [NSMutableSet set]; 160 while((name = [genreEnum nextObject]) != nil) 161 { 162 [objSet addObject:[genres objectForKey:name]]; 163 } 164 [newMovie.genresSet setSet:objSet]; 165 166 NSEnumerator *translationEnum = [[oldMovie valueForKey:@"translations"] objectEnumerator]; 167 NSManagedObject *translation; 168 while((translation = [translationEnum nextObject]) != nil) 169 { 170 [SapphireMovieTranslation upgradeV1MovieTranslation:translation toMovie:newMovie]; 171 } 172 [lookup setObject:newMovie forKey:imdbNumber]; 173 } 174 return lookup; 175 } 176 100 177 - (NSComparisonResult)releaseDateCompare:(SapphireMovie *)other 101 178 { … … 275 352 checkOrderedData(orderedCast, overridden); 276 353 if(![overridden count]) 277 {278 354 self.overriddenCastData = nil; 355 else 356 { 357 NSArray *names = [overridden valueForKey:@"name"]; 358 self.overriddenCastData = [NSKeyedArchiver archivedDataWithRootObject:names]; 279 359 } 280 360 [self setPrimitiveValue:nil forKey:ORDERED_CAST_KEY]; … … 287 367 checkOrderedData(orderedGenres, overridden); 288 368 if(![overridden count]) 289 {290 369 self.overriddenGenresData = nil; 370 else 371 { 372 NSArray *names = [overridden valueForKey:@"name"]; 373 self.overriddenGenresData = [NSKeyedArchiver archivedDataWithRootObject:names]; 291 374 } 292 375 [self setPrimitiveValue:nil forKey:ORDERED_GENRES_KEY]; … … 299 382 checkOrderedData(orderedDirectors, overridden); 300 383 if(![overridden count]) 301 {302 384 self.overriddenDirectorsData = nil; 385 else 386 { 387 NSArray *names = [overridden valueForKey:@"name"]; 388 self.overriddenDirectorsData = [NSKeyedArchiver archivedDataWithRootObject:names]; 303 389 } 304 390 [self setPrimitiveValue:nil forKey:ORDERED_DIRECTOR_KEY]; -
branches/CoreData/SapphireFrappliance/MetaData/SapphireMObjects/SapphireMoviePoster.h
r540 r734 5 5 @interface SapphireMoviePoster : _SapphireMoviePoster {} 6 6 + (SapphireMoviePoster *)createPosterWithLink:(NSString *)link index:(int)index translation:(SapphireMovieTranslation *)translation inContext:(NSManagedObjectContext *)moc; 7 + (SapphireMoviePoster *)upgradeV1MoviePoster:(NSManagedObject *)oldTran toTranslation:(SapphireMovieTranslation *)translation; 7 8 @end -
branches/CoreData/SapphireFrappliance/MetaData/SapphireMObjects/SapphireMoviePoster.m
r557 r734 13 13 } 14 14 15 + (SapphireMoviePoster *)upgradeV1MoviePoster:(NSManagedObject *)oldTran toTranslation:(SapphireMovieTranslation *)translation 16 { 17 NSManagedObjectContext *newMoc = [translation managedObjectContext]; 18 SapphireMoviePoster *ret = [NSEntityDescription insertNewObjectForEntityForName:SapphireMoviePosterName inManagedObjectContext:newMoc]; 19 ret.link = [oldTran valueForKey:@"link"]; 20 ret.index = [oldTran valueForKey:@"index"]; 21 ret.movieTranslation = translation; 22 return ret; 23 } 24 15 25 - (NSComparisonResult)compare:(SapphireMoviePoster *)other 16 26 { -
branches/CoreData/SapphireFrappliance/MetaData/SapphireMObjects/SapphireMovieTranslation.h
r557 r734 8 8 + (SapphireMovieTranslation *)movieTranslationWithName:(NSString *)name inContext:(NSManagedObjectContext *)moc; 9 9 + (SapphireMovieTranslation *)createMovieTranslationWithName:(NSString *)name inContext:(NSManagedObjectContext *)moc; 10 + (SapphireMovieTranslation *)upgradeV1MovieTranslation:(NSManagedObject *)oldTran toMovie:(SapphireMovie *)movie; 10 11 11 12 - (NSArray *)orderedPosters; -
branches/CoreData/SapphireFrappliance/MetaData/SapphireMObjects/SapphireMovieTranslation.m
r578 r734 1 1 #import "SapphireMovieTranslation.h" 2 2 #import "CoreDataSupportFunctions.h" 3 #import "SapphireMoviePoster.h" 3 4 4 5 @implementation SapphireMovieTranslation … … 22 23 } 23 24 25 + (SapphireMovieTranslation *)upgradeV1MovieTranslation:(NSManagedObject *)oldTran toMovie:(SapphireMovie *)movie 26 { 27 NSManagedObjectContext *newMoc = [movie managedObjectContext]; 28 29 SapphireMovieTranslation *ret = [NSEntityDescription insertNewObjectForEntityForName:SapphireMovieTranslationName inManagedObjectContext:newMoc]; 30 ret.IMDBLink = [oldTran valueForKey:@"IMDBLink"]; 31 ret.IMPLink = [oldTran valueForKey:@"IMPLink"]; 32 ret.name = [oldTran valueForKey:@"name"]; 33 ret.selectedPosterIndex = [oldTran valueForKey:@"selectedPosterIndex"]; 34 ret.movie = movie; 35 36 NSEnumerator *posterEnum = [[oldTran valueForKey:@"posters"] objectEnumerator]; 37 NSManagedObject *oldPoster; 38 while((oldPoster = [posterEnum nextObject]) != nil) 39 { 40 [SapphireMoviePoster upgradeV1MoviePoster:oldPoster toTranslation:ret]; 41 } 42 return ret; 43 } 24 44 25 45 - (SapphireMoviePoster *)selectedPoster -
branches/CoreData/SapphireFrappliance/MetaData/SapphireMObjects/SapphireSeason.h
r551 r734 5 5 @interface SapphireSeason : _SapphireSeason {} 6 6 + (SapphireSeason *)season:(int)season forShow:(NSString *)show withPath:(NSString *)showPath inContext:(NSManagedObjectContext *)moc; 7 + (SapphireSeason *)upgradeV1Season:(NSManagedObject *)oldSeason toShow:(SapphireTVShow *)show; 7 8 8 9 - (NSComparisonResult)compare:(SapphireSeason *)other; -
branches/CoreData/SapphireFrappliance/MetaData/SapphireMObjects/SapphireSeason.m
r622 r734 23 23 ret.tvShow = tvshow; 24 24 ret.seasonNumber = [NSNumber numberWithInt:season]; 25 return ret; 26 } 27 28 + (SapphireSeason *)upgradeV1Season:(NSManagedObject *)oldSeason toShow:(SapphireTVShow *)show 29 { 30 NSManagedObjectContext *newMoc = [show managedObjectContext]; 31 32 SapphireSeason *ret = [NSEntityDescription insertNewObjectForEntityForName:SapphireSeasonName inManagedObjectContext:newMoc]; 33 ret.seasonDescription = [oldSeason valueForKey:@"seasonDescription"]; 34 ret.seasonNumber = [oldSeason valueForKey:@"seasonNumber"]; 35 ret.tvShow = show; 25 36 return ret; 26 37 } -
branches/CoreData/SapphireFrappliance/MetaData/SapphireMObjects/SapphireSubEpisode.h
r714 r734 8 8 + (SapphireSubEpisode *)createSubEpisode:(int)subNum inEpisode:(SapphireEpisode *)ep; 9 9 + (SapphireSubEpisode *)createSubEpisodeTitle:(NSString *)title inEpisode:(SapphireEpisode *)ep; 10 + (void)upgradeV1SubEpisode:(NSManagedObject *)oldEp toContext:(NSManagedObjectContext *)newMoc inEpisode:(SapphireEpisode *)ep; 10 11 11 12 - (void)insertDictionary:(NSDictionary *)dict epIndex:(int)index; -
branches/CoreData/SapphireFrappliance/MetaData/SapphireMObjects/SapphireSubEpisode.m
r718 r734 55 55 ret.episodeTitle = title; 56 56 return ret; 57 } 58 59 + (void)upgradeV1SubEpisode:(NSManagedObject *)oldEp toContext:(NSManagedObjectContext *)newMoc inEpisode:(SapphireEpisode *)ep 60 { 61 SapphireSubEpisode *newEp = [NSEntityDescription insertNewObjectForEntityForName:SapphireSubEpisodeName inManagedObjectContext:newMoc]; 62 newEp.absoluteEpisodeNumber = [oldEp valueForKey:@"absoluteEpisodeNumber"]; 63 newEp.airDate = [oldEp valueForKey:@"airDate"]; 64 newEp.episodeDescription = [oldEp valueForKey:@"episodeDescription"]; 65 newEp.episodeNumber = [oldEp valueForKey:@"episodeNumber"]; 66 newEp.episodeTitle = [oldEp valueForKey:@"episodeTitle"]; 67 newEp.episode = ep; 57 68 } 58 69 -
branches/CoreData/SapphireFrappliance/MetaData/SapphireMObjects/SapphireTVShow.h
r551 r734 6 6 + (SapphireTVShow *)show:(NSString *)show withPath:(NSString *)showPath inContext:(NSManagedObjectContext *)moc; 7 7 + (SapphireTVShow *)showWithPath:(NSString *)path inContext:(NSManagedObjectContext *)moc; 8 + (void)upgradeV1ShowsFromContext:(NSManagedObjectContext *)oldMoc toContext:(NSManagedObjectContext *)newMoc; 8 9 9 10 - (NSComparisonResult)compare:(SapphireTVShow *)other; -
branches/CoreData/SapphireFrappliance/MetaData/SapphireMObjects/SapphireTVShow.m
r622 r734 7 7 #import "NSString-Extensions.h" 8 8 #import "SapphireFileSorter.h" 9 #import "SapphireTVTranslation.h" 9 10 10 11 @implementation SapphireTVShow … … 38 39 NSPredicate *predicate = [NSPredicate predicateWithFormat:@"showPath == %@", path]; 39 40 return (SapphireTVShow *)doSingleFetchRequest(SapphireTVShowName, moc, predicate); 41 } 42 43 + (void)upgradeV1ShowsFromContext:(NSManagedObjectContext *)oldMoc toContext:(NSManagedObjectContext *)newMoc 44 { 45 NSArray *oldShows = doFetchRequest(SapphireTVShowName, oldMoc, nil); 46 NSEnumerator *showEnum = [oldShows objectEnumerator]; 47 NSManagedObject *oldShow; 48 while((oldShow = [showEnum nextObject]) != nil) 49 { 50 SapphireTVShow *newShow = [NSEntityDescription insertNewObjectForEntityForName:SapphireTVShowName inManagedObjectContext:newMoc]; 51 newShow.name = [oldShow valueForKey:@"name"]; 52 newShow.showDescription = [oldShow valueForKey:@"showDescription"]; 53 newShow.showID = [oldShow valueForKey:@"showID"]; 54 newShow.showPath = [oldShow valueForKey:@"showPath"]; 55 56 NSEnumerator *translationEnum = [[oldShow valueForKey:@"translations"] objectEnumerator]; 57 NSManagedObject *translation; 58 while((translation = [translationEnum nextObject]) != nil) 59 { 60 [SapphireTVTranslation upgradeV1TVTranslation:translation toShow:newShow]; 61 } 62 63 NSEnumerator *seasonEnum = [[oldShow valueForKey:@"seasons"] objectEnumerator]; 64 NSManagedObject *season; 65 while((season = [seasonEnum nextObject]) != nil) 66 { 67 [SapphireSeason upgradeV1Season:season toShow:newShow]; 68 } 69 } 40 70 } 41 71 -
branches/CoreData/SapphireFrappliance/MetaData/SapphireMObjects/SapphireTVTranslation.h
r540 r734 6 6 + (SapphireTVTranslation *)tvTranslationForName:(NSString *)name inContext:(NSManagedObjectContext *)moc; 7 7 + (SapphireTVTranslation *)createTVTranslationForName:(NSString *)name withPath:(NSString *)path inContext:(NSManagedObjectContext *)moc; 8 + (SapphireTVTranslation *)upgradeV1TVTranslation:(NSManagedObject *)oldTran toShow:(SapphireTVShow *)show; 8 9 @end -
branches/CoreData/SapphireFrappliance/MetaData/SapphireMObjects/SapphireTVTranslation.m
r578 r734 23 23 } 24 24 25 + (SapphireTVTranslation *)upgradeV1TVTranslation:(NSManagedObject *)oldTran toShow:(SapphireTVShow *)show 26 { 27 NSManagedObjectContext *newMoc = [show managedObjectContext]; 28 29 SapphireTVTranslation *ret = [NSEntityDescription insertNewObjectForEntityForName:SapphireTVTranslationName inManagedObjectContext:newMoc]; 30 ret.name = [oldTran valueForKey:@"name"]; 31 ret.showPath = [oldTran valueForKey:@"showPath"]; 32 ret.tvShow = show; 33 return ret; 34 } 35 25 36 @end -
branches/CoreData/SapphireFrappliance/MetaData/SapphireMObjects/SapphireXMLData.h
r732 r734 15 15 } 16 16 @interface SapphireXMLData : _SapphireXMLData {} 17 + (void)upgradeV1XMLFromContext:(NSManagedObjectContext *)oldMoc toContext:(NSManagedObjectContext *)newMoc file:(NSDictionary *)fileLookup; 17 18 - (void)insertDictionary:(NSDictionary *)dict; 18 19 @end -
branches/CoreData/SapphireFrappliance/MetaData/SapphireMObjects/SapphireXMLData.m
r591 r734 6 6 #import "SapphireGenre.h" 7 7 #import "SapphireDirector.h" 8 #import "CoreDataSupportFunctions.h" 8 9 9 10 #define MODIFIED_KEY @"Modified" … … 11 12 12 13 @implementation SapphireXMLData 14 15 + (void)upgradeV1XMLFromContext:(NSManagedObjectContext *)oldMoc toContext:(NSManagedObjectContext *)newMoc file:(NSDictionary *)fileLookup 16 { 17 NSArray *xmls = doFetchRequest(SapphireXMLDataName, oldMoc, nil); 18 NSEnumerator *xmlEnum = [xmls objectEnumerator]; 19 NSManagedObject *oldXML; 20 while((oldXML = [xmlEnum nextObject]) != nil) 21 { 22 NSString *path = [oldXML valueForKeyPath:@"file.path"]; 23 SapphireFileMetaData *file = nil; 24 if(path != nil) 25 file = [fileLookup objectForKey:path]; 26 if(file == nil) 27 continue; 28 29 SapphireXMLData *newXML = [NSEntityDescription insertNewObjectForEntityForName:SapphireXMLDataName inManagedObjectContext:newMoc]; 30 newXML.contentDescription = [oldXML valueForKey:@"contentDescription"]; 31 newXML.fileClass = [oldXML valueForKey:@"fileClass"]; 32 newXML.modified = [oldXML valueForKey:@"modified"]; 33 newXML.summary = [oldXML valueForKey:@"summary"]; 34 newXML.title = [oldXML valueForKey:@"title"]; 35 36 NSManagedObject *epXML = [oldXML valueForKey:@"episode"]; 37 if(epXML != nil) 38 [SapphireXMLEpisodeData upgradeV1XMLEp:epXML toContext:newMoc inData:newXML]; 39 NSManagedObject *movieXML = [oldXML valueForKey:@"movie"]; 40 if(movieXML != nil) 41 [SapphireXMLMovieData upgradeV1XMLMovie:movieXML toContext:newMoc inData:newXML]; 42 file.xmlData = newXML; 43 44 SapphireXMLEpisodeData *episode = newXML.episode; 45 if(episode != nil && episode.episode == nil) 46 [episode constructEpisode]; 47 SapphireXMLMovieData *movie = newXML.movie; 48 if(movie != nil && movie.movie == nil) 49 [movie constructMovie]; 50 } 51 } 13 52 14 53 - (SapphireXMLEpisodeData *)episodeXMLData … … 133 172 if(value != nil) 134 173 self.fileClass = value; 174 175 tv = self.episode; 176 if(tv != nil && tv.episode == nil) 177 [tv constructEpisode]; 178 movie = self.movie; 179 if(movie != nil && movie.movie == nil) 180 [movie constructMovie]; 135 181 } 136 182 -
branches/CoreData/SapphireFrappliance/MetaData/SapphireMObjects/SapphireXMLEpisodeData.h
r557 r734 4 4 5 5 @interface SapphireXMLEpisodeData : _SapphireXMLEpisodeData {} 6 7 + (void)upgradeV1XMLEp:(NSManagedObject *)oldEp toContext:(NSManagedObjectContext *)newMoc inData:(SapphireXMLData *)data; 8 - (void)constructEpisode; 9 6 10 @end -
branches/CoreData/SapphireFrappliance/MetaData/SapphireMObjects/SapphireXMLEpisodeData.m
r557 r734 1 1 #import "SapphireXMLEpisodeData.h" 2 #import "SapphireXMLData.h" 3 #import "SapphireEpisode.h" 4 #import "SapphireFileMetaData.h" 2 5 3 6 @implementation SapphireXMLEpisodeData 4 7 5 // Custom logic goes here. 8 + (void)upgradeV1XMLEp:(NSManagedObject *)oldEp toContext:(NSManagedObjectContext *)newMoc inData:(SapphireXMLData *)data 9 { 10 SapphireXMLEpisodeData *newData = [NSEntityDescription insertNewObjectForEntityForName:SapphireXMLEpisodeDataName inManagedObjectContext:newMoc]; 11 12 newData.absoluteEpisodeNumber = [oldEp valueForKey:@"absoluteEpisodeNumber"]; 13 newData.episodeNumber = [oldEp valueForKey:@"episodeNumber"]; 14 newData.lastEpisodeNumber = [oldEp valueForKey:@"lastEpisodeNumber"]; 15 newData.searchEpisode = [oldEp valueForKey:@"searchEpisode"]; 16 newData.searchLastEpisodeNumber = [oldEp valueForKey:@"searchLastEpisodeNumber"]; 17 newData.searchSeasonNumber = [oldEp valueForKey:@"searchSeasonNumber"]; 18 newData.searchShowName = [oldEp valueForKey:@"searchShowName"]; 19 newData.xml = data; 20 } 21 22 - (void)constructEpisode 23 { 24 int season = self.searchSeasonNumberValue; 25 NSString *show = self.searchShowName; 26 27 if(season == 0 || show == nil) 28 return; 29 30 int ep = self.searchEpisodeValue; 31 NSString *title = self.xml.title; 32 33 SapphireEpisode *ret; 34 if(ep != 0) 35 { 36 ret = [SapphireEpisode episode:ep inSeason:season forShow:show withPath:nil inContext:[self managedObjectContext]]; 37 } 38 else if(title != nil) 39 { 40 ret = [SapphireEpisode episodeTitle:title inSeason:season forShow:show withPath:nil inContext:[self managedObjectContext]]; 41 } 42 else 43 return; 44 45 self.episode = ret; 46 self.xml.file.tvEpisode = ret; 47 } 6 48 7 49 @end -
branches/CoreData/SapphireFrappliance/MetaData/SapphireMObjects/SapphireXMLMovieData.h
r569 r734 4 4 5 5 @interface SapphireXMLMovieData : _SapphireXMLMovieData {} 6 + (void)upgradeV1XMLMovie:(NSManagedObject *)oldMovie toContext:(NSManagedObjectContext *)newMoc inData:(SapphireXMLData *)data; 6 7 - (NSArray *)orderedCast; 7 8 - (void)setOrderedCast:(NSArray *)ordered; … … 10 11 - (NSArray *)orderedDirectors; 11 12 - (void)setOrderedDirectors:(NSArray *)ordered; 13 - (void)constructMovie; 12 14 @end -
branches/CoreData/SapphireFrappliance/MetaData/SapphireMObjects/SapphireXMLMovieData.m
r732 r734 5 5 #import "SapphireMovie.h" 6 6 #import "SapphireFileMetaData.h" 7 #import "SapphireXMLData.h" 7 8 8 9 #define ORDERED_CAST_KEY @"orderedCast" … … 14 15 15 16 @implementation SapphireXMLMovieData 17 18 + (void)upgradeV1XMLMovie:(NSManagedObject *)oldMovie toContext:(NSManagedObjectContext *)newMoc inData:(SapphireXMLData *)data 19 { 20 SapphireXMLMovieData *newMovie = [NSEntityDescription insertNewObjectForEntityForName:SapphireXMLMovieDataName inManagedObjectContext:newMoc]; 21 newMovie.orderedCastData = [oldMovie valueForKey:@"orderedCastData"]; 22 newMovie.orderedDirectorsData = [oldMovie valueForKey:@"orderedDirectorsData"]; 23 newMovie.orderedGenresData = [oldMovie valueForKey:@"orderedGenresData"]; 24 newMovie.xml = data; 25 } 16 26 17 27 - (NSArray *)orderedCast … … 153 163 } 154 164 165 - (void)constructMovie 166 { 167 int imdbNumber = self.searchIMDBNumberValue; 168 NSString *title = self.xml.title; 169 SapphireMovie *ret; 170 if(imdbNumber != 0) 171 ret = [SapphireMovie createMovieWithIMDB:imdbNumber inContext:[self managedObjectContext]]; 172 else if(title != nil) 173 ret = [SapphireMovie createMovieWithTitle:title inContext:[self managedObjectContext]]; 174 else 175 return; 176 177 self.movie = ret; 178 self.xml.file.movie = ret; 179 } 180 155 181 @end -
branches/CoreData/SapphireFrappliance/MetaData/Support/SapphireMetaDataSupport.h
r696 r734 52 52 * @brief Import the old plist into the context 53 53 * 54 * @param v1Context The context to use for old objects 55 * @param context The context to use for new objects 56 * @param display The display for UI feedback 57 */ 58 + (void)importV1Store:(NSManagedObjectContext *)v1Context intoContext:(NSManagedObjectContext *)context withDisplay:(SapphireMetaDataUpgrading *)display; 59 60 /*! 61 * @brief Import the old plist into the context 62 * 54 63 * @param configDir The directory containing old configuration files 55 64 * @param context The context to use for new objects -
branches/CoreData/SapphireFrappliance/MetaData/Support/SapphireMetaDataSupport.m
r696 r734 31 31 #import "SapphireTVShow.h" 32 32 #import "SapphireMetaDataUpgrading.h" 33 #import "SapphireDirector.h" 34 #import "SapphireGenre.h" 35 #import "SapphireDirectorySymLink.h" 36 #import "SapphireFileSymLink.h" 37 #import "SapphireEpisode.h" 38 #import "SapphireXMLData.h" 33 39 34 40 #define META_VERSION_KEY @"Version" … … 172 178 { 173 179 return [[SapphireMetaDataSupport sharedInstance] wasLocked]; 180 } 181 182 + (void)importV1Store:(NSManagedObjectContext *)v1Context intoContext:(NSManagedObjectContext *)context withDisplay:(SapphireMetaDataUpgrading *)display 183 { 184 [display setCurrentFile:@"Upgrading Cast"]; 185 NSDictionary *castLookup = [SapphireCast upgradeV1CastFromContext:v1Context toContext:context]; 186 [display setCurrentFile:@"Upgrading Directors"]; 187 NSDictionary *directorLookup = [SapphireDirector upgradeV1DirectorsFromContext:v1Context toContext:context]; 188 [display setCurrentFile:@"Upgrading Genres"]; 189 NSDictionary *genreLookup = [SapphireGenre upgradeV1GenresFromContext:v1Context toContext:context]; 190 [display setCurrentFile:@"Upgrading Movies"]; 191 NSDictionary *movieLookup = [SapphireMovie upgradeV1MoviesFromContext:v1Context toContext:context withCast:castLookup directors:directorLookup genres:genreLookup]; 192 [display setCurrentFile:@"Upgrading Shows"]; 193 [SapphireTVShow upgradeV1ShowsFromContext:v1Context toContext:context]; 194 [display setCurrentFile:@"Upgrading Directories"]; 195 NSDictionary *dirLookup = [SapphireDirectoryMetaData upgradeV1DirectoriesFromContext:v1Context toContext:context]; 196 [display setCurrentFile:@"Upgrading Files"]; 197 NSDictionary *fileLookup = [SapphireFileMetaData upgradeV1FilesFromContext:v1Context toContext:context withMovies:movieLookup directories:dirLookup]; 198 [display setCurrentFile:@"Upgrading SymLinks"]; 199 [SapphireDirectorySymLink upgradeV1DirLinksFromContext:v1Context toContext:context directories:dirLookup]; 200 [SapphireFileSymLink upgradeV1FileLinksFromContext:v1Context toContext:context directories:dirLookup file:fileLookup]; 201 [display setCurrentFile:@"Upgrading Joined Files"]; 202 [SapphireJoinedFile upgradeV1JoinedFileFromContext:v1Context toContext:context file:fileLookup]; 203 [display setCurrentFile:@"Upgrading Episodes"]; 204 [SapphireEpisode upgradeV1EpisodesFromContext:v1Context toContext:context file:fileLookup]; 205 [display setCurrentFile:@"Upgrading XML"]; 206 [SapphireXMLData upgradeV1XMLFromContext:v1Context toContext:context file:fileLookup]; 174 207 } 175 208 -
branches/CoreData/SapphireFrappliance/main_debug.m
r724 r734 28 28 #import "SapphireDirectoryMetaData.h" 29 29 #import "SapphireApplianceController.h" 30 #import "SapphireMetaDataUpgrading.h" 30 31 31 32 @interface TestFileScanning : NSObject <SapphireMetaDataScannerDelegate> … … 80 81 @end 81 82 83 @interface SapphireMetaDataUpgrading (debug) 84 - (id)debugInit; 85 - (void)doUpgrade:(id)obj; 86 @end 87 88 82 89 83 90 int main(int argc, char *argv[]) … … 92 99 [bundle load]; 93 100 94 // NSString *storeFile = [NSHomeDirectory() stringByAppendingPathComponent:@"Library/Application Support/Sapphire/metaData.sapphireData "];95 NSString *storeFile = @"/Volumes/frontrow/Library/Application Support/Sapphire/metaData.sapphireData";96 BOOL exists = [[NSFileManager defaultManager] fileExistsAtPath:storeFile];97 if(!exists)98 return 0;99 100 NSManagedObjectContext *moc = [SapphireApplianceController createManagedObjectContextForFile:storeFile];101 // NSString *storeFile = [NSHomeDirectory() stringByAppendingPathComponent:@"Library/Application Support/Sapphire/metaData.sapphireDataV2"]; 102 //// NSString *storeFile = @"/Volumes/frontrow/Library/Application Support/Sapphire/metaData.sapphireData"; 103 // BOOL exists = [[NSFileManager defaultManager] fileExistsAtPath:storeFile]; 104 // if(!exists) 105 // return 0; 106 // 107 // NSManagedObjectContext *moc = [SapphireApplianceController createManagedObjectContextForFile:storeFile]; 101 108 102 109 //Debug code goes here: 103 #define TESTING_FILE_SCANNING 110 #define TESTING_UPGRADE 111 #ifdef TESTING_UPGRADE 112 BOOL needed = [SapphireApplianceController upgradeNeeded]; 113 SapphireMetaDataUpgrading *upgrade = [[SapphireMetaDataUpgrading alloc] debugInit]; 114 [upgrade doUpgrade:nil]; 115 #endif 116 //#define TESTING_FILE_SCANNING 104 117 #ifdef TESTING_FILE_SCANNING 105 118 NSMutableArray *collections = [[SapphireCollectionDirectory allCollectionsInContext:moc] mutableCopy];
