tracker r1898 - in branches/indexer-split: . src/tracker-indexer/modules
- From: pvanhoof svn gnome org
- To: svn-commits-list gnome org
- Subject: tracker r1898 - in branches/indexer-split: . src/tracker-indexer/modules
- Date: Tue, 22 Jul 2008 09:03:42 +0000 (UTC)
Author: pvanhoof
Date: Tue Jul 22 09:03:42 2008
New Revision: 1898
URL: http://svn.gnome.org/viewvc/tracker?rev=1898&view=rev
Log:
2008-07-21 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/tracker-indexer/modules/applications.c
branches/indexer-split/src/tracker-indexer/modules/evolution.c
branches/indexer-split/src/tracker-indexer/modules/files.c
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 Tue Jul 22 09:03:42 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"
@@ -50,14 +52,17 @@
}
static void
-insert_data_from_desktop_file (GHashTable *metadata,
- const gchar *metadata_key,
- GKeyFile *desktop_file,
- const gchar *key,
- gboolean use_locale)
+insert_data_from_desktop_file (GHashTable *metadata,
+ TrackerField *metadata_key,
+ GKeyFile *desktop_file,
+ const gchar *key,
+ gboolean use_locale)
{
gchar *str;
+ if (!metadata_key)
+ return;
+
if (use_locale) {
str = g_key_file_get_locale_string (desktop_file, GROUP_DESKTOP_ENTRY, key, NULL, NULL);
} else {
@@ -65,7 +70,7 @@
}
if (str) {
- g_hash_table_insert (metadata, (gpointer) metadata_key, str);
+ g_hash_table_insert (metadata, g_object_ref (metadata_key), str);
}
}
@@ -75,6 +80,7 @@
GHashTable *metadata;
GKeyFile *key_file;
gchar *type, *filename;
+ TrackerField *field;
/* Check we're dealing with a desktop file */
if (!g_str_has_suffix (file->path, ".desktop")) {
@@ -102,21 +108,57 @@
}
/* 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,
+ tracker_ontology_get_field_def (METADATA_APP_NAME),
+ key_file,
+ KEY_NAME,
+ FALSE);
+
+ insert_data_from_desktop_file (metadata,
+ tracker_ontology_get_field_def (METADATA_APP_DISPLAY_NAME),
+ key_file,
+ KEY_NAME,
+ TRUE);
+
+ insert_data_from_desktop_file (metadata,
+ tracker_ontology_get_field_def (METADATA_APP_GENERIC_NAME),
+ key_file,
+ KEY_GENERIC_NAME,
+ TRUE);
+
+ insert_data_from_desktop_file (metadata,
+ tracker_ontology_get_field_def (METADATA_APP_COMMENT),
+ key_file,
+ KEY_COMMENT,
+ TRUE);
+
+ insert_data_from_desktop_file (metadata,
+ tracker_ontology_get_field_def (METADATA_APP_EXECUTABLE),
+ key_file,
+ KEY_EXECUTABLE,
+ FALSE);
+
+ insert_data_from_desktop_file (metadata,
+ 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);
+
+ field = tracker_ontology_get_field_def (METADATA_FILE_NAME);
+
+ if (field) {
+ g_hash_table_insert (metadata,
+ g_object_ref (field),
+ 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 Tue Jul 22 09:03:42 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"
@@ -562,6 +563,19 @@
return id;
}
+static void
+insert_data_to_metadata (GHashTable *metadata, const gchar *name, gchar *value)
+{
+ TrackerField *field_def = tracker_ontology_get_field_def (name);
+
+ if (field_def) {
+ g_hash_table_insert (metadata,
+ g_object_ref (field_def),
+ value);
+ }
+}
+
+
GHashTable *
get_metadata_for_mbox (TrackerFile *file)
{
@@ -578,24 +592,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));
+
+ insert_data_to_metadata (metadata,
+ tracker_ontology_get_field_def (METADATA_FILE_PATH),
+ g_strdup ("email://local local"));
+
+ insert_data_to_metadata (metadata,
+ tracker_ontology_get_field_def (METADATA_FILE_NAME),
+ name);
+
+ g_mime_message_get_date (message, &date, NULL);
+
+ insert_data_to_metadata (metadata,
+ tracker_ontology_get_field_def (METADATA_EMAIL_DATE),
+ tracker_uint_to_string (date));
+
+ insert_data_to_metadata (metadata,
+ tracker_ontology_get_field_def (METADATA_EMAIL_SENDER),
+ g_strdup (g_mime_message_get_sender (message)));
+
+ insert_data_to_metadata (metadata,
+ tracker_ontology_get_field_def (METADATA_EMAIL_SUBJECT),
+ g_strdup (g_mime_message_get_subject (message)));
/* Missing:
*
@@ -716,21 +740,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);
+ insert_data_to_metadata (metadata,
+ tracker_ontology_get_field_def (METADATA_FILE_PATH),
+ dirname);
+
+ insert_data_to_metadata (metadata,
+ tracker_ontology_get_field_def (METADATA_FILE_NAME),
+ g_strdup_printf ("%s;uid=%s", basename, uid));
+
+ g_free (basename);
+
+ insert_data_to_metadata (metadata,
+ 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));
+ insert_data_to_metadata (metadata,
+ 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);
+ insert_data_to_metadata (metadata,
+ 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 Tue Jul 22 09:03:42 2008
@@ -48,6 +48,18 @@
return "Files";
}
+static void
+insert_data_to_metadata (GHashTable *metadata, const gchar *name, gchar *value)
+{
+ TrackerField *field_def = tracker_ontology_get_field_def (name);
+
+ if (field_def) {
+ g_hash_table_insert (metadata,
+ g_object_ref (field_def),
+ value);
+ }
+}
+
static void
tracker_metadata_get_embedded (const char *path,
const char *mimetype,
@@ -125,8 +137,9 @@
if (!utf_value)
continue;
- /* FIXME: name should be const */
- g_hash_table_insert (table, g_strdup (name), utf_value);
+ insert_data_to_metadata (table,
+ tracker_ontology_get_field_def (name),
+ utf_value);
}
g_strfreev (values);
@@ -215,39 +228,52 @@
}
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_filename_to_utf8 (path, -1, NULL, NULL, NULL));
- g_hash_table_insert (metadata, METADATA_FILE_MIMETYPE, mimetype);
+ insert_data_to_metadata (metadata,
+ tracker_ontology_get_field_def (METADATA_FILE_NAME),
+ g_filename_display_basename (path));
+ insert_data_to_metadata (metadata,
+ tracker_ontology_get_field_def (METADATA_FILE_PATH),
+ g_path_get_dirname (path));
+ insert_data_to_metadata (metadata,
+ tracker_ontology_get_field_def (METADATA_FILE_NAME_DELIMITED),
+ g_filename_to_utf8 (path, -1, NULL, NULL, NULL));
+ insert_data_to_metadata (metadata,
+ 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_filename_to_utf8 (link_path, -1, NULL, NULL, NULL));
+ insert_data_to_metadata (metadata,
+ 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,
- tracker_uint_to_string (st.st_size));
- g_hash_table_insert (metadata, METADATA_FILE_MODIFIED,
- tracker_uint_to_string (st.st_mtime));
- g_hash_table_insert (metadata, METADATA_FILE_ACCESSED,
- tracker_uint_to_string (st.st_atime));
+ insert_data_to_metadata (metadata,
+ tracker_ontology_get_field_def (METADATA_FILE_SIZE),
+ tracker_uint_to_string (st.st_size));
+ insert_data_to_metadata (metadata,
+ tracker_ontology_get_field_def (METADATA_FILE_MODIFIED),
+ tracker_uint_to_string (st.st_mtime));
+ insert_data_to_metadata (metadata,
+ tracker_ontology_get_field_def (METADATA_FILE_ACCESSED),
+ tracker_uint_to_string (st.st_atime));
tracker_metadata_get_embedded (path, mimetype, metadata);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]