[tracker/maxcardinality-change-support] Fix it up so that it works .. finally. Ready for squashing now :)



commit de3fac6d66dca18ddf73a252e39eb29e1217001e
Author: Philip Van Hoof <philip codeminded be>
Date:   Fri Sep 26 16:49:54 2014 +0200

    Fix it up so that it works .. finally. Ready for squashing now :)

 src/libtracker-data/tracker-data-manager.c |   27 +++++++++++++++++----------
 src/libtracker-data/tracker-property.c     |   27 +++++++++++++++++++++++++++
 src/libtracker-data/tracker-property.h     |    3 +++
 3 files changed, 47 insertions(+), 10 deletions(-)
---
diff --git a/src/libtracker-data/tracker-data-manager.c b/src/libtracker-data/tracker-data-manager.c
index 060ab87..e607b5f 100644
--- a/src/libtracker-data/tracker-data-manager.c
+++ b/src/libtracker-data/tracker-data-manager.c
@@ -656,6 +656,7 @@ tracker_data_ontology_load_statement (const gchar *ontology_path,
                                        tracker_property_set_writeback (property, FALSE);
                                        tracker_property_set_is_inverse_functional_property (property, FALSE);
                                        tracker_property_set_default_value (property, NULL);
+                                       tracker_property_set_multiple_values (property, TRUE);
                                }
                                return;
                        }
