Monotone-Parent: dbc58efbc938f11a813baa01021a534ed90f70b8
Monotone-Revision: ded960271197442de0917fc8f66509f7377b6a75 Monotone-Author: wsourdeau@inverse.ca Monotone-Date: 2012-08-13T17:48:43 Monotone-Branch: ca.inverse.sogomaint-2.0.2
parent
57afca1c74
commit
5c1610c070
|
@ -1,5 +1,8 @@
|
||||||
2012-08-13 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
2012-08-13 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
||||||
|
|
||||||
|
* OpenChange/SOGoMAPIDBFolder.m (-changePathTo:): overriden method
|
||||||
|
in order to update children records too.
|
||||||
|
|
||||||
* OpenChange/SOGoMAPIDBObject.m (-performBatchSQLQueries:) new
|
* OpenChange/SOGoMAPIDBObject.m (-performBatchSQLQueries:) new
|
||||||
method to perform void queries under a transaction.
|
method to perform void queries under a transaction.
|
||||||
(-changePathTo:) new method that updates the references for the
|
(-changePathTo:) new method that updates the references for the
|
||||||
|
|
|
@ -52,6 +52,8 @@
|
||||||
matchingQualifier: (EOQualifier *) qualifier
|
matchingQualifier: (EOQualifier *) qualifier
|
||||||
andSortOrderings: (NSArray *) sortOrderings;
|
andSortOrderings: (NSArray *) sortOrderings;
|
||||||
|
|
||||||
|
- (void) changePathTo: (NSString *) newPath;
|
||||||
|
|
||||||
@end
|
@end
|
||||||
|
|
||||||
#endif /* SOGOMAPIDBFOLDER_H */
|
#endif /* SOGOMAPIDBFOLDER_H */
|
||||||
|
|
|
@ -30,11 +30,13 @@
|
||||||
#import <Foundation/NSURL.h>
|
#import <Foundation/NSURL.h>
|
||||||
|
|
||||||
#import <NGExtensions/NSObject+Logs.h>
|
#import <NGExtensions/NSObject+Logs.h>
|
||||||
|
#import <NGExtensions/NSNull+misc.h>
|
||||||
#import <GDLAccess/EOAdaptorChannel.h>
|
#import <GDLAccess/EOAdaptorChannel.h>
|
||||||
#import <GDLContentStore/GCSChannelManager.h>
|
#import <GDLContentStore/GCSChannelManager.h>
|
||||||
// #import <GDLContentStore/EOQualifier+GCS.m>
|
// #import <GDLContentStore/EOQualifier+GCS.m>
|
||||||
|
|
||||||
#import <SOGo/NSArray+Utilities.h>
|
#import <SOGo/NSArray+Utilities.h>
|
||||||
|
#import <SOGo/NSString+Utilities.h>
|
||||||
#import <SOGo/SOGoDomainDefaults.h>
|
#import <SOGo/SOGoDomainDefaults.h>
|
||||||
#import <SOGo/SOGoUser.h>
|
#import <SOGo/SOGoUser.h>
|
||||||
#import "EOQualifier+MAPI.h"
|
#import "EOQualifier+MAPI.h"
|
||||||
|
@ -213,6 +215,57 @@ Class SOGoMAPIDBObjectK = Nil;
|
||||||
andSortOrderings: nil];
|
andSortOrderings: nil];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
- (void) changePathTo: (NSString *) newPath
|
||||||
|
{
|
||||||
|
NSMutableString *sql// , *qualifierClause
|
||||||
|
;
|
||||||
|
NSString *oldPath, *oldPathAsPrefix, *path, *parentPath;
|
||||||
|
NSMutableArray *queries;
|
||||||
|
NSArray *records;
|
||||||
|
NSDictionary *record;
|
||||||
|
NSUInteger count, max;
|
||||||
|
|
||||||
|
/* change the paths in children records */
|
||||||
|
oldPath = [self path];
|
||||||
|
oldPathAsPrefix = [NSString stringWithFormat: @"%@/", oldPath];
|
||||||
|
|
||||||
|
sql = [NSMutableString stringWithFormat:
|
||||||
|
@"SELECT c_path, c_parent_path FROM %@"
|
||||||
|
@" WHERE c_path LIKE '%@%%'",
|
||||||
|
[self tableName], oldPathAsPrefix];
|
||||||
|
records = [self performSQLQuery: sql];
|
||||||
|
max = [records count];
|
||||||
|
queries = [NSMutableArray arrayWithCapacity: max + 1];
|
||||||
|
if (max > 0)
|
||||||
|
{
|
||||||
|
for (count = 0; count < max; count++)
|
||||||
|
{
|
||||||
|
record = [records objectAtIndex: count];
|
||||||
|
path = [record objectForKey: @"c_path"];
|
||||||
|
if ([path isEqualToString: oldPath]
|
||||||
|
|| [path hasPrefix: oldPathAsPrefix])
|
||||||
|
{
|
||||||
|
sql = [NSMutableString stringWithFormat: @"UPDATE %@"
|
||||||
|
@" SET c_path = '%@'",
|
||||||
|
[self tableName],
|
||||||
|
[path stringByReplacingPrefix: oldPath
|
||||||
|
withPrefix: newPath]];
|
||||||
|
parentPath = [record objectForKey: @"c_parent_path"];
|
||||||
|
if ([parentPath isNotNull])
|
||||||
|
[sql appendFormat: @", c_parent_path = '%@'",
|
||||||
|
[parentPath stringByReplacingPrefix: oldPath
|
||||||
|
withPrefix: newPath]];
|
||||||
|
[sql appendFormat: @" WHERE c_path = '%@'", oldPath];
|
||||||
|
[queries addObject: sql];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
[self performBatchSQLQueries: queries];
|
||||||
|
}
|
||||||
|
|
||||||
|
/* change the path in this folder record */
|
||||||
|
[super changePathTo: newPath];
|
||||||
|
}
|
||||||
|
|
||||||
// - (NSArray *) toOneRelationshipKeysMatchingQualifier: (EOQualifier *) qualifier
|
// - (NSArray *) toOneRelationshipKeysMatchingQualifier: (EOQualifier *) qualifier
|
||||||
// andSortOrderings: (NSArray *) sortOrderings
|
// andSortOrderings: (NSArray *) sortOrderings
|
||||||
// {
|
// {
|
||||||
|
|
Loading…
Reference in New Issue