[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: kdesupport/akonadi/server/src/storage
From: Volker Krause <vkrause () kde ! org>
Date: 2009-02-15 16:00:30
Message-ID: 1234713630.154235.4497.nullmailer () svn ! kde ! org
[Download RAW message or body]
SVN commit 926523 by vkrause:
Update resource identifiers on inter-resource moves.
M +22 -0 datastore.cpp
--- trunk/kdesupport/akonadi/server/src/storage/datastore.cpp #926522:926523
@@ -272,6 +272,21 @@
return collection.remove();
}
+static bool recursiveSetResourceId( const Collection & collection, qint64 resourceId \
) +{
+ QueryBuilder qb( QueryBuilder::Update );
+ qb.addTable( Collection::tableName() );
+ qb.addValueCondition( Collection::parentIdColumn(), Query::Equals, collection.id() \
); + qb.updateColumnValue( Collection::resourceIdColumn(), resourceId );
+ if ( !qb.exec() )
+ return false;
+ foreach ( const Collection &col, collection.children() ) {
+ if ( !recursiveSetResourceId( col, resourceId ) )
+ return false;
+ }
+ return true;
+}
+
bool Akonadi::DataStore::renameCollection( Collection & collection, qint64 \
newParent, const QByteArray & newName) {
if ( collection.name() == newName && collection.parentId() == newParent )
@@ -280,8 +295,10 @@
if ( !m_dbOpened )
return false;
+ int resourceId = collection.resourceId();
if ( newParent > 0 && collection.parentId() != newParent ) {
Collection parent = Collection::retrieveById( newParent );
+ resourceId = parent.resourceId();
if ( !parent.isValid() )
return false;
@@ -302,6 +319,11 @@
collection.setName( newName );
collection.setParentId( newParent );
+ if ( collection.resourceId() != resourceId ) {
+ collection.setResourceId( resourceId );
+ if ( !recursiveSetResourceId( collection, resourceId ) )
+ return false;
+ }
if ( !collection.update() )
return false;
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic