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:
Wolfgang Sourdeau
2008-06-13 20:07:32 +00:00
parent 70757493a2
commit b134f4544d
5 changed files with 565 additions and 448 deletions
+9
View File
@@ -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
+60 -46
View File
@@ -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
File diff suppressed because it is too large Load Diff
+1
View File
@@ -77,6 +77,7 @@
+ (NGResourceLocator *)resourceLocator;
- (NSArray *) fields;
@end
#endif /* __GDLContentStore_GCSFolderType_H__ */
+37 -32
View File
@@ -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;