[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