Show
Ignore:
Timestamp:
01/08/09 21:03:22 (3 years ago)
Author:
gbooker
Message:

Switched the the next version of the metadata.
Fixes #264

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • branches/CoreData/SapphireFrappliance/MetaData/SapphireMObjects/SapphireMovie.m

    r732 r734  
    1010#import "SapphireXMLData.h" 
    1111#import "NSString-Extensions.h" 
     12#import "SapphireMovieTranslation.h" 
    1213 
    1314NSString *FILE_DID_CHANGE_MOVIE_NOTIFICATION = @"FileDidChangeMovie"; 
     
    4041        ret = [NSEntityDescription insertNewObjectForEntityForName:SapphireMovieName inManagedObjectContext:moc]; 
    4142        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; 
    4261        return ret; 
    4362} 
     
    98117} 
    99118 
     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 
    100177- (NSComparisonResult)releaseDateCompare:(SapphireMovie *)other 
    101178{ 
     
    275352        checkOrderedData(orderedCast, overridden); 
    276353        if(![overridden count]) 
    277         { 
    278354                self.overriddenCastData = nil; 
     355        else 
     356        { 
     357                NSArray *names = [overridden valueForKey:@"name"]; 
     358                self.overriddenCastData = [NSKeyedArchiver archivedDataWithRootObject:names]; 
    279359        } 
    280360        [self setPrimitiveValue:nil forKey:ORDERED_CAST_KEY]; 
     
    287367        checkOrderedData(orderedGenres, overridden); 
    288368        if(![overridden count]) 
    289         { 
    290369                self.overriddenGenresData = nil; 
     370        else 
     371        { 
     372                NSArray *names = [overridden valueForKey:@"name"]; 
     373                self.overriddenGenresData = [NSKeyedArchiver archivedDataWithRootObject:names]; 
    291374        } 
    292375        [self setPrimitiveValue:nil forKey:ORDERED_GENRES_KEY]; 
     
    299382        checkOrderedData(orderedDirectors, overridden); 
    300383        if(![overridden count]) 
    301         { 
    302384                self.overriddenDirectorsData = nil; 
     385        else 
     386        { 
     387                NSArray *names = [overridden valueForKey:@"name"]; 
     388                self.overriddenDirectorsData = [NSKeyedArchiver archivedDataWithRootObject:names]; 
    303389        } 
    304390        [self setPrimitiveValue:nil forKey:ORDERED_DIRECTOR_KEY];