tracker r2952 - in trunk: . src/libtracker-data



Author: mottela
Date: Fri Feb 20 17:49:37 2009
New Revision: 2952
URL: http://svn.gnome.org/viewvc/tracker?rev=2952&view=rev

Log:
Added support for order fields in field-data

Modified:
   trunk/ChangeLog
   trunk/src/libtracker-data/tracker-data-schema.c
   trunk/src/libtracker-data/tracker-field-data.c
   trunk/src/libtracker-data/tracker-field-data.h

Modified: trunk/src/libtracker-data/tracker-data-schema.c
==============================================================================
--- trunk/src/libtracker-data/tracker-data-schema.c	(original)
+++ trunk/src/libtracker-data/tracker-data-schema.c	Fri Feb 20 17:49:37 2009
@@ -221,6 +221,7 @@
 		const gchar *table_name;
 		gchar	    *this_field_name;
 		gchar	    *where_field;
+		gchar       *order_field;
 
 		field_data = g_object_new (TRACKER_TYPE_FIELD_DATA,
 					   "is-select", is_select,
@@ -273,6 +274,18 @@
 		}
 
 		tracker_field_data_set_where_field (field_data, where_field);
+
+		if ((tracker_field_get_data_type (def) == TRACKER_FIELD_TYPE_DOUBLE) ||
+		    (tracker_field_get_data_type (def) == TRACKER_FIELD_TYPE_INDEX)  ||
+		    (tracker_field_get_data_type (def) == TRACKER_FIELD_TYPE_STRING)) {
+			order_field = g_strdup_printf ("M%d.MetaDataCollation", field_count);
+			tracker_field_data_set_needs_join (field_data, TRUE);			
+		} else {
+			order_field = g_strdup_printf ("M%d.MetaDataValue", field_count);
+		}
+		
+		tracker_field_data_set_order_field (field_data, order_field);
+		
 		tracker_field_data_set_needs_null (field_data, FALSE);
 		g_free (where_field);
 		g_free (alias);

Modified: trunk/src/libtracker-data/tracker-field-data.c
==============================================================================
--- trunk/src/libtracker-data/tracker-field-data.c	(original)
+++ trunk/src/libtracker-data/tracker-field-data.c	Fri Feb 20 17:49:37 2009
@@ -38,6 +38,7 @@
 
 	gchar		 *select_field;
 	gchar		 *where_field;
+	gchar            *order_field;
 	gchar		 *id_field;
 
 	TrackerFieldType  data_type;
@@ -66,6 +67,7 @@
 	PROP_FIELD_NAME,
 	PROP_SELECT_FIELD,
 	PROP_WHERE_FIELD,
+	PROP_ORDER_FIELD,
 	PROP_ID_FIELD,
 	PROP_DATA_TYPE,
 	PROP_MULTIPLE_VALUES,
@@ -122,6 +124,13 @@
 							      NULL,
 							      G_PARAM_READWRITE));
 	g_object_class_install_property (object_class,
+					 PROP_ORDER_FIELD,
+					 g_param_spec_string ("order-field",
+							      "Order field",
+							      "Order field",
+							      NULL,
+							      G_PARAM_READWRITE));
+	g_object_class_install_property (object_class,
 					 PROP_ID_FIELD,
 					 g_param_spec_string ("id-field",
 							      "ID field",
@@ -193,6 +202,7 @@
 
 	g_free (priv->select_field);
 	g_free (priv->where_field);
+	g_free (priv->order_field);
 	g_free (priv->id_field);
 
 	(G_OBJECT_CLASS (tracker_field_data_parent_class)->finalize) (object);
@@ -223,6 +233,8 @@
 		break;
 	case PROP_WHERE_FIELD:
 		g_value_set_string (value, priv->where_field);
+	case PROP_ORDER_FIELD:
+		g_value_set_string (value, priv->order_field);
 		break;
 	case PROP_ID_FIELD:
 		g_value_set_string (value, priv->id_field);
@@ -278,6 +290,10 @@
 		tracker_field_data_set_where_field (TRACKER_FIELD_DATA (object),
 						    g_value_get_string (value));
 		break;
+	case PROP_ORDER_FIELD:
+		tracker_field_data_set_order_field (TRACKER_FIELD_DATA (object),
+						    g_value_get_string (value));
+		break;
 	case PROP_ID_FIELD:
 		tracker_field_data_set_id_field (TRACKER_FIELD_DATA (object),
 						 g_value_get_string (value));
@@ -383,6 +399,18 @@
 }
 
 const gchar *
+tracker_field_data_get_order_field (TrackerFieldData *field_data)
+{
+	TrackerFieldDataPriv *priv;
+
+	g_return_val_if_fail (TRACKER_IS_FIELD_DATA (field_data), NULL);
+
+	priv = GET_PRIV (field_data);
+
+	return priv->order_field;
+}
+
+const gchar *
 tracker_field_data_get_id_field (TrackerFieldData *field_data)
 {
 	TrackerFieldDataPriv *priv;
@@ -573,6 +601,27 @@
 }
 
 void
+tracker_field_data_set_order_field (TrackerFieldData *field_data,
+				    const gchar      *value)
+{
+	TrackerFieldDataPriv *priv;
+
+	g_return_if_fail (TRACKER_IS_FIELD_DATA (field_data));
+
+	priv = GET_PRIV (field_data);
+
+	g_free (priv->order_field);
+
+	if (value) {
+		priv->order_field = g_strdup (value);
+	} else {
+		priv->order_field = NULL;
+	}
+
+	g_object_notify (G_OBJECT (field_data), "order-field");
+}
+
+void
 tracker_field_data_set_id_field (TrackerFieldData *field_data,
 				 const gchar	  *value)
 {

Modified: trunk/src/libtracker-data/tracker-field-data.h
==============================================================================
--- trunk/src/libtracker-data/tracker-field-data.h	(original)
+++ trunk/src/libtracker-data/tracker-field-data.h	Fri Feb 20 17:49:37 2009
@@ -55,6 +55,7 @@
 const gchar *	  tracker_field_data_get_field_name	 (TrackerFieldData *field_data);
 const gchar *	  tracker_field_data_get_select_field	 (TrackerFieldData *field_data);
 const gchar *	  tracker_field_data_get_where_field	 (TrackerFieldData *field_data);
+const gchar *     tracker_field_data_get_order_field     (TrackerFieldData *field_data);
 const gchar *	  tracker_field_data_get_id_field	 (TrackerFieldData *field_data);
 TrackerFieldType  tracker_field_data_get_data_type	 (TrackerFieldData *field_data);
 gboolean	  tracker_field_data_get_multiple_values (TrackerFieldData *field_data);
@@ -73,6 +74,8 @@
 							  const gchar	   *value);
 void		  tracker_field_data_set_where_field	 (TrackerFieldData *field_data,
 							  const gchar	   *value);
+void		  tracker_field_data_set_order_field	 (TrackerFieldData *field_data,
+							  const gchar	   *value);
 void		  tracker_field_data_set_id_field	 (TrackerFieldData *field_data,
 							  const gchar	   *value);
 void		  tracker_field_data_set_data_type	 (TrackerFieldData *field_data,



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