#import "SapphireSeason.h" #import "SapphireTVShow.h" #import "SapphireFileSorter.h" @implementation SapphireSeason static NSArray *allowedSorts = nil; + (void)load { allowedSorts = [[NSArray alloc] initWithObjects:[SapphireTVEpisodeSorter sharedInstance], [SapphireDateSorter sharedInstance], nil]; } + (SapphireSeason *)season:(int)season forShow:(NSString *)show withPath:(NSString *)showPath inContext:(NSManagedObjectContext *)moc { SapphireTVShow *tvshow = [SapphireTVShow show:show withPath:showPath inContext:moc]; NSPredicate *seasonPred = [NSPredicate predicateWithFormat:@"seasonNumber = %d", season]; NSArray *results = [[tvshow.seasonsSet allObjects] filteredArrayUsingPredicate:seasonPred]; if([results count]) return [results objectAtIndex:0]; SapphireSeason *ret = [NSEntityDescription insertNewObjectForEntityForName:SapphireSeasonName inManagedObjectContext:moc]; ret.tvShow = tvshow; ret.seasonNumber = [NSNumber numberWithInt:season]; return ret; } - (NSComparisonResult)compare:(SapphireSeason *)other { NSComparisonResult result = [self.tvShow compare:other.tvShow]; if(result != NSOrderedSame) return result; int myNum = self.seasonNumberValue; int theirNum = other.seasonNumberValue; if(myNum == 0) myNum = INT_MAX; if(theirNum == 0) theirNum = INT_MAX; if(myNum > theirNum) return NSOrderedDescending; if(theirNum > myNum) return NSOrderedAscending; return NSOrderedSame; } - (NSString *)seasonName { return [NSString stringWithFormat:@"Season %d", self.seasonNumberValue]; } - (NSPredicate *)metaFileFetchPredicate { return [NSPredicate predicateWithFormat:@"tvEpisode.season == %@", self]; } - (id )parentDirectory { return self.tvShow; } - (NSArray *)fileSorters { return allowedSorts; } - (NSString *)path { NSString *myName = [NSString stringWithFormat:@"Season %d", self.seasonNumberValue]; return [self.tvShow.path stringByAppendingPathComponent:myName]; } @end