From fea5eb9d53d409de9245ab06afff1b951d3c31ea Mon Sep 17 00:00:00 2001 From: Wolfgang Sourdeau Date: Tue, 27 Nov 2007 21:07:30 +0000 Subject: [PATCH] Monotone-Parent: 5088d59ebd9fac5711d577846019ab0351386716 Monotone-Revision: 3a0c58bfa60eceb8b04e37505a605d15b3d2b1af Monotone-Author: wsourdeau@inverse.ca Monotone-Date: 2007-11-27T21:07:30 Monotone-Branch: ca.inverse.sogo --- SOPE/GDLContentStore/ChangeLog | 6 ++++++ SOPE/GDLContentStore/GCSFolder.m | 34 ++++++++++++++++++-------------- 2 files changed, 25 insertions(+), 15 deletions(-) diff --git a/SOPE/GDLContentStore/ChangeLog b/SOPE/GDLContentStore/ChangeLog index a76a21ab2..058a7edb5 100644 --- a/SOPE/GDLContentStore/ChangeLog +++ b/SOPE/GDLContentStore/ChangeLog @@ -1,3 +1,9 @@ +2007-11-27 Wolfgang Sourdeau + + * GCSFolder.m ([GCSFolder -versionOfContentWithName:], [GCSFolder + -fetchContentWithName:]): ignore records marked as deleted. + ([GCSFolder -deletionOfContentWithName:]): don't. + 2007-11-04 Wolfgang Sourdeau * GCSFolder.m ([GCSFolder -writeContent:toName:baseVersion:]): the diff --git a/SOPE/GDLContentStore/GCSFolder.m b/SOPE/GDLContentStore/GCSFolder.m index ac0495fd0..e6ec63c7c 100644 --- a/SOPE/GDLContentStore/GCSFolder.m +++ b/SOPE/GDLContentStore/GCSFolder.m @@ -251,13 +251,16 @@ static GCSStringFormatter *stringFormatter = nil; recursive:YES]; } -- (id)_fetchValueOfColumn:(NSString *)_col inContentWithName:(NSString *)_name{ +- (id) _fetchValueOfColumn: (NSString *)_col + inContentWithName: (NSString *)_name + ignoreDeleted: (BOOL) ignoreDeleted +{ EOAdaptorChannel *channel; NSException *error; NSDictionary *row; NSArray *attrs; NSString *result; - NSString *sql; + NSMutableString *sql; if ((channel = [self acquireStoreChannel]) == nil) { [self errorWithFormat:@"could not open storage channel!"]; @@ -265,20 +268,18 @@ static GCSStringFormatter *stringFormatter = nil; } /* generate SQL */ - - sql = @"SELECT "; - sql = [sql stringByAppendingString:_col]; - sql = [sql stringByAppendingString:@" FROM "]; - sql = [sql stringByAppendingString:[self storeTableName]]; - sql = [sql stringByAppendingString:@" WHERE c_name = '"]; - sql = [sql stringByAppendingString:_name]; - sql = [sql stringByAppendingString:@"'"]; - + sql = [NSMutableString stringWithFormat: @"SELECT %@" + @" FROM %@" + @" WHERE c_name = '%@'", + _col, [self storeTableName], _name]; + if (ignoreDeleted) + [sql appendString: @" AND (c_deleted != 1 OR c_deleted IS NULL)"]; + /* run SQL */ if ((error = [channel evaluateExpressionX:sql]) != nil) { [self errorWithFormat:@"%s: cannot execute SQL '%@': %@", - __PRETTY_FUNCTION__, sql, error]; + __PRETTY_FUNCTION__, sql, error]; [self releaseChannel:channel]; return nil; } @@ -300,15 +301,18 @@ static GCSStringFormatter *stringFormatter = nil; } - (NSNumber *)versionOfContentWithName:(NSString *)_name { - return [self _fetchValueOfColumn:@"c_version" inContentWithName:_name]; + return [self _fetchValueOfColumn:@"c_version" inContentWithName:_name + ignoreDeleted: YES]; } - (NSNumber *)deletionOfContentWithName:(NSString *)_name { - return [self _fetchValueOfColumn:@"c_deleted" inContentWithName:_name]; + return [self _fetchValueOfColumn:@"c_deleted" inContentWithName:_name + ignoreDeleted: NO]; } - (NSString *)fetchContentWithName:(NSString *)_name { - return [self _fetchValueOfColumn:@"c_content" inContentWithName:_name]; + return [self _fetchValueOfColumn:@"c_content" inContentWithName:_name + ignoreDeleted: YES]; } - (NSDictionary *)fetchContentsOfAllFiles {