Monotone-Parent: d253d04eddd673d2fda2f03ca664a7fc15cf7455

Monotone-Revision: 999af0129af96f5078d390fcb5a96d73f7683e04

Monotone-Author: wsourdeau@inverse.ca
Monotone-Date: 2008-03-07T22:17:16
Monotone-Branch: ca.inverse.sogo
maint-2.0.2
Wolfgang Sourdeau 2008-03-07 22:17:16 +00:00
parent e71b493b4a
commit 5cdbf589bd
4 changed files with 54 additions and 7 deletions

View File

@ -1,5 +1,10 @@
2008-03-07 Wolfgang Sourdeau <wsourdeau@inverse.ca>
* OGoContentStore/OCSContactFieldExtractor.m
([OCSContactFieldExtractor -extractQuickFieldsFromVList:vList]):
new method to handle extraction of quick information from the
VLIST components. I.e.: the display name of the card.
* SoObjects/SOGo/SOGoFolder.m ([SOGoFolder
-isValidContentName:name]): moved method from
SOGoAppointmentFolder's isValidAppointmentName.

View File

@ -25,6 +25,7 @@
#import <GDLContentStore/GCSFieldExtractor.h>
#import <NGCards/NGVCard.h>
#import <NGCards/NGVList.h>
@interface OCSContactFieldExtractor : GCSFieldExtractor
@end
@ -75,6 +76,22 @@
[fields setObject: [adr value: 3] forKey: @"c_l"];
value = [[vCard uniqueChildWithTag: @"X-AIM"] value: 0];
[fields setObject: value forKey: @"c_screenname"];
[fields setObject: @"vcard" forKey: @"c_component"];
return fields;
}
- (NSMutableDictionary *) extractQuickFieldsFromVList: (NGVList *) vList
{
NSMutableDictionary *fields;
NSString *value;
fields = [NSMutableDictionary dictionaryWithCapacity: 1];
value = [vList fn];
if (value)
[fields setObject: value forKey: @"c_cn"];
[fields setObject: @"vlist" forKey: @"c_component"];
return fields;
}
@ -83,19 +100,34 @@
{
NSMutableDictionary *fields;
NGVCard *vCard;
NGVList *vList;
NSString *upperContent;
fields = nil;
if ([content length] > 0
&& [[content uppercaseString] hasPrefix: @"BEGIN:VCARD"])
if ([content length] > 0)
{
vCard = [NGVCard parseSingleFromSource: content];
if (vCard)
fields = [self extractQuickFieldsFromVCard: vCard];
upperContent = [content uppercaseString];
if ([upperContent hasPrefix: @"BEGIN:VCARD"])
{
vCard = [NGVCard parseSingleFromSource: content];
if (vCard)
fields = [self extractQuickFieldsFromVCard: vCard];
else
[self errorWithFormat: @"Could not parse VCARD content."];
}
else if ([upperContent hasPrefix: @"BEGIN:VLIST"])
{
vList = [NGVList parseSingleFromSource: content];
if (vList)
fields = [self extractQuickFieldsFromVList: vList];
else
[self errorWithFormat: @"Could not parse VLIST content."];
}
else
[self errorWithFormat: @"Could not parse content as a vCard."];
[self errorWithFormat: @"Content is unknown."];
}
else
[self errorWithFormat: @"Content is not a vCard"];
[self errorWithFormat: @"Content is empty."];
return fields;
}

View File

@ -54,5 +54,10 @@
sqlType = "VARCHAR2(256)";
allowsNull = YES;
},
{
columnName = c_component;
sqlType = "VARCHAR2(10)";
allowsNull = NO;
},
);
}

View File

@ -54,5 +54,10 @@
sqlType = "VARCHAR(256)";
allowsNull = YES;
},
{
columnName = c_component;
sqlType = "VARCHAR(10)";
allowsNull = NO;
},
);
}