[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    extragear/multimedia/amarok/src
From:       Jeff Mitchell <kde-dev () emailgoeshere ! com>
Date:       2006-11-08 6:26:01
Message-ID: 1162967161.653631.20354.nullmailer () svn ! kde ! org
[Download RAW message or body]

SVN commit 603179 by mitchell:

This patch should add AFT handling to labels, and refactor code to make it easier to \
update various tables at a future time.  AFT seems to have been broken  right now \
anyways, along with incremental scanning in general, and I still can't get configure \
to run, so this isn't well tested, but shouldn't destroy  things.


 M  +81 -68    collectiondb.cpp  
 M  +3 -2      collectiondb.h  


--- trunk/extragear/multimedia/amarok/src/collectiondb.cpp #603178:603179
@@ -3012,19 +3012,6 @@
                 .arg( currdeviceid
                 , currurl ) );
 
-    QStringList statUIDVal = query( QString(
-            "SELECT url, uniqueid, deviceid "
-            "FROM statistics "
-            "WHERE uniqueid = '%1';" )
-                .arg( currid ) );
-
-    QStringList statURLVal = query( QString(
-            "SELECT url, uniqueid "
-            "FROM statistics "
-            "WHERE deviceid = %1 AND url = '%2';" )
-                .arg( currdeviceid
-                , currurl ) );
-
     bool tempTablesAndInPermanent = false;
     bool permanentFullMatch = false;
 
@@ -3053,26 +3040,7 @@
                  << currid
                  << currdir );
         insert( insertline, NULL );
-        if( !statUIDVal.empty() )
-        {
-            //debug() << "first stats case" << endl;
-            query( QString( "UPDATE statistics SET deviceid = %1, url = '%4', \
                deleted = %2 WHERE uniqueid = '%3';" )
-                                .arg( currdeviceid
-                                , boolF()
-                                , currid
-                                , currurl ) );
-        }
-        else if( !statURLVal.empty() )
-        {
-            //debug() << "second stats case" << endl;
-            query( QString( "UPDATE statistics SET uniqueid = '%1', deleted = %2 "
-                            "WHERE deviceid = %3 AND url = '%4';" )
-                                .arg( currid
-                                , boolF()
-                                , currdeviceid
-                                , currurl ) );
-        }
-        //debug() << "First insert" << endl;
+        aftCheckPermanentTables( currdeviceid, currid, currurl );
         return;
     }
 
@@ -3134,25 +3102,7 @@
             insertline += QString( ", '%1', '%2');" ).arg( currid ).arg( currdir );
             //debug() << "running command: " << insertline << endl;
             insert( insertline, NULL );
-            if( !statUIDVal.empty() )
-            {
-                //debug() << "third stats case" << endl;
-                query( QString( "UPDATE statistics SET deviceid = %1, url = '%2', \
                deleted = %3 WHERE uniqueid = '%4';" )
-                                     .arg( currdeviceid
-                                     , currurl
-                                     , boolF()
-                                     , currid ) );
-            }
-            else if( !statURLVal.empty() )
-            {
-                //debug() << "fourth stats case" << endl;
-                query( QString( "UPDATE statistics SET uniqueid = '%1', deleted = %2 \
                "
-                                "WHERE deviceid = %3 AND url = '%4';" )
-                                    .arg( currid
-                                    , boolF()
-                                    , currdeviceid
-                                    , currurl ) );
-            }
+            aftCheckPermanentTables( currdeviceid, currid, currurl );
             return;
         }
 
@@ -4985,29 +4935,92 @@
 }
 
 void
