[libgda] Correctly name GdaHolder in a GdaDataModelIter, fixes bug #601333



commit d17fa66f93e7e6dae427fb87f88519d6dd4ba9a3
Author: Vivien Malerba <malerba gnome-db org>
Date:   Thu Nov 12 20:49:41 2009 +0100

    Correctly name GdaHolder in a GdaDataModelIter, fixes bug #601333
    
    fixes a bug which has been introduced with commit
    bbd8af19795aaa610301e25dda601a92dd124f83

 libgda/gda-data-model-iter.c     |   34 ++++++++++++++++++++++++++++++----
 tests/data-models/check_pmodel.c |    2 +-
 2 files changed, 31 insertions(+), 5 deletions(-)
---
diff --git a/libgda/gda-data-model-iter.c b/libgda/gda-data-model-iter.c
index 989923a..c699e02 100644
--- a/libgda/gda-data-model-iter.c
+++ b/libgda/gda-data-model-iter.c
@@ -436,11 +436,37 @@ gda_data_model_iter_set_property (GObject *object,
 					g_free (str);
 				}
 				else {
-					gchar *tmp = g_strdup_printf ("col%d", col);
-					g_object_set (G_OBJECT (param), "id", tmp, NULL);
-					g_free (tmp);
-					
 					const gchar *cstr;
+					gchar *tmp;
+
+					/* ID attribute */
+					cstr = gda_column_get_description (column);
+					if (!cstr)
+						cstr = gda_column_get_name (column);
+					if (cstr)
+						tmp = (gchar *) cstr;
+					else
+						tmp = g_strdup_printf ("col%d", col);
+
+					if (gda_set_get_holder ((GdaSet *) iter, tmp)) {
+						gint e;
+						for (e = 1; ; e++) {
+							gchar *tmp2 = g_strdup_printf ("%s_%d", tmp, e);
+							if (! gda_set_get_holder ((GdaSet *) iter, tmp2)) {
+								g_object_set (G_OBJECT (param), "id", tmp2, NULL);
+								g_free (tmp2);
+								break;
+							}
+							g_free (tmp2);
+						}
+					}
+					else
+						g_object_set (G_OBJECT (param), "id", tmp, NULL);
+
+					if (!cstr)
+						g_free (tmp);
+
+					/* other attributes */
 					cstr = gda_column_get_description (column);
 					if (cstr)
 						g_object_set (G_OBJECT (param), "description", cstr, NULL);
diff --git a/tests/data-models/check_pmodel.c b/tests/data-models/check_pmodel.c
index febbc4c..02f780a 100644
--- a/tests/data-models/check_pmodel.c
+++ b/tests/data-models/check_pmodel.c
@@ -1293,7 +1293,7 @@ test12 (GdaConnection *cnc)
 	}
 
 	g_value_set_string ((value = gda_value_new (G_TYPE_STRING)), "Nick");
-	if (! gda_set_set_holder_value (GDA_SET (iter), &error, "col1", "Nick")) {
+	if (! gda_set_set_holder_value (GDA_SET (iter), &error, "name", "Nick")) {
 		nfailed++;
 #ifdef CHECK_EXTRA_INFO
 		g_print ("GdaDataModelIter value set failed: %s\n",



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