[tracker/wip/carlosg/domain-ontologies: 6/55] libtracker-data, tracker-store: domain specific ontologies



commit 817ef055299a6f2e9622572d8c53c02fba4fde80
Author: Philip Van Hoof <philip codeminded be>
Date:   Sat Jan 28 01:06:06 2017 +0100

    libtracker-data, tracker-store: domain specific ontologies

 src/libtracker-data/tracker-data-backup.c  |    6 +-
 src/libtracker-data/tracker-data-backup.h  |    2 +-
 src/libtracker-data/tracker-data-manager.c |    3 +
 src/libtracker-data/tracker-db-manager.c   |   97 +++++++++++++++++-----------
 src/libtracker-data/tracker-db-manager.h   |    2 +-
 src/tracker-store/tracker-main.vala        |   13 +++-
 6 files changed, 76 insertions(+), 47 deletions(-)
---
diff --git a/src/libtracker-data/tracker-data-backup.c b/src/libtracker-data/tracker-data-backup.c
index 79d6334..fef3582 100644
--- a/src/libtracker-data/tracker-data-backup.c
+++ b/src/libtracker-data/tracker-data-backup.c
@@ -556,7 +556,7 @@ tracker_data_backup_save (GFile                     *destination,
 void
 tracker_data_backup_restore (GFile                *journal,
                              const gchar          *domain,
-                             const gchar          *ontology,
+                             const gchar          *ontology_name,
                              const gchar         **test_schemas,
                              TrackerBusyCallback   busy_callback,
                              gpointer              busy_user_data,
@@ -655,7 +655,7 @@ tracker_data_backup_restore (GFile                *journal,
                             &info->error);
 #endif /* DISABLE_JOURNAL */
 
-               tracker_db_manager_init_locations ();
+               tracker_db_manager_init_locations (domain, ontology_name);
 
                /* Re-set the DB version file, so that its mtime changes. The mtime of this
                 * file will change only when the whole DB is recreated (after a hard reset
@@ -696,7 +696,7 @@ tracker_data_backup_restore (GFile                *journal,
                }
 #endif /* DISABLE_JOURNAL */
 
-               tracker_data_manager_init (flags, domain, ontology, test_schemas,
+               tracker_data_manager_init (flags, domain, ontology_name, test_schemas,
                                           &is_first, TRUE, TRUE,
                                           select_cache_size, update_cache_size,
                                           busy_callback, busy_user_data,
diff --git a/src/libtracker-data/tracker-data-backup.h b/src/libtracker-data/tracker-data-backup.h
index fb15427..3d05573 100644
--- a/src/libtracker-data/tracker-data-backup.h
+++ b/src/libtracker-data/tracker-data-backup.h
@@ -49,7 +49,7 @@ void   tracker_data_backup_save        (GFile                     *destination,
                                         GDestroyNotify             destroy);
 void   tracker_data_backup_restore     (GFile                     *journal,
                                         const gchar               *domain,
-                                        const gchar               *ontology,
+                                        const gchar               *ontology_name,
                                         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 d2b7548..4850a78 100644
--- a/src/libtracker-data/tracker-data-manager.c
+++ b/src/libtracker-data/tracker-data-manager.c
@@ -3825,6 +3825,9 @@ tracker_data_manager_init (TrackerDBManagerFlags   flags,
                                                           ontology_name,
                                                           NULL);
                }
+               if (!g_file_test (ontologies_dir, G_FILE_TEST_EXISTS | G_FILE_TEST_IS_DIR)) {
+                       g_critical ("%s is not a directory with an ontology", ontologies_dir);
+               }
        } else {
                ontologies_dir = g_strdup (env_path);
        }
diff --git a/src/libtracker-data/tracker-db-manager.c b/src/libtracker-data/tracker-db-manager.c
index d717392..1efd8c0 100644
--- a/src/libtracker-data/tracker-db-manager.c
+++ b/src/libtracker-data/tracker-db-manager.c
@@ -665,7 +665,7 @@ tracker_db_manager_locale_changed (GError **error)
         * to check for locale mismatches for initializing the database.
         */
        if (!locations_initialized) {
-               tracker_db_manager_init_locations ();
+               tracker_db_manager_init_locations (in_use_domain, in_use_ontology_name);
        }
 
        /* Get current collation locale */
@@ -794,7 +794,7 @@ db_recreate_all (GError **error)
 }
 
 void
-tracker_db_manager_init_locations (void)
+tracker_db_manager_init_locations (const char *domain, const char *ontology_name)
 {
        const gchar *dir;
        guint i;
@@ -803,17 +803,26 @@ tracker_db_manager_init_locations (void)
                return;
        }
 
+       if (domain == NULL) {
+               domain = "tracker";
+       }
        user_data_dir = g_build_filename (g_get_user_data_dir (),
-                                         "tracker",
+                                         domain,
                                          "data",
                                          NULL);
 
        /* For DISABLE_JOURNAL case we should use g_get_user_data_dir here. For now
         * keeping this as-is */
 
-       data_dir = g_build_filename (g_get_user_cache_dir (),
-                                    "tracker",
-                                    NULL);
+       if (ontology_name == NULL) {
+               data_dir = g_build_filename (g_get_user_cache_dir (),
+                                            domain,
+                                            NULL);
+       } else {
+               data_dir = g_build_filename (g_get_user_cache_dir (),
+                                            domain, ontology_name,
+                                            NULL);
+       }
 
        for (i = 1; i < G_N_ELEMENTS (dbs); i++) {
                dir = location_to_directory (dbs[i].location);
@@ -906,33 +915,35 @@ db_manager_init_unlocked (TrackerDBManagerFlags   flags,
 
        old_flags = flags;
 
-       tracker_db_manager_init_locations ();
-
        g_free (in_use_filename);
-    g_free (in_use_domain);
-    g_free (in_use_ontology_name);
-
-    if (domain == NULL) {
-        domain = "tracker";
-
-    }
-    in_use_domain = g_strdup (domain);
-
-    if (ontology_name == NULL) {
-        in_use_ontology_name = NULL;
-        in_use_filename = g_build_filename (g_get_user_data_dir (),
-                                            domain,
-                                            "data",
-                                            IN_USE_FILENAME,
-                                            NULL);
-    } else {
-        in_use_ontology_name = g_strdup (ontology_name);
-        in_use_filename = g_build_filename (g_get_user_data_dir (),
-                                            domain, ontology_name,
-                                            "data",
-                                            IN_USE_FILENAME,
-                                            NULL);
-    }
+       g_free (in_use_domain);
+       g_free (in_use_ontology_name);
+
+       if (domain == NULL)
+               domain = "tracker";
+       in_use_domain = g_strdup (domain);
+
+       if (ontology_name == NULL)
+               in_use_ontology_name = NULL;
+       else
+               in_use_ontology_name = g_strdup (ontology_name);
+
+       in_use_domain = g_strdup (domain);
+
+       tracker_db_manager_init_locations (domain, ontology_name);
+       if (ontology_name == NULL) {
+               in_use_filename = g_build_filename (g_get_user_data_dir (),
+                                                   domain,
+                                                   "data",
+                                                   IN_USE_FILENAME,
+                                                   NULL);
+       } else {
+               in_use_filename = g_build_filename (g_get_user_data_dir (),
+                                                   domain, ontology_name,
+                                                   "data",
+                                                   IN_USE_FILENAME,
+                                                   NULL);
+       }
 
        /* Don't do need_reindex checks for readonly (direct-access) */
        if ((flags & TRACKER_DB_MANAGER_READONLY) == 0) {
@@ -1051,19 +1062,27 @@ db_manager_init_unlocked (TrackerDBManagerFlags   flags,
                /* do not do shutdown check for read-only mode (direct access) */
                gboolean must_recreate = FALSE;
 #ifndef DISABLE_JOURNAL
-               gchar *journal_filename;
+               gchar *journal_filename, *jfname;
 #endif /* DISABLE_JOURNAL */
 
                /* Load databases */
                g_message ("Loading databases files...");
 
 #ifndef DISABLE_JOURNAL
-               journal_filename = g_build_filename (g_get_user_data_dir (),
-                                                    "tracker",
-                                                    "data",
-                                                    TRACKER_DB_JOURNAL_FILENAME,
-                                                    NULL);
-
+               if (ontology_name == NULL) {
+                       journal_filename = g_build_filename (g_get_user_data_dir (),
+                                                            domain,
+                                                            "data",
+                                                            TRACKER_DB_JOURNAL_FILENAME,
+                                                            NULL);
+               } else {
+                       journal_filename = g_build_filename (g_get_user_data_dir (),
+                                                            domain,
+                                                            ontology_name,
+                                                            "data",
+                                                            TRACKER_DB_JOURNAL_FILENAME,
+                                                            NULL);
+               }
                must_recreate = !tracker_db_journal_reader_verify_last (journal_filename,
                                                                        NULL);
 
diff --git a/src/libtracker-data/tracker-db-manager.h b/src/libtracker-data/tracker-db-manager.h
index a763b45..cfe7408 100644
--- a/src/libtracker-data/tracker-db-manager.h
+++ b/src/libtracker-data/tracker-db-manager.h
@@ -69,7 +69,7 @@ void                tracker_db_manager_remove_all             (gboolean
 void                tracker_db_manager_optimize               (void);
 const gchar *       tracker_db_manager_get_file               (TrackerDB              db);
 TrackerDBInterface *tracker_db_manager_get_db_interface       (void);
-void                tracker_db_manager_init_locations         (void);
+void                tracker_db_manager_init_locations         (const gchar *domain, const gchar 
*ontology_name);
 gboolean            tracker_db_manager_has_enough_space       (void);
 void                tracker_db_manager_create_version_file    (void);
 void                tracker_db_manager_remove_version_file    (void);
diff --git a/src/tracker-store/tracker-main.vala b/src/tracker-store/tracker-main.vala
index 380b6ac..06ab62d 100644
--- a/src/tracker-store/tracker-main.vala
+++ b/src/tracker-store/tracker-main.vala
@@ -41,7 +41,9 @@ License which can be viewed at:
        static int verbosity;
        static bool force_reindex;
        static bool readonly_mode;
-
+       static string domain;
+       static string ontology_name;
+       
        const OptionEntry entries[] = {
                /* Daemon options */
                { "version", 'V', 0, OptionArg.NONE, ref version, N_("Displays version information"), null },
@@ -50,6 +52,9 @@ License which can be viewed at:
                /* Indexer options */
                { "force-reindex", 'r', 0, OptionArg.NONE, ref force_reindex, N_("Force a re-index of all 
content"), null },
                { "readonly-mode", 'n', 0, OptionArg.NONE, ref readonly_mode, N_("Only allow read based 
actions on the database"), null },
+               { "domain", 'd', 0, OptionArg.STRING, ref domain, N_("Domain to be used"), null },
+               { "ontology-name", 'o', 0, OptionArg.STRING, ref ontology_name, N_("Ontology to be used"), 
null },
+
                { null }
        };
 
@@ -60,6 +65,9 @@ License which can be viewed at:
                message ("Store options:");
                message ("  Readonly mode  ........................  %s", readonly_mode ? "yes" : "no");
                message ("  GraphUpdated Delay ....................  %d", config.graphupdated_delay);
+               message ("  Domain         ........................  %s", domain);
+               message ("  Ontology name  ........................  %s", ontology_name);
+
        }
 
        static void do_shutdown () {
@@ -260,8 +268,7 @@ License which can be viewed at:
                bool is_first_time_index;
 
                try {
-                       // TODO: Set domain and ontology name here
-                       Tracker.Data.Manager.init (flags, null, null,
+                       Tracker.Data.Manager.init (flags, domain, ontology_name,
                                                   null,
                                                   out is_first_time_index,
                                                   true,


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