tracker r2277 - in trunk: . src/libtracker-db src/trackerd
- From: ifrade svn gnome org
- To: svn-commits-list gnome org
- Subject: tracker r2277 - in trunk: . src/libtracker-db src/trackerd
- Date: Mon, 29 Sep 2008 15:21:33 +0000 (UTC)
Author: ifrade
Date: Mon Sep 29 15:21:33 2008
New Revision: 2277
URL: http://svn.gnome.org/viewvc/tracker?rev=2277&view=rev
Log:
Refactored tracker_db_file_get_id methods
Modified:
trunk/ChangeLog
trunk/src/libtracker-db/tracker-db-manager.c
trunk/src/libtracker-db/tracker-db-manager.h
trunk/src/trackerd/tracker-db.c
trunk/src/trackerd/tracker-db.h
trunk/src/trackerd/tracker-files.c
trunk/src/trackerd/tracker-keywords.c
trunk/src/trackerd/tracker-metadata.c
trunk/src/trackerd/tracker-search.c
Modified: trunk/src/libtracker-db/tracker-db-manager.c
==============================================================================
--- trunk/src/libtracker-db/tracker-db-manager.c (original)
+++ trunk/src/libtracker-db/tracker-db-manager.c Mon Sep 29 15:21:33 2008
@@ -2674,7 +2674,6 @@
TrackerDBType type;
g_return_val_if_fail (initialized != FALSE, NULL);
- g_return_val_if_fail (service != NULL, NULL);
type = tracker_ontology_get_service_db_by_name (service);
Modified: trunk/src/libtracker-db/tracker-db-manager.h
==============================================================================
--- trunk/src/libtracker-db/tracker-db-manager.h (original)
+++ trunk/src/libtracker-db/tracker-db-manager.h Mon Sep 29 15:21:33 2008
@@ -53,6 +53,7 @@
#define TRACKER_DB_FOR_FILE_SERVICE "Files"
#define TRACKER_DB_FOR_EMAIL_SERVICE "Emails"
+#define TRACKER_DB_FOR_VIRTUAL_SERVICE "Virtual"
#define TRACKER_DB_FOR_XESAM_SERVICE "Xesam"
GType tracker_db_get_type (void) G_GNUC_CONST;
Modified: trunk/src/trackerd/tracker-db.c
==============================================================================
--- trunk/src/trackerd/tracker-db.c (original)
+++ trunk/src/trackerd/tracker-db.c Mon Sep 29 15:21:33 2008
@@ -2685,16 +2685,24 @@
guint32
-tracker_db_file_get_id (TrackerDBInterface *iface,
+tracker_db_file_get_id (const gchar *service_type,
const gchar *uri)
{
TrackerDBResultSet *result_set;
+ TrackerDBInterface *iface;
gchar *path, *name;
- guint32 id;
+ guint32 id = 0;
- g_return_val_if_fail (TRACKER_IS_DB_INTERFACE (iface), 0);
g_return_val_if_fail (uri != NULL, 0);
+ iface = tracker_db_manager_get_db_interface_by_service (service_type);
+
+ if (!iface) {
+ g_warning ("Unable to obtain interface for service type '%s'",
+ service_type);
+ return 0;
+ }
+
tracker_file_get_path_and_name (uri, &path, &name);
result_set = tracker_db_exec_proc (iface,
@@ -2706,8 +2714,6 @@
g_free (path);
g_free (name);
- id = 0;
-
if (result_set) {
tracker_db_result_set_get (result_set, 0, &id, -1);
g_object_unref (result_set);
@@ -2717,24 +2723,14 @@
}
gchar *
-tracker_db_file_get_id_as_string (TrackerDBInterface *iface,
- const gchar *service,
+tracker_db_file_get_id_as_string (const gchar *service_type,
const gchar *uri)
{
- gint service_id;
guint32 id;
- g_return_val_if_fail (TRACKER_IS_DB_INTERFACE (iface), NULL);
- g_return_val_if_fail (service != NULL, NULL);
-
- /* Do we really need service here? */
- service_id = tracker_ontology_get_service_id_by_name (service);
-
- if (service_id == -1) {
- return NULL;
- }
+ g_return_val_if_fail (uri != NULL, NULL);
- id = tracker_db_file_get_id (iface, uri);
+ id = tracker_db_file_get_id (service_type, uri);
if (id > 0) {
return tracker_guint_to_string (id);
Modified: trunk/src/trackerd/tracker-db.h
==============================================================================
--- trunk/src/trackerd/tracker-db.h (original)
+++ trunk/src/trackerd/tracker-db.h Mon Sep 29 15:21:33 2008
@@ -142,10 +142,9 @@
gint offset,
gint limit,
gboolean vfs);
-guint32 tracker_db_file_get_id (TrackerDBInterface *iface,
+guint32 tracker_db_file_get_id (const gchar *service_type,
const gchar *uri);
-gchar * tracker_db_file_get_id_as_string (TrackerDBInterface *iface,
- const gchar *service,
+gchar * tracker_db_file_get_id_as_string (const gchar *service_type,
const gchar *uri);
/* Keywords API */
Modified: trunk/src/trackerd/tracker-files.c
==============================================================================
--- trunk/src/trackerd/tracker-files.c (original)
+++ trunk/src/trackerd/tracker-files.c Mon Sep 29 15:21:33 2008
@@ -105,7 +105,6 @@
DBusGMethodInvocation *context,
GError **error)
{
- TrackerDBInterface *iface;
guint request_id;
guint32 file_id;
gboolean exists;
@@ -137,9 +136,7 @@
return;
}
- iface = tracker_db_manager_get_db_interface_by_service (TRACKER_DB_FOR_FILE_SERVICE);
-
- file_id = tracker_db_file_get_id (iface, uri);
+ file_id = tracker_db_file_get_id (TRACKER_DB_FOR_VIRTUAL_SERVICE, uri);
exists = file_id > 0;
dbus_g_method_return (context, exists);
@@ -226,18 +223,42 @@
tracker_dbus_request_success (request_id);
}
+static const gchar *
+get_file_id_and_db_service (const gchar *uri, gint *id)
+{
+ *id = 0;
+
+ *id = tracker_db_file_get_id (TRACKER_DB_FOR_FILE_SERVICE, uri);
+ if (*id) {
+ return TRACKER_DB_FOR_FILE_SERVICE;
+ }
+
+ *id = tracker_db_file_get_id (TRACKER_DB_FOR_EMAIL_SERVICE, uri);
+ if (*id) {
+ return TRACKER_DB_FOR_EMAIL_SERVICE;
+ }
+
+ *id = tracker_db_file_get_id (TRACKER_DB_FOR_VIRTUAL_SERVICE, uri);
+ if (*id) {
+ return TRACKER_DB_FOR_VIRTUAL_SERVICE;
+ }
+
+ return NULL;
+}
+
void
tracker_files_get_service_type (TrackerFiles *object,
const gchar *uri,
DBusGMethodInvocation *context,
GError **error)
{
- TrackerDBInterface *iface;
+ TrackerDBInterface *iface = NULL;
TrackerDBResultSet *result_set;
guint request_id;
- guint32 file_id;
+ gint file_id;
gchar *file_id_str;
gchar *value = NULL;
+ const gchar *service_type;
const gchar *mime = NULL;
GError *actual_error = NULL;
@@ -250,11 +271,7 @@
"uri:'%s'",
uri);
- iface = tracker_db_manager_get_db_interface_by_service (TRACKER_DB_FOR_FILE_SERVICE);
-
- /* FIXME why dont obtain the service type directly from the DB??? */
-
- file_id = tracker_db_file_get_id (iface, uri);
+ service_type = get_file_id_and_db_service (uri, &file_id);
if (file_id < 1) {
tracker_dbus_request_failed (request_id,
@@ -269,6 +286,7 @@
/* Get mime */
file_id_str = tracker_guint_to_string (file_id);
+ iface = tracker_db_manager_get_db_interface_by_service (service_type);
mime = NULL;
result_set = tracker_db_metadata_get (iface,
file_id_str,
@@ -319,6 +337,7 @@
}
+
void
tracker_files_get_text_contents (TrackerFiles *object,
const gchar *uri,
@@ -330,10 +349,12 @@
TrackerDBInterface *iface;
TrackerDBResultSet *result_set;
guint request_id;
- gchar *service_id;
+ gint service_id;
+ gchar *service_id_str;
gchar *offset_str;
gchar *max_length_str;
gchar *value;
+ const gchar *service_type;
GError *actual_error = NULL;
request_id = tracker_dbus_get_next_request_id ();
@@ -350,28 +371,23 @@
offset,
max_length);
- iface = tracker_db_manager_get_db_interface_by_service (TRACKER_DB_FOR_FILE_SERVICE);
-
- /* FIXME iface is already for "Files". Makes no sense to try Files and Emails */
- service_id = tracker_db_file_get_id_as_string (iface, "Files", uri);
- if (!service_id) {
-
- service_id = tracker_db_file_get_id_as_string (iface, "Emails", uri);
-
- if (!service_id) {
- tracker_dbus_request_failed (request_id,
- &actual_error,
- "Unable to retrieve service ID for uri '%s'",
- uri);
- dbus_g_method_return_error (context, actual_error);
- g_error_free (actual_error);
- return;
- }
+ service_type = get_file_id_and_db_service (uri, &service_id);
+ if (!service_type || service_id == 0) {
+ tracker_dbus_request_failed (request_id,
+ &actual_error,
+ "Unable to retrieve service ID for uri '%s'",
+ uri);
+ dbus_g_method_return_error (context, actual_error);
+ g_error_free (actual_error);
+ return;
}
+
offset_str = tracker_gint_to_string (offset);
max_length_str = tracker_gint_to_string (max_length);
+ iface = tracker_db_manager_get_db_interface_by_service (service_type);
+ service_id_str = g_strdup_printf ("%d", service_id);
result_set = tracker_db_exec_proc (iface,
"GetFileContents",
offset_str,
@@ -381,7 +397,7 @@
g_free (max_length_str);
g_free (offset_str);
- g_free (service_id);
+ g_free (service_id_str);
if (result_set) {
tracker_db_result_set_get (result_set, 0, &value, -1);
@@ -513,7 +529,7 @@
return;
}
- iface = tracker_db_manager_get_db_interface_by_service (TRACKER_DB_FOR_FILE_SERVICE);
+ iface = tracker_db_manager_get_db_interface_by_service (service);
result_set = tracker_db_files_get_by_service (iface,
service,
@@ -757,7 +773,7 @@
iface = tracker_db_manager_get_db_interface_by_service (TRACKER_DB_FOR_FILE_SERVICE);
/* Get file ID in database */
- file_id = tracker_db_file_get_id (iface, uri_filtered);
+ file_id = tracker_db_file_get_id (NULL, uri_filtered);
if (file_id == 0) {
g_free (uri_filtered);
tracker_dbus_request_failed (request_id,
Modified: trunk/src/trackerd/tracker-keywords.c
==============================================================================
--- trunk/src/trackerd/tracker-keywords.c (original)
+++ trunk/src/trackerd/tracker-keywords.c Mon Sep 29 15:21:33 2008
@@ -201,8 +201,7 @@
return;
}
- iface = tracker_db_manager_get_db_interface_by_service (service_type);
- id = tracker_db_file_get_id_as_string (iface, service_type, uri);
+ id = tracker_db_file_get_id_as_string (service_type, uri);
if (!id) {
tracker_dbus_request_failed (request_id,
&actual_error,
@@ -213,6 +212,7 @@
return;
}
+ iface = tracker_db_manager_get_db_interface_by_service (service_type);
result_set = tracker_db_metadata_get (iface,
id,
"User:Keywords");
@@ -241,7 +241,6 @@
DBusGMethodInvocation *context,
GError **error)
{
- TrackerDBInterface *iface;
guint request_id;
gchar *id;
GError *actual_error = NULL;
@@ -277,8 +276,7 @@
return;
}
- iface = tracker_db_manager_get_db_interface_by_service (service_type);
- id = tracker_db_file_get_id_as_string (iface, service_type, uri);
+ id = tracker_db_file_get_id_as_string (service_type, uri);
if (!id) {
tracker_dbus_request_failed (request_id,
&actual_error,
@@ -320,7 +318,6 @@
DBusGMethodInvocation *context,
GError **error)
{
- TrackerDBInterface *iface;
guint request_id;
gchar *service_id;
GError *actual_error = NULL;
@@ -357,8 +354,7 @@
}
/* Check the uri exists, so we dont start the indexer in vain */
- iface = tracker_db_manager_get_db_interface_by_service (service_type);
- service_id = tracker_db_file_get_id_as_string (iface, service_type, uri);
+ service_id = tracker_db_file_get_id_as_string (service_type, uri);
if (!service_id) {
tracker_dbus_request_failed (request_id,
&actual_error,
@@ -399,7 +395,6 @@
DBusGMethodInvocation *context,
GError **error)
{
- TrackerDBInterface *iface;
guint request_id;
gchar **values;
gchar *service_id;
@@ -436,8 +431,7 @@
}
/* Check the uri exists, so we dont start the indexer in vain */
- iface = tracker_db_manager_get_db_interface_by_service (service_type);
- service_id = tracker_db_file_get_id_as_string (iface, service_type, uri);
+ service_id = tracker_db_file_get_id_as_string (service_type, uri);
if (!service_id) {
tracker_dbus_request_failed (request_id,
&actual_error,
Modified: trunk/src/trackerd/tracker-metadata.c
==============================================================================
--- trunk/src/trackerd/tracker-metadata.c (original)
+++ trunk/src/trackerd/tracker-metadata.c Mon Sep 29 15:21:33 2008
@@ -164,9 +164,7 @@
return;
}
- iface = tracker_db_manager_get_db_interface_by_service (service_type);
-
- service_id = tracker_db_file_get_id_as_string (iface, service_type, uri);
+ service_id = tracker_db_file_get_id_as_string (service_type, uri);
if (!service_id) {
tracker_dbus_request_failed (request_id,
&actual_error,
@@ -196,6 +194,8 @@
*
* Note: Does this matter?
*/
+ iface = tracker_db_manager_get_db_interface_by_service (service_type);
+
service_result = tracker_db_service_get_by_entity (iface, service_id);
if (!service_result) {
g_free (service_id);
@@ -239,7 +239,6 @@
DBusGMethodInvocation *context,
GError **error)
{
- TrackerDBInterface *iface;
guint request_id;
gchar *service_id;
guint i;
@@ -269,10 +268,8 @@
return;
}
- iface = tracker_db_manager_get_db_interface_by_service (service_type);
-
/* Check the uri exists, so we dont start the indexer in vain */
- service_id = tracker_db_file_get_id_as_string (iface, service_type, uri);
+ service_id = tracker_db_file_get_id_as_string (service_type, uri);
if (!service_id) {
tracker_dbus_request_failed (request_id,
&actual_error,
Modified: trunk/src/trackerd/tracker-search.c
==============================================================================
--- trunk/src/trackerd/tracker-search.c (original)
+++ trunk/src/trackerd/tracker-search.c Mon Sep 29 15:21:33 2008
@@ -804,7 +804,7 @@
iface = tracker_db_manager_get_db_interface_by_service (service);
- service_id = tracker_db_file_get_id_as_string (iface, service, id);
+ service_id = tracker_db_file_get_id_as_string (service, id);
if (!service_id) {
g_set_error (&actual_error,
TRACKER_DBUS_ERROR,
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]