[tracker/journal: 4/6] libtracker-data: Handle tracker:journal ontology property



commit 22c59e7d3d02fb50fc1c56d3a9601e0cdb073cfe
Author: Jürg Billeter <j bitron ch>
Date:   Tue Feb 1 17:04:20 2011 +0100

    libtracker-data: Handle tracker:journal ontology property

 src/libtracker-data/tracker-data-manager.c |   28 ++++++++++++++++++++++++++--
 src/libtracker-data/tracker-property.c     |   27 +++++++++++++++++++++++++++
 src/libtracker-data/tracker-property.h     |    3 +++
 3 files changed, 56 insertions(+), 2 deletions(-)
---
diff --git a/src/libtracker-data/tracker-data-manager.c b/src/libtracker-data/tracker-data-manager.c
index 86e8c08..a92a594 100644
--- a/src/libtracker-data/tracker-data-manager.c
+++ b/src/libtracker-data/tracker-data-manager.c
@@ -808,6 +808,17 @@ tracker_data_ontology_load_statement (const gchar *ontology_path,
 		}
 
 		tracker_property_set_writeback (property, (strcmp (object, "true") == 0));
+	} else if (g_strcmp0 (predicate, TRACKER_PREFIX "journal") == 0) {
+		TrackerProperty *property;
+
+		property = tracker_ontologies_get_property_by_uri (subject);
+
+		if (property == NULL) {
+			g_critical ("%s: Unknown property %s", ontology_path, subject);
+			return;
+		}
+
+		tracker_property_set_journal (property, (strcmp (object, "true") == 0));
 	} else if (g_strcmp0 (predicate, RDFS_SUB_PROPERTY_OF) == 0) {
 		TrackerProperty *property, *super_property;
 		gboolean is_new;
@@ -2113,6 +2124,7 @@ db_get_static_data (TrackerDBInterface *iface)
 	                                              "\"tracker:writeback\", "
 	                                              "(SELECT 1 FROM \"rdfs:Resource_rdf:type\" WHERE ID = \"rdf:Property\".ID AND "
 	                                              "\"rdf:type\" = (SELECT ID FROM Resource WHERE Uri = '" NRL_INVERSE_FUNCTIONAL_PROPERTY "')), "
+	                                              "\"tracker:journal\" "
 	                                              "\"tracker:defaultValue\" "
 	                                              "FROM \"rdf:Property\" ORDER BY ID");
 
@@ -2128,7 +2140,7 @@ db_get_static_data (TrackerDBInterface *iface)
 			const gchar     *uri, *domain_uri, *range_uri, *secondary_index_uri, *default_value;
 			gboolean         multi_valued, indexed, fulltext_indexed, fulltext_no_limit;
 			gboolean         transient, is_inverse_functional_property;
-			gboolean         writeback;
+			gboolean         writeback, journal;
 			gint             id;
 
 			property = tracker_property_new (FALSE);
@@ -2213,7 +2225,18 @@ db_get_static_data (TrackerDBInterface *iface)
 				is_inverse_functional_property = FALSE;
 			}
 
-			default_value = tracker_db_cursor_get_string (cursor, 12, NULL);
+			/* tracker:journal column */
+			tracker_db_cursor_get_value (cursor, 12, &value);
+
+			if (G_VALUE_TYPE (&value) != 0) {
+				journal = (g_value_get_int64 (&value) == 1);
+				g_value_unset (&value);
+			} else {
+				/* NULL */
+				journal = TRUE;
+			}
+
+			default_value = tracker_db_cursor_get_string (cursor, 13, NULL);
 
 			tracker_property_set_is_new_domain_index (property, tracker_ontologies_get_class_by_uri (domain_uri), FALSE);
 			tracker_property_set_is_new (property, FALSE);
@@ -2225,6 +2248,7 @@ db_get_static_data (TrackerDBInterface *iface)
 			tracker_property_set_multiple_values (property, multi_valued);
 			tracker_property_set_indexed (property, indexed);
 			tracker_property_set_default_value (property, default_value);
+			tracker_property_set_journal (property, journal);
 
 			tracker_property_set_db_schema_changed (property, FALSE);
 			tracker_property_set_writeback (property, writeback);
diff --git a/src/libtracker-data/tracker-property.c b/src/libtracker-data/tracker-property.c
index 867a108..bdbff7a 100644
--- a/src/libtracker-data/tracker-property.c
+++ b/src/libtracker-data/tracker-property.c
@@ -66,6 +66,7 @@ struct _TrackerPropertyPrivate {
 	gboolean       writeback;
 	gchar         *default_value;
 	GPtrArray     *is_new_domain_index;
+	gboolean       journal;
 
 	GArray        *super_properties;
 	GArray        *domain_indexes;
@@ -136,6 +137,7 @@ tracker_property_init (TrackerProperty *property)
 	priv->weight = 1;
 	priv->transient = FALSE;
 	priv->multiple_values = TRUE;
+	priv->journal = TRUE;
 	priv->super_properties = g_array_new (TRUE, TRUE, sizeof (TrackerProperty *));
 	priv->domain_indexes = g_array_new (TRUE, TRUE, sizeof (TrackerClass *));
 
@@ -573,6 +575,18 @@ tracker_property_get_is_inverse_functional_property (TrackerProperty *property)
 	return priv->is_inverse_functional_property;
 }
 
+gboolean
+tracker_property_get_journal (TrackerProperty *property)
+{
+	TrackerPropertyPrivate *priv;
+
+	g_return_val_if_fail (TRACKER_IS_PROPERTY (property), FALSE);
+
+	priv = GET_PRIV (property);
+
+	return priv->journal;
+}
+
 TrackerProperty **
 tracker_property_get_super_properties (TrackerProperty *property)
 {
@@ -971,6 +985,19 @@ tracker_property_set_is_inverse_functional_property (TrackerProperty *property,
 }
 
 void
+tracker_property_set_journal (TrackerProperty *property,
+                              gboolean         value)
+{
+	TrackerPropertyPrivate *priv;
+
+	g_return_if_fail (TRACKER_IS_PROPERTY (property));
+
+	priv = GET_PRIV (property);
+
+	priv->journal = value;
+}
+
+void
 tracker_property_add_super_property (TrackerProperty *property,
                                      TrackerProperty *value)
 {
diff --git a/src/libtracker-data/tracker-property.h b/src/libtracker-data/tracker-property.h
index 3e7a89e..f612d5e 100644
--- a/src/libtracker-data/tracker-property.h
+++ b/src/libtracker-data/tracker-property.h
@@ -98,6 +98,7 @@ const gchar *       tracker_property_get_default_value       (TrackerProperty
 gboolean            tracker_property_get_db_schema_changed   (TrackerProperty      *property);
 gboolean            tracker_property_get_is_inverse_functional_property
                                                              (TrackerProperty      *property);
+gboolean            tracker_property_get_journal             (TrackerProperty      *property);
 TrackerProperty **  tracker_property_get_super_properties    (TrackerProperty      *property);
 void                tracker_property_set_uri                 (TrackerProperty      *property,
                                                               const gchar          *value);
@@ -142,6 +143,8 @@ void                tracker_property_set_db_schema_changed   (TrackerProperty
 void                tracker_property_set_is_inverse_functional_property
                                                              (TrackerProperty      *property,
                                                               gboolean              value);
+void                tracker_property_set_journal             (TrackerProperty      *property,
+                                                              gboolean              value);
 void                tracker_property_add_super_property    (TrackerProperty      *property,
                                                             TrackerProperty      *value);
 



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