Hello community, here is the log from the commit of package akonadi-runtime for openSUSE:Factory checked in at 2012-04-20 15:10:58 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/akonadi-runtime (Old) and /work/SRC/openSUSE:Factory/.akonadi-runtime.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "akonadi-runtime", Maintainer is "[email protected]" Changes: -------- --- /work/SRC/openSUSE:Factory/akonadi-runtime/akonadi-runtime.changes 2012-03-13 09:31:59.000000000 +0100 +++ /work/SRC/openSUSE:Factory/.akonadi-runtime.new/akonadi-runtime.changes 2012-04-20 15:10:59.000000000 +0200 @@ -1,0 +2,6 @@ +Wed Apr 18 07:50:05 UTC 2012 - [email protected] + +- Update to 1.7.2 + * Fix and optimize searching via Nepomuk. + +------------------------------------------------------------------- Old: ---- akonadi-1.7.1.tar.bz2 New: ---- akonadi-1.7.2.tar.bz2 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ akonadi-runtime.spec ++++++ --- /var/tmp/diff_new_pack.3T0m30/_old 2012-04-20 15:11:01.000000000 +0200 +++ /var/tmp/diff_new_pack.3T0m30/_new 2012-04-20 15:11:01.000000000 +0200 @@ -17,7 +17,7 @@ Name: akonadi-runtime -Version: 1.7.1 +Version: 1.7.2 Release: 0 %define rversion %{version} Summary: PIM Storage Service ++++++ akonadi-1.7.1.tar.bz2 -> akonadi-1.7.2.tar.bz2 ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/akonadi-1.7.1/CMakeLists.txt new/akonadi-1.7.2/CMakeLists.txt --- old/akonadi-1.7.1/CMakeLists.txt 2012-03-03 16:48:19.000000000 +0100 +++ new/akonadi-1.7.2/CMakeLists.txt 2012-03-31 14:28:05.000000000 +0200 @@ -56,7 +56,7 @@ set(AKONADI_VERSION_MAJOR "1") set(AKONADI_VERSION_MINOR "7") -set(AKONADI_VERSION_PATCH "1") +set(AKONADI_VERSION_PATCH "2") set(AKONADI_VERSION "${AKONADI_VERSION_MAJOR}.${AKONADI_VERSION_MINOR}.${AKONADI_VERSION_PATCH}") set(AKONADI_VERSION_STRING "${AKONADI_VERSION}") diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/akonadi-1.7.1/Mainpage.dox new/akonadi-1.7.2/Mainpage.dox --- old/akonadi-1.7.1/Mainpage.dox 2012-03-03 16:48:19.000000000 +0100 +++ new/akonadi-1.7.2/Mainpage.dox 2012-03-31 14:28:05.000000000 +0200 @@ -315,6 +315,6 @@ // DOXYGEN_EXCLUDE = sqlplugin server/control server/akonadictl server/tests // DOXYGEN_PROJECTNAME=Akonadi -// DOXYGEN_PROJECTVERSION=1.7.1 +// DOXYGEN_PROJECTVERSION=1.7.2 // vim:ts=4:sw=4:expandtab:filetype=doxygen diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/akonadi-1.7.1/NEWS new/akonadi-1.7.2/NEWS --- old/akonadi-1.7.1/NEWS 2012-03-03 16:48:19.000000000 +0100 +++ new/akonadi-1.7.2/NEWS 2012-03-31 14:28:05.000000000 +0200 @@ -1,3 +1,7 @@ +1.7.2 31-March-2012 +--------------------------------------------- +- Fix and optimize searching via Nepomuk. + 1.7.1 03-March-2012 --------------------------------------------- - Don't truncate SPARQL queries in virtual collections. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/akonadi-1.7.1/server/src/nepomuksearch.cpp new/akonadi-1.7.2/server/src/nepomuksearch.cpp --- old/akonadi-1.7.1/server/src/nepomuksearch.cpp 2012-03-03 16:48:19.000000000 +0100 +++ new/akonadi-1.7.2/server/src/nepomuksearch.cpp 2012-03-31 14:28:05.000000000 +0200 @@ -44,10 +44,10 @@ { mSearchService = new Nepomuk::Query::QueryServiceClient( this ); connect( mSearchService, SIGNAL(newEntries(QList<Nepomuk::Query::Result>)), - this, SLOT(idHitsAdded(QList<Nepomuk::Query::Result>)) ); - mIdSearchService = new Nepomuk::Query::QueryServiceClient( this ); - connect( mSearchService, SIGNAL(newEntries(QList<Nepomuk::Query::Result>)), this, SLOT(hitsAdded(QList<Nepomuk::Query::Result>)) ); + mIdSearchService = new Nepomuk::Query::QueryServiceClient( this ); + connect( mIdSearchService, SIGNAL(newEntries(QList<Nepomuk::Query::Result>)), + this, SLOT(idHitsAdded(QList<Nepomuk::Query::Result>)) ); } NepomukSearch::~NepomukSearch() @@ -60,12 +60,19 @@ QStringList NepomukSearch::search( const QString &query ) { + //qDebug() << Q_FUNC_INFO << query; if ( !mSearchService ) { qWarning() << "Nepomuk search service not available!"; return QStringList(); } - if ( !mSearchService->blockingQuery( query ) ) { + // Insert a property request for the item Id. This should + // be part of the query already and extracted from that, + // but that doesn't seem to work at the moment, so be explicit. + QHash<QString, QString> encodedRps; + encodedRps.insert( QString::fromLatin1( "reqProp1" ), QUrl(QString::fromLatin1("http://akonadi-project.org/ontologies/aneo#akonadiItemId")).toString() ); + + if ( !mSearchService->blockingQuery( query, encodedRps ) ) { qWarning() << Q_FUNC_INFO << "Calling blockingQuery() failed!"; return QStringList(); } @@ -73,6 +80,16 @@ return mMatchingUIDs.toList(); } +void NepomukSearch::addHit(const Nepomuk::Query::Result& result) +{ + const qint64 itemId = resultToId( result ); + + if ( itemId == -1 ) + return; + + mMatchingUIDs.insert( QString::number( itemId ) ); +} + void NepomukSearch::hitsAdded( const QList<Nepomuk::Query::Result>& entries ) { if ( !mSearchService ) { @@ -80,26 +97,33 @@ return; } + QList<Nepomuk::Query::Result> resultsWithoutIdProperty; + Q_FOREACH( const Nepomuk::Query::Result &result, entries ) { + const Soprano::Node &property = result.requestProperty(QUrl( QLatin1String( "http://akonadi-project.org/ontologies/aneo#akonadiItemId" ) )); + if (!(property.isValid() && property.isLiteral() && property.literal().isString())) { + resultsWithoutIdProperty << result; + } else { + // for those results that already have a proper akonadi item id property, + // we can add matches right away + addHit(result); + } + } + + // go fetch the akonadi item id property for those results that don't have them + Q_FOREACH( const Nepomuk::Query::Result &result, resultsWithoutIdProperty ) { QHash<QString, QString> encodedRps; //We do another query to get the akonadiItemId attribute (since it may not have been added to the original query) encodedRps.insert( QString::fromLatin1( "reqProp1" ), QUrl(QString::fromLatin1("http://akonadi-project.org/ontologies/aneo#akonadiItemId")).toString() ); - mIdSearchService->blockingQuery(QString::fromLatin1("SELECT DISTINCT ?r ?reqProp1 WHERE { %1 a ?v2 . %1 <http://akonadi-project.org/ontologies/aneo#akonadiItemId> ?reqProp1 . } LIMIT 1").arg(result.resourceUri().toString()), encodedRps); + mIdSearchService->blockingQuery(QString::fromLatin1("SELECT DISTINCT ?r ?reqProp1 WHERE { <%1> a ?v2 . <%1> <http://akonadi-project.org/ontologies/aneo#akonadiItemId> ?reqProp1 . } LIMIT 1").arg(result.resourceUri().toString()), encodedRps); } } void NepomukSearch::idHitsAdded(const QList< Nepomuk::Query::Result >& entries) { - Q_FOREACH( const Nepomuk::Query::Result &result, entries ) { - const qint64 itemId = resultToId( result ); - - if ( itemId == -1 ) - continue; - - mMatchingUIDs.insert( QString::number( itemId ) ); + addHit(result); } - } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/akonadi-1.7.1/server/src/nepomuksearch.h new/akonadi-1.7.2/server/src/nepomuksearch.h --- old/akonadi-1.7.1/server/src/nepomuksearch.h 2012-03-03 16:48:19.000000000 +0100 +++ new/akonadi-1.7.2/server/src/nepomuksearch.h 2012-03-31 14:28:05.000000000 +0200 @@ -43,6 +43,7 @@ void idHitsAdded( const QList<Nepomuk::Query::Result>& entries ); private: + void addHit(const Nepomuk::Query::Result& result); QSet<QString> mMatchingUIDs; Nepomuk::Query::QueryServiceClient* mSearchService; Nepomuk::Query::QueryServiceClient* mIdSearchService; -- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
