mirror of
https://github.com/inverse-inc/sogo.git
synced 2026-05-21 03:15:25 +00:00
Monotone-Parent: 482fb2f36da6ff311c3c19eb3752da985fdae5cd
Monotone-Revision: 8fcaef79630a50f01c6aba0e5fdc0744c274cba6 Monotone-Author: wsourdeau@inverse.ca Monotone-Date: 2011-03-07T19:15:16 Monotone-Branch: ca.inverse.sogo
This commit is contained in:
@@ -30,8 +30,8 @@
|
||||
#import <SOGo/SOGoFolder.h>
|
||||
|
||||
#import "MAPIStoreContext.h"
|
||||
#import "MAPIStoreFSMessage.h"
|
||||
#import "MAPIStoreFSMessageTable.h"
|
||||
#import "MAPIStoreFAIMessage.h"
|
||||
#import "MAPIStoreFAIMessageTable.h"
|
||||
#import "MAPIStoreFolder.h"
|
||||
#import "MAPIStoreMessage.h"
|
||||
#import "MAPIStoreTypes.h"
|
||||
@@ -46,13 +46,16 @@
|
||||
#include <mapistore/mapistore_nameid.h>
|
||||
// #include <mapistore/mapistore_errors.h>
|
||||
|
||||
Class NSExceptionK;
|
||||
Class NSExceptionK, MAPIStoreMessageTableK, MAPIStoreFAIMessageTableK, MAPIStoreFolderTableK;
|
||||
|
||||
@implementation MAPIStoreFolder
|
||||
|
||||
+ (void) initialize
|
||||
{
|
||||
NSExceptionK = [NSException class];
|
||||
MAPIStoreMessageTableK = [MAPIStoreMessageTable class];
|
||||
MAPIStoreFAIMessageTableK = [MAPIStoreFAIMessageTable class];
|
||||
MAPIStoreFolderTableK = [MAPIStoreFolderTable class];
|
||||
}
|
||||
|
||||
+ (id) baseFolderWithURL: (NSURL *) newURL
|
||||
@@ -70,15 +73,16 @@ Class NSExceptionK;
|
||||
{
|
||||
if ((self = [super init]))
|
||||
{
|
||||
messageTable = nil;
|
||||
messageKeys = nil;
|
||||
faiMessageTable = nil;
|
||||
faiMessageKeys = nil;
|
||||
folderTable = nil;
|
||||
folderKeys = nil;
|
||||
faiFolder = nil;
|
||||
folderURL = nil;
|
||||
context = nil;
|
||||
|
||||
activeMessageTables = [NSMutableArray new];
|
||||
activeFAIMessageTables = [NSMutableArray new];
|
||||
activeFolderTables = [NSMutableArray new];
|
||||
}
|
||||
|
||||
return self;
|
||||
@@ -102,13 +106,14 @@ Class NSExceptionK;
|
||||
- (void) dealloc
|
||||
{
|
||||
[folderURL release];
|
||||
[messageTable release];
|
||||
[messageKeys release];
|
||||
[faiMessageTable release];
|
||||
[faiMessageKeys release];
|
||||
[folderTable release];
|
||||
[folderKeys release];
|
||||
[faiFolder release];
|
||||
[activeMessageTables release];
|
||||
[activeFAIMessageTables release];
|
||||
[activeFolderTables release];
|
||||
|
||||
[super dealloc];
|
||||
}
|
||||
|
||||
@@ -132,15 +137,9 @@ Class NSExceptionK;
|
||||
return messageKeys;
|
||||
}
|
||||
|
||||
- (MAPIStoreFSMessageTable *) faiMessageTable
|
||||
- (MAPIStoreFAIMessageTable *) faiMessageTable
|
||||
{
|
||||
if (!faiMessageTable)
|
||||
{
|
||||
faiMessageTable = [MAPIStoreFSMessageTable tableForContainer: self];
|
||||
[faiMessageTable retain];
|
||||
}
|
||||
|
||||
return faiMessageTable;
|
||||
return [MAPIStoreFAIMessageTable tableForContainer: self];
|
||||
}
|
||||
|
||||
- (NSArray *) faiMessageKeys
|
||||
@@ -161,21 +160,68 @@ Class NSExceptionK;
|
||||
|
||||
- (NSArray *) folderKeys
|
||||
{
|
||||
if (!faiMessageKeys)
|
||||
faiMessageKeys = [NSArray new];
|
||||
return nil;
|
||||
}
|
||||
|
||||
return faiMessageKeys;
|
||||
- (NSArray *) activeMessageTables
|
||||
{
|
||||
return activeMessageTables;
|
||||
}
|
||||
|
||||
- (NSArray *) activeFAIMessageTables
|
||||
{
|
||||
return activeFAIMessageTables;
|
||||
}
|
||||
|
||||
- (NSArray *) activeFolderTables
|
||||
{
|
||||
return activeFolderTables;
|
||||
}
|
||||
|
||||
- (NSMutableArray *) _arrayForActiveTable: (MAPIStoreTable *) activeTable
|
||||
{
|
||||
NSMutableArray *tablesArray;
|
||||
|
||||
if ([activeTable isKindOfClass: MAPIStoreFAIMessageTableK])
|
||||
tablesArray = activeMessageTables;
|
||||
else if ([activeTable isKindOfClass: MAPIStoreMessageTableK])
|
||||
tablesArray = activeMessageTables;
|
||||
else if ([activeTable isKindOfClass: MAPIStoreFolderTableK])
|
||||
tablesArray = activeMessageTables;
|
||||
else
|
||||
tablesArray = nil;
|
||||
|
||||
return tablesArray;
|
||||
}
|
||||
|
||||
- (void) addActiveTable: (MAPIStoreTable *) activeTable
|
||||
{
|
||||
[[self _arrayForActiveTable: activeTable] addObject: activeTable];
|
||||
}
|
||||
|
||||
- (void) removeActiveTable: (MAPIStoreTable *) activeTable
|
||||
{
|
||||
[[self _arrayForActiveTable: activeTable] removeObject: activeTable];
|
||||
}
|
||||
|
||||
- (void) _cleanupTableCaches: (NSArray *) activeTables
|
||||
{
|
||||
NSUInteger count, max;
|
||||
|
||||
max = [activeTables count];
|
||||
for (count = 0; count < max; count++)
|
||||
[[activeTables objectAtIndex: count] cleanupCaches];
|
||||
}
|
||||
|
||||
- (void) cleanupCaches
|
||||
{
|
||||
[faiMessageTable cleanupCaches];
|
||||
[self _cleanupTableCaches: activeMessageTables];
|
||||
[self _cleanupTableCaches: activeFAIMessageTables];
|
||||
[self _cleanupTableCaches: activeFolderTables];
|
||||
[faiMessageKeys release];
|
||||
faiMessageKeys = nil;
|
||||
[messageTable cleanupCaches];
|
||||
[messageKeys release];
|
||||
messageKeys = nil;
|
||||
[folderTable cleanupCaches];
|
||||
[folderKeys release];
|
||||
folderKeys = nil;
|
||||
}
|
||||
@@ -194,8 +240,8 @@ Class NSExceptionK;
|
||||
inContext: nil
|
||||
acquire: NO];
|
||||
newChild
|
||||
= [MAPIStoreFSMessage mapiStoreObjectWithSOGoObject: msgObject
|
||||
inContainer: self];
|
||||
= [MAPIStoreFAIMessage mapiStoreObjectWithSOGoObject: msgObject
|
||||
inContainer: self];
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -274,8 +320,8 @@ Class NSExceptionK;
|
||||
newKey = [NSString stringWithFormat: @"%@.plist",
|
||||
[SOGoObject globallyUniqueObjectId]];
|
||||
fsObject = [SOGoMAPIFSMessage objectWithName: newKey inContainer: faiFolder];
|
||||
newMessage = [MAPIStoreFSMessage mapiStoreObjectWithSOGoObject: fsObject
|
||||
inContainer: self];
|
||||
newMessage = [MAPIStoreFAIMessage mapiStoreObjectWithSOGoObject: fsObject
|
||||
inContainer: self];
|
||||
|
||||
|
||||
return newMessage;
|
||||
@@ -289,6 +335,7 @@ Class NSExceptionK;
|
||||
newMessage = [self _createAssociatedMessage];
|
||||
else
|
||||
newMessage = [self createMessage];
|
||||
[newMessage setIsNew: YES];
|
||||
|
||||
return newMessage;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user