mirror of
https://github.com/inverse-inc/sogo.git
synced 2026-05-21 11:25:24 +00:00
Monotone-Parent: 43895973aa7fea1d3dc9024f5b6d44f2298ab592
Monotone-Revision: dd0f98cf89d78f378ec83484a40047514086bc36 Monotone-Author: wsourdeau@inverse.ca Monotone-Date: 2008-06-13T20:07:32 Monotone-Branch: ca.inverse.sogo
This commit is contained in:
@@ -1,3 +1,12 @@
|
||||
2008-06-13 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
||||
|
||||
* GCSFolder.m: modified the fetchFields* methods so that any field
|
||||
from the quick and/or content table will generate an appropriate
|
||||
query. If both tables are required, a joined query is generated.
|
||||
|
||||
* GCSFolderType.m ([GCSFolderType -fields]): new method that
|
||||
returns the fields used by the quick tables.
|
||||
|
||||
2008-01-21 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
||||
|
||||
* GCSFolderManager.m ([GCSFolderManager
|
||||
|
||||
@@ -39,24 +39,34 @@
|
||||
- "c_version" (update revision of the file in the folder)
|
||||
*/
|
||||
|
||||
@class NSString, NSURL, NSNumber, NSArray, NSException, NSMutableString;
|
||||
@class NSString;
|
||||
@class NSURL;
|
||||
@class NSNumber;
|
||||
@class NSArray;
|
||||
@class NSMutableArray;
|
||||
@class NSException;
|
||||
@class NSMutableString;
|
||||
@class NSDictionary;
|
||||
@class EOQualifier, EOFetchSpecification;
|
||||
@class EOQualifier;
|
||||
@class EOFetchSpecification;
|
||||
@class EOAdaptorChannel;
|
||||
@class GCSFolderManager, GCSFolderType, GCSChannelManager;
|
||||
@class GCSFolderManager;
|
||||
@class GCSFolderType;
|
||||
@class GCSChannelManager;
|
||||
|
||||
@interface GCSFolder : NSObject
|
||||
{
|
||||
GCSFolderManager *folderManager;
|
||||
GCSFolderType *folderInfo;
|
||||
GCSFolderType *folderInfo;
|
||||
|
||||
NSNumber *folderId;
|
||||
NSString *folderName;
|
||||
NSString *path;
|
||||
NSURL *location;
|
||||
NSURL *quickLocation;
|
||||
NSURL *aclLocation;
|
||||
NSURL *location;
|
||||
NSURL *quickLocation;
|
||||
NSURL *aclLocation;
|
||||
NSString *folderTypeName;
|
||||
NSMutableArray *quickFieldNames;
|
||||
|
||||
struct {
|
||||
int requiresFolderSelect:1;
|
||||
@@ -65,62 +75,66 @@
|
||||
} ofFlags;
|
||||
}
|
||||
|
||||
- (id)initWithPath:(NSString *)_path primaryKey:(id)_folderId
|
||||
folderTypeName:(NSString *)_ftname folderType:(GCSFolderType *)_ftype
|
||||
location:(NSURL *)_loc quickLocation:(NSURL *)_qloc
|
||||
aclLocation: (NSURL *)_aloc
|
||||
folderManager:(GCSFolderManager *)_fm;
|
||||
- (id) initWithPath: (NSString *) _path
|
||||
primaryKey: (id) _folderId
|
||||
folderTypeName: (NSString *) _ftname
|
||||
folderType: (GCSFolderType *) _ftype
|
||||
location: (NSURL *) _loc
|
||||
quickLocation: (NSURL *) _qloc
|
||||
aclLocation: (NSURL *) _aloc
|
||||
folderManager: (GCSFolderManager *) _fm;
|
||||
|
||||
/* accessors */
|
||||
|
||||
- (NSNumber *)folderId;
|
||||
- (NSString *)folderName;
|
||||
- (NSString *)path;
|
||||
- (NSURL *)location;
|
||||
- (NSURL *)quickLocation;
|
||||
- (NSURL *)aclLocation;
|
||||
- (NSString *)folderTypeName;
|
||||
- (NSNumber *) folderId;
|
||||
- (NSString *) folderName;
|
||||
- (NSString *) path;
|
||||
- (NSURL *) location;
|
||||
- (NSURL *) quickLocation;
|
||||
- (NSURL *) aclLocation;
|
||||
- (NSString *) folderTypeName;
|
||||
|
||||
- (GCSFolderManager *)folderManager;
|
||||
- (GCSChannelManager *)channelManager;
|
||||
- (GCSFolderManager *) folderManager;
|
||||
- (GCSChannelManager *) channelManager;
|
||||
|
||||
- (NSString *)storeTableName;
|
||||
- (NSString *)quickTableName;
|
||||
- (NSString *)aclTableName;
|
||||
- (BOOL)isQuickInfoStoredInContentTable;
|
||||
- (NSString *) storeTableName;
|
||||
- (NSString *) quickTableName;
|
||||
- (NSString *) aclTableName;
|
||||
- (BOOL) isQuickInfoStoredInContentTable;
|
||||
|
||||
/* connection */
|
||||
|
||||
- (EOAdaptorChannel *)acquireStoreChannel;
|
||||
- (EOAdaptorChannel *)acquireQuickChannel;
|
||||
- (EOAdaptorChannel *)acquireAclChannel;
|
||||
- (void)releaseChannel:(EOAdaptorChannel *)_channel;
|
||||
- (EOAdaptorChannel *) acquireStoreChannel;
|
||||
- (EOAdaptorChannel *) acquireQuickChannel;
|
||||
- (EOAdaptorChannel *) acquireAclChannel;
|
||||
- (void) releaseChannel: (EOAdaptorChannel *) _channel;
|
||||
|
||||
- (BOOL)canConnectStore;
|
||||
- (BOOL)canConnectQuick;
|
||||
- (BOOL) canConnectStore;
|
||||
- (BOOL) canConnectQuick;
|
||||
|
||||
/* operations */
|
||||
|
||||
- (NSArray *)subFolderNames;
|
||||
- (NSArray *)allSubFolderNames;
|
||||
- (NSArray *) subFolderNames;
|
||||
- (NSArray *) allSubFolderNames;
|
||||
|
||||
- (NSDictionary *) recordOfEntryWithName: (NSString *) name;
|
||||
|
||||
- (NSException *)writeContent:(NSString *)_content toName:(NSString *)_name
|
||||
baseVersion:(unsigned int)_baseVersion;
|
||||
- (NSException *)writeContent:(NSString *)_content toName:(NSString *)_name;
|
||||
- (NSException *)deleteContentWithName:(NSString *)_name;
|
||||
- (NSException *) writeContent: (NSString *) _content
|
||||
toName: (NSString *) _name
|
||||
baseVersion: (unsigned int) _baseVersion;
|
||||
- (NSException *) writeContent: (NSString *) _content
|
||||
toName: (NSString *) _name;
|
||||
- (NSException *) deleteContentWithName: (NSString *) _name;
|
||||
|
||||
- (NSException *)deleteFolder;
|
||||
- (NSException *) deleteFolder;
|
||||
|
||||
- (NSDictionary *)fetchContentsOfAllFiles;
|
||||
|
||||
- (NSArray *)fetchFields:(NSArray *)_flds
|
||||
fetchSpecification:(EOFetchSpecification *)_fs;
|
||||
- (NSArray *)fetchFields:(NSArray *)_flds matchingQualifier:(EOQualifier *)_q;
|
||||
- (NSArray *)fetchAclMatchingQualifier:(EOQualifier *)_q;
|
||||
- (void)deleteAclMatchingQualifier:(EOQualifier *)_q;
|
||||
- (void)deleteAclWithSpecification:(EOFetchSpecification *)_fs;
|
||||
- (NSArray *) fetchFields: (NSArray *) _flds
|
||||
fetchSpecification: (EOFetchSpecification *) _fs;
|
||||
- (NSArray *) fetchFields: (NSArray *) _flds
|
||||
matchingQualifier: (EOQualifier *) _q;
|
||||
- (NSArray *) fetchAclMatchingQualifier: (EOQualifier *) _q;
|
||||
- (void) deleteAclMatchingQualifier: (EOQualifier *) _q;
|
||||
- (void) deleteAclWithSpecification: (EOFetchSpecification *) _fs;
|
||||
|
||||
@end
|
||||
|
||||
|
||||
+458
-370
File diff suppressed because it is too large
Load Diff
@@ -77,6 +77,7 @@
|
||||
|
||||
+ (NGResourceLocator *)resourceLocator;
|
||||
|
||||
- (NSArray *) fields;
|
||||
@end
|
||||
|
||||
#endif /* __GDLContentStore_GCSFolderType_H__ */
|
||||
|
||||
@@ -33,15 +33,15 @@
|
||||
if ((self = [super init])) {
|
||||
NSDictionary *plist = _plist;
|
||||
|
||||
self->blobTablePattern = [[plist objectForKey:@"blobTablePattern"] copy];
|
||||
self->quickTablePattern = [[plist objectForKey:@"quickTablePattern"]copy];
|
||||
blobTablePattern = [[plist objectForKey:@"blobTablePattern"] copy];
|
||||
quickTablePattern = [[plist objectForKey:@"quickTablePattern"]copy];
|
||||
|
||||
self->extractorClassName =
|
||||
extractorClassName =
|
||||
[[plist objectForKey:@"extractorClassName"] copy];
|
||||
// TODO: qualifier;
|
||||
|
||||
self->fields = [[GCSFieldInfo fieldsForPropertyList:
|
||||
[plist objectForKey:@"fields"]] retain];
|
||||
fields = [[GCSFieldInfo fieldsForPropertyList:
|
||||
[plist objectForKey:@"fields"]] retain];
|
||||
}
|
||||
return self;
|
||||
}
|
||||
@@ -91,24 +91,24 @@
|
||||
}
|
||||
|
||||
- (void)dealloc {
|
||||
[self->extractor release];
|
||||
[self->extractorClassName release];
|
||||
[self->blobTablePattern release];
|
||||
[self->quickTablePattern release];
|
||||
[self->fields release];
|
||||
[self->fieldDict release];
|
||||
[self->folderQualifier release];
|
||||
[extractor release];
|
||||
[extractorClassName release];
|
||||
[blobTablePattern release];
|
||||
[quickTablePattern release];
|
||||
[fields release];
|
||||
[fieldDict release];
|
||||
[folderQualifier release];
|
||||
[super dealloc];
|
||||
}
|
||||
|
||||
/* operations */
|
||||
|
||||
- (NSString *)blobTableNameForFolder:(GCSFolder *)_folder {
|
||||
return [self->blobTablePattern
|
||||
return [blobTablePattern
|
||||
stringByReplacingVariablesWithBindings:_folder];
|
||||
}
|
||||
- (NSString *)quickTableNameForFolder:(GCSFolder *)_folder {
|
||||
return [self->quickTablePattern
|
||||
return [quickTablePattern
|
||||
stringByReplacingVariablesWithBindings:_folder];
|
||||
}
|
||||
|
||||
@@ -116,12 +116,12 @@
|
||||
NSArray *keys;
|
||||
NSDictionary *bindings;
|
||||
|
||||
keys = [[self->folderQualifier allQualifierKeys] allObjects];
|
||||
keys = [[folderQualifier allQualifierKeys] allObjects];
|
||||
if ([keys count] == 0)
|
||||
return self->folderQualifier;
|
||||
return folderQualifier;
|
||||
|
||||
bindings = [_folder valuesForKeys:keys];
|
||||
return [self->folderQualifier qualifierWithBindings:bindings
|
||||
return [folderQualifier qualifierWithBindings:bindings
|
||||
requiresAllVariables:NO];
|
||||
}
|
||||
|
||||
@@ -136,12 +136,12 @@
|
||||
[sql appendString:_tabName];
|
||||
[sql appendString:@" (\n"];
|
||||
|
||||
count = [self->fields count];
|
||||
count = [fields count];
|
||||
for (i = 0; i < count; i++) {
|
||||
if (i > 0) [sql appendString:@",\n"];
|
||||
|
||||
[sql appendString:@" "];
|
||||
[sql appendString:[[self->fields objectAtIndex:i] sqlCreateSection]];
|
||||
[sql appendString:[[fields objectAtIndex:i] sqlCreateSection]];
|
||||
}
|
||||
|
||||
[sql appendString:@"\n)"];
|
||||
@@ -154,25 +154,30 @@
|
||||
- (GCSFieldExtractor *)quickExtractor {
|
||||
Class clazz;
|
||||
|
||||
if (self->extractor != nil) {
|
||||
return [self->extractor isNotNull]
|
||||
? self->extractor : (GCSFieldExtractor *)nil;
|
||||
if (extractor != nil) {
|
||||
return [extractor isNotNull]
|
||||
? extractor : (GCSFieldExtractor *)nil;
|
||||
}
|
||||
|
||||
clazz = self->extractorClassName
|
||||
? NSClassFromString(self->extractorClassName)
|
||||
clazz = extractorClassName
|
||||
? NSClassFromString(extractorClassName)
|
||||
: [GCSFieldExtractor class];
|
||||
if (clazz == Nil) {
|
||||
[self logWithFormat:@"ERROR: did not find field extractor class!"];
|
||||
return nil;
|
||||
}
|
||||
|
||||
if ((self->extractor = [[clazz alloc] init]) == nil) {
|
||||
if ((extractor = [[clazz alloc] init]) == nil) {
|
||||
[self logWithFormat:@"ERROR: could not create field extractor of class %@",
|
||||
clazz];
|
||||
return nil;
|
||||
}
|
||||
return self->extractor;
|
||||
return extractor;
|
||||
}
|
||||
|
||||
- (NSArray *) fields
|
||||
{
|
||||
return fields;
|
||||
}
|
||||
|
||||
/* description */
|
||||
@@ -183,13 +188,13 @@
|
||||
ms = [NSMutableString stringWithCapacity:256];
|
||||
[ms appendFormat:@"<0x%p[%@]:", self, NSStringFromClass([self class])];
|
||||
|
||||
[ms appendFormat:@" blobtable='%@'", self->blobTablePattern];
|
||||
[ms appendFormat:@" quicktable='%@'", self->quickTablePattern];
|
||||
[ms appendFormat:@" fields=%@", self->fields];
|
||||
[ms appendFormat:@" extractor=%@", self->extractorClassName];
|
||||
[ms appendFormat:@" blobtable='%@'", blobTablePattern];
|
||||
[ms appendFormat:@" quicktable='%@'", quickTablePattern];
|
||||
[ms appendFormat:@" fields=%@", fields];
|
||||
[ms appendFormat:@" extractor=%@", extractorClassName];
|
||||
|
||||
if (self->folderQualifier)
|
||||
[ms appendFormat:@" qualifier=%@", self->folderQualifier];
|
||||
if (folderQualifier)
|
||||
[ms appendFormat:@" qualifier=%@", folderQualifier];
|
||||
|
||||
[ms appendString:@">"];
|
||||
return ms;
|
||||
|
||||
Reference in New Issue
Block a user