From 2d905b13c81da4cbc8567478ef4249e2a336ecba Mon Sep 17 00:00:00 2001 From: Wolfgang Sourdeau Date: Mon, 6 Aug 2007 17:44:01 +0000 Subject: [PATCH] Monotone-Parent: 9715a82415417b61abb765bb77ed338dc1fb58b3 Monotone-Revision: 60f9148aaf760d42dcfae9f3006ede633fc61305 Monotone-Author: wsourdeau@inverse.ca Monotone-Date: 2007-08-06T17:44:01 Monotone-Branch: ca.inverse.sogo --- SoObjects/Mailer/GNUmakefile | 1 - SoObjects/Mailer/SOGoMailFolder.m | 10 - SoObjects/Mailer/SOGoMailFolderDataSource.h | 59 ----- SoObjects/Mailer/SOGoMailFolderDataSource.m | 227 -------------------- 4 files changed, 297 deletions(-) delete mode 100644 SoObjects/Mailer/SOGoMailFolderDataSource.h delete mode 100644 SoObjects/Mailer/SOGoMailFolderDataSource.m diff --git a/SoObjects/Mailer/GNUmakefile b/SoObjects/Mailer/GNUmakefile index 39319f4f0..fbe4346ed 100644 --- a/SoObjects/Mailer/GNUmakefile +++ b/SoObjects/Mailer/GNUmakefile @@ -18,7 +18,6 @@ Mailer_OBJC_FILES += \ SOGoMailFolder.m \ SOGoSharedInboxFolder.m \ SOGoMailObject.m \ - SOGoMailFolderDataSource.m \ SOGoTrashFolder.m \ \ SOGoMailBodyPart.m \ diff --git a/SoObjects/Mailer/SOGoMailFolder.m b/SoObjects/Mailer/SOGoMailFolder.m index 5198482c7..7a2657142 100644 --- a/SoObjects/Mailer/SOGoMailFolder.m +++ b/SoObjects/Mailer/SOGoMailFolder.m @@ -37,7 +37,6 @@ #import "SOGoMailObject.h" #import "SOGoMailAccount.h" #import "SOGoMailManager.h" -#import "SOGoMailFolderDataSource.h" #import "SOGoMailFolder.h" static NSString *defaultUserID = @"anyone"; @@ -174,15 +173,6 @@ static BOOL useAltNamespace = NO; return filenames; } -- (EODataSource *) contentDataSourceInContext: (id) _ctx -{ - SOGoMailFolderDataSource *ds; - - ds = [[SOGoMailFolderDataSource alloc] initWithImap4URL:[self imap4URL] - imap4Password:[self imap4Password]]; - return [ds autorelease]; -} - /* messages */ - (NSArray *) fetchUIDsMatchingQualifier: (id) _q diff --git a/SoObjects/Mailer/SOGoMailFolderDataSource.h b/SoObjects/Mailer/SOGoMailFolderDataSource.h deleted file mode 100644 index 8f6a88564..000000000 --- a/SoObjects/Mailer/SOGoMailFolderDataSource.h +++ /dev/null @@ -1,59 +0,0 @@ -/* - Copyright (C) 2005 SKYRIX Software AG - - This file is part of OpenGroupware.org. - - OGo is free software; you can redistribute it and/or modify it under - the terms of the GNU Lesser General Public License as published by the - Free Software Foundation; either version 2, or (at your option) any - later version. - - OGo 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 Lesser General Public - License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with OGo; see the file COPYING. If not, write to the - Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA - 02111-1307, USA. -*/ - -#ifndef __Mailer_SOGoMailFolderDataSource_H__ -#define __Mailer_SOGoMailFolderDataSource_H__ - -#include - -/* - SOGoMailFolderDataSource - - This is used as the contentDataSource in the SOGoMailFolder, that is, as the - object to retrieve WebDAV listings of an IMAP4 folder. -*/ - -@class NSString, NSURL, NSArray; -@class EOFetchSpecification; - -@interface SOGoMailFolderDataSource : EODataSource -{ - EOFetchSpecification *fetchSpecification; - NSURL *imap4URL; - NSString *imap4Password; -} - -- (id)initWithImap4URL:(NSURL *)_imap4URL imap4Password:(NSString *)_pwd; - -/* accessors */ - -- (void)setFetchSpecification:(EOFetchSpecification *)_fetchSpec; -- (EOFetchSpecification *)fetchSpecification; - -- (NSURL *)imap4URL; - -/* operations */ - -- (NSArray *)fetchObjects; - -@end - -#endif /* SOGoMailFolderDataSource */ diff --git a/SoObjects/Mailer/SOGoMailFolderDataSource.m b/SoObjects/Mailer/SOGoMailFolderDataSource.m deleted file mode 100644 index 2dbc71ee3..000000000 --- a/SoObjects/Mailer/SOGoMailFolderDataSource.m +++ /dev/null @@ -1,227 +0,0 @@ -/* - Copyright (C) 2005 SKYRIX Software AG - - This file is part of OpenGroupware.org. - - OGo is free software; you can redistribute it and/or modify it under - the terms of the GNU Lesser General Public License as published by the - Free Software Foundation; either version 2, or (at your option) any - later version. - - OGo 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 Lesser General Public - License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with OGo; see the file COPYING. If not, write to the - Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA - 02111-1307, USA. -*/ - -#import -#import -#import -#import - -#import -#import -#import -#import -#import -#import - -#import "SOGoMailManager.h" - -#import "SOGoMailFolderDataSource.h" - -@implementation SOGoMailFolderDataSource - -static BOOL debugOn = NO; - -- (id)initWithImap4URL:(NSURL *)_imap4URL imap4Password:(NSString *)_pwd { - if (_imap4URL == nil) { - [self release]; - return nil; - } - - if ((self = [super init])) { - self->imap4URL = [_imap4URL copy]; - self->imap4Password = [_pwd copy]; - } - return self; -} -- (id)init { - return [self initWithImap4URL:nil imap4Password:nil]; -} - -- (void)dealloc { - [self->imap4Password release]; - [self->imap4URL release]; - [self->fetchSpecification release]; - [super dealloc]; -} - -/* accessors */ - -- (void)setFetchSpecification:(EOFetchSpecification *)_fetchSpec { - if ([_fetchSpec isEqual:self->fetchSpecification]) return; - - ASSIGN(self->fetchSpecification, _fetchSpec); - [self postDataSourceChangedNotification]; -} -- (EOFetchSpecification *)fetchSpecification { - return self->fetchSpecification; -} - -- (NSURL *)imap4URL { - return self->imap4URL; -} - -- (NGImap4ConnectionManager *)mailManager { - static NGImap4ConnectionManager *mm = nil; - if (mm == nil) - mm = [[NGImap4ConnectionManager defaultConnectionManager] retain]; - return mm; -} - -/* fetches */ - -- (NSArray *)partsForWebDAVPropertyNames:(NSArray *)_names { - // TODO: implement - static NSArray *parts = nil; - - // [self logWithFormat:@"props: %@", _names]; - - if (parts == nil) { - parts = [[NSArray alloc] initWithObjects: - @"FLAGS", @"ENVELOPE", @"RFC822.SIZE", nil]; - } - return parts; -} - -- (void)addRecordsForFolderNames:(NSArray *)_n toArray:(NSMutableArray *)_r { - unsigned i, count; - - for (i = 0, count = [_n count]; i < count; i++) { - NSDictionary *rec; - NSString *keys[2], *values[2]; - - keys[0] = @"{DAV:}href"; values[0] = [_n objectAtIndex:i]; - keys[1] = @"davResourceType"; values[1] = @"collection"; - rec = [[NSDictionary alloc] initWithObjects:values forKeys:keys count:2]; - [_r addObject:rec]; - [rec release]; - } -} - -- (void)addRecordsForUIDs:(NSArray *)_uids toArray:(NSMutableArray *)_r { - NSAutoreleasePool *pool; - NSArray *partNames, *results; - unsigned i, count; - - if ([_uids count] == 0) - return; - - pool = [[NSAutoreleasePool alloc] init]; - - partNames = [self partsForWebDAVPropertyNames: - [[self fetchSpecification] selectedWebDAVPropertyNames]]; - - results = [[self mailManager] fetchUIDs:_uids inURL:self->imap4URL - parts:partNames password:self->imap4Password]; - results = [results valueForKey:@"fetch"]; - - for (i = 0, count = [results count]; i < count; i++) { - NGImap4Envelope *envelope; - NSDictionary *result; - NSDictionary *rec; - NSString *keys[6]; - id values[6]; - - result = [results objectAtIndex:i]; - envelope = [result valueForKey:@"envelope"]; - // NSLog(@"RES: %@", result); - - keys[0] = @"{DAV:}href"; - values[0] = [[[result objectForKey:@"uid"] stringValue] - stringByAppendingString:@".mail"]; - keys[1] = @"davResourceType"; - values[1] = @""; - keys[2] = @"davContentLength"; - values[2] = [result objectForKey:@"size"]; - keys[3] = @"davDisplayName"; - values[3] = [envelope subject]; - keys[4] = @"davLastModified"; - values[4] = [envelope date]; - - rec = [[NSDictionary alloc] initWithObjects:values forKeys:keys count:5]; - [_r addObject:rec]; - [rec release]; - } - - [pool release]; -} - -/* operations */ - -- (NSArray *)fetchObjects { - NSMutableArray *results; - EOQualifier *qualifier; - NSArray *sortOrderings; - NSArray *uids, *folderNames; - unsigned total; - - // TODO: support [fs davBulkTargetKeys] - if ([[self fetchSpecification] davBulkTargetKeys] != nil) { - [self logWithFormat:@"unsupported fetch specification"]; - return nil; - } - - /* fetch message uids */ - - // TODO: translate WebDAV qualifier and sort-ordering into IMAP4 one - uids = [[self mailManager] fetchUIDsInURL:self->imap4URL - qualifier:nil sortOrdering:@"DATE" - password:self->imap4Password]; - - /* fetch folders */ - - folderNames = [[self mailManager] subfoldersForURL:self->imap4URL - password:self->imap4Password]; - - /* builds results */ - - if ((total = ([uids count] + [folderNames count])) == 0) - return [NSArray array]; - - results = [NSMutableArray arrayWithCapacity:total]; - - [self addRecordsForFolderNames:folderNames toArray:results]; - [self addRecordsForUIDs:uids toArray:results]; - - /* filter and sort results */ - - if ((qualifier = [[self fetchSpecification] qualifier]) != nil) - results = (id)[results filteredArrayUsingQualifier:qualifier]; - - if ((sortOrderings = [[self fetchSpecification] sortOrderings]) != nil) { - if (qualifier != nil) - results = (id)[results sortedArrayUsingKeyOrderArray:sortOrderings]; - else - [results sortUsingKeyOrderArray:sortOrderings]; - } - - return results; -} - -/* logging */ - -- (NSString *)loggingPrefix { - return @"[mailfolder-ds]"; -} -- (BOOL)isDebuggingEnabled { - return debugOn; -} - -@end /* SOGoMailFolderDataSource */