diff --git a/src/libtomahawk/CMakeLists.txt b/src/libtomahawk/CMakeLists.txt index e12349013..98fe51401 100644 --- a/src/libtomahawk/CMakeLists.txt +++ b/src/libtomahawk/CMakeLists.txt @@ -240,7 +240,8 @@ list(APPEND libSources collection/TracksRequest.cpp database/Database.cpp - database/FuzzyIndex.cpp + database/fuzzyindex/FuzzyIndex.cpp + database/fuzzyindex/DatabaseFuzzyIndex.cpp database/DatabaseCollection.cpp database/LocalCollection.cpp database/DatabaseWorker.cpp diff --git a/src/libtomahawk/database/DatabaseCommand_UpdateSearchIndex.cpp b/src/libtomahawk/database/DatabaseCommand_UpdateSearchIndex.cpp index 2844a6127..276705c62 100644 --- a/src/libtomahawk/database/DatabaseCommand_UpdateSearchIndex.cpp +++ b/src/libtomahawk/database/DatabaseCommand_UpdateSearchIndex.cpp @@ -22,7 +22,7 @@ #include #include "DatabaseImpl.h" -#include "FuzzyIndex.h" +#include "fuzzyindex/DatabaseFuzzyIndex.h" #include "Source.h" #include "TomahawkSqlQuery.h" #include "jobview/IndexingJobItem.h" diff --git a/src/libtomahawk/database/DatabaseImpl.cpp b/src/libtomahawk/database/DatabaseImpl.cpp index 581eb62c8..40cc214e6 100644 --- a/src/libtomahawk/database/DatabaseImpl.cpp +++ b/src/libtomahawk/database/DatabaseImpl.cpp @@ -28,7 +28,7 @@ #include "Album.h" #include "Artist.h" -#include "FuzzyIndex.h" +#include "fuzzyindex/DatabaseFuzzyIndex.h" #include "PlaylistEntry.h" #include "Result.h" #include "SourceList.h" @@ -89,7 +89,7 @@ Tomahawk::DatabaseImpl::DatabaseImpl( const QString& dbname ) query.exec( "UPDATE source SET isonline = 'false'" ); query.exec( "DELETE FROM oplog WHERE source IS NULL AND singleton = 'true'" ); - m_fuzzyIndex = new FuzzyIndex( this, schemaUpdated ); + m_fuzzyIndex = new Tomahawk::DatabaseFuzzyIndex( this, schemaUpdated ); tDebug( LOGVERBOSE ) << "Loaded index:" << t.elapsed(); if ( qApp->arguments().contains( "--dumpdb" ) ) diff --git a/src/libtomahawk/database/DatabaseImpl.h b/src/libtomahawk/database/DatabaseImpl.h index 5aeb1e5d6..2c029998d 100644 --- a/src/libtomahawk/database/DatabaseImpl.h +++ b/src/libtomahawk/database/DatabaseImpl.h @@ -37,18 +37,18 @@ #include "TomahawkSqlQuery.h" #include "Typedefs.h" -class FuzzyIndex; namespace Tomahawk { class Database; +class DatabaseFuzzyIndex; class DLLEXPORT DatabaseImpl : public QObject { Q_OBJECT -friend class FuzzyIndex; +friend class DatabaseFuzzyIndex; friend class DatabaseCommand_UpdateSearchIndex; public: @@ -93,7 +93,7 @@ signals: private: DatabaseImpl( const QString& dbname, bool internal ); - void setFuzzyIndex( FuzzyIndex* fi ) { m_fuzzyIndex = fi; } + void setFuzzyIndex( DatabaseFuzzyIndex* fi ) { m_fuzzyIndex = fi; } void setDatabaseID( const QString& dbid ) { m_dbid = dbid; } void init(); @@ -109,7 +109,7 @@ private: int m_lastartid, m_lastalbid, m_lasttrkid; QString m_dbid; - FuzzyIndex* m_fuzzyIndex; + Tomahawk::DatabaseFuzzyIndex* m_fuzzyIndex; mutable QMutex m_mutex; }; diff --git a/src/libtomahawk/database/fuzzyindex/DatabaseFuzzyIndex.cpp b/src/libtomahawk/database/fuzzyindex/DatabaseFuzzyIndex.cpp new file mode 100644 index 000000000..ebc668b32 --- /dev/null +++ b/src/libtomahawk/database/fuzzyindex/DatabaseFuzzyIndex.cpp @@ -0,0 +1,22 @@ +#include "DatabaseFuzzyIndex.h" + +#include "database/DatabaseImpl.h" +#include "database/Database.h" + +namespace Tomahawk { + +DatabaseFuzzyIndex::DatabaseFuzzyIndex( QObject* parent, bool wipe ) + : FuzzyIndex( parent, "tomahawk.lucene", wipe ) +{ + +} + + +void +DatabaseFuzzyIndex::updateIndex() +{ + Tomahawk::DatabaseCommand* cmd = new Tomahawk::DatabaseCommand_UpdateSearchIndex(); + Tomahawk::Database::instance()->enqueue( Tomahawk::dbcmd_ptr( cmd ) ); +} + +} // namespace Tomahawk diff --git a/src/libtomahawk/database/fuzzyindex/DatabaseFuzzyIndex.h b/src/libtomahawk/database/fuzzyindex/DatabaseFuzzyIndex.h new file mode 100644 index 000000000..6d8c55335 --- /dev/null +++ b/src/libtomahawk/database/fuzzyindex/DatabaseFuzzyIndex.h @@ -0,0 +1,18 @@ +#ifndef TOMAHAWK_DATABASEFUZZYINDEX_H +#define TOMAHAWK_DATABASEFUZZYINDEX_H + +#include "FuzzyIndex.h" + +namespace Tomahawk { + +class DatabaseFuzzyIndex : public FuzzyIndex +{ +public: + explicit DatabaseFuzzyIndex( QObject* parent, bool wipe = false ); + + virtual void updateIndex(); +}; + +} // namespace Tomahawk + +#endif // TOMAHAWK_DATABASEFUZZYINDEX_H diff --git a/src/libtomahawk/database/FuzzyIndex.cpp b/src/libtomahawk/database/fuzzyindex/FuzzyIndex.cpp similarity index 92% rename from src/libtomahawk/database/FuzzyIndex.cpp rename to src/libtomahawk/database/fuzzyindex/FuzzyIndex.cpp index ea9ba754b..ad43e6ef0 100644 --- a/src/libtomahawk/database/FuzzyIndex.cpp +++ b/src/libtomahawk/database/fuzzyindex/FuzzyIndex.cpp @@ -18,12 +18,9 @@ #include "FuzzyIndex.h" -#include "collection/Collection.h" -#include "utils/TomahawkUtils.h" #include "utils/Logger.h" -#include "DatabaseImpl.h" -#include "Database.h" +#include "database/DatabaseImpl.h" #include "PlaylistEntry.h" #include "Source.h" #include "Track.h" @@ -44,12 +41,12 @@ using namespace lucene::queryParser; using namespace lucene::search; -FuzzyIndex::FuzzyIndex( QObject* parent, bool wipe ) +FuzzyIndex::FuzzyIndex( QObject* parent, const QString& filename, bool wipe ) : QObject( parent ) , m_luceneReader( 0 ) , m_luceneSearcher( 0 ) { - QString m_lucenePath = TomahawkUtils::appDataDir().absoluteFilePath( "tomahawk.lucene" ); + m_lucenePath = TomahawkUtils::appDataDir().absoluteFilePath( filename ); QByteArray path = m_lucenePath.toUtf8(); const char* cPath = path.constData(); @@ -95,17 +92,16 @@ FuzzyIndex::wipeIndex() beginIndexing(); endIndexing(); - QTimer::singleShot( 0, this, SLOT( updateIndex() ) ); + QTimer::singleShot( 0, this, SLOT( updateIndexSlot() ) ); return true; // FIXME } void -FuzzyIndex::updateIndex() +FuzzyIndex::updateIndexSlot() { - Tomahawk::DatabaseCommand* cmd = new Tomahawk::DatabaseCommand_UpdateSearchIndex(); - Tomahawk::Database::instance()->enqueue( Tomahawk::dbcmd_ptr( cmd ) ); + updateIndex(); } @@ -216,7 +212,7 @@ FuzzyIndex::search( const Tomahawk::query_ptr& query ) { if ( !m_luceneReader ) { - if ( !IndexReader::indexExists( TomahawkUtils::appDataDir().absoluteFilePath( "tomahawk.lucene" ).toStdString().c_str() ) ) + if ( !IndexReader::indexExists( m_lucenePath.toStdString().c_str() ) ) { tDebug( LOGVERBOSE ) << Q_FUNC_INFO << "index didn't exist."; return resultsmap; @@ -307,7 +303,7 @@ FuzzyIndex::searchAlbum( const Tomahawk::query_ptr& query ) { if ( !m_luceneReader ) { - if ( !IndexReader::indexExists( TomahawkUtils::appDataDir().absoluteFilePath( "tomahawk.lucene" ).toStdString().c_str() ) ) + if ( !IndexReader::indexExists( m_lucenePath.toStdString().c_str() ) ) { tDebug( LOGVERBOSE ) << Q_FUNC_INFO << "index didn't exist."; return resultsmap; diff --git a/src/libtomahawk/database/FuzzyIndex.h b/src/libtomahawk/database/fuzzyindex/FuzzyIndex.h similarity index 89% rename from src/libtomahawk/database/FuzzyIndex.h rename to src/libtomahawk/database/fuzzyindex/FuzzyIndex.h index f414dfec9..6db7e5b8d 100644 --- a/src/libtomahawk/database/FuzzyIndex.h +++ b/src/libtomahawk/database/fuzzyindex/FuzzyIndex.h @@ -26,7 +26,7 @@ #include #include "Query.h" -#include "DatabaseCommand_UpdateSearchIndex.h" +#include "database/DatabaseCommand_UpdateSearchIndex.h" namespace lucene { @@ -54,13 +54,15 @@ class FuzzyIndex : public QObject Q_OBJECT public: - explicit FuzzyIndex( QObject* parent, bool wipe = false ); - ~FuzzyIndex(); + explicit FuzzyIndex( QObject* parent, const QString& filename, bool wipe = false ); + virtual ~FuzzyIndex(); void beginIndexing(); void endIndexing(); void appendFields( const Tomahawk::IndexData& data ); + virtual void updateIndex() = 0; + signals: void indexReady(); @@ -71,7 +73,7 @@ public slots: QMap< int, float > searchAlbum( const Tomahawk::query_ptr& query ); private slots: - void updateIndex(); + void updateIndexSlot(); bool wipeIndex(); private: