tracker r1887 - in branches/indexer-split: . src/libtracker-common src/trackerd tests/libtracker-common
- From: ifrade svn gnome org
- To: svn-commits-list gnome org
- Subject: tracker r1887 - in branches/indexer-split: . src/libtracker-common src/trackerd tests/libtracker-common
- Date: Thu, 17 Jul 2008 17:13:47 +0000 (UTC)
Author: ifrade
Date: Thu Jul 17 17:13:47 2008
New Revision: 1887
URL: http://svn.gnome.org/viewvc/tracker?rev=1887&view=rev
Log:
Get registered service and field types from tracker_ontology_
Modified:
branches/indexer-split/ChangeLog
branches/indexer-split/src/libtracker-common/tracker-ontology.c
branches/indexer-split/src/libtracker-common/tracker-ontology.h
branches/indexer-split/src/trackerd/tracker-metadata.c
branches/indexer-split/tests/libtracker-common/tracker-ontology-test.c
Modified: branches/indexer-split/src/libtracker-common/tracker-ontology.c
==============================================================================
--- branches/indexer-split/src/libtracker-common/tracker-ontology.c (original)
+++ branches/indexer-split/src/libtracker-common/tracker-ontology.c Thu Jul 17 17:13:47 2008
@@ -470,6 +470,43 @@
return tracker_service_get_show_service_files (service);
}
+
+GSList *
+tracker_ontology_registered_service_types (void)
+{
+ GList *service_types = NULL, *iter = NULL;
+ GSList *names = NULL;
+ TrackerService *service;
+
+ service_types = g_hash_table_get_values (service_table);
+
+ for (iter = service_types; iter != NULL; iter = iter->next) {
+ service = (TrackerService*)iter->data;
+ names = g_slist_prepend (names, g_strdup (tracker_service_get_name (service)));
+ }
+ return names;
+}
+
+GSList *
+tracker_ontology_registered_field_types (const gchar *service_type)
+{
+ GList *field_types = NULL, *iter = NULL;
+ GSList *names = NULL;
+ TrackerField *field;
+
+ field_types = g_hash_table_get_values (metadata_table);
+
+ for (iter = field_types; iter != NULL; iter = iter->next) {
+ field = (TrackerField*)iter->data;
+
+ if (service_type == NULL
+ || g_str_has_prefix (tracker_field_get_name (field), service_type)) {
+ names = g_slist_prepend (names, g_strdup (tracker_field_get_name (field)));
+ }
+ }
+ return names;
+}
+
/*
* Service directories
*/
Modified: branches/indexer-split/src/libtracker-common/tracker-ontology.h
==============================================================================
--- branches/indexer-split/src/libtracker-common/tracker-ontology.h (original)
+++ branches/indexer-split/src/libtracker-common/tracker-ontology.h Thu Jul 17 17:13:47 2008
@@ -51,6 +51,8 @@
const gchar *meta_name);
gboolean tracker_ontology_show_service_directories (const gchar *service_str);
gboolean tracker_ontology_show_service_files (const gchar *service_str);
+GSList * tracker_ontology_registered_service_types (void);
+GSList * tracker_ontology_registered_field_types (const gchar *service_type);
/* Service directories */
GSList * tracker_ontology_get_dirs_for_service_type (const gchar *service);
Modified: branches/indexer-split/src/trackerd/tracker-metadata.c
==============================================================================
--- branches/indexer-split/src/trackerd/tracker-metadata.c (original)
+++ branches/indexer-split/src/trackerd/tracker-metadata.c Thu Jul 17 17:13:47 2008
@@ -27,6 +27,7 @@
#include <libtracker-common/tracker-log.h>
#include <libtracker-common/tracker-field-data.h>
#include <libtracker-common/tracker-utils.h>
+#include <libtracker-common/tracker-type-utils.h>
#include <libtracker-db/tracker-db-dbus.h>
#include <libtracker-db/tracker-db-manager.h>
@@ -353,10 +354,10 @@
DBusGMethodInvocation *context,
GError **error)
{
- TrackerDBInterface *iface;
- TrackerDBResultSet *result_set;
guint request_id;
gchar **values = NULL;
+ const gchar *requested = NULL;
+ GSList *registered = NULL;
GError *actual_error = NULL;
request_id = tracker_dbus_get_next_request_id ();
@@ -379,20 +380,14 @@
return;
}
- /* Here it doesn't matter which one we ask, as long as it has common.db
- * attached. The service ones are cached connections, so we can use
- * those instead of asking for an individual-file connection (like what
- * the original code had) */
+ requested = (strcmp (service_type, "*") == 0 ? NULL : service_type);
- /* iface = tracker_db_manager_get_db_interfaceX (TRACKER_DB_COMMON); */
+ registered = tracker_ontology_registered_field_types (requested);
- iface = tracker_db_manager_get_db_interface_by_service (TRACKER_DB_FOR_FILE_SERVICE);
+ values = tracker_gslist_to_string_list (registered);
- result_set = tracker_db_metadata_get_types (iface, service_type, FALSE);
- if (result_set) {
- values = tracker_dbus_query_result_to_strv (result_set, 1, NULL);
- g_object_unref (result_set);
- }
+ g_slist_foreach (registered, (GFunc) g_free, NULL);
+ g_slist_free (registered);
dbus_g_method_return (context, values);
@@ -409,33 +404,21 @@
DBusGMethodInvocation *context,
GError **error)
{
- TrackerDBInterface *iface;
- TrackerDBResultSet *result_set;
guint request_id;
gchar **values = NULL;
+ GSList *registered = NULL;
request_id = tracker_dbus_get_next_request_id ();
tracker_dbus_request_new (request_id,
"DBus request to get registered classes");
- /* Here it doesn't matter which one we ask, as long as it has common.db
- * attached. The service ones are cached connections, so we can use
- * those instead of asking for an individual-file connection (like what
- * the original code had) */
-
- /* iface = tracker_db_manager_get_db_interfaceX (TRACKER_DB_COMMON); */
-
- iface = tracker_db_manager_get_db_interface_by_service (TRACKER_DB_FOR_FILE_SERVICE);
-
- result_set = tracker_db_exec_proc (iface,
- "SelectRegisteredClasses",
- NULL);
-
- if (result_set) {
- values = tracker_dbus_query_result_to_strv (result_set, 0, NULL);
- g_object_unref (result_set);
- }
+ registered = tracker_ontology_registered_service_types ();
+
+ values = tracker_gslist_to_string_list (registered);
+
+ g_slist_foreach (registered, (GFunc) g_free, NULL);
+ g_slist_free (registered);
dbus_g_method_return (context, values);
Modified: branches/indexer-split/tests/libtracker-common/tracker-ontology-test.c
==============================================================================
--- branches/indexer-split/tests/libtracker-common/tracker-ontology-test.c (original)
+++ branches/indexer-split/tests/libtracker-common/tracker-ontology-test.c Thu Jul 17 17:13:47 2008
@@ -23,6 +23,7 @@
#include <glib.h>
#include <glib/gtestutils.h>
#include <tracker-test-helpers.h>
+#include <string.h>
gboolean
test_cmp_servicedef_equals (TrackerService *one,
@@ -92,6 +93,12 @@
return def;
}
+static gboolean
+element_in_list (GSList *list, gchar *element)
+{
+ return (g_slist_find_custom (list, element, (GCompareFunc)strcmp) != NULL);
+}
+
static GSList *
array_to_list (char **array)
@@ -226,12 +233,19 @@
static void
test_get_service_type_for_mime ()
{
- g_assert ( g_str_equal ("Parent service",
- tracker_ontology_get_service_type_for_mime ("application/rtf")));
- g_assert ( g_str_equal ("Parent service",
- tracker_ontology_get_service_type_for_mime ("images/jpeg")));
- g_assert ( g_str_equal ("Other",
- tracker_ontology_get_service_type_for_mime ("noexists/bla")));
+ gchar *value;
+
+ value = tracker_ontology_get_service_type_for_mime ("application/rtf");
+ g_assert ( g_str_equal ("Parent service", value));
+ g_free (value);
+
+ value = tracker_ontology_get_service_type_for_mime ("images/jpeg");
+ g_assert ( g_str_equal ("Parent service", value));
+ g_free (value);
+
+ value = tracker_ontology_get_service_type_for_mime ("noexists/bla");
+ g_assert ( g_str_equal ("Other", value));
+ g_free (value);
}
@@ -303,6 +317,55 @@
g_assert (!tracker_ontology_get_field_def ("nooooo"));
}
+static void
+test_get_registered_service_types (void)
+{
+ GSList *service_types = NULL;
+
+ service_types = tracker_ontology_registered_service_types ();
+
+ g_assert_cmpint (7, ==, g_slist_length (service_types));
+
+ g_assert (element_in_list (service_types, "Applications"));
+
+ g_slist_foreach (service_types, (GFunc)g_free, NULL);
+ g_slist_free (service_types);
+
+}
+
+static void
+test_get_registered_field_types (void)
+{
+ GSList *field_types = NULL;
+
+ /* All registered field types */
+ field_types = tracker_ontology_registered_field_types (NULL);
+
+ g_assert_cmpint (1 ,==, g_slist_length (field_types));
+
+ g_assert (element_in_list (field_types, "App.Title"));
+
+ g_slist_foreach (field_types, (GFunc)g_free, NULL);
+ g_slist_free (field_types);
+
+ /* Music field types */
+ field_types = tracker_ontology_registered_field_types ("Music");
+
+ g_assert (!field_types);
+
+
+ /* App field types */
+ field_types = tracker_ontology_registered_field_types ("App");
+
+ g_assert_cmpint (1 ,==, g_slist_length (field_types));
+
+ g_assert (element_in_list (field_types, "App.Title"));
+
+ g_slist_foreach (field_types, (GFunc)g_free, NULL);
+ g_slist_free (field_types);
+
+}
+
int
main (int argc, char **argv) {
@@ -340,6 +403,11 @@
g_test_add_func ("/trackerd/tracker-services/test_field_in_ontology",
test_field_in_ontology);
+ g_test_add_func ("/trackerd/tracker-services/test_get_all_registered_service_types",
+ test_get_registered_service_types);
+ g_test_add_func ("/trackerd/tracker-services/test_get_all_registered_field_types",
+ test_get_registered_field_types);
+
result = g_test_run ();
tracker_ontology_shutdown ();
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]