[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