1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77
|
#include "AggregateLink.h"
#include "../General/Macros.h"
@implementation AggregateLink
+ (PajeEntity *)entityWithEntities:(NSArray *)entities
{
return [[[self alloc] initWithEntities:entities] autorelease];
}
- (id)initWithEntities:(NSArray *)entities
{
NSEnumerator *entityEnum;
PajeEntity *entity;
entityEnum = [entities reverseObjectEnumerator];
entity = [entityEnum nextObject];
NSParameterAssert(entity != nil);
self = [super initWithType:[entity entityType]
name:@"AggregateLink"
container:[entity container]];
if (self != nil) {
sourceContainer = [entity sourceContainer];
destContainer = [entity destContainer];
condensedArray = [[CondensedEntitiesArray alloc] init];
startTime = [entity startTime];
endTime = [entity endTime];
do {
[condensedArray addArray:[entity condensedEntities]];
condensedEntitiesCount += [entity condensedEntitiesCount];
if (![entity isAggregate]) {
[condensedArray addValue:[entity value]
duration:[entity doubleValue]];
condensedEntitiesCount ++;
}
startTime = [startTime earlierDate:[entity startTime]];
endTime = [endTime laterDate:[entity endTime]];
} while ((entity = [entityEnum nextObject]) != nil);
[startTime retain];
[endTime retain];
}
return self;
}
- (double)subDurationAtIndex:(unsigned)i
{
return [condensedArray durationAtIndex:i];
}
- (PajeContainer *)sourceContainer
{
return sourceContainer;
}
- (PajeContainer *)destContainer
{
return destContainer;
}
- (PajeEntityType *)sourceEntityType
{
return [sourceContainer entityType];
}
- (PajeEntityType *)destEntityType
{
return [destContainer entityType];
}
- (NSColor *)color
{
return [NSColor blueColor];
}
@end
|