Monotone-Parent: cd64ae407367870de80ed89786ddef547b959640

Monotone-Revision: 3a78dd3034bf29fe4fe7a1a3d7eacbd47941bbba

Monotone-Author: wsourdeau@inverse.ca
Monotone-Date: 2008-08-09T08:15:32
Monotone-Branch: ca.inverse.sogo
maint-2.0.2
Wolfgang Sourdeau 2008-08-09 08:15:32 +00:00
parent 080a5014ef
commit 6af8f35d45
2 changed files with 53 additions and 20 deletions

View File

@ -1,3 +1,9 @@
2008-08-09 Wolfgang Sourdeau <wsourdeau@inverse.ca>
* GCSFolder.m ([GCSFolder
-writeContent:_contenttoName:_namebaseVersion:_baseVersion]): the
store table has now a "c_version" field in its description entity.
2008-06-30 Wolfgang Sourdeau <wsourdeau@inverse.ca> 2008-06-30 Wolfgang Sourdeau <wsourdeau@inverse.ca>
* GCSFolderManager.m ([GCSFolderManager * GCSFolderManager.m ([GCSFolderManager

View File

@ -723,7 +723,6 @@ static NSArray *contentFieldNames = nil;
return sql; return sql;
} }
- (EOEntity *) _entityWithName: (NSString *) _name - (EOEntity *) _entityWithName: (NSString *) _name
{ {
EOAttribute *attribute; EOAttribute *attribute;
@ -741,6 +740,26 @@ static NSArray *contentFieldNames = nil;
return entity; return entity;
} }
- (EOEntity *) _storeTableEntity
{
EOAttribute *attribute;
EOEntity *entity;
entity = [self _entityWithName: [self storeTableName]];
attribute = AUTORELEASE([[EOAttribute alloc] init]);
[attribute setName: @"c_version"];
[attribute setColumnName: @"c_version"];
[entity addAttribute: attribute];
return entity;
}
- (EOEntity *) _quickTableEntity
{
return [self _entityWithName: [self quickTableName]];
}
- (EOSQLQualifier *) _qualifierUsingWhereColumn:(NSString *)_colname - (EOSQLQualifier *) _qualifierUsingWhereColumn:(NSString *)_colname
isEqualTo:(id)_value isEqualTo:(id)_value
andColumn:(NSString *)_colname2 andColumn:(NSString *)_colname2
@ -792,6 +811,7 @@ static NSArray *contentFieldNames = nil;
BOOL isNewRecord, hasInsertDelegate, hasUpdateDelegate; BOOL isNewRecord, hasInsertDelegate, hasUpdateDelegate;
NSCalendarDate *nowDate; NSCalendarDate *nowDate;
NSNumber *now; NSNumber *now;
EOEntity *quickTableEntity, *storeTableEntity;
NSArray *rows; NSArray *rows;
/* check preconditions */ /* check preconditions */
@ -906,31 +926,37 @@ static NSArray *contentFieldNames = nil;
hasUpdateDelegate = [[storeChannel delegate] hasUpdateDelegate = [[storeChannel delegate]
respondsToSelector: @selector(adaptorChannel:willUpdateRow:describedByQualifier:)]; respondsToSelector: @selector(adaptorChannel:willUpdateRow:describedByQualifier:)];
[[storeChannel adaptorContext] beginTransaction];
[[quickChannel adaptorContext] beginTransaction]; [[quickChannel adaptorContext] beginTransaction];
[[storeChannel adaptorContext] beginTransaction];
quickTableEntity = [self _quickTableEntity];
storeTableEntity = [self _storeTableEntity];
if (isNewRecord) { if (isNewRecord) {
if (!ofFlags.sameTableForQuick) { if (!ofFlags.sameTableForQuick) {
error = (hasInsertDelegate ? [quickChannel insertRowX: quickRow error = (hasInsertDelegate
forEntity: [self _entityWithName: [self quickTableName]]] ? [quickChannel insertRowX: quickRow forEntity: quickTableEntity]
: [quickChannel evaluateExpressionX: [self _generateInsertStatementForRow: quickRow : [quickChannel
tableName: [self quickTableName]]]); evaluateExpressionX: [self _generateInsertStatementForRow: quickRow
tableName: [self quickTableName]]]);
CHECKERROR(); CHECKERROR();
} }
error = (hasInsertDelegate ? [storeChannel insertRowX: contentRow error = (hasInsertDelegate
forEntity: [self _entityWithName: [self storeTableName]]] ? [storeChannel insertRowX: contentRow forEntity: storeTableEntity]
: [storeChannel evaluateExpressionX: [self _generateInsertStatementForRow: contentRow : [storeChannel
tableName: [self storeTableName]]]); evaluateExpressionX: [self _generateInsertStatementForRow: contentRow
tableName: [self storeTableName]]]);
CHECKERROR(); CHECKERROR();
} }
else { else {
if (!ofFlags.sameTableForQuick) { if (!ofFlags.sameTableForQuick) {
error = (hasUpdateDelegate ? [quickChannel updateRowX: quickRow error = (hasUpdateDelegate
describedByQualifier: [self _qualifierUsingWhereColumn: @"c_name" ? [quickChannel updateRowX: quickRow
isEqualTo: _name andColumn: nil isEqualTo: nil describedByQualifier: [self _qualifierUsingWhereColumn: @"c_name"
entity: [self _entityWithName: [self quickTableName]]]] isEqualTo: _name andColumn: nil isEqualTo: nil
entity: quickTableEntity]]
: [quickChannel evaluateExpressionX: [self _generateUpdateStatementForRow: quickRow : [quickChannel evaluateExpressionX: [self _generateUpdateStatementForRow: quickRow
tableName: [self quickTableName] tableName: [self quickTableName]
whereColumn: @"c_name" isEqualTo: _name whereColumn: @"c_name" isEqualTo: _name
@ -938,11 +964,12 @@ static NSArray *contentFieldNames = nil;
CHECKERROR(); CHECKERROR();
} }
error = (hasUpdateDelegate ? [storeChannel updateRowX: contentRow error = (hasUpdateDelegate
describedByQualifier: [self _qualifierUsingWhereColumn: @"c_name" isEqualTo: _name ? [storeChannel updateRowX: contentRow
andColumn: (_baseVersion != 0 ? (id)@"c_version" : (id)nil) describedByQualifier: [self _qualifierUsingWhereColumn: @"c_name" isEqualTo: _name
isEqualTo: (_baseVersion != 0 ? [NSNumber numberWithUnsignedInt:_baseVersion] : (NSNumber *)nil) andColumn: (_baseVersion != 0 ? (id)@"c_version" : (id)nil)
entity: [self _entityWithName: [self storeTableName]]]] isEqualTo: (_baseVersion != 0 ? [NSNumber numberWithUnsignedInt:_baseVersion] : (NSNumber *)nil)
entity: storeTableEntity]]
: [storeChannel evaluateExpressionX: [self _generateUpdateStatementForRow: contentRow tableName:[self storeTableName] : [storeChannel evaluateExpressionX: [self _generateUpdateStatementForRow: contentRow tableName:[self storeTableName]
whereColumn: @"c_name" isEqualTo: _name whereColumn: @"c_name" isEqualTo: _name
andColumn: (_baseVersion != 0 ? (id)@"c_version" : (id)nil) andColumn: (_baseVersion != 0 ? (id)@"c_version" : (id)nil)