[tracker/tracker-store] tracker-indexer: Build SPARQL query continuously
- From: Jürg Billeter <juergbi src gnome org>
- To: svn-commits-list gnome org
- Subject: [tracker/tracker-store] tracker-indexer: Build SPARQL query continuously
- Date: Tue, 23 Jun 2009 10:31:12 -0400 (EDT)
commit c346251050b0f240ce8fb82e715ef86df8156ebc
Author: Jürg Billeter <j bitron ch>
Date: Tue Jun 23 16:17:08 2009 +0200
tracker-indexer: Build SPARQL query continuously
src/tracker-indexer/tracker-module-metadata.c | 35 ++++++++++--------------
1 files changed, 15 insertions(+), 20 deletions(-)
---
diff --git a/src/tracker-indexer/tracker-module-metadata.c b/src/tracker-indexer/tracker-module-metadata.c
index deffca7..ea6c439 100644
--- a/src/tracker-indexer/tracker-module-metadata.c
+++ b/src/tracker-indexer/tracker-module-metadata.c
@@ -36,6 +36,8 @@ struct _Statement {
struct TrackerModuleMetadata {
GObject parent_instance;
+ TrackerSparqlBuilder *sparql;
+ gboolean sparql_closed;
GArray *statements;
};
@@ -60,6 +62,9 @@ tracker_module_metadata_class_init (TrackerModuleMetadataClass *klass)
static void
tracker_module_metadata_init (TrackerModuleMetadata *metadata)
{
+ metadata->sparql = tracker_sparql_builder_new_update ();
+ tracker_sparql_builder_insert_open (metadata->sparql);
+
metadata->statements = g_array_new (FALSE, TRUE, sizeof (Statement));
}
@@ -71,6 +76,8 @@ tracker_module_metadata_finalize (GObject *object)
metadata = TRACKER_MODULE_METADATA (object);
+ g_object_unref (metadata->sparql);
+
for (i = 0; i < metadata->statements->len; i++) {
Statement *stmt;
@@ -119,6 +126,10 @@ tracker_module_metadata_add_take_string (TrackerModuleMetadata *metadata,
return FALSE;
}
+ tracker_sparql_builder_subject_iri (metadata->sparql, subject);
+ tracker_sparql_builder_predicate_iri (metadata->sparql, predicate);
+ tracker_sparql_builder_object_string (metadata->sparql, value);
+
stmt.subject = g_strdup (subject);
stmt.predicate = g_strdup (predicate);
stmt.object = value;
@@ -313,30 +324,14 @@ gchar *
tracker_module_metadata_get_sparql (TrackerModuleMetadata *metadata)
{
TrackerSparqlBuilder *sparql;
- gint i;
gchar *result;
- sparql = tracker_sparql_builder_new_update ();
- tracker_sparql_builder_insert_open (sparql);
-
- for (i = 0; i < metadata->statements->len; i++) {
- Statement *stmt;
- gchar *object;
-
- stmt = &g_array_index (metadata->statements, Statement, i);
-
- tracker_sparql_builder_subject_iri (sparql, stmt->subject);
- tracker_sparql_builder_predicate_iri (sparql, stmt->predicate);
- tracker_sparql_builder_object_string (sparql, stmt->object);
+ if (!metadata->sparql_closed) {
+ tracker_sparql_builder_insert_close (metadata->sparql);
+ metadata->sparql_closed = TRUE;
}
- tracker_sparql_builder_insert_close (sparql);
-
- result = g_strdup (tracker_sparql_builder_get_result (sparql));
-
- g_object_unref (sparql);
-
- return result;
+ return g_strdup (tracker_sparql_builder_get_result (metadata->sparql));
}
/**
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]