[tracker/libtracker-miner] TrackerMinerProcess: Push collected data to tracker-store.
- From: Carlos Garnacho <carlosg src gnome org>
- To: svn-commits-list gnome org
- Cc:
- Subject: [tracker/libtracker-miner] TrackerMinerProcess: Push collected data to tracker-store.
- Date: Tue, 18 Aug 2009 14:08:23 +0000 (UTC)
commit 6eff0cf6e2cd68ee7dbc2a55a9efabe0216cc801
Author: Carlos Garnacho <carlos lanedo com>
Date: Tue Aug 18 15:25:52 2009 +0200
TrackerMinerProcess: Push collected data to tracker-store.
src/libtracker-miner/tracker-miner-process.c | 84 +++++++++++++++++---------
1 files changed, 56 insertions(+), 28 deletions(-)
---
diff --git a/src/libtracker-miner/tracker-miner-process.c b/src/libtracker-miner/tracker-miner-process.c
index e43a82d..988cdcd 100644
--- a/src/libtracker-miner/tracker-miner-process.c
+++ b/src/libtracker-miner/tracker-miner-process.c
@@ -387,54 +387,82 @@ directory_data_free (DirectoryData *dd)
g_slice_free (DirectoryData, dd);
}
-static gboolean
-item_queue_handlers_cb (gpointer user_data)
+static void
+item_add_or_update (TrackerMinerProcess *miner,
+ GFile *file,
+ TrackerSparqlBuilder *sparql)
{
- TrackerSparqlBuilder *sparql;
- TrackerMinerProcess *process;
- gboolean processed;
- GFile *file;
+ gchar *full_sparql, *uri;
- process = user_data;
- sparql = tracker_sparql_builder_new_update ();
+ uri = g_file_get_uri (file);
+
+ g_debug ("Adding item '%s'", uri);
+
+ tracker_sparql_builder_insert_close (sparql);
+
+ full_sparql = g_strdup_printf ("DROP GRAPH <%s> %s",
+ uri, tracker_sparql_builder_get_result (sparql));
+
+ tracker_miner_execute_sparql (TRACKER_MINER (miner), full_sparql, NULL);
+ g_free (full_sparql);
+}
+
+static GFile *
+get_next_file (TrackerMinerProcess *miner)
+{
+ GFile *file;
/* Deleted items first */
- file = g_queue_pop_head (process->private->items_deleted);
+ file = g_queue_pop_head (miner->private->items_deleted);
if (file) {
- g_signal_emit (process, signals[PROCESS_FILE], 0, file, sparql, &processed);
- g_object_unref (file);
-
- return TRUE;
+ return file;
}
/* Created items next */
- file = g_queue_pop_head (process->private->items_created);
+ file = g_queue_pop_head (miner->private->items_created);
if (file) {
- g_signal_emit (process, signals[PROCESS_FILE], 0, file, sparql, &processed);
- g_object_unref (file);
-
- return TRUE;
+ return file;
}
/* Updated items next */
- file = g_queue_pop_head (process->private->items_updated);
+ file = g_queue_pop_head (miner->private->items_updated);
if (file) {
- g_signal_emit (process, signals[PROCESS_FILE], 0, file, sparql, &processed);
- g_object_unref (file);
-
- return TRUE;
+ return file;
}
/* Moved items next */
- file = g_queue_pop_head (process->private->items_moved);
+ file = g_queue_pop_head (miner->private->items_moved);
if (file) {
- g_signal_emit (process, signals[PROCESS_FILE], 0, file, sparql, &processed);
- g_object_unref (file);
-
+ return file;
+ }
+
+ return NULL;
+}
+
+static gboolean
+item_queue_handlers_cb (gpointer user_data)
+{
+ TrackerSparqlBuilder *sparql;
+ TrackerMinerProcess *miner;
+ gboolean processed;
+ GFile *file;
+
+ miner = user_data;
+ sparql = tracker_sparql_builder_new_update ();
+ file = get_next_file (miner);
+
+ if (file) {
+ g_signal_emit (miner, signals[PROCESS_FILE], 0, file, sparql, &processed);
+
+ if (processed) {
+ /* Commit sparql */
+ item_add_or_update (miner, file, sparql);
+ }
+
return TRUE;
}
- process->private->item_queues_handler_id = 0;
+ miner->private->item_queues_handler_id = 0;
return FALSE;
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]