Changeset 1167

Show
Ignore:
Timestamp:
02/24/2010 02:32:27 PM (2 years ago)
Author:
gbooker
Message:

Some corrections to importer so that it saves data properly.

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • branches/PlayerFramework/SapphireFrappliance/MetaDataImporting/SapphireMovieImporter.m

    r1165 r1167  
    3838@public 
    3939        SapphireSiteMovieScraper        *siteScraper; 
     40        SapphireMovieTranslation        *translation; 
    4041} 
    4142- (id)initWithFile:(SapphireFileMetaData *)aFile atPath:(NSString *)aPath scraper:(SapphireSiteMovieScraper *)siteScaper; 
     43- (void)setTranslation:(SapphireMovieTranslation *)aTranslation; 
     44- (SapphireMovieTranslation *)createTranslationInContext:(NSManagedObjectContext *)moc; 
    4245@end 
    4346 
     
    5861{ 
    5962        [siteScraper release]; 
     63        [translation release]; 
    6064        [super dealloc]; 
    6165} 
    6266 
     67- (void)setTranslation:(SapphireMovieTranslation *)aTranslation 
     68{ 
     69        [translation autorelease]; 
     70        translation = [aTranslation retain]; 
     71} 
     72 
     73- (SapphireMovieTranslation *)createTranslationInContext:(NSManagedObjectContext *)moc 
     74{ 
     75        SapphireMovieTranslation *tran = [SapphireMovieTranslation createMovieTranslationWithName:lookupName inContext:moc]; 
     76        [self setTranslation:tran]; 
     77        return tran; 
     78} 
     79 
    6380@end 
    6481 
     
    6683 
    6784@interface SapphireMovieImporter () 
    68 - (void)getMovieResultsForState:(SapphireMovieImportStateData *)state translation:(SapphireMovieTranslation *)tran; 
    69 - (void)getMoviePostersForState:(SapphireMovieImportStateData *)state translation:(SapphireMovieTranslation *)tran thumbElements:(NSArray *)thumbElements; 
     85- (void)getMovieResultsForState:(SapphireMovieImportStateData *)state; 
     86- (void)getMoviePostersForState:(SapphireMovieImportStateData *)state thumbElements:(NSArray *)thumbElements; 
    7087- (void)saveMoviePosterAtURL:(NSString *)url forTranslation:(SapphireMovieTranslation *)tran; 
    7188- (void)completeWithState:(SapphireMovieImportStateData *)state withStatus:(ImportState)status importComplete:(BOOL)importComplete; 
     
    158175                SapphireFileMetaData *metaData = state->file; 
    159176                NSManagedObjectContext *moc = [metaData managedObjectContext]; 
    160                 SapphireMovieTranslation *tran = [SapphireMovieTranslation createMovieTranslationWithName:state->lookupName inContext:moc]; 
     177                SapphireMovieTranslation *tran = [state createTranslationInContext:moc]; 
    161178                [tran setIMDBLink:[[movies objectAtIndex:0] objectForKey:movieTranslationLinkKey]]; 
    162                 [self getMovieResultsForState:state translation:tran]; 
     179                [self getMovieResultsForState:state]; 
    163180        } 
    164181        else 
     
    176193} 
    177194 
    178 - (void)getMovieResultsForState:(SapphireMovieImportStateData *)state translation:(SapphireMovieTranslation *)tran 
    179 { 
     195- (void)getMovieResultsForState:(SapphireMovieImportStateData *)state 
     196{ 
     197        SapphireMovieTranslation *tran = state->translation; 
    180198        NSString *link = [tran IMDBLink]; 
    181199        SapphireSiteMovieScraper *siteScraper = state->siteScraper; 
     
    267285        SapphireFileMetaData *metaData = state->file; 
    268286        NSManagedObjectContext *moc = [metaData managedObjectContext]; 
    269         SapphireMovieTranslation *tran = [SapphireMovieTranslation movieTranslationWithName:state->lookupName inContext:moc]; 
    270287        SapphireMovie *movie = [SapphireMovie movieWithDictionary:infoIMDB inContext:moc]; 
    271288        if(movie == nil) 
     
    275292                return; 
    276293        } 
    277         [tran setMovie:movie]; 
     294        [state->translation setMovie:movie]; 
    278295        [metaData setMovie:movie]; 
    279296         
     
    285302        BOOL canDisplay = [delegate canDisplayChooser]; 
    286303        if(canDisplay && [thumbs count]) 
    287                 [self getMoviePostersForState:state translation:tran thumbElements:thumbs]; 
     304                [self getMoviePostersForState:state thumbElements:thumbs]; 
    288305        else 
    289306                [self completeWithState:state withStatus:ImportStateUpdated importComplete:canDisplay]; 
    290307} 
    291308 
    292 - (void)getMoviePostersForState:(SapphireMovieImportStateData *)state translation:(SapphireMovieTranslation *)tran thumbElements:(NSArray *)thumbElements; 
     309- (void)getMoviePostersForState:(SapphireMovieImportStateData *)state thumbElements:(NSArray *)thumbElements; 
    293310{ 
    294311        NSMutableArray *previews = [NSMutableArray arrayWithCapacity:[thumbElements count]]; 
     312        SapphireMovieTranslation *tran = state->translation; 
    295313        if([thumbElements count]) 
    296314        { 
     
    329347                } 
    330348        } 
    331         if([previews count]) 
     349        if([tran selectedPoster]) 
     350        { 
     351                [self saveMoviePosterAtURL:[[tran selectedPoster] link] forTranslation:tran]; 
     352                [self completeWithState:state withStatus:ImportStateUpdated importComplete:YES]; 
     353        } 
     354        else if([previews count]) 
    332355        { 
    333356                SapphirePosterChooser *posterChooser = [[SapphirePosterChooser alloc] initWithScene:[delegate chooserScene]]; 
     
    449472        NSManagedObjectContext *moc = [metaData managedObjectContext]; 
    450473        SapphireMovieTranslation *tran = [SapphireMovieTranslation movieTranslationWithName:state->lookupName inContext:moc]; 
     474        [state setTranslation:tran]; 
    451475        int searchIMDBNumber = [metaData searchIMDBNumber]; 
    452476        if(searchIMDBNumber > 0) 
    453477        { 
    454478                if(!tran) 
    455                         tran = [SapphireMovieTranslation createMovieTranslationWithName:state->lookupName inContext:moc]; 
     479                        tran = [state createTranslationInContext:moc]; 
    456480                [tran setIMDBLink:[NSString stringWithFormat:@"/title/tt%08d", searchIMDBNumber]]; 
    457481        } 
     
    465489                 
    466490                if([moviePath length]) 
     491                { 
     492                        if(tran == nil) 
     493                                tran = [state createTranslationInContext:moc]; 
    467494                        [tran setIMDBLink:moviePath]; 
     495                } 
    468496                else 
    469497                { 
     
    504532        {        
    505533                [metaData setMovie:movie]; 
    506                 return ImportStateUpdated; 
    507         } 
    508         [self getMovieResultsForState:state translation:tran]; 
     534                if([tran selectedPoster] != nil) 
     535                        return ImportStateUpdated; 
     536                [self getMoviePostersForState:state thumbElements:[NSArray array]]; 
     537                return ImportStateBackground; 
     538        } 
     539        [self getMovieResultsForState:state]; 
    509540        return ImportStateBackground; 
    510541} 
     
    538569                NSManagedObjectContext *moc = [state->file managedObjectContext]; 
    539570                SapphireMovieTranslation *tran = [SapphireMovieTranslation movieTranslationWithName:state->lookupName inContext:moc]; 
     571                if(tran) 
     572                        [state setTranslation:tran]; 
    540573                if([tran IMDBLink]) 
    541574                { 
    542                         [self getMovieResultsForState:state translation:tran]; 
     575                        [self getMovieResultsForState:state]; 
    543576                        return NO; 
    544577                } 
     
    548581                SapphirePosterChooser *posterChooser = (SapphirePosterChooser *)chooser; 
    549582                NSManagedObjectContext *moc = [state->file managedObjectContext]; 
    550                 SapphireMovieTranslation *tran = [SapphireMovieTranslation movieTranslationWithName:state->lookupName inContext:moc]; 
     583                SapphireMovieTranslation *tran = state->translation; 
    551584                if([[tran selectedPoster] link]) 
    552585                { 
     
    583616                        /*They selected a movie title, save the translation and write it*/ 
    584617                        NSDictionary *movie = [[movieChooser movies] objectAtIndex:selection]; 
    585                         SapphireMovieTranslation *tran = [SapphireMovieTranslation createMovieTranslationWithName:state->lookupName inContext:moc]; 
     618                        SapphireMovieTranslation *tran = [state createTranslationInContext:moc]; 
    586619                        /* Add IMDB Key */ 
    587620                        [tran setIMDBLink:[movie objectForKey:movieTranslationLinkKey]]; 
    588621                        /*We can resume now*/ 
    589                         [self getMovieResultsForState:state translation:tran]; 
     622                        [self getMovieResultsForState:state]; 
    590623                } 
    591624                [SapphireMetaDataSupport save:moc]; 
     
    602635                else 
    603636                { 
    604                         SapphireMovieTranslation *tran = [SapphireMovieTranslation createMovieTranslationWithName:state->lookupName inContext:moc]; 
     637                        SapphireMovieTranslation *tran = state->translation; 
    605638                        [tran setSelectedPosterIndexValue:selectedPoster]; 
    606                         [self saveMoviePosterAtURL:[[tran posterAtIndex:selectedPoster] link] forTranslation:tran]; 
     639                        [self saveMoviePosterAtURL:[[tran selectedPoster] link] forTranslation:tran]; 
    607640                        [self completeWithState:state withStatus:ImportStateUpdated importComplete:YES]; 
    608641                } 
    609                 posterChooser = nil; 
    610642                [SapphireMetaDataSupport save:moc]; 
    611643        }