root/branches/CoreData/SapphireFrappliance/MetaData/SapphireMObjects/SapphireGenre.m @ 840

Revision 840, 2.4 KB (checked in by gbooker, 16 months ago)

Delete unused objects as they become unused so as to not need the prune call later. This will help accelerate things later. Also, handled XML a bit better.

Line 
1#import "SapphireGenre.h"
2#import "CoreDataSupportFunctions.h"
3#import "SapphireFileSorter.h"
4#import "SapphireMovie.h"
5#import "SapphireMetaDataSupport.h"
6
7@implementation SapphireGenre
8
9static NSArray *allowedSorts = nil;
10
11+ (void)load
12{
13        allowedSorts = [[NSArray alloc] initWithObjects:[SapphireMovieTitleSorter sharedInstance], [SapphireDateSorter sharedInstance], [SapphireMovieIMDBRatingSorter sharedInstance], nil];
14}
15
16+ (SapphireGenre *)genre:(NSString *)genre inContext:(NSManagedObjectContext *)moc
17{
18        NSPredicate *predicate = [NSPredicate predicateWithFormat:@"name == %@", genre];
19        return (SapphireGenre *)doSingleFetchRequest(SapphireGenreName, moc, predicate);
20}
21       
22+ (SapphireGenre *)createGenre:(NSString *)genre inContext:(NSManagedObjectContext *)moc
23{
24        SapphireGenre *ret = [SapphireGenre genre:genre inContext:moc];
25        if(ret != nil)
26                return ret;
27       
28        ret = [NSEntityDescription insertNewObjectForEntityForName:SapphireGenreName inManagedObjectContext:moc];
29        ret.name = genre;
30        return ret;
31}
32
33+ (NSDictionary *)upgradeV1GenresFromContext:(NSManagedObjectContext *)oldMoc toContext:(NSManagedObjectContext *)newMoc
34{
35        NSMutableDictionary *lookup = [NSMutableDictionary dictionary];
36        NSArray *oldGenres = doFetchRequest(SapphireGenreName, oldMoc, nil);
37        NSEnumerator *genreEnum = [oldGenres objectEnumerator];
38        NSManagedObject *oldGenre;
39        while((oldGenre = [genreEnum nextObject]) != nil)
40        {
41                SapphireGenre *newGenre = [NSEntityDescription insertNewObjectForEntityForName:SapphireGenreName inManagedObjectContext:newMoc];
42                NSString *name = [oldGenre valueForKey:@"name"];
43                newGenre.name = name;
44                newGenre.sortMethod = [oldGenre valueForKey:@"sortMethod"];
45                [lookup setObject:newGenre forKey:name];
46        }
47        return lookup;
48}
49
50- (NSPredicate *)metaFileFetchPredicate
51{
52        NSArray *movieIds = [self.moviesSet valueForKey:@"objectID"];
53        return [NSPredicate predicateWithFormat:@"movie IN %@", movieIds];
54}
55
56- (NSArray *)fileSorters
57{
58        return allowedSorts;
59}
60
61- (NSString *)path
62{
63        return [[super path] stringByAppendingPathComponent:self.name];
64}
65
66- (BOOL)shouldDelete
67{
68        return [self.moviesSet count] == 0;
69}
70
71-(void)removeMovies:(NSSet*)removedMovies
72{
73        [super removeMovies:removedMovies];
74        if([self.moviesSet count] == 0)
75                [SapphireMetaDataSupport setObjectForPendingDelete:self];
76}
77
78- (void)removeMoviesObject:(SapphireMovie *)removedMovie
79{
80        [super removeMoviesObject:removedMovie];
81        if([self.moviesSet count] == 0)
82                [SapphireMetaDataSupport setObjectForPendingDelete:self];
83}
84
85@end
Note: See TracBrowser for help on using the browser.