[tracker] libtracker-data: Factor out function get_old_property_values
- From: Jürg Billeter <juergbi src gnome org>
- To: svn-commits-list gnome org
- Cc:
- Subject: [tracker] libtracker-data: Factor out function get_old_property_values
- Date: Mon, 26 Oct 2009 15:14:33 +0000 (UTC)
commit 0adc4cf8489cbd2a795ae026ecbd5903de146a00
Author: Jürg Billeter <j bitron ch>
Date: Mon Oct 26 16:11:05 2009 +0100
libtracker-data: Factor out function get_old_property_values
src/libtracker-data/tracker-data-update.c | 85 ++++++++++++++++++-----------
1 files changed, 52 insertions(+), 33 deletions(-)
---
diff --git a/src/libtracker-data/tracker-data-update.c b/src/libtracker-data/tracker-data-update.c
index b321a1e..9531b91 100644
--- a/src/libtracker-data/tracker-data-update.c
+++ b/src/libtracker-data/tracker-data-update.c
@@ -696,39 +696,14 @@ get_property_values (TrackerProperty *property)
return old_values;
}
-static void
-cache_set_metadata_decomposed (TrackerProperty *property,
- const gchar *value,
- GError **error)
+static GValueArray *
+get_old_property_values (TrackerProperty *property,
+ GError **error)
{
- guint32 object_id;
- gboolean multiple_values, fts;
- gchar *table_name;
- const gchar *field_name;
- TrackerProperty **properties, **super_properties, **prop;
- GValue gvalue = { 0 };
+ gboolean fts;
+ TrackerProperty **properties, **prop;
GValueArray *old_values;
- /* also insert super property values */
- super_properties = tracker_property_get_super_properties (property);
- while (*super_properties) {
- cache_set_metadata_decomposed (*super_properties, value, error);
- if (*error) {
- return;
- }
- super_properties++;
- }
-
- multiple_values = tracker_property_get_multiple_values (property);
- if (multiple_values) {
- table_name = g_strdup_printf ("%s_%s",
- tracker_class_get_name (tracker_property_get_domain (property)),
- tracker_property_get_name (property));
- } else {
- table_name = g_strdup (tracker_class_get_name (tracker_property_get_domain (property)));
- }
- field_name = tracker_property_get_name (property);
-
fts = tracker_property_get_fulltext_indexed (property);
/* read existing property values */
@@ -739,9 +714,8 @@ cache_set_metadata_decomposed (TrackerProperty *property,
"Subject `%s' is not in domain `%s' of property `%s'",
resource_buffer->subject,
tracker_class_get_name (tracker_property_get_domain (property)),
- field_name);
- g_free (table_name);
- return;
+ tracker_property_get_name (property));
+ return NULL;
}
if (fts && !resource_buffer->fts_updated && !resource_buffer->create) {
@@ -779,6 +753,51 @@ cache_set_metadata_decomposed (TrackerProperty *property,
}
}
+ return old_values;
+}
+
+static void
+cache_set_metadata_decomposed (TrackerProperty *property,
+ const gchar *value,
+ GError **error)
+{
+ guint32 object_id;
+ gboolean multiple_values, fts;
+ gchar *table_name;
+ const gchar *field_name;
+ TrackerProperty **super_properties;
+ GValue gvalue = { 0 };
+ GValueArray *old_values;
+
+ /* also insert super property values */
+ super_properties = tracker_property_get_super_properties (property);
+ while (*super_properties) {
+ cache_set_metadata_decomposed (*super_properties, value, error);
+ if (*error) {
+ return;
+ }
+ super_properties++;
+ }
+
+ multiple_values = tracker_property_get_multiple_values (property);
+ if (multiple_values) {
+ table_name = g_strdup_printf ("%s_%s",
+ tracker_class_get_name (tracker_property_get_domain (property)),
+ tracker_property_get_name (property));
+ } else {
+ table_name = g_strdup (tracker_class_get_name (tracker_property_get_domain (property)));
+ }
+ field_name = tracker_property_get_name (property);
+
+ fts = tracker_property_get_fulltext_indexed (property);
+
+ /* read existing property values */
+ old_values = get_old_property_values (property, error);
+ if (*error) {
+ g_free (table_name);
+ return;
+ }
+
switch (tracker_property_get_data_type (property)) {
case TRACKER_PROPERTY_TYPE_STRING:
g_value_init (&gvalue, G_TYPE_STRING);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]