[tracker/libtracker-miner] TrackerMinerProcess: Push collected data to tracker-store.



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]