Changeset 319

Show
Ignore:
Timestamp:
08/05/08 12:01:06 (4 months ago)
Author:
wolf
Message:

[NEW] mogenerator: Add single-result fetch request result support.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/cocoa/mogenerator/mogenerator.m

    r317 r319  
    119119                           fetchRequestName, @"name", 
    120120                           bindings, @"bindings", 
     121                           [NSNumber numberWithBool:[fetchRequestName hasPrefix:@"one"]], @"singleResult", 
    121122                           nil]]; 
    122123        } 
  • trunk/cocoa/mogenerator/mogeneratorTestMule/MOs/_HumanMO.h

    r317 r319  
    4848 
    4949 
    50 + (NSArray*)fetchByHumanName:(NSManagedObjectContext*)moc_ humanName:(NSString*)humanName_; 
    51 + (NSArray*)fetchByHumanName:(NSManagedObjectContext*)moc_ humanName:(NSString*)humanName_ error:(NSError**)error_; 
     50 
     51+ (id)fetchByHumanName:(NSManagedObjectContext*)moc_ humanName:(NSString*)humanName_; 
     52+ (id)fetchByHumanName:(NSManagedObjectContext*)moc_ humanName:(NSString*)humanName_ error:(NSError**)error_; 
     53 
     54 
     55 
     56+ (id)fetchOneByHumanName:(NSManagedObjectContext*)moc_ humanName:(NSString*)humanName_; 
     57+ (id)fetchOneByHumanName:(NSManagedObjectContext*)moc_ humanName:(NSString*)humanName_ error:(NSError**)error_; 
     58 
    5259 
    5360@end 
  • trunk/cocoa/mogenerator/mogeneratorTestMule/MOs/_HumanMO.m

    r317 r319  
    7777 
    7878 
    79 + (NSArray*)fetchByHumanName:(NSManagedObjectContext*)moc_ humanName:(NSString*)humanName_ { 
     79 
     80+ (id)fetchByHumanName:(NSManagedObjectContext*)moc_ humanName:(NSString*)humanName_ { 
    8081        NSError *error = nil; 
    8182        id result = [self fetchByHumanName:moc_ humanName:humanName_ error:&error]; 
     
    8586        return result; 
    8687} 
    87 + (NSArray*)fetchByHumanName:(NSManagedObjectContext*)moc_ humanName:(NSString*)humanName_ error:(NSError**)error_ { 
     88+ (id)fetchByHumanName:(NSManagedObjectContext*)moc_ humanName:(NSString*)humanName_ error:(NSError**)error_ { 
    8889        NSError *error = nil; 
    8990         
     
    9899        NSAssert(fetchRequest, @"Can't find fetch request named \"byHumanName\"."); 
    99100         
    100         NSArray *result = [moc_ executeFetchRequest:fetchRequest error:&error]; 
     101        id result = nil; 
     102        NSArray *results = [moc_ executeFetchRequest:fetchRequest error:&error]; 
     103         
     104        if (!error) { 
     105                switch ([results count]) { 
     106                        case 0: 
     107                                //      Nothing found matching the fetch request. That's cool, though: we'll just return nil. 
     108                                break; 
     109                        case 1: 
     110                                result = [results objectAtIndex:0]; 
     111                                break; 
     112                        default: 
     113                                NSAssert1(NO, @"byHumanName: 0 or 1 objects expected, %u found", [results count]); 
     114                } 
     115        } 
     116         
    101117        if (error_) *error_ = error; 
    102118        return result; 
    103119} 
    104120 
     121 
     122 
     123+ (id)fetchOneByHumanName:(NSManagedObjectContext*)moc_ humanName:(NSString*)humanName_ { 
     124        NSError *error = nil; 
     125        id result = [self fetchOneByHumanName:moc_ humanName:humanName_ error:&error]; 
     126        if (error) { 
     127                [NSApp presentError:error]; 
     128        } 
     129        return result; 
     130} 
     131+ (id)fetchOneByHumanName:(NSManagedObjectContext*)moc_ humanName:(NSString*)humanName_ error:(NSError**)error_ { 
     132        NSError *error = nil; 
     133         
     134        NSManagedObjectModel *model = [[moc_ persistentStoreCoordinator] managedObjectModel]; 
     135        NSFetchRequest *fetchRequest = [model fetchRequestFromTemplateWithName:@"oneByHumanName" 
     136                                                                                                         substitutionVariables:[NSDictionary dictionaryWithObjectsAndKeys: 
     137                                                                                                                 
     138                                                                                                                humanName_, @"humanName", 
     139                                                                                                                 
     140                                                                                                                nil] 
     141                                                                                                         ]; 
     142        NSAssert(fetchRequest, @"Can't find fetch request named \"oneByHumanName\"."); 
     143         
     144        id result = nil; 
     145        NSArray *results = [moc_ executeFetchRequest:fetchRequest error:&error]; 
     146         
     147        if (!error) { 
     148                switch ([results count]) { 
     149                        case 0: 
     150                                //      Nothing found matching the fetch request. That's cool, though: we'll just return nil. 
     151                                break; 
     152                        case 1: 
     153                                result = [results objectAtIndex:0]; 
     154                                break; 
     155                        default: 
     156                                NSAssert1(NO, @"oneByHumanName: 0 or 1 objects expected, %u found", [results count]); 
     157                } 
     158        } 
     159         
     160        if (error_) *error_ = error; 
     161        return result; 
     162} 
     163 
     164 
    105165@end 
  • trunk/cocoa/mogenerator/mogeneratorTestMule/MOs/include.m

    r313 r319  
     1#include "ParentMO.m" 
     2#include "_ParentMO.m" 
     3#include "HumanMO.m" 
     4#include "_HumanMO.m" 
    15#include "ChildMO.m" 
    26#include "_ChildMO.m" 
    3 #include "HumanMO.m" 
    4 #include "_HumanMO.m" 
    5 #include "ParentMO.m" 
    6 #include "_ParentMO.m" 
  • trunk/cocoa/mogenerator/templates/machine.h.motemplate

    r317 r319  
    4949<$endforeach do$> 
    5050<$foreach FetchRequest prettyFetchRequests do$> 
     51<$if Relationship.singleResult$> 
     52+ (id)fetch<$FetchRequest.name.initialCapitalString$>:(NSManagedObjectContext*)moc_ <$foreach Binding FetchRequest.bindings do2$><$Binding.name$>:(<$Binding.type$>)<$Binding.name$>_<$endforeach do2$>; 
     53+ (id)fetch<$FetchRequest.name.initialCapitalString$>:(NSManagedObjectContext*)moc_ <$foreach Binding FetchRequest.bindings do2$><$Binding.name$>:(<$Binding.type$>)<$Binding.name$>_<$endforeach do2$> error:(NSError**)error_; 
     54<$else$> 
    5155+ (NSArray*)fetch<$FetchRequest.name.initialCapitalString$>:(NSManagedObjectContext*)moc_ <$foreach Binding FetchRequest.bindings do2$><$Binding.name$>:(<$Binding.type$>)<$Binding.name$>_<$endforeach do2$>; 
    5256+ (NSArray*)fetch<$FetchRequest.name.initialCapitalString$>:(NSManagedObjectContext*)moc_ <$foreach Binding FetchRequest.bindings do2$><$Binding.name$>:(<$Binding.type$>)<$Binding.name$>_<$endforeach do2$> error:(NSError**)error_; 
     57<$endif$> 
    5358<$endforeach do$> 
    5459@end 
  • trunk/cocoa/mogenerator/templates/machine.m.motemplate

    r317 r319  
    117117 
    118118<$foreach FetchRequest prettyFetchRequests do$> 
     119<$if Relationship.singleResult$> 
     120+ (id)fetch<$FetchRequest.name.initialCapitalString$>:(NSManagedObjectContext*)moc_ <$foreach Binding FetchRequest.bindings do2$><$Binding.name$>:(<$Binding.type$>)<$Binding.name$>_<$endforeach do2$> { 
     121        NSError *error = nil; 
     122        id result = [self fetch<$FetchRequest.name.initialCapitalString$>:moc_ <$foreach Binding FetchRequest.bindings do2$><$Binding.name$>:<$Binding.name$>_<$endforeach do2$> error:&error]; 
     123        if (error) { 
     124                [NSApp presentError:error]; 
     125        } 
     126        return result; 
     127} 
     128+ (id)fetch<$FetchRequest.name.initialCapitalString$>:(NSManagedObjectContext*)moc_ <$foreach Binding FetchRequest.bindings do2$><$Binding.name$>:(<$Binding.type$>)<$Binding.name$>_<$endforeach do2$> error:(NSError**)error_ { 
     129        NSError *error = nil; 
     130         
     131        NSManagedObjectModel *model = [[moc_ persistentStoreCoordinator] managedObjectModel]; 
     132        NSDictionary *substitutionVariables = [NSDictionary dictionaryWithObjectsAndKeys: 
     133                                                                                                                <$foreach Binding FetchRequest.bindings do2$> 
     134                                                                                                                <$Binding.name$>_, @"<$Binding.name$>", 
     135                                                                                                                <$endforeach do2$> 
     136                                                                                                                nil]; 
     137        NSFetchRequest *fetchRequest = [model fetchRequestFromTemplateWithName:@"<$FetchRequest.name$>" 
     138                                                                                                         substitutionVariables:substitutionVariables]; 
     139        NSAssert(fetchRequest, @"Can't find fetch request named \"<$FetchRequest.name$>\"."); 
     140         
     141        id result = nil; 
     142        NSArray *results = [moc_ executeFetchRequest:fetchRequest error:&error]; 
     143         
     144        if (!error) { 
     145                switch ([results count]) { 
     146                        case 0: 
     147                                //      Nothing found matching the fetch request. That's cool, though: we'll just return nil. 
     148                                break; 
     149                        case 1: 
     150                                result = [results objectAtIndex:0]; 
     151                                break; 
     152                        default: 
     153                                NSLog(@"WARN fetch request <$FetchRequest.name$>: 0 or 1 objects expected, %u found (substitutionVariables:%@, results:%@)", 
     154                                        [results count], 
     155                                        substitutionVariables, 
     156                                        results); 
     157                } 
     158        } 
     159         
     160        if (error_) *error_ = error; 
     161        return result; 
     162} 
     163<$else$> 
    119164+ (NSArray*)fetch<$FetchRequest.name.initialCapitalString$>:(NSManagedObjectContext*)moc_ <$foreach Binding FetchRequest.bindings do2$><$Binding.name$>:(<$Binding.type$>)<$Binding.name$>_<$endforeach do2$> { 
    120165        NSError *error = nil; 
    121         id result = [self fetch<$FetchRequest.name.initialCapitalString$>:moc_ <$foreach Binding FetchRequest.bindings do2$><$Binding.name$>:<$Binding.name$>_<$endforeach do2$> error:&error]; 
     166        NSArray *result = [self fetch<$FetchRequest.name.initialCapitalString$>:moc_ <$foreach Binding FetchRequest.bindings do2$><$Binding.name$>:<$Binding.name$>_<$endforeach do2$> error:&error]; 
    122167        if (error) { 
    123168                [NSApp presentError:error]; 
     
    142187        return result; 
    143188} 
     189<$endif$> 
    144190<$endforeach do$> 
    145191@end