tracker r1895 - in branches/indexer-split: . src/libtracker-common src/tracker-indexer src/tracker-indexer/modules



Author: pvanhoof
Date: Mon Jul 21 13:17:39 2008
New Revision: 1895
URL: http://svn.gnome.org/viewvc/tracker?rev=1895&view=rev

Log:
2008-07-17  Philip Van Hoof  <pvanhoof gnome org>

        * src/tracker-indexer/modules/files.c:
        * src/tracker-indexer/modules/evolution.c:
        * src/tracker-indexer/modules/applications.c:
        * src/tracker-indexer/tracker-indexer.c:

        tracker-indexer modules returned a GHashTable with field name/value
        pairs, we now use TrackerField pointers for the hashtable keys, so we
        could deal with values in their native format (instead of having to
        convert everything to strings)



Modified:
   branches/indexer-split/ChangeLog
   branches/indexer-split/src/libtracker-common/tracker-ontology.c
   branches/indexer-split/src/tracker-indexer/modules/applications.c
   branches/indexer-split/src/tracker-indexer/modules/evolution.c
   branches/indexer-split/src/tracker-indexer/modules/files.c
   branches/indexer-split/src/tracker-indexer/tracker-indexer.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	Mon Jul 21 13:17:39 2008
@@ -146,19 +146,19 @@
 		return;
 	}
 
-	g_hash_table_destroy (service_directory_table);
+	g_hash_table_unref (service_directory_table);
 	service_directory_table = NULL;
 
-	g_hash_table_destroy (service_id_table);
+	g_hash_table_unref (service_id_table);
 	service_id_table = NULL;
 
-	g_hash_table_destroy (service_table);
+	g_hash_table_unref (service_table);
 	service_table = NULL;
 
-	g_hash_table_destroy (mime_service);
+	g_hash_table_unref (mime_service);
 	mime_service = NULL;
 
-	g_hash_table_destroy (metadata_table);
+	g_hash_table_unref (metadata_table);
 	metadata_table = NULL;
 
 	if (mime_prefix_service) {

Modified: branches/indexer-split/src/tracker-indexer/modules/applications.c
==============================================================================
--- branches/indexer-split/src/tracker-indexer/modules/applications.c	(original)
+++ branches/indexer-split/src/tracker-indexer/modules/applications.c	Mon Jul 21 13:17:39 2008
@@ -19,7 +19,9 @@
 
 #include <stdlib.h>
 #include <glib.h>
+#include <glib-object.h>
 #include <tracker-indexer/tracker-module.h>
+#include <libtracker-common/tracker-ontology.h>
 
 #define GROUP_DESKTOP_ENTRY "Desktop Entry"
 #define KEY_TYPE            "Type"
@@ -102,21 +104,53 @@
 	}
 
 	/* Begin collecting data */
