[rygel] tracker: Use correct Sparql query for insertion
- From: Zeeshan Ali Khattak <zeeshanak src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [rygel] tracker: Use correct Sparql query for insertion
- Date: Wed, 17 Feb 2010 13:42:15 +0000 (UTC)
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]