-CollectionDB::aftMigrateStatisticsUrl( const QString& /*oldUrl*/, const QString& \
newUrl, const QString& uniqueid ) +CollectionDB::aftCheckPermanentTables( const \
QString &currdeviceid, const QString &currid, const QString &currurl )  {
+    QStringList tables;
+    tables << "statistics";
+    tables << "tags_labels";
+
+    QStringList check1, check2;
+
+    foreach( tables )
+    {
+        check1 = query( QString(
+                "SELECT url, uniqueid, deviceid "
+                "FROM %1 "
+                "WHERE uniqueid = '%2';" )
+                    .arg( escapeString( *it ) )
+                    .arg( currid ) );
+
+        check2 = query( QString(
+                "SELECT url, uniqueid "
+                "FROM %1 "
+                "WHERE deviceid = %2 AND url = '%3';" )
+                    .arg( escapeString( *it ) )
+                    .arg( currdeviceid
+                    , currurl ) );
+
+        if( !check1.empty() )
+        {
+            query( QString( "UPDATE %1 SET deviceid = %2, url = '%4' WHERE uniqueid \
= '%3';" ) +                                .arg( escapeString( *it ) )
+                                .arg( currdeviceid
+                                , currid
+                                , currurl ) );
+        }
+        else if( !check2.empty() )
+        {
+            query( QString( "UPDATE %1 SET uniqueid = '%2' WHERE deviceid = %3 AND \
url = '%4';" ) +                                .arg( escapeString( *it ) )
+                                .arg( currid
+                                , currdeviceid
+                                , currurl ) );
+        }
+    }
+}
+
+void
+CollectionDB::aftMigratePermanentTablesUrl( const QString& /*oldUrl*/, const \
QString& newUrl, const QString& uniqueid ) +{
+    QStringList tables;
+    tables << "statistics";
+    tables << "tags_labels";
     int deviceid = MountPointManager::instance()->getIdForUrl( newUrl );
     QString rpath = MountPointManager::instance()->getRelativePath( deviceid, newUrl \
                );
-    query( QString( "DELETE FROM statistics WHERE deviceid = %1 AND url = '%2';" )
-                            .arg( deviceid )
-                            .arg( escapeString( rpath ) ) );
-    query( QString( "UPDATE statistics SET deviceid = %1, url = '%4', deleted = %2 \
                WHERE uniqueid = '%3';" )
-                            .arg( deviceid )
-                            .arg( boolF() )
-                            .arg( escapeString( uniqueid ) )
-                            .arg( escapeString( rpath ) ) );
+    //NOTE: if ever do anything with "deleted" in the statistics table, set deleted \
to false in query +    //below; will need special case.
+    foreach( tables )
+    {
+        query( QString( "DELETE FROM %1 WHERE deviceid = %2 AND url = '%3';" )
+                                .arg( escapeString( *it ) )
+                                .arg( deviceid )
+                                .arg( escapeString( rpath ) ) );
+        query( QString( "UPDATE %1 SET deviceid = %2, url = '%4' WHERE uniqueid = \
'%3';" ) +                                .arg( escapeString( *it ) )
+                                .arg( deviceid )
+                                .arg( escapeString( uniqueid ) )
+                                .arg( escapeString( rpath ) ) );
+    }
 }
 
 void
-CollectionDB::aftMigrateStatisticsUniqueId( const QString& /*url*/, const QString& \
oldid, const QString& newid ) +CollectionDB::aftMigratePermanentTablesUniqueId( const \
QString& /*url*/, const QString& oldid, const QString& newid )  {
-    query( QString( "DELETE FROM statistics WHERE uniqueid = '%1';" )
-                            .arg( escapeString( newid ) ) );
-    query( QString( "UPDATE statistics SET uniqueid = '%1', deleted = %2 WHERE \
                uniqueid = '%3';" )
-                            .arg( escapeString( newid ) )
-                            .arg( boolF() )
-                            .arg( escapeString( oldid ) ) );
+    QStringList tables;
+    tables << "statistics";
+    tables << "tags_labels";
+    //NOTE: if ever do anything with "deleted" in the statistics table, set deleted \
to false in query +    //below; will need special case.
+    foreach( tables )
+    {
+        query( QString( "DELETE FROM %1 WHERE uniqueid = '%2';" )
+                                .arg( escapeString( *it ) )
+                                .arg( escapeString( newid ) ) );
+        query( QString( "UPDATE %1 SET uniqueid = '%1' WHERE uniqueid = '%2';" )
+                                .arg( escapeString( *it ) )
+                                .arg( escapeString( newid ) )
+                                .arg( escapeString( oldid ) ) );
+    }
 }
 
 
--- trunk/extragear/multimedia/amarok/src/collectiondb.h #603178:603179
@@ -320,6 +320,7 @@
 
         //song methods
         bool addSong( MetaBundle* bundle, const bool incremental = false );
+        void aftCheckPermanentTables( const QString &currdeviceid, const QString \
                &currid, const QString &currurl );
         void doAFTStuff( MetaBundle *bundle, const bool tempTables = true );
         void emitFileAdded( const QString &absPath,
                             const QString &uniqueid = QString::null );
@@ -511,8 +512,8 @@
         void similarArtistsFetched( const QString& artist, const QStringList& \
                suggestions );
         void fileOperationResult( KIO::Job *job ); // moveFile depends on it
         void podcastImageResult( KIO::Job *job ); //for fetching remote podcast \
                images
-        void aftMigrateStatisticsUrl( const QString& oldUrl, const QString& newUrl, \
                const QString& uniqueid ); //AFT-enable stats
-        void aftMigrateStatisticsUniqueId( const QString& url, const QString& oldid, \
const QString& newid ); +        void aftMigratePermanentTablesUrl( const QString& \
oldUrl, const QString& newUrl, const QString& uniqueid ); //AFT-enable stats +        \
void aftMigratePermanentTablesUniqueId( const QString& url, const QString& oldid, \
const QString& newid );  
     private:
         //bump DATABASE_VERSION whenever changes to the table structure are made.


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic