diff --git a/ChangeLog b/ChangeLog index acada6c5d..4e8102491 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,17 @@ +2006-08-09 Wolfgang Sourdeau + + * SoObjects/Contacts/NGLdapEntry+Contact.m ([NGLdapEntry + -singleAttributeWithName:key]): new method that returns the first + object associated with an ldap key (where generally one value is + returned by key). + ([NGLdapEntry + -asDictionaryWithAttributeNames:attributeNamesandCName:cName]): + map the entry into an NSDictionary for processing by + UIxContactsListViewBase.m with the least possible overhead. + + * SoObjects/Contacts/NGLdapEntry+Contact.[hm]: new class + extension. + 2006-08-04 Wolfgang Sourdeau * SoObjects/SOGo/SOGoUserFolder.m ([SOGoUserFolder diff --git a/SoObjects/Contacts/NGLdapEntry+Contact.h b/SoObjects/Contacts/NGLdapEntry+Contact.h new file mode 100644 index 000000000..557911724 --- /dev/null +++ b/SoObjects/Contacts/NGLdapEntry+Contact.h @@ -0,0 +1,40 @@ +/* NGLdapEntry+Contact.h - this file is part of SOGo + * + * Copyright (C) 2006 Inverse groupe conseil + * + * Author: Wolfgang Sourdeau + * + * This file is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2, or (at your option) + * any later version. + * + * This file is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; see the file COPYING. If not, write to + * the Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +#ifndef NGLDAPENTRY_CONTACT_H +#define NGLDAPENTRY_CONTACT_H + +#import + +@class NSArray; +@class NSDictionary; +@class NSString; + +@interface NGLdapEntry (SOGoContactExtension) + +- (NSString *) singleAttributeWithName: (NSString *) key; +- (NSDictionary *) asDictionaryWithAttributeNames: (NSArray *) attributes + andCName: (NSString *) cName; + +@end + +#endif /* NGLDAPENTRY_CONTACT_H */ diff --git a/SoObjects/Contacts/NGLdapEntry+Contact.m b/SoObjects/Contacts/NGLdapEntry+Contact.m new file mode 100644 index 000000000..880f7b779 --- /dev/null +++ b/SoObjects/Contacts/NGLdapEntry+Contact.m @@ -0,0 +1,66 @@ +/* NGLdapEntry+Contact.m - this file is part of SOGo + * + * Copyright (C) 2006 Inverse groupe conseil + * + * Author: Wolfgang Sourdeau + * + * This file is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2, or (at your option) + * any later version. + * + * This file is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; see the file COPYING. If not, write to + * the Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +#import +#import +#import + +#import + +#import "NGLdapEntry+Contact.h" + +@implementation NGLdapEntry (SOGoContactExtension) + +- (NSString *) singleAttributeWithName: (NSString *) key +{ + return [[self attributeWithName: key] + stringValueAtIndex: 0]; +} + +- (NSDictionary *) asDictionaryWithAttributeNames: (NSArray *) attributeNames + andCName: (NSString *) cName +{ + NSMutableDictionary *valuesDict; + NSEnumerator *attrEnum; + NSString *attribute; + + if (!attributeNames) + attributeNames = [self attributeNames]; + + valuesDict = [NSMutableDictionary dictionaryWithCapacity: [attributeNames count]]; + attrEnum = [attributeNames objectEnumerator]; + attribute = [attrEnum nextObject]; + while (attribute) + { + [valuesDict setObject: [[self attributeWithName: attribute] + stringValueAtIndex: 0] + forKey: attribute]; + attribute = [attrEnum nextObject]; + } + [valuesDict setObject: [[self attributeWithName: cName] + stringValueAtIndex: 0] + forKey: @"c_name"]; + + return valuesDict; +} + +@end