[tracker/extract-sparql] Add some options to get_sparql feature of libtracker-extract



commit 0023b2f20c20d39048a13080a3a02c588c5343f4
Author: Philip Van Hoof <philip codeminded be>
Date:   Wed Dec 19 23:22:47 2012 +0100

    Add some options to get_sparql feature of libtracker-extract

 src/libtracker-extract/tracker-extract-sparql.c |   17 ++++++++++---
 src/libtracker-extract/tracker-extract-sparql.h |    1 +
 src/tracker-extract/tracker-controller.c        |    3 +-
 src/tracker-utils/tracker-sparql.c              |   29 ++++++++++++++++++++++-
 4 files changed, 44 insertions(+), 6 deletions(-)
---
diff --git a/src/libtracker-extract/tracker-extract-sparql.c b/src/libtracker-extract/tracker-extract-sparql.c
index 50e02ac..a62c752 100644
--- a/src/libtracker-extract/tracker-extract-sparql.c
+++ b/src/libtracker-extract/tracker-extract-sparql.c
@@ -35,6 +35,7 @@ typedef struct {
 	time_t last_access;
 	gboolean last_mod_set;
 	gboolean last_access_set;
+	gboolean available;
 } ExtractionData;
 
 static GSimpleAsyncResult*
@@ -214,15 +215,16 @@ on_fileinfo_received (GObject *file, GAsyncResult *result, gpointer user_data)
 		tracker_sparql_builder_object_iri (sparql, removable_device_urn);
 
 		tracker_sparql_builder_predicate (sparql, "tracker:available");
-		tracker_sparql_builder_object_boolean (sparql, TRUE);
+		tracker_sparql_builder_object_boolean (sparql, data->available);
 
 		g_free (removable_device_urn);
 		g_object_unref (dest_file);
 
 		if (tracker_extract_module_manager_mimetype_is_handled (mime_type)) {
 			/* Next step, if handled by the extractor, get embedded metadata */
-			tracker_extract_client_get_metadata (data->file, mime_type, data->graph_urn, NULL,
-			                                     extractor_get_embedded_metadata_cb,
+			tracker_extract_client_get_metadata (data->file, mime_type,
+			                                     data->graph_urn ? data->graph_urn : "",
+			                                     NULL, extractor_get_embedded_metadata_cb,
 			                                     data);
 		} else {
 			gchar *sparql_s;
@@ -366,11 +368,14 @@ tracker_extract_get_sparql (const gchar *temp_file,
                             const gchar *graph,
                             time_t last_mod,
                             time_t last_access,
+                            gboolean available,
                             GAsyncReadyCallback callback,
                             gpointer user_data)
 {
 	ExtractionData *data = g_new0(ExtractionData, 1);
 
+	data->available = available;
+
 	if (graph) {
 		data->graph_urn = g_strdup (graph);
 	}
@@ -391,7 +396,11 @@ tracker_extract_get_sparql (const gchar *temp_file,
 
 	data->storage = tracker_storage_new ();
 	data->file = g_file_new_for_path(temp_file);
-	data->url = g_strdup (dest_url);
+	if (dest_url) {
+		data->url = g_strdup (dest_url);
+	} else {
+		data->url = g_file_get_uri (data->file);
+	}
 	data->simple = g_simple_async_result_new (NULL, callback, user_data, tracker_extract_get_sparql);
 
 	tracker_sparql_connection_get_async (NULL, on_get_connection, data);
diff --git a/src/libtracker-extract/tracker-extract-sparql.h b/src/libtracker-extract/tracker-extract-sparql.h
index 1bad385..ff55271 100644
--- a/src/libtracker-extract/tracker-extract-sparql.h
+++ b/src/libtracker-extract/tracker-extract-sparql.h
@@ -36,6 +36,7 @@ void   tracker_extract_get_sparql        (const gchar         *temp_file,
                                           const gchar         *graph,
                                           time_t               last_mod,
                                           time_t               last_access,
+                                          gboolean             available,
                                           GAsyncReadyCallback  callback,
                                           gpointer             user_data);
 
diff --git a/src/tracker-extract/tracker-controller.c b/src/tracker-extract/tracker-controller.c
index 7689298..1187605 100644
--- a/src/tracker-extract/tracker-controller.c
+++ b/src/tracker-extract/tracker-controller.c
@@ -721,7 +721,8 @@ handle_method_call_get_metadata_fast (TrackerController     *controller,
 			data = metadata_data_new (controller, uri, mime, invocation, request);
 			data->fd = fd;
 
-			tracker_extract_file (priv->extractor, uri, mime, graph,
+			tracker_extract_file (priv->extractor, uri, mime,
+			                      strlen(graph) == 0 ? NULL : graph,
 			                      data->cancellable,
 			                      get_metadata_fast_cb, data);
 			priv->ongoing_tasks = g_list_prepend (priv->ongoing_tasks, data);
diff --git a/src/tracker-utils/tracker-sparql.c b/src/tracker-utils/tracker-sparql.c
index a46819f..0cbc230 100644
--- a/src/tracker-utils/tracker-sparql.c
+++ b/src/tracker-utils/tracker-sparql.c
@@ -53,6 +53,9 @@ static gchar *file;
 static gchar *metadata_file_path;
 static gchar *metadata_graph_urn;
 static gchar *metadata_dest_url;
+static gchar *metadata_last_accessed;
+static gchar *metadata_last_modified;
+static gboolean metadata_available;
 static gchar *query;
 static gboolean update;
 static gboolean list_classes;
@@ -80,6 +83,18 @@ static GOptionEntry   entries[] = {
 	  N_("Destination URL to use to get metadata as a sparql insert query for (uses tracker-extract)"),
 	  N_("URL"),
 	},
+	{ "metadata-available", 'a', 0, G_OPTION_ARG_NONE, &metadata_available,
+	  N_("Value for tracker:available"),
+	  NULL,
+	},
+	{ "metadata-last-accessed", 'c', 0, G_OPTION_ARG_STRING, &metadata_last_accessed,
+	  N_("Last accessed value"),
+	  N_("ISO8601"),
+	},
+	{ "metadata-last-modified", 'm', 0, G_OPTION_ARG_STRING, &metadata_last_modified,
+	  N_("Last modified value"),
+	  N_("ISO8601"),
+	},
 	{ "query", 'q', 0, G_OPTION_ARG_STRING, &query,
 	  N_("SPARQL query"),
 	  N_("SPARQL"),
@@ -589,9 +604,21 @@ main (int argc, char **argv)
 
 	if (metadata_file_path) {
 		GMainLoop *loop = g_main_loop_new (NULL, FALSE);
+		time_t last_accessed = 0;
+		time_t last_modified = 0;
+		GTimeVal val;
+
+		if (metadata_last_accessed && g_time_val_from_iso8601 (metadata_last_accessed, &val)) {
+			last_accessed = val.tv_sec;
+		}
+
+		if (metadata_last_modified && g_time_val_from_iso8601 (metadata_last_modified, &val)) {
+			last_modified = val.tv_sec;
+		}
+
 		tracker_extract_get_sparql (metadata_file_path,
 		                            metadata_dest_url, metadata_graph_urn,
-		                            time(0), time(0),
+		                            last_modified, last_accessed, metadata_available,
 		                            on_metadata_get_sparql_finished, loop);
 		g_main_loop_run (loop);
 	}



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