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]

Reply via email to