tracker r2952 - in trunk: . src/libtracker-data
- From: mottela svn gnome org
- To: svn-commits-list gnome org
- Subject: tracker r2952 - in trunk: . src/libtracker-data
- Date: Fri, 20 Feb 2009 17:49:37 +0000 (UTC)
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]