diff --git a/ChangeLog b/ChangeLog index 7b636ceae..0b2ee453e 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2011-08-12 Wolfgang Sourdeau + + * OpenChange/MAPIStoreMailMessageTable.m + (-getRow:withRowID:andQueryType:inMemCtx:): overriden method to + prefetch the "core infos" of messages that are going to be + fetched. + 2011-08-12 Francis Lachapelle * UI/WebServerResources/HTMLElement.js (refreshSelectionByIds): diff --git a/OpenChange/MAPIStoreMailMessageTable.h b/OpenChange/MAPIStoreMailMessageTable.h index 0b7eee2df..1a5f1f8c4 100644 --- a/OpenChange/MAPIStoreMailMessageTable.h +++ b/OpenChange/MAPIStoreMailMessageTable.h @@ -26,6 +26,9 @@ #import "MAPIStoreMessageTable.h" @interface MAPIStoreMailMessageTable : MAPIStoreMessageTable +{ + BOOL fetchedCoreInfos; +} @end diff --git a/OpenChange/MAPIStoreMailMessageTable.m b/OpenChange/MAPIStoreMailMessageTable.m index c68bbdf63..f4d5c2003 100644 --- a/OpenChange/MAPIStoreMailMessageTable.m +++ b/OpenChange/MAPIStoreMailMessageTable.m @@ -67,6 +67,7 @@ static Class MAPIStoreMailMessageK, NSDataK, NSStringK; if ((self = [super init])) { ASSIGN (sortOrderings, [NSArray arrayWithObject: @"ARRIVAL"]); + fetchedCoreInfos = NO; } return self; @@ -75,6 +76,7 @@ static Class MAPIStoreMailMessageK, NSDataK, NSStringK; - (void) cleanupCaches { [(MAPIStoreMailFolder *) container synchroniseCache]; + fetchedCoreInfos = NO; [super cleanupCaches]; } @@ -322,4 +324,20 @@ static Class MAPIStoreMailMessageK, NSDataK, NSStringK; [self cleanupCaches]; } +- (int) getRow: (struct mapistore_property_data **) dataP + withRowID: (uint32_t) rowId + andQueryType: (enum table_query_type) queryType + inMemCtx: (TALLOC_CTX *) memCtx +{ + if (!fetchedCoreInfos) + { + fetchedCoreInfos = YES; + [(SOGoMailFolder *) [container sogoObject] + prefetchCoreInfosForMessageKeys: [self restrictedChildKeys]]; + } + + return [super getRow: dataP withRowID: rowId + andQueryType: queryType inMemCtx: memCtx]; +} + @end