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

List:       kde-commits
Subject:    KDE/kdebase/runtime/nepomuk/services/backupsync/lib
From:       Vishesh Handa <handa.vish () gmail ! com>
Date:       2011-01-28 7:10:36
Message-ID: 20110128071036.C5552AC8BB () svn ! kde ! org
[Download RAW message or body]

SVN commit 1217710 by vhanda:

Added a resolveDuplicate method in ResourceMerger.

It is called when there is a statement that is being pushed into the model that already exists


 M  +9 -5      resourcemerger.cpp  
 M  +10 -1     resourcemerger.h  


--- trunk/KDE/kdebase/runtime/nepomuk/services/backupsync/lib/resourcemerger.cpp #1217709:1217710
@@ -174,15 +174,15 @@
 
 void Nepomuk::Sync::ResourceMerger::Private::push(const Soprano::Statement& st, const KUrl& graphUri)
 {
+    Soprano::Statement statement( st );
+    if( statement.context().isEmpty() )
+        statement.setContext( graphUri );
+    
     if( m_model->containsAnyStatement( st.subject(), st.predicate(), st.object() ) ) {
-        // Already exists. Ignore
+        q->resolveDuplicate( statement );
         return;
     }
 
-    Soprano::Statement statement( st );
-    if( statement.context().isEmpty() )
-        statement.setContext( graphUri );
-    
     m_model->addStatement( statement );
 }
 
@@ -201,6 +201,10 @@
     }
 }
 
+void Nepomuk::Sync::ResourceMerger::resolveDuplicate(const Soprano::Statement& /*newSt*/)
+{
+}
+
 void Nepomuk::Sync::ResourceMerger::push(const Soprano::Statement& st)
 {
     if( !st.context().isEmpty() )
--- trunk/KDE/kdebase/runtime/nepomuk/services/backupsync/lib/resourcemerger.h #1217709:1217710
@@ -112,10 +112,19 @@
             virtual KUrl createGraph();
 
             /**
-             * Push the statement into the Nepomuk repository if it doesn't already exist!
+             * Push the statement into the Nepomuk repository.
+             * If the statement exists then resolveDuplicate is called
+             *
+             * \sa resolveDuplicate
              */
             void push( const Soprano::Statement & st );
 
+            /**
+             * If the statement being pushed already exists this method is called.
+             * By default it does nothing which means keeping the old statement
+             */ 
+            virtual void resolveDuplicate( const Soprano::Statement & newSt );
+            
         private:
             class Private;
             Private * d;
[prev in list] [next in list] [prev in thread] [next in thread] 

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