@@ -668,6 +669,7 @@ tracker_data_ontology_load_statement (const gchar *ontology_path,
                        tracker_property_set_is_new (property, in_update);
                        tracker_property_set_uri (property, subject);
                        tracker_property_set_id (property, subject_id);
+                       tracker_property_set_multiple_values (property, TRUE);
                        tracker_ontologies_add_property (property);
                        tracker_ontologies_add_id_uri_pair (subject_id, subject);
 
@@ -1065,6 +1067,10 @@ tracker_data_ontology_load_statement (const gchar *ontology_path,
                        return;
                }
 
+if (strstr(tracker_property_get_name(property), "hasThing") != NULL) {
+printf ("breakpoint\n");
+}
+
                if (atoi (object) == 1) {
                        tracker_property_set_multiple_values (property, FALSE);
                        tracker_property_set_last_multiple_values (property, FALSE);
@@ -1363,14 +1369,14 @@ check_for_max_cardinality_change (TrackerProperty  *property,
        gchar *query = NULL;
        TrackerDBCursor *cursor;
        gboolean changed = TRUE;
-       gboolean last_multiple_values = tracker_property_get_last_multiple_values (property);
+       gboolean orig_multiple_values = tracker_property_get_orig_multiple_values (property);
        gboolean new_multiple_values = tracker_property_get_multiple_values (property);
        GError *n_error = NULL;
        const gchar *ontology_path = "Unknown";
 
        if (tracker_property_get_is_new (property) == FALSE &&
-           (last_multiple_values != new_multiple_values &&
-                last_multiple_values == FALSE)) {
+           (orig_multiple_values != new_multiple_values &&
+                orig_multiple_values == TRUE)) {
                const gchar *ontology_path = "Unknown";
                const gchar *subject = tracker_property_get_uri (property);
 
@@ -1383,8 +1389,8 @@ check_for_max_cardinality_change (TrackerProperty  *property,
                        return;
                }
        } else if (tracker_property_get_is_new (property) == FALSE &&
-                  last_multiple_values != new_multiple_values &&
-                  last_multiple_values == TRUE) {
+                  orig_multiple_values != new_multiple_values &&
+                  orig_multiple_values == FALSE) {
                const gchar *subject = tracker_property_get_uri (property);
 
                if (update_property_value (ontology_path,
@@ -2345,6 +2351,11 @@ db_get_static_data (TrackerDBInterface  *iface,
                        domain_uri = tracker_db_cursor_get_string (cursor, 2, NULL);
                        range_uri = tracker_db_cursor_get_string (cursor, 3, NULL);
 
+if (strstr(uri, "hasThing") != NULL) {
+printf ("breakpoint\n");
+}
+
+
                        tracker_db_cursor_get_value (cursor, 4, &value);
 
                        if (G_VALUE_TYPE (&value) != 0) {
@@ -2432,6 +2443,7 @@ db_get_static_data (TrackerDBInterface  *iface,
                        tracker_property_set_domain (property, tracker_ontologies_get_class_by_uri 
(domain_uri));
                        tracker_property_set_range (property, tracker_ontologies_get_class_by_uri 
(range_uri));
                        tracker_property_set_multiple_values (property, multi_valued);
+                       tracker_property_set_orig_multiple_values (property, multi_valued);
                        tracker_property_set_indexed (property, indexed);
                        tracker_property_set_default_value (property, default_value);
                        tracker_property_set_force_journal (property, force_journal);
@@ -2593,11 +2605,6 @@ create_decomposed_metadata_property_table (TrackerDBInterface *iface,
                break;
        }
 
-if (strstr(tracker_property_get_name (property), "hasThing") != NULL)
-{
-       printf("breakpoint\n");
-}
-
        if (!in_update || (in_update && (tracker_property_get_is_new (property) ||
                                         tracker_property_get_is_new_domain_index (property, service) ||
                                         tracker_property_get_cardinality_changed (property) ||
diff --git a/src/libtracker-data/tracker-property.c b/src/libtracker-data/tracker-property.c
index 91b6d93..f9b05a0 100644
--- a/src/libtracker-data/tracker-property.c
+++ b/src/libtracker-data/tracker-property.c
@@ -71,6 +71,7 @@ struct _TrackerPropertyPrivate {
        GArray        *domain_indexes;
        GArray        *last_super_properties;
        gboolean       cardinality_changed;
+       gboolean       orig_multiple_values;
 };
 
 static void property_finalize     (GObject      *object);
@@ -602,6 +603,18 @@ tracker_property_get_last_multiple_values (TrackerProperty *property)
 }
 
 gboolean
+tracker_property_get_orig_multiple_values (TrackerProperty *property)
+{
+       TrackerPropertyPrivate *priv;
+
+       g_return_val_if_fail (TRACKER_IS_PROPERTY (property), FALSE);
+
+       priv = GET_PRIV (property);
+
+       return priv->orig_multiple_values;
+}
+
+gboolean
 tracker_property_get_is_inverse_functional_property (TrackerProperty *property)
 {
        TrackerPropertyPrivate *priv;
@@ -1025,6 +1038,20 @@ tracker_property_set_last_multiple_values (TrackerProperty *property,
 }
 
 void
+tracker_property_set_orig_multiple_values (TrackerProperty *property,
+                                           gboolean         value)
+{
+       TrackerPropertyPrivate *priv;
+
+       g_return_if_fail (TRACKER_IS_PROPERTY (property));
+
+       priv = GET_PRIV (property);
+
+       priv->orig_multiple_values = value;
+}
+
+
+void
 tracker_property_set_is_inverse_functional_property (TrackerProperty *property,
                                                      gboolean         value)
 {
diff --git a/src/libtracker-data/tracker-property.h b/src/libtracker-data/tracker-property.h
index 5618a12..328d130 100644
--- a/src/libtracker-data/tracker-property.h
+++ b/src/libtracker-data/tracker-property.h
@@ -88,6 +88,7 @@ TrackerProperty *   tracker_property_get_secondary_index     (TrackerProperty
 gboolean            tracker_property_get_fulltext_indexed    (TrackerProperty      *property);
 gboolean            tracker_property_get_multiple_values     (TrackerProperty      *property);
 gboolean            tracker_property_get_last_multiple_values(TrackerProperty      *property);
+gboolean            tracker_property_get_orig_multiple_values(TrackerProperty      *property);
 gboolean            tracker_property_get_transient           (TrackerProperty      *property);
 gboolean            tracker_property_get_is_new              (TrackerProperty      *property);
 gboolean            tracker_property_get_is_new_domain_index (TrackerProperty      *property,
@@ -125,6 +126,8 @@ void                tracker_property_set_multiple_values     (TrackerProperty
                                                               gboolean              value);
 void                tracker_property_set_last_multiple_values(TrackerProperty      *property,
                                                               gboolean              value);
+void                tracker_property_set_orig_multiple_values(TrackerProperty      *property,
+                                                              gboolean              value);
 void                tracker_property_set_transient           (TrackerProperty      *property,
                                                               gboolean              value);
 void                tracker_property_set_is_new              (TrackerProperty      *property,


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