[tracker] libtracker-sparql: Implement tracker_sparql_connection_get_namespace_manager()



commit bfc79c0eda9b6c5ad0b255032b800e41ece31b01
Author: Carlos Garnacho <carlosg gnome org>
Date:   Tue Jul 11 00:02:03 2017 +0200

    libtracker-sparql: Implement tracker_sparql_connection_get_namespace_manager()
    
    This is implemented on direct connections and the generic backend. The
    TrackerNamespaceManager will be filled in from the internal ontologies, as
    read by the TrackerDataManager.

 .../libtracker-sparql-sections.txt                 |    1 +
 src/libtracker-direct/tracker-direct.vala          |   15 +++++++++++++++
 src/libtracker-sparql-backend/tracker-backend.vala |    7 +++++++
 src/libtracker-sparql/tracker-connection.vala      |   17 +++++++++++++++++
 4 files changed, 40 insertions(+), 0 deletions(-)
---
diff --git a/docs/reference/libtracker-sparql/libtracker-sparql-sections.txt 
b/docs/reference/libtracker-sparql/libtracker-sparql-sections.txt
index c0d3b4e..6bcbb7b 100644
--- a/docs/reference/libtracker-sparql/libtracker-sparql-sections.txt
+++ b/docs/reference/libtracker-sparql/libtracker-sparql-sections.txt
@@ -151,6 +151,7 @@ tracker_sparql_connection_load_finish
 tracker_sparql_connection_statistics
 tracker_sparql_connection_statistics_async
 tracker_sparql_connection_statistics_finish
+tracker_sparql_connection_get_namespace_manager
 <SUBSECTION Standard>
 TrackerSparqlConnectionClass
 TRACKER_SPARQL_CONNECTION
diff --git a/src/libtracker-direct/tracker-direct.vala b/src/libtracker-direct/tracker-direct.vala
index edec19f..e079e6e 100644
--- a/src/libtracker-direct/tracker-direct.vala
+++ b/src/libtracker-direct/tracker-direct.vala
@@ -38,6 +38,7 @@ public class Tracker.Direct.Connection : Tracker.Sparql.Connection, AsyncInitabl
        public SourceFunc init_callback;
 
        private AsyncQueue<Task> update_queue;
+       private NamespaceManager namespace_manager;
 
        [CCode (cname = "SHAREDIR")]
        extern const string SHAREDIR;
@@ -352,4 +353,18 @@ public class Tracker.Direct.Connection : Tracker.Sparql.Connection, AsyncInitabl
                if (task.error != null)
                        throw new Sparql.Error.INTERNAL (task.error.message);
        }
+
+       public override NamespaceManager? get_namespace_manager () {
+               if (namespace_manager == null && data_manager != null) {
+                       var ht = data_manager.get_namespaces ();
+                       namespace_manager = new NamespaceManager ();
+
+                       foreach (var prefix in ht.get_keys ()) {
+                               print ("%s %s\n", prefix, ht.lookup (prefix));
+                               namespace_manager.add_prefix (prefix, ht.lookup (prefix));
+                       }
+               }
+
+               return namespace_manager;
+       }
 }
diff --git a/src/libtracker-sparql-backend/tracker-backend.vala 
b/src/libtracker-sparql-backend/tracker-backend.vala
index 76415d3..23cc27c 100644
--- a/src/libtracker-sparql-backend/tracker-backend.vala
+++ b/src/libtracker-sparql-backend/tracker-backend.vala
@@ -153,6 +153,13 @@ class Tracker.Sparql.Backend : Connection {
                return yield bus.statistics_async (cancellable);
        }
 
+       public override NamespaceManager? get_namespace_manager () {
+               if (direct != null)
+                       return direct.get_namespace_manager ();
+               else
+                       return NamespaceManager.get_default ();
+       }
+
        private Connection create_readonly_direct () throws GLib.Error, Sparql.Error, IOError, DBusError {
                var conn = new Tracker.Direct.Connection (Tracker.Sparql.ConnectionFlags.READONLY,
                                                          domain_ontology.get_cache (),
diff --git a/src/libtracker-sparql/tracker-connection.vala b/src/libtracker-sparql/tracker-connection.vala
index f06bbe3..9123329 100644
--- a/src/libtracker-sparql/tracker-connection.vala
+++ b/src/libtracker-sparql/tracker-connection.vala
@@ -511,6 +511,23 @@ public abstract class Tracker.Sparql.Connection : Object {
                return null;
        }
 
+       /**
+        * tracker_sparql_connection_get_namespace_manager:
+        * @self: a #TrackerSparqlConnection
+        *
+        * Retrieves a #TrackerNamespaceManager that contains all
+        * prefixes in the ontology of @self.
+        *
+        * Returns: (transfer none): a #TrackerNamespaceManager for this
+        * connection. This object is owned by @self and must not be freed.
+        *
+        * Since: 2.0
+        */
+       public virtual NamespaceManager? get_namespace_manager () {
+               warning ("Not implemented");
+               return null;
+       }
+
        public extern static void set_domain (string? domain);
        public extern static string? get_domain ();
 }


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