[rygel] tracker: Use correct Sparql query for insertion



commit ca175fa8fb9785d28511ad36e65ba450f569b2c5
Author: Zeeshan Ali (Khattak) <zeeshanak gnome org>
Date:   Wed Feb 17 12:04:31 2010 +0200

    tracker: Use correct Sparql query for insertion
    
    - Use SparqlUpdateBlank rather than SparqlUpdate.
    - Provide all necessary tripplets.
    - Actual ID (URN) is assigned by Tracker.

 .../tracker/rygel-tracker-insertion-query.vala     |   32 +++++++++++++++----
 src/plugins/tracker/rygel-tracker-interfaces.vala  |    3 +-
 2 files changed, 27 insertions(+), 8 deletions(-)
---
diff --git a/src/plugins/tracker/rygel-tracker-insertion-query.vala b/src/plugins/tracker/rygel-tracker-insertion-query.vala
index 5677b3a..4130ec2 100644
--- a/src/plugins/tracker/rygel-tracker-insertion-query.vala
+++ b/src/plugins/tracker/rygel-tracker-insertion-query.vala
@@ -26,25 +26,41 @@ using Gee;
  * Represents Tracker SPARQL Insertion query
  */
 public class Rygel.TrackerInsertionQuery : Rygel.TrackerQuery {
+    private const string TEMP_ID = "x";
+    private const string QUERY_ID = "_:" + TEMP_ID;
+
     public string id;
 
     public TrackerInsertionQuery (MediaItem item, string category) {
         var triplets = new TrackerQueryTriplets ();
-        triplets.add (new TrackerQueryTriplet (item.id,
+        triplets.add (new TrackerQueryTriplet (QUERY_ID,
                                                "a",
                                                category,
                                                false));
-        triplets.add (new TrackerQueryTriplet (item.id,
+        triplets.add (new TrackerQueryTriplet (QUERY_ID,
+                                               "a",
+                                               "nie:DataObject",
+                                               false));
+        triplets.add (new TrackerQueryTriplet (QUERY_ID,
+                                               "a",
+                                               "nfo:FileDataObject",
+                                               false));
+        triplets.add (new TrackerQueryTriplet (QUERY_ID,
                                                "nie:mimeType",
                                                "\"" + item.mime_type + "\"",
                                                false));
-        triplets.add (new TrackerQueryTriplet (item.id,
+        triplets.add (new TrackerQueryTriplet (QUERY_ID,
                                                "nie:url",
                                                "\"" + item.uris[0] + "\"",
                                                false));
-        base (triplets, null);
 
-        this.id = item.id;
+        var now = TimeVal ();
+        triplets.add (new TrackerQueryTriplet (QUERY_ID,
+                                               "nfo:fileLastModified",
+                                               "\"" + now.to_iso8601 () + "\"",
+                                               false));
+
+        base (triplets, null);
     }
 
     public override async void execute (TrackerResourcesIface resources)
@@ -53,10 +69,12 @@ public class Rygel.TrackerInsertionQuery : Rygel.TrackerQuery {
 
         debug ("Executing SPARQL query: %s", str);
 
-        yield resources.sparql_update (str);
+        var result = yield resources.sparql_update_blank (str);
+
+        this.id = result[0,0].lookup (TEMP_ID);
     }
 
     public override string to_string () {
-        return "INSERT INTO " +  this.id + " { " + base.to_string () + " }";
+        return "INSERT { " + base.to_string () + " }";
     }
 }
diff --git a/src/plugins/tracker/rygel-tracker-interfaces.vala b/src/plugins/tracker/rygel-tracker-interfaces.vala
index 8fcae64..dbee096 100644
--- a/src/plugins/tracker/rygel-tracker-interfaces.vala
+++ b/src/plugins/tracker/rygel-tracker-interfaces.vala
@@ -32,7 +32,8 @@ public interface Rygel.TrackerStatsIface : DBus.Object {
 public interface Rygel.TrackerResourcesIface: DBus.Object {
     public abstract async string[,] sparql_query (string query)
                                                   throws DBus.Error;
-    public abstract async void sparql_update (string query) throws DBus.Error;
+    public abstract async HashTable<string,string>[,] sparql_update_blank (
+                                        string query) throws DBus.Error;
 }
 
 [DBus (name = "org.freedesktop.Tracker1.Resources.Class")]



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]