summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCarlos Garnacho <carlosg@gnome.org>2017-05-30 14:16:51 +0200
committerCarlos Garnacho <carlosg@gnome.org>2017-06-28 23:55:22 +0200
commita6f701b9c56d602c1c1eb03cbf7f94ff0bd1848e (patch)
tree1f9efcf39a2e6e24ad4e94fdffed245f3b0bdf8c
parent7377bbc25ebabd858b3f5205354593f40292314c (diff)
downloadtracker-a6f701b9c56d602c1c1eb03cbf7f94ff0bd1848e.tar.gz
libtracker-data: Take a GFile for ontology location in the data manager
The other tracker_data_manager_init() arguments taking file paths will follow. This fully exposes the ability to load ontologies from resource:// locations.
-rw-r--r--src/libtracker-data/libtracker-data.vapi4
-rw-r--r--src/libtracker-data/tracker-data-backup.c2
-rw-r--r--src/libtracker-data/tracker-data-backup.h2
-rw-r--r--src/libtracker-data/tracker-data-manager.c47
-rw-r--r--src/libtracker-data/tracker-data-manager.h2
-rw-r--r--src/libtracker-direct/tracker-direct.vala4
-rw-r--r--src/tracker-store/tracker-main.vala4
7 files changed, 33 insertions, 32 deletions
diff --git a/src/libtracker-data/libtracker-data.vapi b/src/libtracker-data/libtracker-data.vapi
index dd641e5be..42b2eb02f 100644
--- a/src/libtracker-data/libtracker-data.vapi
+++ b/src/libtracker-data/libtracker-data.vapi
@@ -224,12 +224,12 @@ namespace Tracker {
public delegate void BackupFinished (GLib.Error error);
public void backup_save (GLib.File destination, owned BackupFinished callback);
- public void backup_restore (GLib.File journal, string? cache_location, string? data_location, string? ontology_location, [CCode (array_length = false)] string[]? test_schema, BusyCallback busy_callback) throws GLib.Error;
+ public void backup_restore (GLib.File journal, string? cache_location, string? data_location, GLib.File? ontology_location, [CCode (array_length = false)] string[]? test_schema, BusyCallback busy_callback) throws GLib.Error;
}
[CCode (cheader_filename = "libtracker-data/tracker-data-manager.h")]
namespace Data.Manager {
- public bool init (DBManagerFlags flags, string? cache_location, string? data_location, string? ontology_location, [CCode (array_length = false)] string[]? test_schema, out bool first_time, bool journal_check, bool restoring_backup, uint select_cache_size, uint update_cache_size, BusyCallback? busy_callback, string? busy_status) throws DBInterfaceError, DBJournalError;
+ public bool init (DBManagerFlags flags, string? cache_location, string? data_location, GLib.File? ontology_location, [CCode (array_length = false)] string[]? test_schema, out bool first_time, bool journal_check, bool restoring_backup, uint select_cache_size, uint update_cache_size, BusyCallback? busy_callback, string? busy_status) throws DBInterfaceError, DBJournalError;
public void shutdown ();
}
diff --git a/src/libtracker-data/tracker-data-backup.c b/src/libtracker-data/tracker-data-backup.c
index 5065f1fdd..ee9430e0e 100644
--- a/src/libtracker-data/tracker-data-backup.c
+++ b/src/libtracker-data/tracker-data-backup.c
@@ -585,7 +585,7 @@ void
tracker_data_backup_restore (GFile *journal,
const gchar *cache_location,
const gchar *data_location,
- const gchar *ontology_location,
+ GFile *ontology_location,
const gchar **test_schemas,
TrackerBusyCallback busy_callback,
gpointer busy_user_data,
diff --git a/src/libtracker-data/tracker-data-backup.h b/src/libtracker-data/tracker-data-backup.h
index e02bbc054..e85ba6652 100644
--- a/src/libtracker-data/tracker-data-backup.h
+++ b/src/libtracker-data/tracker-data-backup.h
@@ -50,7 +50,7 @@ void tracker_data_backup_save (GFile *destination,
void tracker_data_backup_restore (GFile *journal,
const gchar *cache_location,
const gchar *data_location,
- const gchar *ontology_location,
+ GFile *ontology_location,
const gchar **test_schema,
TrackerBusyCallback busy_callback,
gpointer busy_user_data,
diff --git a/src/libtracker-data/tracker-data-manager.c b/src/libtracker-data/tracker-data-manager.c
index 1fca65054..14ccf30d5 100644
--- a/src/libtracker-data/tracker-data-manager.c
+++ b/src/libtracker-data/tracker-data-manager.c
@@ -65,8 +65,8 @@
#define ZLIBBUFSIZ 8192
-static gchar *ontologies_dir;
-static gchar *ontology_location_stored;
+static GFile *ontologies_dir = NULL;
+static GFile *ontology_location_stored = NULL;
static gchar *cache_location_stored;
static gchar *data_location_stored;
static gboolean initialized;
@@ -3419,14 +3419,12 @@ compare_file_names (GFile *file_a,
}
static GList*
-get_ontologies (const gchar *ontologies_dir,
- GError **error)
+get_ontologies (GFile *ontologies,
+ GError **error)
{
GFileEnumerator *enumerator;
- GFile *ontologies;
GList *sorted = NULL;
- ontologies = g_file_new_for_path (ontologies_dir);
enumerator = g_file_enumerate_children (ontologies,
G_FILE_ATTRIBUTE_STANDARD_NAME,
G_FILE_QUERY_INFO_NONE,
@@ -3728,7 +3726,7 @@ gboolean
tracker_data_manager_init (TrackerDBManagerFlags flags,
const gchar *cache_location,
const gchar *data_location,
- const gchar *ontology_location,
+ GFile *ontology_location,
const gchar **test_schemas,
gboolean *first_time,
gboolean journal_check,
@@ -3864,11 +3862,7 @@ tracker_data_manager_init (TrackerDBManagerFlags flags,
else
cache_location_stored = NULL;
- g_free (ontology_location_stored);
- if (ontology_location != NULL)
- ontology_location_stored = g_strdup(ontology_location);
- else
- ontology_location_stored = NULL;
+ g_set_object (&ontology_location_stored, ontology_location);
g_free (data_location_stored);
if (data_location != NULL)
@@ -3879,19 +3873,26 @@ tracker_data_manager_init (TrackerDBManagerFlags flags,
if (G_LIKELY (!env_path)) {
if (ontology_location == NULL) {
+ gchar *file_path;
+
/* SHAREDIR/tracker/ontologies */
- ontologies_dir = g_build_filename (SHAREDIR, "tracker",
- "ontologies", NULL);
+ file_path = g_build_filename (SHAREDIR, "tracker",
+ "ontologies", NULL);
+ ontologies_dir = g_file_new_for_path (file_path);
+ g_free (file_path);
} else {
/* Typically SHAREDIR/tracker/domain-ontologies/domain/ontology-name */
- ontologies_dir = g_strdup (ontology_location);
+ ontologies_dir = g_object_ref (ontology_location);
}
- /* TODO: support GResource here */
- if (!g_file_test (ontologies_dir, G_FILE_TEST_EXISTS | G_FILE_TEST_IS_DIR)) {
+ if (g_file_query_file_type (ontologies_dir, G_FILE_QUERY_INFO_NONE, NULL) != G_FILE_TYPE_DIRECTORY) {
+ gchar *uri;
+
+ uri = g_file_get_uri (ontologies_dir);
g_set_error (error, TRACKER_DATA_ONTOLOGY_ERROR,
TRACKER_DATA_ONTOLOGY_NOT_FOUND,
- "'%s' is not a ontology location", ontologies_dir);
+ "'%s' is not a ontology location", uri);
+ g_free (uri);
tracker_db_manager_shutdown ();
tracker_ontologies_shutdown ();
if (!reloading) {
@@ -3901,7 +3902,7 @@ tracker_data_manager_init (TrackerDBManagerFlags flags,
return FALSE;
}
} else {
- ontologies_dir = g_strdup (env_path);
+ ontologies_dir = g_file_new_for_path (env_path);
}
#ifndef DISABLE_JOURNAL
@@ -4359,7 +4360,7 @@ tracker_data_manager_init (TrackerDBManagerFlags flags,
if (ontos) {
g_list_free_full (ontos, g_object_unref);
}
- g_free (ontologies_dir);
+ g_object_unref (ontologies_dir);
if (uri_id_map) {
g_hash_table_unref (uri_id_map);
}
@@ -4453,7 +4454,7 @@ tracker_data_manager_init (TrackerDBManagerFlags flags,
if (ontos) {
g_list_free_full (ontos, g_object_unref);
}
- g_free (ontologies_dir);
+ g_clear_object (&ontologies_dir);
if (uri_id_map) {
g_hash_table_unref (uri_id_map);
}
@@ -4562,7 +4563,7 @@ tracker_data_manager_init (TrackerDBManagerFlags flags,
if (ontos) {
g_list_free_full (ontos, g_object_unref);
}
- g_free (ontologies_dir);
+ g_clear_object (&ontologies_dir);
if (uri_id_map) {
g_hash_table_unref (uri_id_map);
}
@@ -4759,7 +4760,7 @@ tracker_data_manager_init (TrackerDBManagerFlags flags,
initialized = TRUE;
- g_free (ontologies_dir);
+ g_clear_object (&ontologies_dir);
/* This is the only one which doesn't show the 'OPERATION' part */
if (busy_callback) {
diff --git a/src/libtracker-data/tracker-data-manager.h b/src/libtracker-data/tracker-data-manager.h
index 0dcd21070..3d3e14116 100644
--- a/src/libtracker-data/tracker-data-manager.h
+++ b/src/libtracker-data/tracker-data-manager.h
@@ -47,9 +47,9 @@ typedef enum {
GQuark tracker_data_ontology_error_quark (void);
gboolean tracker_data_manager_init (TrackerDBManagerFlags flags,
- const gchar *ontology_location,
const gchar *cache_location,
const gchar *data_location,
+ GFile *ontology_location,
const gchar **test_schema,
gboolean *first_time,
gboolean journal_check,
diff --git a/src/libtracker-direct/tracker-direct.vala b/src/libtracker-direct/tracker-direct.vala
index 256f295aa..f89f31787 100644
--- a/src/libtracker-direct/tracker-direct.vala
+++ b/src/libtracker-direct/tracker-direct.vala
@@ -49,7 +49,7 @@ public class Tracker.Direct.Connection : Tracker.Sparql.Connection {
}
}
- public Connection.custom_ontology (string? loc, string? domain, string? ontology_name) throws Sparql.Error, IOError, DBusError {
+ public Connection.custom_ontology (string? loc, string? domain, File? ontology_loc) throws Sparql.Error, IOError, DBusError {
try {
if (use_count == 0) {
// make sure that current locale vs db locale are the same,
@@ -65,7 +65,7 @@ public class Tracker.Direct.Connection : Tracker.Sparql.Connection {
}
Data.Manager.init (DBManagerFlags.READONLY | DBManagerFlags.ENABLE_MUTEXES,
- loc, domain, ontology_name,
+ loc, domain, ontology_loc,
null, null, false, false, select_cache_size, 0, null, null);
}
diff --git a/src/tracker-store/tracker-main.vala b/src/tracker-store/tracker-main.vala
index 96bc03ffa..271d87d63 100644
--- a/src/tracker-store/tracker-main.vala
+++ b/src/tracker-store/tracker-main.vala
@@ -347,8 +347,8 @@ License which can be viewed at:
try {
string final_cache_location = cache_location != null ? cache_location.replace ("%HOME%", Environment.get_home_dir()).replace("%SHAREDIR%", SHAREDIR) : null;
string final_data_location = data_location != null ? data_location.replace ("%HOME%", Environment.get_home_dir()).replace("%SHAREDIR%", SHAREDIR) : null;
- string final_ontology_location = ontology_location != null ? ontology_location.replace ("%HOME%", Environment.get_home_dir()).replace("%SHAREDIR%", SHAREDIR) : null;
-
+ File final_ontology_location = ontology_location != null ? File.new_for_path (ontology_location.replace ("%HOME%", Environment.get_home_dir()).replace("%SHAREDIR%", SHAREDIR)) : null;
+
Tracker.Data.Manager.init (flags,
final_cache_location,
final_data_location,