[OGo-Developer] stuffing an NSArray into a NSMutableDictionary
Rafel Amer
developer@opengroupware.org
Mon, 23 Apr 2007 00:53:36 +0200
Sebastian,
if I have understood the question, the initial value of
self->multipleReturn is something like that:
self->multipleReturn: (
{
Abandoned = " 0";
Calls = " 0";
Completed = " 0";
Event = " QueueParams";
Holdtime = " 0";
Max = " 0";
Queue = " l00-bugdead-prods-queue";
ServiceLevel = " 0";
ServicelevelPerf = " 0.0";
Weight = " 0";
},
{
Abandoned = " 0";
Calls = " 0";
CallsTaken = " 0";
Completed = " 0";
Event = " QueueMember";
Holdtime = " 0";
LastCall = " 0";
Location = " Agent/303";
Max = " 0";
Membership = " static";
Paused = " 0";
Penalty = " 1";
Queue = " l00-bugdead-prods-queue";
ServiceLevel = " 0";
ServicelevelPerf = " 0.0";
Status = " 4";
Weight = " 0";
},
{
Abandoned = " 0";
Calls = " 0";
CallsTaken = " 0";
Completed = " 0";
Event = " QueueMember";
Holdtime = " 0";
LastCall = " 0";
Location = " Agent/202";
Max = " 0";
Membership = " static";
Paused = " 0";
Penalty = " 0";
Queue = " l00-bugdead-prods-queue";
ServiceLevel = " 0";
ServicelevelPerf = " 0.0";
Status = " 4";
Weight = " 0";
},
{
Abandoned = " 0";
Calls = " 0";
CallsTaken = " 0";
Completed = " 0";
Event = " QueueMember";
Holdtime = " 0";
LastCall = " 0";
Location = " Agent/101";
Max = " 0";
Membership = " static";
Paused = " 0";
Penalty = " 0";
Queue = " l00-bugdead-prods-queue";
ServiceLevel = " 0";
ServicelevelPerf = " 0.0";
Status = " 4";
Weight = " 0";
},
{
Abandoned = " 0";
Calls = " 0";
Completed = " 0";
Event = " QueueParams";
Holdtime = " 0";
Max = " 0";
Queue = " l01-bugdead-prods-queue";
ServiceLevel = " 0";
ServicelevelPerf = " 0.0";
Weight = " 0";
},
{
Abandoned = " 0";
Calls = " 0";
CallsTaken = " 0";
Completed = " 0";
Event = " QueueMember";
Holdtime = " 0";
LastCall = " 0";
Location = " Agent/303";
Max = " 0";
Membership = " static";
Paused = " 0";
Penalty = " 1";
Queue = " l01-bugdead-prods-queue";
ServiceLevel = " 0";
ServicelevelPerf = " 0.0";
Status = " 4";
Weight = " 0";
},
{
Abandoned = " 0";
Calls = " 0";
CallsTaken = " 0";
Completed = " 0";
Event = " QueueMember";
Holdtime = " 0";
LastCall = " 0";
Location = " Agent/202";
Max = " 0";
Membership = " static";
Paused = " 0";
Penalty = " 0";
Queue = " l01-bugdead-prods-queue";
ServiceLevel = " 0";
ServicelevelPerf = " 0.0";
Status = " 4";
Weight = " 0";
},
{
Abandoned = " 0";
Calls = " 0";
CallsTaken = " 0";
Completed = " 0";
Event = " QueueMember";
Holdtime = " 0";
LastCall = " 0";
Location = " Agent/101";
Max = " 0";
Membership = " static";
Paused = " 0";
Penalty = " 0";
Queue = " l01-bugdead-prods-queue";
ServiceLevel = " 0";
ServicelevelPerf = " 0.0";
Status = " 4";
Weight = " 0";
}
)
with two queues l00-bugdead-prods-queue and l01-bugdead-prods-queue
and the final value must be an array with two dictionaries, one for each
queue?
Can you trie the following code:
- (NSArray *)getQueues {
NSException *exc;
exc = [self sendCommand:@"QueueStatus"
withParameters:nil
expectResult:[[[self asteriskCommands]
objectForKey:@"QueueStatus"]
objectForKey:@"ExpectedResult"]];
if(exc) {
ASSIGN(self->lastException, exc);
return nil;
}
NSEnumerator *e;
NSMutableDictionary *queuesdict;
id event;
queuesdict = [[NSMutableDictionary alloc] init];
e = [self->multipleReturn objectEnumerator];
while ((event = [e nextObject]) != nil) {
if ([[event objectForKey:@"Event"] hasSuffix:@" QueueParams"]) {
NSMutableDictionary *tempdict;
NSMutableArray *temparray;
temparray = [[NSMutableArray alloc] init];
tempdict = [[NSMutableDictionary alloc] init];
[tempdict addEntriesFromDictionary:event];
[tempdict setObject:[temparray retain] forKey:@"Agents"];
[queuesdict setObject:[tempdict retain] forKey:[event valueForKey:@"Queue"]];
} else {
NSMutableArray *temparray;
temparray = [[queuesdict objectForKey:[event objectForKey:@"Queue"]
objectForKey:@"Agents"];
[temparray addObject:event];
}
}
[self->multipleReturn release];
self->multipleReturn = nil;
self->multipleReturn = [[queuesdict allValues] retain];
return self->multipleReturn;
}
Kind regards,
Rafel Amer