tracker r2277 - in trunk: . src/libtracker-db src/trackerd



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]