[libgda] Fixes on interfaces and implementation for Gee Collection implementations
- From: Daniel Espinosa Ortiz <despinosa src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [libgda] Fixes on interfaces and implementation for Gee Collection implementations
- Date: Sun, 8 Jan 2012 04:19:59 +0000 (UTC)
commit ab0c2e3bf5523f440261bebda0bea9103b4dc2b6
Author: Daniel Espinosa <despinosa src gnome org>
Date: Sat Jan 7 19:47:25 2012 -0600
Fixes on interfaces and implementation for Gee Collection implementations
libgda/data/DataBase.vala | 19 +-
libgda/data/DataModelIterator.vala | 5 +-
libgda/data/DbCollection.vala | 4 +-
libgda/data/DbField.vala | 2 +-
libgda/data/DbObject.vala | 6 +-
libgda/data/DbRecord.vala | 14 +-
libgda/data/DbSchema.vala | 4 +-
libgda/data/DbTable.vala | 12 +-
libgda/data/Field.vala | 8 +-
libgda/data/FieldInfo.vala | 8 +-
libgda/data/GdaData-5.0.gir | 708 +++++++++++++++++++++---------------
libgda/data/Makefile.am | 10 +-
libgda/data/Record.vala | 103 +++---
libgda/data/Schema.vala | 19 +-
libgda/data/Table.vala | 41 ++-
tests/vala/CheckDataObject.vala | 12 +-
16 files changed, 568 insertions(+), 407 deletions(-)
---
diff --git a/libgda/data/DataBase.vala b/libgda/data/DataBase.vala
index b173de4..27087ab 100644
--- a/libgda/data/DataBase.vala
+++ b/libgda/data/DataBase.vala
@@ -22,28 +22,29 @@ using Gda;
namespace GdaData
{
- public class DataBase : Object
+ public class DataBase<G> : Object, DbObject, DbNamedObject, DbCollection<G>
{
- public HashMap<string,DbSchema> schemas_container;
+ public HashMap<string,DbSchema<G>> _schemas = new HashMap<string,DbSchema<G>> ();
// DbObject Interface
public Connection connection { get; set; }
public void update () throws Error
{
connection.update_meta_store (null);
var store = connection.get_meta_store ();
- var mstruct = Gda.MetaStruct.new (store, Gda.MetaStructFeature.ALL);
- var msch = store.extract ("SELECT * FROM _schemata");
- int c, r;
+ var msch = store.extract_v ("SELECT * FROM _schemata", null);
+ int r;
for ( r = 0; r < msch.get_n_rows (); r++) {
- var schema = new Schema ();
+ var schema = new Schema<G> ();
schema.connection = this.connection;
schema.name = (string) msch.get_value_at (msch.get_column_index ("schema_name"),r);
_schemas.set (schema.name, (DbSchema) schema);
}
}
- public void save () {}
- public void append () {}
+ public void save () throws Error {}
+ public bool append () throws Error { return false; }
+ // DbNamedObject
+ public string name { get; set; }
// DbCollection Interface
- public abstract Collection<DbSchema> schemas { get { _schemas.values; }}
+ public Collection<DbSchema> schemas { owned get { return _schemas.values; }}
}
}
diff --git a/libgda/data/DataModelIterator.vala b/libgda/data/DataModelIterator.vala
index ce0f6e3..78f37f2 100644
--- a/libgda/data/DataModelIterator.vala
+++ b/libgda/data/DataModelIterator.vala
@@ -24,7 +24,8 @@
/**
* Iterator that implements [ link [Gee.Iterator] and [ link [Gee.Traversable]]
*/
- public class DataModelIterator : GLib.Object, Gee.Traversable <Value?>, Gee.Iterator <Value?>
+ public class DataModelIterator : GLib.Object, Gee.Traversable <Value?>, Gee.Iterator <Value?>,
+ Gee.Traversable <DbRecord>, Gee.Iterator<DbRecord>
{
private Gda.DataModelIter iter;
private int _current_pos;
@@ -144,7 +145,7 @@
public void remove () {}
- /* Traversable Interface */
+ // Traversable Interface
public Gee.Iterator<Value?> chop (int offset, int length = -1)
requires ( offset >= 0)
{
diff --git a/libgda/data/DbCollection.vala b/libgda/data/DbCollection.vala
index 5850351..90f3d01 100644
--- a/libgda/data/DbCollection.vala
+++ b/libgda/data/DbCollection.vala
@@ -22,8 +22,8 @@ using Gda;
namespace GdaData
{
- public interface DbCollection : DbNamedObject
+ public interface DbCollection<G> : DbNamedObject
{
- public abstract Collection<DbSchema> schemas { get; }
+ public abstract Collection<DbSchema<G>> schemas { owned get; }
}
}
diff --git a/libgda/data/DbField.vala b/libgda/data/DbField.vala
index b5a2171..be9dbc7 100644
--- a/libgda/data/DbField.vala
+++ b/libgda/data/DbField.vala
@@ -22,7 +22,7 @@ using Gda;
namespace GdaData
{
- public interface DbField<G> : Object
+ public interface DbField<G> : Object, DbObject
{
public abstract G @value { get; set; }
public abstract string name { get; set; }
diff --git a/libgda/data/DbObject.vala b/libgda/data/DbObject.vala
index c1309e2..a9633f2 100644
--- a/libgda/data/DbObject.vala
+++ b/libgda/data/DbObject.vala
@@ -23,9 +23,9 @@ using Gda;
namespace GdaData {
public interface DbObject : Object {
public abstract Connection connection { get; set; }
- public abstract DbObject append ();
- public abstract void update ();
- public abstract void save ();
+ public abstract bool append () throws Error;
+ public abstract void update () throws Error;
+ public abstract void save () throws Error;
}
public interface DbNamedObject : DbObject {
diff --git a/libgda/data/DbRecord.vala b/libgda/data/DbRecord.vala
index 1ac672f..7d272ec 100644
--- a/libgda/data/DbRecord.vala
+++ b/libgda/data/DbRecord.vala
@@ -22,9 +22,17 @@ using Gda;
namespace GdaData
{
- public interface DbRecord : DbObject
+ public interface DbRecord<G> : DbObject, Comparable<DbRecord<G>>
{
- public abstract DbTable table { get; set construct; }
- public abstract Collection<DbField> fields { get; }
+ public abstract DbTable<G> table { get; set construct; }
+ public abstract Collection<DbField<G>> fields { owned get; }
+ public abstract Collection<DbField<G>> keys { owned get; }
+ /**
+ * Returns a GLib.Value containing the value stored in the given field.
+ */
+ public abstract G get_value (string field) throws Error;
+ public abstract void set_field (string field, Value? v) throws Error;
+ public abstract void set_key (string field, G v) throws Error;
+ public abstract DbField<G> get_field (string field) throws Error;
}
}
diff --git a/libgda/data/DbSchema.vala b/libgda/data/DbSchema.vala
index 3fbd50a..329ecb0 100644
--- a/libgda/data/DbSchema.vala
+++ b/libgda/data/DbSchema.vala
@@ -22,8 +22,8 @@ using Gda;
namespace GdaData
{
- public interface DbSchema : DbNamedObject
+ public interface DbSchema<G> : DbNamedObject
{
- public abstract Collection<DbTable> tables { get; }
+ public abstract Collection<DbTable<G>> tables { owned get; }
}
}
diff --git a/libgda/data/DbTable.vala b/libgda/data/DbTable.vala
index 048be2d..2478960 100644
--- a/libgda/data/DbTable.vala
+++ b/libgda/data/DbTable.vala
@@ -22,12 +22,12 @@ using Gda;
namespace GdaData
{
- public interface DbTable : DbNamedObject
+ public interface DbTable<G> : DbNamedObject
{
- public abstract DbSchema schema { get; set construct; }
- public abstract Collection<DbRecord> records { get; }
- public abstract Collection<DbTable> fk_depends { get; }
- public abstract Collection<DbTable> fk { get; }
- public abstract Iterator<DbRecord> iterator ();
+ public abstract DbSchema schema { get; set construct; }
+ public abstract Collection<DbRecord<G>> records { owned get; }
+ public abstract Collection<DbTable<G>> fk_depends { owned get; }
+ public abstract Collection<DbTable<G>> fk { owned get; }
+ public abstract Collection<DbFieldInfo<G>> fields { owned get; set construct; }
}
}
diff --git a/libgda/data/Field.vala b/libgda/data/Field.vala
index b31e864..6f8115c 100644
--- a/libgda/data/Field.vala
+++ b/libgda/data/Field.vala
@@ -22,13 +22,19 @@ using Gda;
namespace GdaData
{
- public class Field<G> : Object, DbField<G>
+ public class Field<G> : Object, DbField<G>, DbObject
{
private G val;
private string _name;
private string _column_name;
private DbField.Attribute _attributes;
+ // DbObject Interface
+ public Connection connection { get; set; }
+ public bool append () throws Error { return false; }
+ public void update () throws Error {}
+ public void save () throws Error {}
+ // DbField Interface
public G @value {
get { return val; }
set { val = value; }
diff --git a/libgda/data/FieldInfo.vala b/libgda/data/FieldInfo.vala
index 4381b24..2f56e79 100644
--- a/libgda/data/FieldInfo.vala
+++ b/libgda/data/FieldInfo.vala
@@ -20,20 +20,20 @@
using Gda;
namespace GdaData {
- public class FieldInfo<G> : Object, DbFieldInfo
+ public class FieldInfo<G> : Object, DbFieldInfo<G>
{
private DbField.Attribute _attr;
private G _default_value;
private string _name;
- public override DbField.Attribute attributes {
+ public DbField.Attribute attributes {
get { return _attr; }
}
- public override G default_value {
+ public G default_value {
get { return _default_value; }
}
- public override string name {
+ public string name {
get { return _name; }
}
FieldInfo (string name, DbField.Attribute attr, G default_val)
diff --git a/libgda/data/GdaData-5.0.gir b/libgda/data/GdaData-5.0.gir
index 53ae5d3..3699e15 100644
--- a/libgda/data/GdaData-5.0.gir
+++ b/libgda/data/GdaData-5.0.gir
@@ -16,326 +16,290 @@
<member name="update" c:identifier="GDA_DATA_DB_OBJECT_ERROR_UPDATE" value="1"/>
<member name="save" c:identifier="GDA_DATA_DB_OBJECT_ERROR_SAVE" value="2"/>
</enumeration>
- <class name="Record" c:type="GdaDataRecord" glib:type-name="GdaDataRecord" glib:get-type="gda_data_record_get_type" glib:type-struct="RecordClass" parent="GObject.Object" abstract="1">
+ <class name="DataBase" c:type="GdaDataDataBase" glib:type-name="GdaDataDataBase" glib:get-type="gda_data_data_base_get_type" glib:type-struct="DataBaseClass" parent="GObject.Object">
+ <implements name="GdaData.DbObject"/>
+ <implements name="GdaData.DbNamedObject"/>
+ <implements name="GdaData.DbCollection"/>
<field name="parent_instance">
<type name="GObject.Object" c:type="GObject"/>
</field>
<field name="priv">
- <type name="RecordPrivate" c:type="GdaDataRecordPrivate*"/>
+ <type name="DataBasePrivate" c:type="GdaDataDataBasePrivate*"/>
</field>
- <field name="_model">
+ <field name="_schemas">
<type name="Gee.HashMap" c:type="GeeHashMap*">
<type name="utf8" c:type="gchar*"/>
- <type name="GdaData.Field" c:type="GdaDataField*">
+ <type name="GdaData.DbSchema" c:type="GdaDataDbSchema*">
<type name="gpointer" c:type="gpointer"/>
</type>
</type>
</field>
- <method name="get_value" c:identifier="gda_data_record_get_value" throws="1">
- <parameters>
- <parameter name="field" transfer-ownership="none">
- <type name="utf8" c:type="const gchar*"/>
- </parameter>
- </parameters>
- <return-value transfer-ownership="full" allow-none="1">
- <type name="gpointer" c:type="gpointer"/>
- </return-value>
- </method>
- <method name="set_value" c:identifier="gda_data_record_set_value" throws="1">
- <parameters>
- <parameter name="field" transfer-ownership="none">
- <type name="utf8" c:type="const gchar*"/>
- </parameter>
- <parameter name="v" transfer-ownership="none" allow-none="1">
- <type name="gpointer" c:type="gpointer"/>
- </parameter>
- </parameters>
- <return-value transfer-ownership="full">
- <type name="none"/>
- </return-value>
- </method>
- <method name="save" c:identifier="gda_data_record_save" throws="1">
- <return-value transfer-ownership="full">
- <type name="none"/>
- </return-value>
- </method>
- <virtual-method name="save" invoker="save" throws="1">
- <return-value transfer-ownership="full">
- <type name="none"/>
- </return-value>
- </virtual-method>
- <method name="update" c:identifier="gda_data_record_update" throws="1">
- <return-value transfer-ownership="full">
- <type name="none"/>
- </return-value>
- </method>
- <virtual-method name="update" invoker="update" throws="1">
+ <constructor name="new" c:identifier="gda_data_data_base_new">
<return-value transfer-ownership="full">
- <type name="none"/>
+ <type name="GdaData.DataBase" c:type="GdaDataDataBase*"/>
</return-value>
- </virtual-method>
- <method name="append" c:identifier="gda_data_record_append" throws="1">
+ </constructor>
+ </class>
+ <record name="DataBaseClass" c:type="GdaDataDataBaseClass" glib:is-gtype-struct-for="DataBase">
+ <field name="parent_class">
+ <type name="GObject.ObjectClass" c:type="GObjectClass"/>
+ </field>
+ </record>
+ <record name="DataBasePrivate" c:type="GdaDataDataBasePrivate" disguised="1"/>
+ <class name="Schema" c:type="GdaDataSchema" glib:type-name="GdaDataSchema" glib:get-type="gda_data_schema_get_type" glib:type-struct="SchemaClass" parent="GObject.Object">
+ <implements name="GdaData.DbObject"/>
+ <implements name="GdaData.DbNamedObject"/>
+ <implements name="GdaData.DbSchema"/>
+ <field name="parent_instance">
+ <type name="GObject.Object" c:type="GObject"/>
+ </field>
+ <field name="priv">
+ <type name="SchemaPrivate" c:type="GdaDataSchemaPrivate*"/>
+ </field>
+ <field name="_tables">
+ <type name="Gee.HashMap" c:type="GeeHashMap*">
+ <type name="utf8" c:type="gchar*"/>
+ <type name="GdaData.DbTable" c:type="GdaDataDbTable*">
+ <type name="gpointer" c:type="gpointer"/>
+ </type>
+ </type>
+ </field>
+ <constructor name="new" c:identifier="gda_data_schema_new">
<return-value transfer-ownership="full">
- <type name="gboolean" c:type="gboolean"/>
+ <type name="GdaData.Schema" c:type="GdaDataSchema*"/>
</return-value>
- </method>
- <virtual-method name="append" invoker="append" throws="1">
+ </constructor>
+ </class>
+ <record name="SchemaClass" c:type="GdaDataSchemaClass" glib:is-gtype-struct-for="Schema">
+ <field name="parent_class">
+ <type name="GObject.ObjectClass" c:type="GObjectClass"/>
+ </field>
+ </record>
+ <record name="SchemaPrivate" c:type="GdaDataSchemaPrivate" disguised="1"/>
+ <class name="Table" c:type="GdaDataTable" glib:type-name="GdaDataTable" glib:get-type="gda_data_table_get_type" glib:type-struct="TableClass" parent="GObject.Object">
+ <implements name="GdaData.DbObject"/>
+ <implements name="GdaData.DbNamedObject"/>
+ <implements name="GdaData.DbTable"/>
+ <field name="parent_instance">
+ <type name="GObject.Object" c:type="GObject"/>
+ </field>
+ <field name="priv">
+ <type name="TablePrivate" c:type="GdaDataTablePrivate*"/>
+ </field>
+ <field name="_records">
+ <type name="GdaData.DbRecordCollection" c:type="GdaDataDbRecordCollection*"/>
+ </field>
+ <field name="_fields">
+ <type name="Gee.HashMap" c:type="GeeHashMap*">
+ <type name="utf8" c:type="gchar*"/>
+ <type name="GdaData.DbFieldInfo" c:type="GdaDataDbFieldInfo*">
+ <type name="gpointer" c:type="gpointer"/>
+ </type>
+ </type>
+ </field>
+ <field name="_fk_depends">
+ <type name="Gee.HashMap" c:type="GeeHashMap*">
+ <type name="utf8" c:type="gchar*"/>
+ <type name="GdaData.DbTable" c:type="GdaDataDbTable*">
+ <type name="gpointer" c:type="gpointer"/>
+ </type>
+ </type>
+ </field>
+ <field name="_fk">
+ <type name="Gee.HashMap" c:type="GeeHashMap*">
+ <type name="utf8" c:type="gchar*"/>
+ <type name="GdaData.DbTable" c:type="GdaDataDbTable*">
+ <type name="gpointer" c:type="gpointer"/>
+ </type>
+ </type>
+ </field>
+ <constructor name="new" c:identifier="gda_data_table_new">
<return-value transfer-ownership="full">
- <type name="gboolean" c:type="gboolean"/>
+ <type name="GdaData.Table" c:type="GdaDataTable*"/>
</return-value>
- </virtual-method>
+ </constructor>
+ </class>
+ <record name="TableClass" c:type="GdaDataTableClass" glib:is-gtype-struct-for="Table">
+ <field name="parent_class">
+ <type name="GObject.ObjectClass" c:type="GObjectClass"/>
+ </field>
+ </record>
+ <record name="TablePrivate" c:type="GdaDataTablePrivate" disguised="1"/>
+ <class name="Record" c:type="GdaDataRecord" glib:type-name="GdaDataRecord" glib:get-type="gda_data_record_get_type" glib:type-struct="RecordClass" parent="GObject.Object">
+ <implements name="GdaData.DbObject"/>
+ <implements name="GdaData.DbRecord"/>
+ <implements name="Gee.Comparable"/>
+ <field name="parent_instance">
+ <type name="GObject.Object" c:type="GObject"/>
+ </field>
+ <field name="priv">
+ <type name="RecordPrivate" c:type="GdaDataRecordPrivate*"/>
+ </field>
+ <field name="_fields">
+ <type name="Gee.HashMap" c:type="GeeHashMap*">
+ <type name="utf8" c:type="gchar*"/>
+ <type name="GdaData.DbField" c:type="GdaDataDbField*">
+ <type name="GObject.Value" c:type="GValue*"/>
+ </type>
+ </type>
+ </field>
+ <field name="_keys">
+ <type name="Gee.HashMap" c:type="GeeHashMap*">
+ <type name="utf8" c:type="gchar*"/>
+ <type name="GdaData.DbField" c:type="GdaDataDbField*">
+ <type name="GObject.Value" c:type="GValue*"/>
+ </type>
+ </type>
+ </field>
<method name="to_string" c:identifier="gda_data_record_to_string">
<return-value transfer-ownership="full">
<type name="utf8" c:type="gchar*"/>
</return-value>
</method>
- <virtual-method name="to_string" invoker="to_string">
+ <constructor name="new" c:identifier="gda_data_record_new">
<return-value transfer-ownership="full">
- <type name="utf8" c:type="gchar*"/>
+ <type name="GdaData.Record" c:type="GdaDataRecord*"/>
</return-value>
- </virtual-method>
- <property name="table">
- <type name="utf8" c:type="gchar*"/>
- </property>
- <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*"/>
- </property>
+ </constructor>
</class>
<record name="RecordClass" c:type="GdaDataRecordClass" glib:is-gtype-struct-for="Record">
<field name="parent_class">
<type name="GObject.ObjectClass" c:type="GObjectClass"/>
</field>
- <field name="save">
- <callback name="save" c:type="save" throws="1">
- <parameters>
- <parameter name="self" transfer-ownership="none">
- <type name="GdaData.Record" c:type="GdaDataRecord*"/>
- </parameter>
- </parameters>
- <return-value transfer-ownership="full">
- <type name="none"/>
- </return-value>
- </callback>
- </field>
- <field name="update">
- <callback name="update" c:type="update" throws="1">
- <parameters>
- <parameter name="self" transfer-ownership="none">
- <type name="GdaData.Record" c:type="GdaDataRecord*"/>
- </parameter>
- </parameters>
- <return-value transfer-ownership="full">
- <type name="none"/>
- </return-value>
- </callback>
- </field>
- <field name="append">
- <callback name="append" c:type="append" throws="1">
- <parameters>
- <parameter name="self" transfer-ownership="none">
- <type name="GdaData.Record" c:type="GdaDataRecord*"/>
- </parameter>
- </parameters>
- <return-value transfer-ownership="full">
- <type name="gboolean" c:type="gboolean"/>
- </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.Record" c:type="GdaDataRecord*"/>
- </parameter>
- </parameters>
- <return-value transfer-ownership="full">
- <type name="utf8" c:type="gchar*"/>
- </return-value>
- </callback>
- </field>
</record>
<record name="RecordPrivate" c:type="GdaDataRecordPrivate" disguised="1"/>
- <class name="RecordSingleId" c:type="GdaDataRecordSingleId" glib:type-name="GdaDataRecordSingleId" glib:get-type="gda_data_record_single_id_get_type" glib:type-struct="RecordSingleIdClass" parent="GdaData.Record" abstract="1">
+ <class name="RecordCollection" c:type="GdaDataRecordCollection" glib:type-name="GdaDataRecordCollection" glib:get-type="gda_data_record_collection_get_type" glib:type-struct="RecordCollectionClass" parent="Gee.AbstractCollection">
+ <implements name="GdaData.DbRecordCollection"/>
<field name="parent_instance">
- <type name="GdaData.Record" c:type="GdaDataRecord"/>
+ <type name="Gee.AbstractCollection" c:type="GeeAbstractCollection"/>
</field>
<field name="priv">
- <type name="RecordSingleIdPrivate" c:type="GdaDataRecordSingleIdPrivate*"/>
+ <type name="RecordCollectionPrivate" c:type="GdaDataRecordCollectionPrivate*"/>
</field>
- <method name="get_id" c:identifier="gda_data_record_single_id_get_id">
+ <constructor name="new" c:identifier="gda_data_record_collection_new">
<parameters>
- <parameter name="result" direction="out" transfer-ownership="full" caller-allocates="1">
- <type name="GObject.Value" c:type="GValue"/>
+ <parameter name="m" transfer-ownership="none">
+ <type name="Gda.DataModel" c:type="GdaDataModel*"/>
</parameter>
- </parameters>
- <return-value transfer-ownership="none">
- <type name="none"/>
- </return-value>
- </method>
- <method name="set_id" c:identifier="gda_data_record_single_id_set_id" throws="1">
- <parameters>
- <parameter name="v" transfer-ownership="none">
- <type name="GObject.Value" c:type="GValue"/>
+ <parameter name="table" transfer-ownership="none">
+ <type name="GdaData.DbTable" c:type="GdaDataDbTable*"/>
</parameter>
</parameters>
<return-value transfer-ownership="full">
- <type name="none"/>
- </return-value>
- </method>
- <method name="sql" c:identifier="gda_data_record_single_id_sql">
- <return-value transfer-ownership="full">
- <type name="Gda.SqlBuilder" c:type="GdaSqlBuilder*"/>
+ <type name="GdaData.RecordCollection" c:type="GdaDataRecordCollection*"/>
</return-value>
- </method>
- <property name="field-id">
- <type name="utf8" c:type="gchar*"/>
- </property>
- <property name="field-id-index">
- <type name="gint" c:type="gint"/>
+ </constructor>
+ <property name="model">
+ <type name="Gda.DataModel" c:type="GdaDataModel*"/>
</property>
</class>
- <record name="RecordSingleIdClass" c:type="GdaDataRecordSingleIdClass" glib:is-gtype-struct-for="RecordSingleId">
+ <record name="RecordCollectionClass" c:type="GdaDataRecordCollectionClass" glib:is-gtype-struct-for="RecordCollection">
<field name="parent_class">
- <type name="GdaData.RecordClass" c:type="GdaDataRecordClass"/>
+ <type name="Gee.AbstractCollectionClass" c:type="GeeAbstractCollectionClass"/>
</field>
</record>
- <record name="RecordSingleIdPrivate" c:type="GdaDataRecordSingleIdPrivate" disguised="1"/>
- <class name="Field" c:type="GdaDataField" glib:type-name="GdaDataField" glib:get-type="gda_data_field_get_type" glib:type-struct="FieldClass" parent="GObject.Object">
- <implements name="GdaData.DbField"/>
+ <record name="RecordCollectionPrivate" c:type="GdaDataRecordCollectionPrivate" disguised="1"/>
+ <class name="RecordCollectionIterator" c:type="GdaDataRecordCollectionIterator" glib:type-name="GdaDataRecordCollectionIterator" glib:get-type="gda_data_record_collection_iterator_get_type" glib:type-struct="RecordCollectionIteratorClass" parent="GObject.Object">
+ <implements name="Gee.Traversable"/>
+ <implements name="Gee.Iterator"/>
<field name="parent_instance">
<type name="GObject.Object" c:type="GObject"/>
</field>
<field name="priv">
- <type name="FieldPrivate" c:type="GdaDataFieldPrivate*"/>
+ <type name="RecordCollectionIteratorPrivate" c:type="GdaDataRecordCollectionIteratorPrivate*"/>
</field>
- <constructor name="new" c:identifier="gda_data_field_new">
+ <constructor name="new" c:identifier="gda_data_record_collection_iterator_new">
<parameters>
- <parameter name="col_name" transfer-ownership="none">
- <type name="utf8" c:type="const gchar*"/>
+ <parameter name="iter" transfer-ownership="none">
+ <type name="Gda.DataModelIter" c:type="GdaDataModelIter*"/>
</parameter>
- <parameter name="attr" transfer-ownership="none">
- <type name="GdaData.DbFieldAttribute" c:type="GdaDataDbFieldAttribute"/>
+ <parameter name="table" transfer-ownership="none">
+ <type name="GdaData.DbTable" c:type="GdaDataDbTable*"/>
</parameter>
</parameters>
<return-value transfer-ownership="full">
- <type name="GdaData.Field" c:type="GdaDataField*"/>
+ <type name="GdaData.RecordCollectionIterator" c:type="GdaDataRecordCollectionIterator*"/>
</return-value>
</constructor>
</class>
- <record name="FieldClass" c:type="GdaDataFieldClass" glib:is-gtype-struct-for="Field">
+ <record name="RecordCollectionIteratorClass" c:type="GdaDataRecordCollectionIteratorClass" glib:is-gtype-struct-for="RecordCollectionIterator">
<field name="parent_class">
<type name="GObject.ObjectClass" c:type="GObjectClass"/>
</field>
</record>
- <record name="FieldPrivate" c:type="GdaDataFieldPrivate" disguised="1"/>
- <class name="DataModelIterator" c:type="GdaDataDataModelIterator" glib:type-name="GdaDataDataModelIterator" glib:get-type="gda_data_data_model_iterator_get_type" glib:type-struct="DataModelIteratorClass" parent="GObject.Object">
- <implements name="Gee.Traversable"/>
- <implements name="Gee.Iterator"/>
+ <record name="RecordCollectionIteratorPrivate" c:type="GdaDataRecordCollectionIteratorPrivate" disguised="1"/>
+ <class name="Field" c:type="GdaDataField" glib:type-name="GdaDataField" glib:get-type="gda_data_field_get_type" glib:type-struct="FieldClass" parent="GObject.Object">
+ <implements name="GdaData.DbField"/>
+ <implements name="GdaData.DbObject"/>
<field name="parent_instance">
<type name="GObject.Object" c:type="GObject"/>
</field>
<field name="priv">
- <type name="DataModelIteratorPrivate" c:type="GdaDataDataModelIteratorPrivate*"/>
+ <type name="FieldPrivate" c:type="GdaDataFieldPrivate*"/>
</field>
- <constructor name="new" c:identifier="gda_data_data_model_iterator_new">
+ <constructor name="new" c:identifier="gda_data_field_new">
<parameters>
- <parameter name="model" transfer-ownership="none">
- <type name="Gda.DataModel" c:type="GdaDataModel*"/>
+ <parameter name="col_name" transfer-ownership="none">
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="attr" transfer-ownership="none">
+ <type name="GdaData.DbFieldAttribute" c:type="GdaDataDbFieldAttribute"/>
</parameter>
</parameters>
<return-value transfer-ownership="full">
- <type name="GdaData.DataModelIterator" c:type="GdaDataDataModelIterator*"/>
+ <type name="GdaData.Field" c:type="GdaDataField*"/>
</return-value>
</constructor>
- <property name="current-column">
- <type name="gint" c:type="gint"/>
- </property>
- <property name="current-row">
- <type name="gint" c:type="gint"/>
- </property>
</class>
- <record name="DataModelIteratorClass" c:type="GdaDataDataModelIteratorClass" glib:is-gtype-struct-for="DataModelIterator">
+ <record name="FieldClass" c:type="GdaDataFieldClass" glib:is-gtype-struct-for="Field">
<field name="parent_class">
<type name="GObject.ObjectClass" c:type="GObjectClass"/>
</field>
</record>
- <record name="DataModelIteratorPrivate" c:type="GdaDataDataModelIteratorPrivate" disguised="1"/>
- <class name="DataModelIterable" c:type="GdaDataDataModelIterable" glib:type-name="GdaDataDataModelIterable" glib:get-type="gda_data_data_model_iterable_get_type" glib:type-struct="DataModelIterableClass" parent="Gee.AbstractCollection">
- <implements name="Gda.DataModel"/>
+ <record name="FieldPrivate" c:type="GdaDataFieldPrivate" disguised="1"/>
+ <class name="FieldInfo" c:type="GdaDataFieldInfo" glib:type-name="GdaDataFieldInfo" glib:get-type="gda_data_field_info_get_type" glib:type-struct="FieldInfoClass" parent="GObject.Object">
+ <implements name="GdaData.DbFieldInfo"/>
<field name="parent_instance">
- <type name="Gee.AbstractCollection" c:type="GeeAbstractCollection"/>
+ <type name="GObject.Object" c:type="GObject"/>
</field>
<field name="priv">
- <type name="DataModelIterablePrivate" c:type="GdaDataDataModelIterablePrivate*"/>
+ <type name="FieldInfoPrivate" c:type="GdaDataFieldInfoPrivate*"/>
</field>
- <constructor name="new" c:identifier="gda_data_data_model_iterable_new">
- <parameters>
- <parameter name="model" transfer-ownership="none">
- <type name="Gda.DataModel" c:type="GdaDataModel*"/>
- </parameter>
- </parameters>
- <return-value transfer-ownership="full">
- <type name="GdaData.DataModelIterable" c:type="GdaDataDataModelIterable*"/>
- </return-value>
- </constructor>
- <method name="foreach" c:identifier="gda_data_data_model_iterable_foreach">
- <parameters>
- <parameter name="f" transfer-ownership="none" closure="1">
- <type name="Gee.ForallFunc" c:type="GeeForallFunc"/>
- </parameter>
- <parameter name="f_target" transfer-ownership="none" allow-none="1">
- <type name="gpointer" c:type="void*"/>
- </parameter>
- </parameters>
- <return-value transfer-ownership="full">
- <type name="none"/>
- </return-value>
- </method>
- <property name="element-type">
- <type name="GObject.Type" c:type="GType"/>
- </property>
</class>
- <record name="DataModelIterableClass" c:type="GdaDataDataModelIterableClass" glib:is-gtype-struct-for="DataModelIterable">
+ <record name="FieldInfoClass" c:type="GdaDataFieldInfoClass" glib:is-gtype-struct-for="FieldInfo">
<field name="parent_class">
- <type name="Gee.AbstractCollectionClass" c:type="GeeAbstractCollectionClass"/>
+ <type name="GObject.ObjectClass" c:type="GObjectClass"/>
</field>
</record>
- <record name="DataModelIterablePrivate" c:type="GdaDataDataModelIterablePrivate" disguised="1"/>
+ <record name="FieldInfoPrivate" c:type="GdaDataFieldInfoPrivate" disguised="1"/>
<interface name="DbObject" c:type="GdaDataDbObject" glib:type-name="GdaDataDbObject" glib:get-type="gda_data_db_object_get_type" glib:type-struct="DbObjectIface">
<prerequisite name="GObject.Object"/>
- <method name="append" c:identifier="gda_data_db_object_append">
+ <method name="append" c:identifier="gda_data_db_object_append" throws="1">
<return-value transfer-ownership="full">
- <type name="GdaData.DbObject" c:type="GdaDataDbObject*"/>
+ <type name="gboolean" c:type="gboolean"/>
</return-value>
</method>
- <virtual-method name="append" invoker="append">
+ <virtual-method name="append" invoker="append" throws="1">
<return-value transfer-ownership="full">
- <type name="GdaData.DbObject" c:type="GdaDataDbObject*"/>
+ <type name="gboolean" c:type="gboolean"/>
</return-value>
</virtual-method>
- <method name="update" c:identifier="gda_data_db_object_update">
+ <method name="update" c:identifier="gda_data_db_object_update" throws="1">
<return-value transfer-ownership="full">
<type name="none"/>
</return-value>
</method>
- <virtual-method name="update" invoker="update">
+ <virtual-method name="update" invoker="update" throws="1">
<return-value transfer-ownership="full">
<type name="none"/>
</return-value>
</virtual-method>
- <method name="save" c:identifier="gda_data_db_object_save">
+ <method name="save" c:identifier="gda_data_db_object_save" throws="1">
<return-value transfer-ownership="full">
<type name="none"/>
</return-value>
</method>
- <virtual-method name="save" invoker="save">
+ <virtual-method name="save" invoker="save" throws="1">
<return-value transfer-ownership="full">
<type name="none"/>
</return-value>
@@ -349,19 +313,19 @@
<type name="GObject.TypeInterface" c:type="GTypeInterface"/>
</field>
<field name="append">
- <callback name="append" c:type="append">
+ <callback name="append" c:type="append" throws="1">
<parameters>
<parameter name="self" transfer-ownership="none">
<type name="GdaData.DbObject" c:type="GdaDataDbObject*"/>
</parameter>
</parameters>
<return-value transfer-ownership="full">
- <type name="GdaData.DbObject" c:type="GdaDataDbObject*"/>
+ <type name="gboolean" c:type="gboolean"/>
</return-value>
</callback>
</field>
<field name="update">
- <callback name="update" c:type="update">
+ <callback name="update" c:type="update" throws="1">
<parameters>
<parameter name="self" transfer-ownership="none">
<type name="GdaData.DbObject" c:type="GdaDataDbObject*"/>
@@ -373,7 +337,7 @@
</callback>
</field>
<field name="save">
- <callback name="save" c:type="save">
+ <callback name="save" c:type="save" throws="1">
<parameters>
<parameter name="self" transfer-ownership="none">
<type name="GdaData.DbObject" c:type="GdaDataDbObject*"/>
@@ -398,33 +362,11 @@
</record>
<interface name="DbCollection" c:type="GdaDataDbCollection" glib:type-name="GdaDataDbCollection" glib:get-type="gda_data_db_collection_get_type" glib:type-struct="DbCollectionIface">
<prerequisite name="GdaData.DbNamedObject"/>
- <method name="get_tables" c:identifier="gda_data_db_collection_get_tables">
- <parameters>
- <parameter name="schema" transfer-ownership="none">
- <type name="utf8" c:type="const gchar*"/>
- </parameter>
- </parameters>
- <return-value transfer-ownership="full">
- <type name="Gee.Collection" c:type="GeeCollection*">
- <type name="GdaData.DbTable" c:type="GdaDataDbTable*"/>
- </type>
- </return-value>
- </method>
- <virtual-method name="get_tables" invoker="get_tables">
- <parameters>
- <parameter name="schema" transfer-ownership="none">
- <type name="utf8" c:type="const gchar*"/>
- </parameter>
- </parameters>
- <return-value transfer-ownership="full">
- <type name="Gee.Collection" c:type="GeeCollection*">
- <type name="GdaData.DbTable" c:type="GdaDataDbTable*"/>
- </type>
- </return-value>
- </virtual-method>
<property name="schemas">
<type name="Gee.Collection" c:type="GeeCollection*">
- <type name="GdaData.DbSchema" c:type="GdaDataDbSchema*"/>
+ <type name="GdaData.DbSchema" c:type="GdaDataDbSchema*">
+ <type name="gpointer" c:type="gpointer"/>
+ </type>
</type>
</property>
</interface>
@@ -432,56 +374,38 @@
<field name="parent_iface">
<type name="GObject.TypeInterface" c:type="GTypeInterface"/>
</field>
- <field name="get_tables">
- <callback name="get_tables" c:type="get_tables">
- <parameters>
- <parameter name="self" transfer-ownership="none">
- <type name="GdaData.DbCollection" c:type="GdaDataDbCollection*"/>
- </parameter>
- <parameter name="schema" transfer-ownership="none">
- <type name="utf8" c:type="const gchar*"/>
- </parameter>
- </parameters>
- <return-value transfer-ownership="full">
- <type name="Gee.Collection" c:type="GeeCollection*">
- <type name="GdaData.DbTable" c:type="GdaDataDbTable*"/>
- </type>
- </return-value>
- </callback>
- </field>
</record>
<interface name="DbTable" c:type="GdaDataDbTable" glib:type-name="GdaDataDbTable" glib:get-type="gda_data_db_table_get_type" glib:type-struct="DbTableIface">
<prerequisite name="GdaData.DbNamedObject"/>
- <method name="iterator" c:identifier="gda_data_db_table_iterator">
- <return-value transfer-ownership="full">
- <type name="Gee.Iterator" c:type="GeeIterator*">
- <type name="GdaData.DbRecord" c:type="GdaDataDbRecord*"/>
- </type>
- </return-value>
- </method>
- <virtual-method name="iterator" invoker="iterator">
- <return-value transfer-ownership="full">
- <type name="Gee.Iterator" c:type="GeeIterator*">
- <type name="GdaData.DbRecord" c:type="GdaDataDbRecord*"/>
- </type>
- </return-value>
- </virtual-method>
<property name="schema" writable="1" construct="1">
<type name="GdaData.DbSchema" c:type="GdaDataDbSchema*"/>
</property>
<property name="records">
<type name="Gee.Collection" c:type="GeeCollection*">
- <type name="GdaData.DbRecord" c:type="GdaDataDbRecord*"/>
+ <type name="GdaData.DbRecord" c:type="GdaDataDbRecord*">
+ <type name="gpointer" c:type="gpointer"/>
+ </type>
</type>
</property>
<property name="fk-depends">
<type name="Gee.Collection" c:type="GeeCollection*">
- <type name="GdaData.DbTable" c:type="GdaDataDbTable*"/>
+ <type name="GdaData.DbTable" c:type="GdaDataDbTable*">
+ <type name="gpointer" c:type="gpointer"/>
+ </type>
</type>
</property>
<property name="fk">
<type name="Gee.Collection" c:type="GeeCollection*">
- <type name="GdaData.DbTable" c:type="GdaDataDbTable*"/>
+ <type name="GdaData.DbTable" c:type="GdaDataDbTable*">
+ <type name="gpointer" c:type="gpointer"/>
+ </type>
+ </type>
+ </property>
+ <property name="fields" writable="1" construct="1">
+ <type name="Gee.Collection" c:type="GeeCollection*">
+ <type name="GdaData.DbFieldInfo" c:type="GdaDataDbFieldInfo*">
+ <type name="gpointer" c:type="gpointer"/>
+ </type>
</type>
</property>
</interface>
@@ -489,29 +413,123 @@
<field name="parent_iface">
<type name="GObject.TypeInterface" c:type="GTypeInterface"/>
</field>
- <field name="iterator">
- <callback name="iterator" c:type="iterator">
- <parameters>
- <parameter name="self" transfer-ownership="none">
- <type name="GdaData.DbTable" c:type="GdaDataDbTable*"/>
- </parameter>
- </parameters>
- <return-value transfer-ownership="full">
- <type name="Gee.Iterator" c:type="GeeIterator*">
- <type name="GdaData.DbRecord" c:type="GdaDataDbRecord*"/>
- </type>
- </return-value>
- </callback>
- </field>
</record>
<interface name="DbRecord" c:type="GdaDataDbRecord" glib:type-name="GdaDataDbRecord" glib:get-type="gda_data_db_record_get_type" glib:type-struct="DbRecordIface">
<prerequisite name="GdaData.DbObject"/>
+ <prerequisite name="Gee.Comparable"/>
+ <method name="get_value" c:identifier="gda_data_db_record_get_value" throws="1">
+ <parameters>
+ <parameter name="field" transfer-ownership="none">
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ <return-value transfer-ownership="full" allow-none="1">
+ <type name="gpointer" c:type="gpointer"/>
+ </return-value>
+ </method>
+ <virtual-method name="get_value" invoker="get_value" throws="1">
+ <parameters>
+ <parameter name="field" transfer-ownership="none">
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ <return-value transfer-ownership="full" allow-none="1">
+ <type name="gpointer" c:type="gpointer"/>
+ </return-value>
+ </virtual-method>
+ <method name="set_field" c:identifier="gda_data_db_record_set_field" throws="1">
+ <parameters>
+ <parameter name="field" transfer-ownership="none">
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="v" transfer-ownership="none" allow-none="1">
+ <type name="GObject.Value" c:type="GValue*"/>
+ </parameter>
+ </parameters>
+ <return-value transfer-ownership="full">
+ <type name="none"/>
+ </return-value>
+ </method>
+ <virtual-method name="set_field" invoker="set_field" throws="1">
+ <parameters>
+ <parameter name="field" transfer-ownership="none">
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="v" transfer-ownership="none" allow-none="1">
+ <type name="GObject.Value" c:type="GValue*"/>
+ </parameter>
+ </parameters>
+ <return-value transfer-ownership="full">
+ <type name="none"/>
+ </return-value>
+ </virtual-method>
+ <method name="set_key" c:identifier="gda_data_db_record_set_key" throws="1">
+ <parameters>
+ <parameter name="field" transfer-ownership="none">
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="v" transfer-ownership="none" allow-none="1">
+ <type name="gpointer" c:type="gpointer"/>
+ </parameter>
+ </parameters>
+ <return-value transfer-ownership="full">
+ <type name="none"/>
+ </return-value>
+ </method>
+ <virtual-method name="set_key" invoker="set_key" throws="1">
+ <parameters>
+ <parameter name="field" transfer-ownership="none">
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="v" transfer-ownership="none" allow-none="1">
+ <type name="gpointer" c:type="gpointer"/>
+ </parameter>
+ </parameters>
+ <return-value transfer-ownership="full">
+ <type name="none"/>
+ </return-value>
+ </virtual-method>
+ <method name="get_field" c:identifier="gda_data_db_record_get_field" throws="1">
+ <parameters>
+ <parameter name="field" transfer-ownership="none">
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ <return-value transfer-ownership="full">
+ <type name="GdaData.DbField" c:type="GdaDataDbField*">
+ <type name="gpointer" c:type="gpointer"/>
+ </type>
+ </return-value>
+ </method>
+ <virtual-method name="get_field" invoker="get_field" throws="1">
+ <parameters>
+ <parameter name="field" transfer-ownership="none">
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ <return-value transfer-ownership="full">
+ <type name="GdaData.DbField" c:type="GdaDataDbField*">
+ <type name="gpointer" c:type="gpointer"/>
+ </type>
+ </return-value>
+ </virtual-method>
<property name="table" writable="1" construct="1">
- <type name="GdaData.DbTable" c:type="GdaDataDbTable*"/>
+ <type name="GdaData.DbTable" c:type="GdaDataDbTable*">
+ <type name="gpointer" c:type="gpointer"/>
+ </type>
</property>
<property name="fields">
<type name="Gee.Collection" c:type="GeeCollection*">
- <type name="GdaData.DbField" c:type="GdaDataDbField*"/>
+ <type name="GdaData.DbField" c:type="GdaDataDbField*">
+ <type name="gpointer" c:type="gpointer"/>
+ </type>
+ </type>
+ </property>
+ <property name="keys">
+ <type name="Gee.Collection" c:type="GeeCollection*">
+ <type name="GdaData.DbField" c:type="GdaDataDbField*">
+ <type name="gpointer" c:type="gpointer"/>
+ </type>
</type>
</property>
</interface>
@@ -519,9 +537,78 @@
<field name="parent_iface">
<type name="GObject.TypeInterface" c:type="GTypeInterface"/>
</field>
+ <field name="get_value">
+ <callback name="get_value" c:type="get_value" throws="1">
+ <parameters>
+ <parameter name="self" transfer-ownership="none">
+ <type name="GdaData.DbRecord" c:type="GdaDataDbRecord*"/>
+ </parameter>
+ <parameter name="field" transfer-ownership="none">
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ <return-value transfer-ownership="full" allow-none="1">
+ <type name="gpointer" c:type="gpointer"/>
+ </return-value>
+ </callback>
+ </field>
+ <field name="set_field">
+ <callback name="set_field" c:type="set_field" throws="1">
+ <parameters>
+ <parameter name="self" transfer-ownership="none">
+ <type name="GdaData.DbRecord" c:type="GdaDataDbRecord*"/>
+ </parameter>
+ <parameter name="field" transfer-ownership="none">
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="v" transfer-ownership="none" allow-none="1">
+ <type name="GObject.Value" c:type="GValue*"/>
+ </parameter>
+ </parameters>
+ <return-value transfer-ownership="full">
+ <type name="none"/>
+ </return-value>
+ </callback>
+ </field>
+ <field name="set_key">
+ <callback name="set_key" c:type="set_key" throws="1">
+ <parameters>
+ <parameter name="self" transfer-ownership="none">
+ <type name="GdaData.DbRecord" c:type="GdaDataDbRecord*"/>
+ </parameter>
+ <parameter name="field" transfer-ownership="none">
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="v" transfer-ownership="none" allow-none="1">
+ <type name="gpointer" c:type="gpointer"/>
+ </parameter>
+ </parameters>
+ <return-value transfer-ownership="full">
+ <type name="none"/>
+ </return-value>
+ </callback>
+ </field>
+ <field name="get_field">
+ <callback name="get_field" c:type="get_field" throws="1">
+ <parameters>
+ <parameter name="self" transfer-ownership="none">
+ <type name="GdaData.DbRecord" c:type="GdaDataDbRecord*"/>
+ </parameter>
+ <parameter name="field" transfer-ownership="none">
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ <return-value transfer-ownership="full">
+ <type name="GdaData.DbField" c:type="GdaDataDbField*">
+ <type name="gpointer" c:type="gpointer"/>
+ </type>
+ </return-value>
+ </callback>
+ </field>
</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"/>
+ <prerequisite name="GdaData.DbObject"/>
<method name="to_string" c:identifier="gda_data_db_field_to_string">
<return-value transfer-ownership="full">
<type name="utf8" c:type="gchar*"/>
@@ -575,11 +662,30 @@
<member name="no_modif" c:identifier="GDA_DATA_DB_FIELD_ATTRIBUTE_NO_MODIF" value="512"/>
<member name="unused" c:identifier="GDA_DATA_DB_FIELD_ATTRIBUTE_UNUSED" value="1024"/>
</bitfield>
+ <interface name="DbFieldInfo" c:type="GdaDataDbFieldInfo" glib:type-name="GdaDataDbFieldInfo" glib:get-type="gda_data_db_field_info_get_type" glib:type-struct="DbFieldInfoIface">
+ <prerequisite name="GObject.Object"/>
+ <property name="attributes">
+ <type name="GdaData.DbFieldAttribute" c:type="GdaDataDbFieldAttribute"/>
+ </property>
+ <property name="default-value">
+ <type name="gpointer" c:type="gpointer"/>
+ </property>
+ <property name="name">
+ <type name="utf8" c:type="gchar*"/>
+ </property>
+ </interface>
+ <record name="DbFieldInfoIface" c:type="GdaDataDbFieldInfoIface" glib:is-gtype-struct-for="DbFieldInfo">
+ <field name="parent_iface">
+ <type name="GObject.TypeInterface" c:type="GTypeInterface"/>
+ </field>
+ </record>
<interface name="DbSchema" c:type="GdaDataDbSchema" glib:type-name="GdaDataDbSchema" glib:get-type="gda_data_db_schema_get_type" glib:type-struct="DbSchemaIface">
<prerequisite name="GdaData.DbNamedObject"/>
<property name="tables">
<type name="Gee.Collection" c:type="GeeCollection*">
- <type name="GdaData.DbTable" c:type="GdaDataDbTable*"/>
+ <type name="GdaData.DbTable" c:type="GdaDataDbTable*">
+ <type name="gpointer" c:type="gpointer"/>
+ </type>
</type>
</property>
</interface>
@@ -588,5 +694,21 @@
<type name="GObject.TypeInterface" c:type="GTypeInterface"/>
</field>
</record>
+ <interface name="DbRecordCollection" c:type="GdaDataDbRecordCollection" glib:type-name="GdaDataDbRecordCollection" glib:get-type="gda_data_db_record_collection_get_type" glib:type-struct="DbRecordCollectionIface">
+ <prerequisite name="GObject.Object"/>
+ <prerequisite name="Gee.Traversable"/>
+ <prerequisite name="Gee.Iterable"/>
+ <prerequisite name="Gee.Collection"/>
+ <property name="table">
+ <type name="GdaData.DbTable" c:type="GdaDataDbTable*">
+ <type name="gpointer" c:type="gpointer"/>
+ </type>
+ </property>
+ </interface>
+ <record name="DbRecordCollectionIface" c:type="GdaDataDbRecordCollectionIface" glib:is-gtype-struct-for="DbRecordCollection">
+ <field name="parent_iface">
+ <type name="GObject.TypeInterface" c:type="GTypeInterface"/>
+ </field>
+ </record>
</namespace>
</repository>
diff --git a/libgda/data/Makefile.am b/libgda/data/Makefile.am
index 587509c..6e77567 100644
--- a/libgda/data/Makefile.am
+++ b/libgda/data/Makefile.am
@@ -36,7 +36,6 @@ object_persistance_sources = \
Schema.vala \
Table.vala \
Record.vala \
- RecordSingleId.vala \
SelectQuery.vala \
$(NULL)
@@ -48,9 +47,10 @@ db_collection_sources = \
DbField.vala \
DbFieldInfo.vala \
DbSchema.vala \
+ DbRecordCollection.vala \
+ RecordCollection.vala \
Field.vala \
FieldInfo.vala \
- IdField.vala \
$(NULL)
selectable_sources = \
@@ -58,16 +58,10 @@ selectable_sources = \
SqlExpression.vala \
$(NULL)
-data_model_collection_sources = \
- DataModelIterator.vala \
- DataModelIterable.vala \
- $(NULL)
-
libgdadata_5_0_la_VALASOURCES = \
NamespaceInfo.vala \
$(object_persistance_sources) \
$(db_collection_sources) \
- $(data_model_collection_sources) \
$(NULL)
libgdadata_5_0_la_SOURCES = \
diff --git a/libgda/data/Record.vala b/libgda/data/Record.vala
index ee79c2e..43bd7f4 100644
--- a/libgda/data/Record.vala
+++ b/libgda/data/Record.vala
@@ -22,10 +22,10 @@ using Gee;
namespace GdaData {
- public abstract class Record<G> : Object {
-
- protected HashMap<string,DbField<G>> _model = new HashMap<string,DbField<G>> ();
- protected HashMap<string,DbField<G>> _keys = new HashMap<string,DbField<G>> ();
+ public class Record : Object, DbObject, DbRecord<Value?>, Comparable<DbRecord>
+ {
+ protected HashMap<string,DbField<Value?>> _fields = new HashMap<string,DbField<Value?>> ();
+ protected HashMap<string,DbField<Value?>> _keys = new HashMap<string,DbField<Value?>> ();
/**
* Derived classes must implement this property to set the table used to get data from.
*/
@@ -33,8 +33,8 @@ namespace GdaData {
/**
* Returns a Gee.Collection with the data stored by this object.
*/
- public Collection<DbField<G>> fields { owned get { return _model.values; } }
- public Collection<DbField<G>> keys { owned get { return _keys.values; } }
+ public Collection<DbField<Value?>> fields { owned get { return _fields.values; } }
+ public Collection<DbField<Value?>> keys { owned get { return _keys.values; } }
/**
* Set the connection to be used to get/set data.
*/
@@ -42,46 +42,51 @@ namespace GdaData {
/**
* Returns a GLib.Value containing the value stored in the given field.
*/
- public G get_value (string field)
+ public Value? get_value (string field)
throws Error
{
- var f = this._model.get (field);
+ var f = this._fields.get (field);
return f.value;
}
/**
* Set the value to a field with the given @name.
*/
- public void set_value (string field, G v)
+ public void set_field (string field, Value? v)
throws Error
{
- if (_model.has_key (field)) {
- var f = this._model.get (field);
+ if (_fields.has_key (field)) {
+ var f = this._fields.get (field);
f.value = v;
- this._model.set (field, f);
+ this._fields.set (field, f);
}
else {
// FIXME: Get default attributes from table
- var n = new Field<G> (field, DbField.Attribute.NONE);
+ var n = new Field<Value?> (field, DbField.Attribute.NONE);
+ n.connection = connection;
n.value = v;
- this._model.set (field, n);
+ this._fields.set (field, n);
}
}
- public void set_key (string field, G v)
+ public void set_key (string field, Value? v)
{
- if (keys.has_key (field)) {
- var f = keys.get (field);
+ if (_keys.has_key (field)) {
+ var f = _keys.get (field);
f.value = v;
- keys.set (field, f);
+ _keys.set (field, f);
}
else {
// FIXME: Get default attributes from table
- var n = new Field<G> (field, DbField.Attribute.NONE);
+ var n = new Field<Value?> (field, DbField.Attribute.NONE);
n.value = v;
- keys.set (field, n);
+ _keys.set (field, n);
}
}
+ public DbField<Value?> get_field (string field) throws Error
+ {
+ return _fields.get (field);
+ }
/**
* Saves any modficiation made to in memory representation of the data directly to
* the database.
@@ -90,20 +95,18 @@ namespace GdaData {
{
var q = new SqlBuilder (SqlStatementType.UPDATE);
q.set_table (table.name);
- foreach (DbField<G> f in fields) {
- Value v = f.value;
- q.add_field_value_as_gvalue (f.column_name, v);
+ foreach (DbField<Value?> f in fields) {
+ q.add_field_value_as_gvalue (f.column_name, f.value);
}
SqlBuilderId cond = -1;
- foreach (DbField<G> f in fields) {
+ foreach (DbField<Value?> f in fields) {
var f_id = q.add_id (f.name);
- Value v = f.value;
- var e_id = q.add_expr_value (null, v);
+ var e_id = q.add_expr_value (null, f.value);
var c_id = q.add_cond (SqlOperatorType.EQ, f_id, e_id, 0);
if (cond < 0)
cond = c_id;
else
- cond = sql.add_cond (SqlOperatorType.AND, cond, c_id, 0);
+ cond = q.add_cond (SqlOperatorType.AND, cond, c_id, 0);
}
q.set_where (cond);
// stdout.printf ("DEBUG: UPDATE statement to execute: \n"+
@@ -123,15 +126,14 @@ namespace GdaData {
var q = new SqlBuilder (SqlStatementType.SELECT);
q.select_add_target (table.name, null);
SqlBuilderId cond = -1;
- foreach (DbField<G> f in fields) {
- var f_id = sql.add_id (f.name);
- Value v = f.value;
- var e_id = sql.add_expr_value (null, v);
- var c_id = sql.add_cond (SqlOperatorType.EQ, f_id, e_id, 0);
+ foreach (DbField<Value?> f in fields) {
+ var f_id = q.add_id (f.name);
+ var e_id = q.add_expr_value (null, f.value);
+ var c_id = q.add_cond (SqlOperatorType.EQ, f_id, e_id, 0);
if (cond < 0)
cond = c_id;
else
- cond = sql.add_cond (SqlOperatorType.AND, cond, c_id, 0);
+ cond = q.add_cond (SqlOperatorType.AND, cond, c_id, 0);
}
q.set_where (cond);
q.select_add_field ("*", null, null);
@@ -139,7 +141,7 @@ namespace GdaData {
// (q.get_statement()).to_sql_extended (this.connection, null,
// StatementSqlFlag.PRETTY, null)
// + "\n");
- var i = this.connection.statement_execute_non_select (sql.get_statement (), null, null);
+ var i = this.connection.statement_execute_non_select (q.get_statement (), null, null);
if (i != 1) {
throw new DbObjectError.UPDATE ("Have been updated more or less rows than expected");
}
@@ -151,37 +153,50 @@ namespace GdaData {
public bool append () throws Error
{
var sql = new SqlBuilder (SqlStatementType.INSERT);
- sql.set_table (this.table);
+ sql.set_table (table.name);
// FIXME: MetaData is required
- foreach (Field<G> f in _model.values) {
- Value v = f.value;
- sql.add_field_value_as_gvalue (f.column_name, v);
+ foreach (DbField<Value?> f in _fields.values) {
+ sql.add_field_value_as_gvalue (f.column_name, f.value);
}
// stdout.printf ("DEBUG: INSERT statement to execute: \n"+
// (sql.get_statement()).to_sql_extended (this.connection, null,
// StatementSqlFlag.PRETTY, null)
// + "\n");
- Set last_inserted;
var i = this.connection.statement_execute_non_select (sql.get_statement (), null, null);
if (i != 1) {
throw new DbObjectError.UPDATE ("Have been added more or less rows than expected");
}
return true;
}
-
+ //
public string to_string ()
{
string r = "";
- foreach (Field<G> f in this.fields) {
+ foreach (DbField<Value?> f in this.fields) {
r += "|" + f.name;
}
r+="\n";
- foreach (Field<Value?> f in this.fields) {
- Value v = f.value;
- r += "|" + Gda.value_stringify (v);
+ foreach (DbField<Value?> f in this.fields) {
+ r += "|" + Gda.value_stringify (f.value);
}
r+="\n";
return r;
}
+ // Comparable Interface
+ /**
+ * Compare two DbRecord keys. If record have more than one key allways return -1.
+ *
+ * @Returns: 0 if keys are equal or -1 if they are different.
+ */
+ public int compare_to (DbRecord<Value?> object)
+ {
+ int r = 0;
+ foreach (DbField<Value?> f in fields) {
+ var fl = object.get_field (f.name);
+ if (Gda.value_compare (f.value, fl.value) != 0)
+ return -1;
+ }
+ return r;
+ }
}
}
diff --git a/libgda/data/Schema.vala b/libgda/data/Schema.vala
index affa8c6..b0f5c45 100644
--- a/libgda/data/Schema.vala
+++ b/libgda/data/Schema.vala
@@ -22,30 +22,33 @@ using Gda;
namespace GdaData
{
- public class Schema : Object
+ public class Schema<G> : Object, DbObject, DbNamedObject, DbSchema<G>
{
- public HashMap<string,DbTable> tables = new HashMap<string,DbTable> ();
+ public HashMap<string,DbTable<G>> _tables = new HashMap<string,DbTable<G>> ();
// DbObject Interface
public Connection connection { get; set; }
- public update ()
+ public void update () throws Error
{
connection.update_meta_store (null); // FIXME: just update schemas
var store = connection.get_meta_store ();
tables.clear ();
- var mt = store.extract (@"SELECT * FROM _tables WHERE schema_name = $name");
+ var vals = new HashTable<string,Value?> (str_hash,str_equal);
+ Value v = name;
+ vals.set ("name", v);
+ var mt = store.extract_v ("SELECT * FROM _tables WHERE schema_name = ##name::string", vals);
for (int r = 0; r < mt.get_n_rows (); r++) {
- var t = new Table ();
+ var t = new Table<G> ();
t.connection = connection;
t.name = (string) mt.get_value_at (mt.get_column_index ("table_name"), r);
t.schema = (DbSchema) this;
tables.set (t.name, (DbTable) t);
}
}
- public void save () {}
- public void append () {}
+ public void save () throws Error {}
+ public bool append () throws Error { return false; }
// DbNamedObject Interface
public string name { get; set; }
// DbSchema Interface
- public Collection<DbTable> tables { get { return tables.values; } }
+ public Collection<DbTable> tables { owned get { return _tables.values; } }
}
}
diff --git a/libgda/data/Table.vala b/libgda/data/Table.vala
index bb76069..cfcf530 100644
--- a/libgda/data/Table.vala
+++ b/libgda/data/Table.vala
@@ -22,23 +22,42 @@ using Gda;
namespace GdaData
{
- public interface Table : Object
+ public class Table<G> : Object, DbObject, DbNamedObject, DbTable<G>
{
+ protected DbRecordCollection _records;
+ protected HashMap<string,DbFieldInfo<G>> _fields = new HashMap<string,DbFieldInfo<G>> ();
+ protected HashMap<string,DbTable<G>> _fk_depends = new HashMap<string,DbTable<G>> ();
+ protected HashMap<string,DbTable<G>> _fk = new HashMap<string,DbTable<G>> ();
// DbObject Interface
public Connection connection { get; set; }
- public void update ()
- {
-
- }
+ public void update () throws Error {}
+ public void save () throws Error {}
+ public bool append () throws Error { return false; }
// DbNamedObject Interface
public string name { get; set; }
// DbTable Interface
- public Collection<FieldInfo<G>> info_fields {}
- public DbSchema schema { get; set; }
-// public Collection<DbRecord> records { get; }
-// public Collection<DbTable> fk_depends { get; }
-// public Collection<DbTable> fk { get; }
-// public Iterator<DbRecord> iterator ();
+ public Collection<DbFieldInfo<G>> fields {
+ owned get { return _fields.values; }
+ set construct {
+ foreach (DbFieldInfo<G> f in value) {
+ _fields.set (f.name, f);
+ }
+ }
+ }
+ public DbSchema schema { get; set construct; }
+ public Collection<DbRecord> records {
+ owned get {
+ var q = new Gda.SqlBuilder (SqlStatementType.SELECT);
+ q.set_table (name);
+ q.select_add_field ("*", null, null);
+ var s = q.get_statement ();
+ var m = this.connection.statement_execute_select (s, null);
+ _records = new RecordCollection (m, this);
+ return _records;
+ }
+ }
+ public Collection<DbTable> fk_depends { owned get { return _fk_depends.values; } }
+ public Collection<DbTable> fk { owned get { return _fk.values; } }
}
}
diff --git a/tests/vala/CheckDataObject.vala b/tests/vala/CheckDataObject.vala
index 78275a6..288082c 100644
--- a/tests/vala/CheckDataObject.vala
+++ b/tests/vala/CheckDataObject.vala
@@ -21,18 +21,10 @@ using Gda;
using GdaData;
namespace Check {
- class Record : RecordSingleId
+ class Record : GdaData.Record
{
public static string t = "user";
- public override string table {
- get { return this.t; }
- }
- public override string field_id {
- get { return "id";}
- }
- public override int field_id_index {
- get { return 0;}
- }
+
}
class Tests : GLib.Object {
public Gda.Connection connection { get; set; }
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]