[libgda] Updated API for GdaData.Object, ObjectSingleId, DbField. Fixes on samples and test.
- From: Daniel Espinosa Ortiz <despinosa src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [libgda] Updated API for GdaData.Object, ObjectSingleId, DbField. Fixes on samples and test.
- Date: Wed, 4 Jan 2012 20:48:07 +0000 (UTC)
commit 90c63ae5131c1c55a25d5db32cf9e0123a20643f
Author: Daniel Espinosa <despinosa src gnome org>
Date: Wed Jan 4 11:45:32 2012 -0600
Updated API for GdaData.Object, ObjectSingleId, DbField. Fixes on samples and test.
* Samples updated to new API
libgda/data/DataObject.vala | 14 +++++---
libgda/data/DataObjectSingleId.vala | 13 +++++++
libgda/data/DbField.vala | 2 +
libgda/data/Field.vala | 1 +
libgda/data/GdaData-5.0.gir | 65 +++++++++++++++++++++++++++++++---
libgda/data/GdaData-UML.gaphor | 28 +++++++-------
samples/vala/SampleDataObject.vala | 16 ++++----
tests/vala/CheckDataObject.vala | 14 ++++----
tests/vala/Makefile.am | 1 +
9 files changed, 114 insertions(+), 40 deletions(-)
---
diff --git a/libgda/data/DataObject.vala b/libgda/data/DataObject.vala
index 37ace8d..4ede3ff 100644
--- a/libgda/data/DataObject.vala
+++ b/libgda/data/DataObject.vala
@@ -18,12 +18,13 @@
*/
using Gda;
+using Gee;
namespace GdaData {
public abstract class Object<G> : GLib.Object {
- protected Gee.HashMap<string,Field<Value?>> _model;
+ protected HashMap<string,Field<G>> _model;
/**
* Derived classes must implement this property to set the table used to get data from.
*/
@@ -31,7 +32,7 @@ namespace GdaData {
/**
* Returns a Gda.DataModel with the data stored by this object.
*/
- public abstract DataModel record { get; }
+ public Collection<Field<G>> fields { owned get { return _model.values; } }
/**
* Set the connection to be used to get/set data.
*/
@@ -39,15 +40,16 @@ namespace GdaData {
/**
* Returns a GLib.Value containing the value stored in the given field.
*/
- public Value? get_value (string field)
+ public G get_value (string field)
throws Error
{
- return (this._model.get (field)).value;
+ var f = this._model.get (field);
+ return f.value;
}
/**
* Set the value to a field with the given @name.
*/
- public void set_value (string field, Value v)
+ public void set_value (string field, G v)
throws Error
{
var f = _model.get (field);
@@ -68,5 +70,7 @@ namespace GdaData {
* default value for each field is set.
*/
public abstract void append (out G id) throws Error;
+
+ public abstract string to_string ();
}
}
diff --git a/libgda/data/DataObjectSingleId.vala b/libgda/data/DataObjectSingleId.vala
index eb5f46c..ab2ea05 100644
--- a/libgda/data/DataObjectSingleId.vala
+++ b/libgda/data/DataObjectSingleId.vala
@@ -89,6 +89,7 @@ namespace GdaData {
var f_id = sql.add_id (this.field_id);
var e_id = sql.add_expr_value (null, this._id_value);
var c_id = sql.add_cond (SqlOperatorType.EQ, f_id, e_id, 0);
+ sql.set_where (c_id);
var i = this.connection.statement_execute_non_select (sql.get_statement (), null, null);
if (i != 1) {
throw new DbObjectError.APPEND ("Have been saved more or less rows than expected");
@@ -115,5 +116,17 @@ namespace GdaData {
{
set_id (this._id_value);
}
+ public override string to_string ()
+ {
+ string r = "";
+ foreach (Field<Value?> f in this.fields) {
+ r += "|" + f.name;
+ }
+
+ foreach (Field<Value?> f in this.fields) {
+ r += "|" + f.to_string ();
+ }
+ return r;
+ }
}
}
diff --git a/libgda/data/DbField.vala b/libgda/data/DbField.vala
index 4d6ed72..d2557f1 100644
--- a/libgda/data/DbField.vala
+++ b/libgda/data/DbField.vala
@@ -29,6 +29,8 @@ namespace GdaData
public abstract string column_name { get; construct; }
public abstract DbField.Attribute attributes { get; construct; }
+ public abstract string to_string ();
+
[Flags]
public enum Attribute {
NONE,
diff --git a/libgda/data/Field.vala b/libgda/data/Field.vala
index 3cda30e..f1b3b0c 100644
--- a/libgda/data/Field.vala
+++ b/libgda/data/Field.vala
@@ -47,6 +47,7 @@ namespace GdaData
_attributes = value;
}
}
+ public string to_string () { return (string) val; }
public Field (string col_name, DbField.Attribute attr)
{
GLib.Object (column_name: col_name, attributes: attr);
diff --git a/libgda/data/GdaData-5.0.gir b/libgda/data/GdaData-5.0.gir
index 09bd5be..2f2b22a 100644
--- a/libgda/data/GdaData-5.0.gir
+++ b/libgda/data/GdaData-5.0.gir
@@ -27,7 +27,7 @@
<type name="Gee.HashMap" c:type="GeeHashMap*">
<type name="utf8" c:type="gchar*"/>
<type name="GdaData.Field" c:type="GdaDataField*">
- <type name="GObject.Value" c:type="GValue*"/>
+ <type name="gpointer" c:type="gpointer"/>
</type>
</type>
</field>
@@ -38,7 +38,7 @@
</parameter>
</parameters>
<return-value transfer-ownership="full" allow-none="1">
- <type name="GObject.Value" c:type="GValue*"/>
+ <type name="gpointer" c:type="gpointer"/>
</return-value>
</method>
<method name="set_value" c:identifier="gda_data_object_set_value" throws="1">
@@ -46,8 +46,8 @@
<parameter name="field" transfer-ownership="none">
<type name="utf8" c:type="const gchar*"/>
</parameter>
- <parameter name="v" transfer-ownership="none">
- <type name="GObject.Value" c:type="GValue"/>
+ <parameter name="v" transfer-ownership="none" allow-none="1">
+ <type name="gpointer" c:type="gpointer"/>
</parameter>
</parameters>
<return-value transfer-ownership="full">
@@ -94,11 +94,25 @@
<type name="none"/>
</return-value>
</virtual-method>
+ <method name="to_string" c:identifier="gda_data_object_to_string">
+ <return-value transfer-ownership="full">
+ <type name="utf8" c:type="gchar*"/>
+ </return-value>
+ </method>
+ <virtual-method name="to_string" invoker="to_string">
+ <return-value transfer-ownership="full">
+ <type name="utf8" c:type="gchar*"/>
+ </return-value>
+ </virtual-method>
<property name="table">
<type name="utf8" c:type="gchar*"/>
</property>
- <property name="record">
- <type name="Gda.DataModel" c:type="GdaDataModel*"/>
+ <property name="fields">
+ <type name="Gee.Collection" c:type="GeeCollection*">
+ <type name="GdaData.Field" c:type="GdaDataField*">
+ <type name="gpointer" c:type="gpointer"/>
+ </type>
+ </type>
</property>
<property name="connection" writable="1">
<type name="Gda.Connection" c:type="GdaConnection*"/>
@@ -147,6 +161,18 @@
</return-value>
</callback>
</field>
+ <field name="to_string">
+ <callback name="to_string" c:type="to_string">
+ <parameters>
+ <parameter name="self" transfer-ownership="none">
+ <type name="GdaData.Object" c:type="GdaDataObject*"/>
+ </parameter>
+ </parameters>
+ <return-value transfer-ownership="full">
+ <type name="utf8" c:type="gchar*"/>
+ </return-value>
+ </callback>
+ </field>
</record>
<record name="ObjectPrivate" c:type="GdaDataObjectPrivate" disguised="1"/>
<class name="ObjectSingleId" c:type="GdaDataObjectSingleId" glib:type-name="GdaDataObjectSingleId" glib:get-type="gda_data_object_single_id_get_type" glib:type-struct="ObjectSingleIdClass" parent="GdaData.Object" abstract="1">
@@ -201,6 +227,11 @@
<field name="priv">
<type name="FieldPrivate" c:type="GdaDataFieldPrivate*"/>
</field>
+ <method name="to_string" c:identifier="gda_data_field_to_string">
+ <return-value transfer-ownership="full">
+ <type name="utf8" c:type="gchar*"/>
+ </return-value>
+ </method>
<constructor name="new" c:identifier="gda_data_field_new">
<parameters>
<parameter name="col_name" transfer-ownership="none">
@@ -523,6 +554,16 @@
</record>
<interface name="DbField" c:type="GdaDataDbField" glib:type-name="GdaDataDbField" glib:get-type="gda_data_db_field_get_type" glib:type-struct="DbFieldIface">
<prerequisite name="GObject.Object"/>
+ <method name="to_string" c:identifier="gda_data_db_field_to_string">
+ <return-value transfer-ownership="full">
+ <type name="utf8" c:type="gchar*"/>
+ </return-value>
+ </method>
+ <virtual-method name="to_string" invoker="to_string">
+ <return-value transfer-ownership="full">
+ <type name="utf8" c:type="gchar*"/>
+ </return-value>
+ </virtual-method>
<property name="value" writable="1">
<type name="gpointer" c:type="gpointer"/>
</property>
@@ -540,6 +581,18 @@
<field name="parent_iface">
<type name="GObject.TypeInterface" c:type="GTypeInterface"/>
</field>
+ <field name="to_string">
+ <callback name="to_string" c:type="to_string">
+ <parameters>
+ <parameter name="self" transfer-ownership="none">
+ <type name="GdaData.DbField" c:type="GdaDataDbField*"/>
+ </parameter>
+ </parameters>
+ <return-value transfer-ownership="full">
+ <type name="utf8" c:type="gchar*"/>
+ </return-value>
+ </callback>
+ </field>
</record>
<bitfield name="DbFieldAttribute" c:type="GdaDataDbFieldAttribute" glib:type-name="GdaDataDbFieldAttribute" glib:get-type="gda_data_db_field_attribute_get_type">
<member name="none" c:identifier="GDA_DATA_DB_FIELD_ATTRIBUTE_NONE" value="1"/>
diff --git a/libgda/data/GdaData-UML.gaphor b/libgda/data/GdaData-UML.gaphor
index e8cc155..501328b 100644
--- a/libgda/data/GdaData-UML.gaphor
+++ b/libgda/data/GdaData-UML.gaphor
@@ -399,7 +399,7 @@
</reflist>
</generalization>
<name>
-<val><![CDATA[MultipleId]]></val>
+<val><![CDATA[ObjectMultipleId]]></val>
</name>
<package>
<ref refid="636fb4ee-362f-11e1-a9fe-0026b913ee39"/>
@@ -596,7 +596,7 @@
</reflist>
</generalization>
<name>
-<val><![CDATA[SingleId]]></val>
+<val><![CDATA[ObjectSingleId]]></val>
</name>
<package>
<ref refid="636fb4ee-362f-11e1-a9fe-0026b913ee39"/>
@@ -609,7 +609,7 @@
</Class>
<Class id="916d80b8-3631-11e1-a9fe-0026b913ee39">
<name>
-<val><![CDATA[Record]]></val>
+<val><![CDATA[GdaData.Object]]></val>
</name>
<package>
<ref refid="636fb4ee-362f-11e1-a9fe-0026b913ee39"/>
@@ -674,10 +674,10 @@
<val>1</val>
</drawing-style>
<matrix>
-<val>(1.0, 0.0, 0.0, 1.0, 225.0, 261.0)</val>
+<val>(1.0, 0.0, 0.0, 1.0, 219.0, 261.0)</val>
</matrix>
<width>
-<val>100.0</val>
+<val>113.0</val>
</width>
<height>
<val>51.0</val>
@@ -700,13 +700,13 @@
<val>1</val>
</drawing-style>
<matrix>
-<val>(1.0, 0.0, 0.0, 1.0, 303.0, 112.0)</val>
+<val>(1.0, 0.0, 0.0, 1.0, 299.0, 111.0)</val>
</matrix>
<width>
-<val>100.0</val>
+<val>110.0</val>
</width>
<height>
-<val>50.0</val>
+<val>51.0</val>
</height>
<subject>
<ref refid="916d80b8-3631-11e1-a9fe-0026b913ee39"/>
@@ -726,10 +726,10 @@
<val>1</val>
</drawing-style>
<matrix>
-<val>(1.0, 0.0, 0.0, 1.0, 382.0, 261.0)</val>
+<val>(1.0, 0.0, 0.0, 1.0, 381.0, 259.0)</val>
</matrix>
<width>
-<val>100.0</val>
+<val>102.0</val>
</width>
<height>
<val>51.0</val>
@@ -749,7 +749,7 @@
<val>0</val>
</show_stereotypes_attrs>
<matrix>
-<val>(1.0, 0.0, 0.0, 1.0, 346.0, 162.0)</val>
+<val>(1.0, 0.0, 0.0, 1.0, 346.3, 162.0)</val>
</matrix>
<orthogonal>
<val>0</val>
@@ -758,7 +758,7 @@
<val>0</val>
</horizontal>
<points>
-<val>[(0.0, 0.0), (0.0, 67.0), (-71.0, 66.0), (-71.0, 99.0)]</val>
+<val>[(0.0, 0.0), (-0.30000000000001137, 67.0), (-71.30000000000001, 66.0), (-70.30000000000001, 99.0)]</val>
</points>
<head-connection>
<ref refid="1e9b8adc-3643-11e1-a9fe-0026b913ee39"/>
@@ -775,7 +775,7 @@
<val>0</val>
</show_stereotypes_attrs>
<matrix>
-<val>(1.0, 0.0, 0.0, 1.0, 346.0, 162.0)</val>
+<val>(1.0, 0.0, 0.0, 1.0, 346.3, 162.0)</val>
</matrix>
<orthogonal>
<val>0</val>
@@ -784,7 +784,7 @@
<val>0</val>
</horizontal>
<points>
-<val>[(0.0, 0.0), (0.0, 66.0), (88.0, 67.0), (88.0, 99.0)]</val>
+<val>[(0.0, 0.0), (-0.30000000000001137, 66.0), (87.69999999999999, 67.0), (87.74000000000001, 97.0)]</val>
</points>
<head-connection>
<ref refid="1e9b8adc-3643-11e1-a9fe-0026b913ee39"/>
diff --git a/samples/vala/SampleDataObject.vala b/samples/vala/SampleDataObject.vala
index afb60f0..cacbcb4 100644
--- a/samples/vala/SampleDataObject.vala
+++ b/samples/vala/SampleDataObject.vala
@@ -22,7 +22,7 @@ using GdaData;
namespace Sample {
- class Record : GdaData.ObjectSingleId<string> {
+ class Record : GdaData.ObjectSingleId {
private static string dbtable = "user";
/**
@@ -51,7 +51,7 @@ namespace Sample {
* get_value(string) function.
*/
public string functions {
- get {
+ owned get {
return (string) this.get_value ("functions");
}
set {
@@ -63,7 +63,7 @@ namespace Sample {
}
public string name {
- get {
+ owned get {
return (string) this.get_value ("name");
}
@@ -104,7 +104,7 @@ namespace Sample {
try { rcd.set_id (name); }
catch (Error e) { stdout.printf ("ERROR: Record no opened\n" + e.message + "\n"); }
- stdout.printf ("Initial Values for: " + rcd.name + "\n" + rcd.record.dump_as_string () + "\n");
+ stdout.printf ("Initial Values for: " + rcd.name + "\n" + rcd.to_string () + "\n");
stdout.printf ("Modifying user: " + rcd.name + "\n");
// Changing functions
@@ -121,7 +121,7 @@ namespace Sample {
try { rcd.save (); }
catch (Error e) { stdout.printf ("ERROR: Can't save modifycations'\n" + e.message + "\n"); }
- stdout.printf ("Modified Values: " + rcd.name + "\n" + rcd.record.dump_as_string () + "\n");
+ stdout.printf ("Modified Values: " + rcd.name + "\n" + rcd.to_string () + "\n");
}
public void simulate_external_modifications ()
@@ -131,10 +131,10 @@ namespace Sample {
var rcd = new Record ();
rcd.connection = this.connection;
rcd.set_id ("Jane Castle PhD.");
- stdout.printf ("Initial Values for: " + rcd.name + "\n" + rcd.record.dump_as_string () + "\n");
+ stdout.printf ("Initial Values for: " + rcd.name + "\n" + rcd.to_string () + "\n");
this.connection.execute_non_select_command("UPDATE user SET functions = \"Secretary\" WHERE name = \"Jane Castle PhD.\"");
rcd.update ();
- stdout.printf ("Updated Values for: " + rcd.name + "\n" + rcd.record.dump_as_string () + "\n");
+ stdout.printf ("Updated Values for: " + rcd.name + "\n" + rcd.to_string () + "\n");
}
public void append_objects (string name, string functions)
@@ -144,7 +144,7 @@ namespace Sample {
var ob = new Record ();
ob.connection = this.connection;
ob.set_id ("Jane Castle PhD.");
- string id;
+ Value id;
ob.append (out id);
var m = this.connection.execute_select_command ("SELECT * FROM user");
stdout.printf ("Appended Values:\n" + m.dump_as_string () + "\n");
diff --git a/tests/vala/CheckDataObject.vala b/tests/vala/CheckDataObject.vala
index feca886..e7a1067 100644
--- a/tests/vala/CheckDataObject.vala
+++ b/tests/vala/CheckDataObject.vala
@@ -21,7 +21,7 @@ using Gda;
using GdaData;
namespace Check {
- class Tests : GdaData.ObjectSingleId<int> {
+ class Tests : GdaData.ObjectSingleId {
private static string t = "user";
public override string table {
get { return this.t; }
@@ -70,7 +70,7 @@ namespace Check {
}
stdout.printf("DataObject points to, in table "+ this.table + ":\n", this.table);
- stdout.printf("%s\n", this.record.dump_as_string());
+ stdout.printf("%s\n", this.to_string());
stdout.printf("Getting ID value...\n");
var i = (int) this.get_id ();
@@ -95,13 +95,13 @@ namespace Check {
Value n = "Daniel Espinosa";
this.set_value ("name", n);
stdout.printf("DataObject points to in memory modified value, in table '%s':\n", this.table);
- stdout.printf("%s\n", this.record.dump_as_string());
+ stdout.printf("%s\n", this.to_string());
stdout.printf("Saving changes...\n");
try {
this.save();
stdout.printf("DataObject points to modified value, in table '%s':\n", this.table);
- stdout.printf("%s\n", this.record.dump_as_string());
+ stdout.printf("%s\n", this.to_string());
}
catch (Error e) {
fails++;
@@ -120,7 +120,7 @@ namespace Check {
try {
this.update();
stdout.printf("DataObject points to actual stored values, in table '%s':\n", this.table);
- stdout.printf("%s\n", this.record.dump_as_string());
+ stdout.printf("%s\n", this.to_string());
}
catch (Error e) {
fails++;
@@ -133,7 +133,7 @@ namespace Check {
try {
this.update();
stdout.printf("DataObject points to actual stored values, in table '%s':\n", this.table);
- stdout.printf("%s\n", this.record.dump_as_string());
+ stdout.printf("%s\n", this.to_string());
}
catch (Error e) {
fails++;
@@ -144,7 +144,7 @@ namespace Check {
try {
this.set_id (2);
stdout.printf("DataObject points to actual stored values, in table '%s':\n", this.table);
- stdout.printf("%s\n", this.record.dump_as_string());
+ stdout.printf("%s\n", this.to_string());
}
catch (Error e) {
fails++;
diff --git a/tests/vala/Makefile.am b/tests/vala/Makefile.am
index 4cbfdc9..1d136f4 100644
--- a/tests/vala/Makefile.am
+++ b/tests/vala/Makefile.am
@@ -3,6 +3,7 @@ NULL =
AM_CPPFLAGS = \
-I$(top_srcdir) \
-I$(top_srcdir)/libgda \
+ -I$(top_srcdir)/libgda/data \
-I$(top_builddir) \
$(COREDEPS_CFLAGS) \
$(COREDEPS_WFLAGS) \
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]