-	metadata = g_hash_table_new_full (g_str_hash, g_str_equal,
-					  NULL,
+	metadata = g_hash_table_new_full (g_direct_hash, g_direct_equal,
+					  (GDestroyNotify) g_object_unref,
 					  (GDestroyNotify) g_free);
 
-	insert_data_from_desktop_file (metadata, METADATA_APP_NAME, key_file, KEY_NAME, FALSE);
-	insert_data_from_desktop_file (metadata, METADATA_APP_DISPLAY_NAME, key_file, KEY_NAME, TRUE);
-	insert_data_from_desktop_file (metadata, METADATA_APP_GENERIC_NAME, key_file, KEY_GENERIC_NAME, TRUE);
-	insert_data_from_desktop_file (metadata, METADATA_APP_COMMENT, key_file, KEY_COMMENT, TRUE);
-	insert_data_from_desktop_file (metadata, METADATA_APP_EXECUTABLE, key_file, KEY_EXECUTABLE, FALSE);
-	insert_data_from_desktop_file (metadata, METADATA_APP_ICON, key_file, KEY_ICON, FALSE);
+	insert_data_from_desktop_file (metadata, 
+				       g_object_ref (tracker_ontology_get_field_def (METADATA_APP_NAME)), 
+				       key_file, 
+				       KEY_NAME, 
+				       FALSE);
+
+	insert_data_from_desktop_file (metadata, 
+				       g_object_ref (tracker_ontology_get_field_def (METADATA_APP_DISPLAY_NAME)),
+				       key_file,
+				       KEY_NAME,
+				       TRUE);
+
+	insert_data_from_desktop_file (metadata, 
+				       g_object_ref (tracker_ontology_get_field_def (METADATA_APP_GENERIC_NAME)),
+				       key_file,
+				       KEY_GENERIC_NAME,
+				       TRUE);
+
+	insert_data_from_desktop_file (metadata, 
+				       g_object_ref (tracker_ontology_get_field_def (METADATA_APP_COMMENT)),
+				       key_file,
+				       KEY_COMMENT,
+				       TRUE);
+
+	insert_data_from_desktop_file (metadata, 
+				       g_object_ref (tracker_ontology_get_field_def (METADATA_APP_EXECUTABLE)),
+				       key_file,
+				       KEY_EXECUTABLE,
+				       FALSE);
+
+	insert_data_from_desktop_file (metadata, 
+				       g_object_ref (tracker_ontology_get_field_def (METADATA_APP_ICON)),
+				       key_file,
+				       KEY_ICON,
+				       FALSE);
 
 	/* FIXME: mimetypes list and categories? */
 
 	filename = g_filename_display_basename (file->path);
-	g_hash_table_insert (metadata, METADATA_FILE_NAME, filename);
+
+	g_hash_table_insert (metadata, 
+			     g_object_ref (tracker_ontology_get_field_def (METADATA_FILE_NAME)),
+			     filename);
 
 	g_key_file_free (key_file);
 	g_free (type);

Modified: branches/indexer-split/src/tracker-indexer/modules/evolution.c
==============================================================================
--- branches/indexer-split/src/tracker-indexer/modules/evolution.c	(original)
+++ branches/indexer-split/src/tracker-indexer/modules/evolution.c	Mon Jul 21 13:17:39 2008
@@ -30,6 +30,7 @@
 #include <libtracker-common/tracker-utils.h>
 #include <libtracker-common/tracker-file-utils.h>
 #include <libtracker-common/tracker-type-utils.h>
+#include <libtracker-common/tracker-ontology.h>
 
 #define METADATA_FILE_PATH           "File:Path"
 #define METADATA_FILE_NAME           "File:Name"
@@ -578,24 +579,34 @@
                 return NULL;
         }
 
-	metadata = g_hash_table_new_full (g_str_hash, g_str_equal,
-					  NULL,
-					  (GDestroyNotify) g_free);
-
-        dir = tracker_string_replace (file->path, local_dir, NULL);
-        name = g_strdup_printf ("%s;uid=%d", dir, get_mbox_message_id (message));
-
-        g_hash_table_insert (metadata, METADATA_FILE_PATH, g_strdup ("email://local local"));
-        g_hash_table_insert (metadata, METADATA_FILE_NAME, name);
-
-        g_mime_message_get_date (message, &date, NULL);
-	g_hash_table_insert (metadata, METADATA_EMAIL_DATE,
-                             tracker_uint_to_string (date));
-
-        g_hash_table_insert (metadata, METADATA_EMAIL_SENDER,
-                             g_strdup (g_mime_message_get_sender (message)));
-        g_hash_table_insert (metadata, METADATA_EMAIL_SUBJECT,
-                             g_strdup (g_mime_message_get_subject (message)));
+		metadata = g_hash_table_new_full (g_direct_hash, g_direct_equal,
+						  (GDestroyNotify) g_object_unref,
+						  (GDestroyNotify) g_free);
+
+		dir = tracker_string_replace (file->path, local_dir, NULL);
+		name = g_strdup_printf ("%s;uid=%d", dir, get_mbox_message_id (message));
+
+		g_hash_table_insert (metadata, 
+				     g_object_ref (tracker_ontology_get_field_def (METADATA_FILE_PATH)),
+				     g_strdup ("email://local local"));
+
+		g_hash_table_insert (metadata, 
+				     g_object_ref (tracker_ontology_get_field_def (METADATA_FILE_NAME)),
+				     name);
+
+		g_mime_message_get_date (message, &date, NULL);
+
+		g_hash_table_insert (metadata, 
+				     g_object_ref (tracker_ontology_get_field_def (METADATA_EMAIL_DATE)),
+				     tracker_uint_to_string (date));
+
+		g_hash_table_insert (metadata, 
+				     g_object_ref (tracker_ontology_get_field_def (METADATA_EMAIL_SENDER)),
+				     g_strdup (g_mime_message_get_sender (message)));
+
+		g_hash_table_insert (metadata, 
+				     g_object_ref (tracker_ontology_get_field_def (METADATA_EMAIL_SUBJECT)),
+				     g_strdup (g_mime_message_get_subject (message)));
 
         /* Missing:
          *
@@ -716,21 +727,33 @@
                       SUMMARY_TYPE_STRING, NULL, /* mlist */
                       -1);
 
