Changeset 208

Show
Ignore:
Timestamp:
01/21/07 00:48:47 (2 years ago)
Author:
rentzsch
Message:

[NEW] mogenerator: Add position_ support to machine accessor.

Files:

Legend:

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

    r167 r208  
    1212        <$Attribute.attributeValueClassName$> *result = [self primitiveValueForKey:@"<$Attribute.name$>"]; 
    1313        [self didAccessValueForKey:@"<$Attribute.name$>"]; 
     14<$if Attribute.name == position_$> 
     15        //      position_ is a calculated value: @max(position_)+1. Calculate it the first time it's used. 
     16        if (!result || [result longLongValue] == -1) { 
     17                NSFetchRequest *fetchObjectWithMaximumPosition = [[[NSFetchRequest alloc] init] autorelease]; 
     18                [fetchObjectWithMaximumPosition setEntity:[self entity]]; 
     19                [fetchObjectWithMaximumPosition setSortDescriptors:[NSArray arrayWithObject:[[[NSSortDescriptor alloc] initWithKey:@"position_" ascending:NO] autorelease]]]; 
     20                [fetchObjectWithMaximumPosition setFetchLimit:1]; 
     21                NSArray *objectWithMaximumPosition = [[self managedObjectContext] executeFetchRequest:fetchObjectWithMaximumPosition error:nil]; 
     22                assert(objectWithMaximumPosition && [objectWithMaximumPosition count] < 2); 
     23                result = [NSNumber numberWithLongLong:[objectWithMaximumPosition count] ? [[[objectWithMaximumPosition lastObject] valueForKey:@"position_"] longLongValue]+1 : 0]; 
     24                [self setPosition_:result]; 
     25        } 
     26<$endif$> 
    1427        return result; 
    1528}