-	metadata = g_hash_table_new_full (g_str_hash, g_str_equal,
-					  NULL,
-					  (GDestroyNotify) g_free);
+		metadata = g_hash_table_new_full (g_direct_hash, g_direct_equal,
+						  (GDestroyNotify) g_object_unref,
+						  (GDestroyNotify) g_free);
 
-        get_imap_uri (file->path, &dirname, &basename);
+		get_imap_uri (file->path, &dirname, &basename);
 
-        g_hash_table_insert (metadata, METADATA_FILE_PATH, dirname);
-        g_hash_table_insert (metadata, METADATA_FILE_NAME, g_strdup_printf ("%s;uid=%s", basename, uid));
-        g_free (basename);
+		g_hash_table_insert (metadata, 
+				     g_object_ref (tracker_ontology_get_field_def (METADATA_FILE_PATH)),
+				     dirname);
+
+		g_hash_table_insert (metadata, 
+				     g_object_ref (tracker_ontology_get_field_def (METADATA_FILE_NAME)),
+				     g_strdup_printf ("%s;uid=%s", basename, uid));
+
+		g_free (basename);
+
+		g_hash_table_insert (metadata, 
+				     g_object_ref (tracker_ontology_get_field_def (METADATA_EMAIL_DATE)),
+				     tracker_uint_to_string (date));
 
-	g_hash_table_insert (metadata, METADATA_EMAIL_DATE,
-                             tracker_uint_to_string (date));
+		g_hash_table_insert (metadata, 
+				     g_object_ref (tracker_ontology_get_field_def (METADATA_EMAIL_SENDER)), 
+				     from);
 
-        g_hash_table_insert (metadata, METADATA_EMAIL_SENDER, from);
-        g_hash_table_insert (metadata, METADATA_EMAIL_SUBJECT, subject);
+		g_hash_table_insert (metadata, 
+				     g_object_ref (tracker_ontology_get_field_def (METADATA_EMAIL_SUBJECT)), 
+				     subject);
 
         g_free (uid);
         g_free (to);

Modified: branches/indexer-split/src/tracker-indexer/modules/files.c
==============================================================================
--- branches/indexer-split/src/tracker-indexer/modules/files.c	(original)
+++ branches/indexer-split/src/tracker-indexer/modules/files.c	Mon Jul 21 13:17:39 2008
@@ -125,8 +125,9 @@
 		if (!utf_value)
 			continue;
 
-		/* FIXME: name should be const */
-		g_hash_table_insert (table, g_strdup (name), utf_value);
+		g_hash_table_insert (table, 
+				     g_object_ref (tracker_ontology_get_field_def (name)), 
+				     utf_value);
 	}
 
 	g_strfreev (values);
@@ -215,38 +216,51 @@
 	}
 
 	g_lstat (path, &st);
-	metadata = g_hash_table_new_full (g_str_hash, g_str_equal,
-					  NULL,
+	metadata = g_hash_table_new_full (g_direct_hash, g_direct_equal,
+					  (GDestroyNotify) g_object_unref,
 					  (GDestroyNotify) g_free);
 	ext = strrchr (path, '.');
 
 	if (ext) {
-		g_hash_table_insert (metadata, METADATA_FILE_EXT, g_strdup (ext + 1));
+		g_hash_table_insert (metadata, 
+				     g_object_ref (tracker_ontology_get_field_def (METADATA_FILE_EXT)), 
+				     g_strdup (ext + 1));
 	}
 
 	mimetype = tracker_file_get_mime_type (path);
 
-	g_hash_table_insert (metadata, METADATA_FILE_NAME, g_filename_display_basename (path));
-	g_hash_table_insert (metadata, METADATA_FILE_PATH, g_path_get_dirname (path));
-	g_hash_table_insert (metadata, METADATA_FILE_NAME_DELIMITED,
+	g_hash_table_insert (metadata, 
+			     g_object_ref (tracker_ontology_get_field_def (METADATA_FILE_NAME)), 
+			     g_filename_display_basename (path));
+	g_hash_table_insert (metadata, 
+			     g_object_ref (tracker_ontology_get_field_def (METADATA_FILE_PATH)),
+			     g_path_get_dirname (path));
+	g_hash_table_insert (metadata, 
+			     g_object_ref (tracker_ontology_get_field_def (METADATA_FILE_NAME_DELIMITED)),
 			     g_filename_to_utf8 (path, -1, NULL, NULL, NULL));
-	g_hash_table_insert (metadata, METADATA_FILE_MIMETYPE, mimetype);
+	g_hash_table_insert (metadata, 
+			     g_object_ref (tracker_ontology_get_field_def (METADATA_FILE_MIMETYPE)), 
+			     mimetype);
 
 	if (S_ISLNK (st.st_mode)) {
 		gchar *link_path;
 
 		link_path = g_file_read_link (path, NULL);
-		g_hash_table_insert (metadata, METADATA_FILE_LINK,
+		g_hash_table_insert (metadata, 
+				     g_object_ref (tracker_ontology_get_field_def (METADATA_FILE_LINK)),
 				     g_filename_to_utf8 (link_path, -1, NULL, NULL, NULL));
 		g_free (link_path);
 	}
 
 	/* FIXME: These should be dealt directly as integer/times/whatever, not strings */
-	g_hash_table_insert (metadata, METADATA_FILE_SIZE,
+	g_hash_table_insert (metadata, 
+			     g_object_ref (tracker_ontology_get_field_def (METADATA_FILE_SIZE)),
 			     tracker_uint_to_string (st.st_size));
-	g_hash_table_insert (metadata, METADATA_FILE_MODIFIED,
+	g_hash_table_insert (metadata, 
+			     g_object_ref (tracker_ontology_get_field_def (METADATA_FILE_MODIFIED)),
 			     tracker_uint_to_string (st.st_mtime));
-	g_hash_table_insert (metadata, METADATA_FILE_ACCESSED,
+	g_hash_table_insert (metadata, 
+			     g_object_ref (tracker_ontology_get_field_def (METADATA_FILE_ACCESSED)),
 			     tracker_uint_to_string (st.st_atime));
 
 	tracker_metadata_get_embedded (path, mimetype, metadata);

Modified: branches/indexer-split/src/tracker-indexer/tracker-indexer.c
==============================================================================
--- branches/indexer-split/src/tracker-indexer/tracker-indexer.c	(original)
+++ branches/indexer-split/src/tracker-indexer/tracker-indexer.c	Mon Jul 21 13:17:39 2008
@@ -725,8 +725,7 @@
 		indexer_throttle (data->config, throttle * 100);
 	}
 
-	/* Parse */
-	field = tracker_ontology_get_field_def ((gchar *) key);
+	field = key;
 
 	parsed_value = tracker_parser_text_to_string ((gchar *) value,
 						      data->language,



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