r16688 - gnucash/branches/gda-dev/src/backend/gda - Merge some common code - commodity guid handling
Phil Longstaff
plongstaff at cvs.gnucash.org
Wed Dec 19 21:55:13 EST 2007
Author: plongstaff
Date: 2007-12-19 21:55:12 -0500 (Wed, 19 Dec 2007)
New Revision: 16688
Trac: http://svn.gnucash.org/trac/changeset/16688
Modified:
gnucash/branches/gda-dev/src/backend/gda/gnc-account-gda.c
gnucash/branches/gda-dev/src/backend/gda/gnc-backend-util-gda.c
gnucash/branches/gda-dev/src/backend/gda/gnc-backend-util-gda.h
gnucash/branches/gda-dev/src/backend/gda/gnc-book-gda.c
gnucash/branches/gda-dev/src/backend/gda/gnc-budget-gda.c
gnucash/branches/gda-dev/src/backend/gda/gnc-commodity-gda.c
gnucash/branches/gda-dev/src/backend/gda/gnc-lots-gda.c
gnucash/branches/gda-dev/src/backend/gda/gnc-price-gda.c
gnucash/branches/gda-dev/src/backend/gda/gnc-recurrence-gda.c
gnucash/branches/gda-dev/src/backend/gda/gnc-schedxaction-gda.c
gnucash/branches/gda-dev/src/backend/gda/gnc-slots-gda.c
gnucash/branches/gda-dev/src/backend/gda/gnc-transaction-gda.c
Log:
Merge some common code - commodity guid handling
Modified: gnucash/branches/gda-dev/src/backend/gda/gnc-account-gda.c
===================================================================
--- gnucash/branches/gda-dev/src/backend/gda/gnc-account-gda.c 2007-12-20 00:59:17 UTC (rev 16687)
+++ gnucash/branches/gda-dev/src/backend/gda/gnc-account-gda.c 2007-12-20 02:55:12 UTC (rev 16688)
@@ -63,8 +63,9 @@
{ "guid", CT_GUID, 0, COL_NNUL, "guid" },
{ "name", CT_STRING, ACCOUNT_MAX_NAME_LEN, COL_NNUL, "name" },
{ "account_type", CT_STRING, ACCOUNT_MAX_TYPE_LEN, COL_NNUL, NULL, ACCOUNT_TYPE_ },
- { "commodity_guid", CT_GUID, 0, COL_NNUL, NULL, NULL, get_commodity, set_commodity },
- { "parent_guid", CT_GUID, 0, 0, NULL, NULL, get_parent, set_parent },
+// { "commodity_guid", CT_GUID_C, 0, COL_NNUL, NULL, NULL, get_commodity, set_commodity },
+ { "commodity_guid", CT_GUID_C, 0, COL_NNUL, "commodity" },
+ { "parent_guid", CT_GUID_A, 0, 0, NULL, NULL, get_parent, set_parent },
{ "code", CT_STRING, ACCOUNT_MAX_CODE_LEN, 0, "code" },
{ "description", CT_STRING, ACCOUNT_MAX_DESCRIPTION_LEN, 0, "description" },
{ NULL }
@@ -167,14 +168,14 @@
GUID acc_guid;
Account* pAccount;
- guid = gnc_gda_load_guid( pModel, row );
+ guid = gnc_gda_load_guid( be, pModel, row );
acc_guid = *guid;
pAccount = xaccAccountLookup( &acc_guid, be->primary_book );
if( pAccount == NULL ) {
pAccount = xaccMallocAccount( be->primary_book );
}
- gnc_gda_load_object( pModel, row, GNC_ID_ACCOUNT, pAccount, col_table );
+ gnc_gda_load_object( be, pModel, row, GNC_ID_ACCOUNT, pAccount, col_table );
gnc_gda_slots_load( be, xaccAccountGetGUID( pAccount ),
qof_instance_get_slots( QOF_INSTANCE(pAccount) ) );
load_balances( be, pAccount );
@@ -186,7 +187,7 @@
if( gnc_account_get_parent( pAccount ) == NULL ) {
account_parent_guid_struct* s = g_slice_new( account_parent_guid_struct );
s->pAccount = pAccount;
- gnc_gda_load_object( pModel, row, GNC_ID_ACCOUNT, s, parent_col_table );
+ gnc_gda_load_object( be, pModel, row, GNC_ID_ACCOUNT, s, parent_col_table );
*l_accounts_needing_parents = g_list_prepend( *l_accounts_needing_parents, s );
}
Modified: gnucash/branches/gda-dev/src/backend/gda/gnc-backend-util-gda.c
===================================================================
--- gnucash/branches/gda-dev/src/backend/gda/gnc-backend-util-gda.c 2007-12-20 00:59:17 UTC (rev 16687)
+++ gnucash/branches/gda-dev/src/backend/gda/gnc-backend-util-gda.c 2007-12-20 02:55:12 UTC (rev 16688)
@@ -38,6 +38,8 @@
#include "TransLog.h"
#include "gnc-engine.h"
+#include "gnc-commodity.h"
+
#include "gnc-backend-util-gda.h"
#include "gnc-gconf-utils.h"
@@ -60,7 +62,7 @@
gnc_gda_query_info* pQueryInfo;
} gda_backend;
-typedef void (*GNC_GDA_LOAD_FN)( GdaDataModel* pModel, gint row,
+typedef void (*GNC_GDA_LOAD_FN)( GncGdaBackend* be, GdaDataModel* pModel, gint row,
QofSetterFunc setter, gpointer pObject,
const col_cvt_t* table );
typedef void (*GNC_GDA_CREATE_COL_FN)( GdaServerProvider* server,
@@ -145,7 +147,7 @@
}
static void
-load_string( GdaDataModel* pModel, gint row,
+load_string( GncGdaBackend* be, GdaDataModel* pModel, gint row,
QofSetterFunc setter, gpointer pObject,
const col_cvt_t* table )
{
@@ -224,7 +226,7 @@
/* ----------------------------------------------------------------- */
static void
-load_int( GdaDataModel* pModel, gint row,
+load_int( GncGdaBackend* be, GdaDataModel* pModel, gint row,
QofSetterFunc setter, gpointer pObject,
const col_cvt_t* table )
{
@@ -297,7 +299,7 @@
/* ----------------------------------------------------------------- */
static void
-load_boolean( GdaDataModel* pModel, gint row,
+load_boolean( GncGdaBackend* be, GdaDataModel* pModel, gint row,
QofSetterFunc setter, gpointer pObject,
const col_cvt_t* table )
{
@@ -370,7 +372,7 @@
/* ----------------------------------------------------------------- */
static void
-load_int64( GdaDataModel* pModel, gint row,
+load_int64( GncGdaBackend* be, GdaDataModel* pModel, gint row,
QofSetterFunc setter, gpointer pObject,
const col_cvt_t* table )
{
@@ -442,7 +444,7 @@
/* ----------------------------------------------------------------- */
static void
-load_double( GdaDataModel* pModel, gint row,
+load_double( GncGdaBackend* be, GdaDataModel* pModel, gint row,
QofSetterFunc setter, gpointer pObject,
const col_cvt_t* table )
{
@@ -515,7 +517,7 @@
/* ----------------------------------------------------------------- */
static void
-load_guid( GdaDataModel* pModel, gint row,
+load_guid( GncGdaBackend* be, GdaDataModel* pModel, gint row,
QofSetterFunc setter, gpointer pObject,
const col_cvt_t* table )
{
@@ -592,12 +594,257 @@
{ load_guid, create_guid_col,
get_gvalue_guid_for_query, get_gvalue_guid_cond };
/* ----------------------------------------------------------------- */
+
static void
-load_timespec( GdaDataModel* pModel, gint row,
+load_account_guid( GncGdaBackend* be, GdaDataModel* pModel, gint row,
QofSetterFunc setter, gpointer pObject,
const col_cvt_t* table )
{
const GValue* val;
+ GUID guid;
+ const GUID* pGuid;
+
+ val = gda_data_model_get_value_at_col_name( pModel, table->col_name, row );
+ if( gda_value_is_null( val ) ) {
+ pGuid = NULL;
+ } else {
+ string_to_guid( g_value_get_string( val ), &guid );
+ pGuid = &guid;
+ }
+ if( table->gobj_param_name != NULL ) {
+ g_object_set( pObject, table->gobj_param_name, pGuid, NULL );
+ } else {
+ (*setter)( pObject, (const gpointer)pGuid );
+ }
+}
+
+static void
+get_gvalue_account_guid( GncGdaBackend* be, QofIdTypeConst obj_name, gpointer pObject,
+ const col_cvt_t* table_row, GValue* value )
+{
+ QofAccessFunc getter;
+ const GUID* guid;
+ gchar guid_buf[GUID_ENCODING_LENGTH+1];
+
+ memset( value, 0, sizeof( GValue ) );
+
+ if( table_row->gobj_param_name != NULL ) {
+ g_object_get( pObject, table_row->gobj_param_name, &guid, NULL );
+ } else {
+ getter = get_getter( obj_name, table_row );
+ guid = (*getter)( pObject, NULL );
+ }
+ if( guid != NULL ) {
+ (void)guid_to_string_buff( guid, guid_buf );
+ g_value_init( value, G_TYPE_STRING );
+ g_value_set_string( value, guid_buf );
+ }
+}
+
+static void
+get_gvalue_account_guid_for_query( GncGdaBackend* be, QofIdTypeConst obj_name,
+ gpointer pObject, const col_cvt_t* table_row, GdaQuery* query )
+{
+ GValue value;
+
+ get_gvalue_guid( be, obj_name, pObject, table_row, &value );
+ add_field_to_query( query, table_row->col_name, &value );
+}
+
+static GdaQueryCondition*
+get_gvalue_account_guid_cond( GncGdaBackend* be, QofIdTypeConst obj_name,
+ gpointer pObject, const col_cvt_t* table_row, GdaQuery* query )
+{
+ GValue value;
+
+ get_gvalue_account_guid( be, obj_name, pObject, table_row, &value );
+ return gnc_gda_create_condition_from_field( query, table_row->col_name, &value );
+}
+
+static void
+create_account_guid_col( GdaServerProvider* server, GdaConnection* cnn,
+ xmlNodePtr array_data, const col_cvt_t* table_row, gboolean pkey )
+{
+ add_table_column( server, cnn, array_data, table_row->col_name,
+ "char", GUID_ENCODING_LENGTH, table_row->flags | pkey ? COL_PKEY : 0 );
+}
+
+static col_type_handler_t account_guid_handler =
+ { load_account_guid, create_account_guid_col,
+ get_gvalue_account_guid_for_query, get_gvalue_account_guid_cond };
+/* ----------------------------------------------------------------- */
+
+static void
+load_commodity_guid( GncGdaBackend* be, GdaDataModel* pModel, gint row,
+ QofSetterFunc setter, gpointer pObject,
+ const col_cvt_t* table )
+{
+ const GValue* val;
+ GUID guid;
+ const GUID* pGuid;
+ gnc_commodity* commodity = NULL;
+
+ val = gda_data_model_get_value_at_col_name( pModel, table->col_name, row );
+ if( gda_value_is_null( val ) ) {
+ pGuid = NULL;
+ } else {
+ string_to_guid( g_value_get_string( val ), &guid );
+ pGuid = &guid;
+ }
+ if( pGuid != NULL ) {
+ commodity = gnc_commodity_find_commodity_by_guid( pGuid, be->primary_book );
+ }
+ if( table->gobj_param_name != NULL ) {
+ g_object_set( pObject, table->gobj_param_name, commodity, NULL );
+ } else {
+ (*setter)( pObject, (const gpointer)commodity );
+ }
+}
+
+static void
+get_gvalue_commodity_guid( GncGdaBackend* be, QofIdTypeConst obj_name, gpointer pObject,
+ const col_cvt_t* table_row, GValue* value )
+{
+ QofAccessFunc getter;
+ const GUID* guid = NULL;
+ gchar guid_buf[GUID_ENCODING_LENGTH+1];
+ gnc_commodity* commodity;
+
+ memset( value, 0, sizeof( GValue ) );
+
+ if( table_row->gobj_param_name != NULL ) {
+ g_object_get( pObject, table_row->gobj_param_name, &commodity, NULL );
+ } else {
+ getter = get_getter( obj_name, table_row );
+ commodity = (*getter)( pObject, NULL );
+ }
+ if( commodity != NULL ) {
+ guid = qof_instance_get_guid( QOF_INSTANCE(commodity) );
+ }
+ if( guid != NULL ) {
+ (void)guid_to_string_buff( guid, guid_buf );
+ g_value_init( value, G_TYPE_STRING );
+ g_value_set_string( value, guid_buf );
+ }
+}
+
+static void
+get_gvalue_commodity_guid_for_query( GncGdaBackend* be, QofIdTypeConst obj_name,
+ gpointer pObject, const col_cvt_t* table_row, GdaQuery* query )
+{
+ GValue value;
+
+ get_gvalue_commodity_guid( be, obj_name, pObject, table_row, &value );
+ add_field_to_query( query, table_row->col_name, &value );
+}
+
+static GdaQueryCondition*
+get_gvalue_commodity_guid_cond( GncGdaBackend* be, QofIdTypeConst obj_name,
+ gpointer pObject, const col_cvt_t* table_row, GdaQuery* query )
+{
+ GValue value;
+
+ get_gvalue_commodity_guid( be, obj_name, pObject, table_row, &value );
+ return gnc_gda_create_condition_from_field( query, table_row->col_name, &value );
+}
+
+static void
+create_commodity_guid_col( GdaServerProvider* server, GdaConnection* cnn,
+ xmlNodePtr array_data, const col_cvt_t* table_row, gboolean pkey )
+{
+ add_table_column( server, cnn, array_data, table_row->col_name,
+ "char", GUID_ENCODING_LENGTH, table_row->flags | pkey ? COL_PKEY : 0 );
+}
+
+static col_type_handler_t commodity_guid_handler =
+ { load_commodity_guid, create_commodity_guid_col,
+ get_gvalue_commodity_guid_for_query, get_gvalue_commodity_guid_cond };
+/* ----------------------------------------------------------------- */
+
+static void
+load_tx_guid( GncGdaBackend* be, GdaDataModel* pModel, gint row,
+ QofSetterFunc setter, gpointer pObject,
+ const col_cvt_t* table )
+{
+ const GValue* val;
+ GUID guid;
+ const GUID* pGuid;
+
+ val = gda_data_model_get_value_at_col_name( pModel, table->col_name, row );
+ if( gda_value_is_null( val ) ) {
+ pGuid = NULL;
+ } else {
+ string_to_guid( g_value_get_string( val ), &guid );
+ pGuid = &guid;
+ }
+ if( table->gobj_param_name != NULL ) {
+ g_object_set( pObject, table->gobj_param_name, pGuid, NULL );
+ } else {
+ (*setter)( pObject, (const gpointer)pGuid );
+ }
+}
+
+static void
+get_gvalue_tx_guid( GncGdaBackend* be, QofIdTypeConst obj_name, gpointer pObject,
+ const col_cvt_t* table_row, GValue* value )
+{
+ QofAccessFunc getter;
+ const GUID* guid;
+ gchar guid_buf[GUID_ENCODING_LENGTH+1];
+
+ memset( value, 0, sizeof( GValue ) );
+
+ if( table_row->gobj_param_name != NULL ) {
+ g_object_get( pObject, table_row->gobj_param_name, &guid, NULL );
+ } else {
+ getter = get_getter( obj_name, table_row );
+ guid = (*getter)( pObject, NULL );
+ }
+ if( guid != NULL ) {
+ (void)guid_to_string_buff( guid, guid_buf );
+ g_value_init( value, G_TYPE_STRING );
+ g_value_set_string( value, guid_buf );
+ }
+}
+
+static void
+get_gvalue_tx_guid_for_query( GncGdaBackend* be, QofIdTypeConst obj_name,
+ gpointer pObject, const col_cvt_t* table_row, GdaQuery* query )
+{
+ GValue value;
+
+ get_gvalue_tx_guid( be, obj_name, pObject, table_row, &value );
+ add_field_to_query( query, table_row->col_name, &value );
+}
+
+static GdaQueryCondition*
+get_gvalue_tx_guid_cond( GncGdaBackend* be, QofIdTypeConst obj_name,
+ gpointer pObject, const col_cvt_t* table_row, GdaQuery* query )
+{
+ GValue value;
+
+ get_gvalue_tx_guid( be, obj_name, pObject, table_row, &value );
+ return gnc_gda_create_condition_from_field( query, table_row->col_name, &value );
+}
+
+static void
+create_tx_guid_col( GdaServerProvider* server, GdaConnection* cnn,
+ xmlNodePtr array_data, const col_cvt_t* table_row, gboolean pkey )
+{
+ add_table_column( server, cnn, array_data, table_row->col_name,
+ "char", GUID_ENCODING_LENGTH, table_row->flags | pkey ? COL_PKEY : 0 );
+}
+
+static col_type_handler_t tx_guid_handler =
+ { load_tx_guid, create_tx_guid_col,
+ get_gvalue_tx_guid_for_query, get_gvalue_tx_guid_cond };
+/* ----------------------------------------------------------------- */
+static void
+load_timespec( GncGdaBackend* be, GdaDataModel* pModel, gint row,
+ QofSetterFunc setter, gpointer pObject,
+ const col_cvt_t* table )
+{
+ const GValue* val;
GDate* date;
Timespec ts;
@@ -692,7 +939,7 @@
get_gvalue_timespec_for_query, get_gvalue_timespec_cond };
/* ----------------------------------------------------------------- */
static void
-load_date( GdaDataModel* pModel, gint row,
+load_date( GncGdaBackend* be, GdaDataModel* pModel, gint row,
QofSetterFunc setter, gpointer pObject,
const col_cvt_t* table )
{
@@ -791,7 +1038,7 @@
}
static void
-load_numeric( GdaDataModel* pModel, gint row,
+load_numeric( GncGdaBackend* be, GdaDataModel* pModel, gint row,
QofSetterFunc setter, gpointer pObject,
const col_cvt_t* table )
{
@@ -969,6 +1216,18 @@
pHandler = &guid_handler;
break;
+ case CT_GUID_A:
+ pHandler = &account_guid_handler;
+ break;
+
+ case CT_GUID_C:
+ pHandler = &commodity_guid_handler;
+ break;
+
+ case CT_GUID_T:
+ pHandler = &tx_guid_handler;
+ break;
+
case CT_TIMESPEC:
pHandler = ×pec_handler;
break;
@@ -1008,11 +1267,11 @@
};
const GUID*
-gnc_gda_load_guid( GdaDataModel* pModel, gint row )
+gnc_gda_load_guid( GncGdaBackend* be, GdaDataModel* pModel, gint row )
{
static GUID guid;
- gnc_gda_load_object( pModel, row, NULL, &guid, guid_table );
+ gnc_gda_load_object( be, pModel, row, NULL, &guid, guid_table );
return &guid;
}
@@ -1025,17 +1284,17 @@
};
const GUID*
-gnc_gda_load_tx_guid( GdaDataModel* pModel, gint row )
+gnc_gda_load_tx_guid( GncGdaBackend* be, GdaDataModel* pModel, gint row )
{
static GUID guid;
- gnc_gda_load_object( pModel, row, NULL, &guid, tx_guid_table );
+ gnc_gda_load_object( be, pModel, row, NULL, &guid, tx_guid_table );
return &guid;
}
void
-gnc_gda_load_object( GdaDataModel* pModel, gint row,
+gnc_gda_load_object( GncGdaBackend* be, GdaDataModel* pModel, gint row,
QofIdTypeConst obj_name, gpointer pObject,
const col_cvt_t* table )
{
@@ -1051,7 +1310,7 @@
setter = table[col].setter;
}
pHandler = get_handler( table[col].col_type );
- pHandler->load_fn( pModel, row, setter, pObject, &table[col] );
+ pHandler->load_fn( be, pModel, row, setter, pObject, &table[col] );
}
}
Modified: gnucash/branches/gda-dev/src/backend/gda/gnc-backend-util-gda.h
===================================================================
--- gnucash/branches/gda-dev/src/backend/gda/gnc-backend-util-gda.h 2007-12-20 00:59:17 UTC (rev 16687)
+++ gnucash/branches/gda-dev/src/backend/gda/gnc-backend-util-gda.h 2007-12-20 02:55:12 UTC (rev 16688)
@@ -77,6 +77,9 @@
typedef enum {
CT_STRING,
CT_GUID,
+ CT_GUID_A,
+ CT_GUID_C,
+ CT_GUID_T,
CT_INT,
CT_INT64,
CT_TIMESPEC,
@@ -133,7 +136,7 @@
GdaQuery* gnc_gda_create_query_from_sql( GncGdaBackend* pBackend, const gchar* sql );
int gnc_gda_execute_select_get_count( GncGdaBackend* pBackend, const gchar* sql );
int gnc_gda_execute_query_get_count( GncGdaBackend* pBackend, GdaQuery* query );
-void gnc_gda_load_object( GdaDataModel* pModel, int row,
+void gnc_gda_load_object( GncGdaBackend* be, GdaDataModel* pModel, int row,
QofIdTypeConst obj_name, gpointer pObject,
const col_cvt_t* table );
gboolean gnc_gda_object_is_it_in_db( GncGdaBackend* be,
@@ -145,8 +148,8 @@
GError** error );
void gnc_gda_create_table_if_needed( GncGdaBackend* be,
const gchar* table_name, col_cvt_t* col_table );
-const GUID* gnc_gda_load_guid( GdaDataModel* pModel, int row );
-const GUID* gnc_gda_load_tx_guid( GdaDataModel* pModel, int row );
+const GUID* gnc_gda_load_guid( GncGdaBackend* be, GdaDataModel* pModel, int row );
+const GUID* gnc_gda_load_tx_guid( GncGdaBackend* be, GdaDataModel* pModel, int row );
GdaQuery* gnc_gda_create_select_query( const GncGdaBackend* be, const gchar* table_name );
GdaQueryCondition* gnc_gda_create_condition_from_field( GdaQuery* query,
const gchar* col_name,
Modified: gnucash/branches/gda-dev/src/backend/gda/gnc-book-gda.c
===================================================================
--- gnucash/branches/gda-dev/src/backend/gda/gnc-book-gda.c 2007-12-20 00:59:17 UTC (rev 16687)
+++ gnucash/branches/gda-dev/src/backend/gda/gnc-book-gda.c 2007-12-20 02:55:12 UTC (rev 16688)
@@ -57,8 +57,8 @@
static col_cvt_t col_table[] =
{
{ "guid", CT_GUID, 0, COL_NNUL, "guid" },
- { "root_account_guid", CT_GUID, 0, COL_NNUL, NULL, NULL, get_root_account_guid, set_root_account_guid },
- { "root_template_guid", CT_GUID, 0, COL_NNUL, NULL, NULL, get_root_template_guid, set_root_template_guid },
+ { "root_account_guid", CT_GUID_A, 0, COL_NNUL, NULL, NULL, get_root_account_guid, set_root_account_guid },
+ { "root_template_guid", CT_GUID_A, 0, COL_NNUL, NULL, NULL, get_root_template_guid, set_root_template_guid },
{ NULL }
};
@@ -116,7 +116,7 @@
GUID book_guid;
GNCBook* pBook;
- guid = gnc_gda_load_guid( pModel, row );
+ guid = gnc_gda_load_guid( be, pModel, row );
book_guid = *guid;
pBook = be->primary_book;
@@ -124,7 +124,7 @@
pBook = gnc_book_new();
}
- gnc_gda_load_object( pModel, row, GNC_ID_BOOK, pBook, col_table );
+ gnc_gda_load_object( be, pModel, row, GNC_ID_BOOK, pBook, col_table );
gnc_gda_slots_load( be, gnc_book_get_guid( pBook ),
qof_instance_get_slots( QOF_INSTANCE(pBook) ) );
Modified: gnucash/branches/gda-dev/src/backend/gda/gnc-budget-gda.c
===================================================================
--- gnucash/branches/gda-dev/src/backend/gda/gnc-budget-gda.c 2007-12-20 00:59:17 UTC (rev 16687)
+++ gnucash/branches/gda-dev/src/backend/gda/gnc-budget-gda.c 2007-12-20 02:55:12 UTC (rev 16688)
@@ -68,7 +68,7 @@
GncBudget* pBudget;
Recurrence* r;
- guid = gnc_gda_load_guid( pModel, row );
+ guid = gnc_gda_load_guid( be, pModel, row );
budget_guid = *guid;
pBudget = gnc_budget_lookup( &budget_guid, be->primary_book );
@@ -76,7 +76,7 @@
pBudget = gnc_budget_new( be->primary_book );
}
- gnc_gda_load_object( pModel, row, GNC_ID_BUDGET, pBudget, col_table );
+ gnc_gda_load_object( be, pModel, row, GNC_ID_BUDGET, pBudget, col_table );
r = g_new0( Recurrence, 1 );
gnc_gda_recurrence_load( be, gnc_budget_get_guid( pBudget ), r );
gnc_gda_slots_load( be, gnc_budget_get_guid( pBudget ),
Modified: gnucash/branches/gda-dev/src/backend/gda/gnc-commodity-gda.c
===================================================================
--- gnucash/branches/gda-dev/src/backend/gda/gnc-commodity-gda.c 2007-12-20 00:59:17 UTC (rev 16687)
+++ gnucash/branches/gda-dev/src/backend/gda/gnc-commodity-gda.c 2007-12-20 02:55:12 UTC (rev 16688)
@@ -116,7 +116,7 @@
pCommodity = gnc_commodity_new( pBook, NULL, NULL, NULL, NULL, 100 );
- gnc_gda_load_object( pModel, row, GNC_ID_COMMODITY, pCommodity, col_table );
+ gnc_gda_load_object( be, pModel, row, GNC_ID_COMMODITY, pCommodity, col_table );
gnc_gda_slots_load( be, qof_instance_get_guid( QOF_INSTANCE(pCommodity) ),
qof_instance_get_slots( QOF_INSTANCE(pCommodity) ) );
Modified: gnucash/branches/gda-dev/src/backend/gda/gnc-lots-gda.c
===================================================================
--- gnucash/branches/gda-dev/src/backend/gda/gnc-lots-gda.c 2007-12-20 00:59:17 UTC (rev 16687)
+++ gnucash/branches/gda-dev/src/backend/gda/gnc-lots-gda.c 2007-12-20 02:55:12 UTC (rev 16688)
@@ -51,7 +51,7 @@
static col_cvt_t col_table[] =
{
{ "guid", CT_GUID, 0, COL_NNUL, "guid" },
- { "account_guid", CT_GUID, 0, COL_NNUL, NULL, NULL, get_lot_account, set_lot_account },
+ { "account_guid", CT_GUID_A, 0, COL_NNUL, NULL, NULL, get_lot_account, set_lot_account },
{ "is_closed", CT_STRING, 1, COL_NNUL, NULL, NULL, get_lot_is_closed, set_lot_is_closed },
{ NULL }
};
@@ -103,7 +103,7 @@
lot = gnc_lot_new( be->primary_book );
- gnc_gda_load_object( pModel, row, GNC_ID_LOT, lot, col_table );
+ gnc_gda_load_object( be, pModel, row, GNC_ID_LOT, lot, col_table );
gnc_gda_slots_load( be, qof_instance_get_guid( QOF_INSTANCE(lot) ),
qof_instance_get_slots( QOF_INSTANCE(lot) ) );
Modified: gnucash/branches/gda-dev/src/backend/gda/gnc-price-gda.c
===================================================================
--- gnucash/branches/gda-dev/src/backend/gda/gnc-price-gda.c 2007-12-20 00:59:17 UTC (rev 16687)
+++ gnucash/branches/gda-dev/src/backend/gda/gnc-price-gda.c 2007-12-20 02:55:12 UTC (rev 16688)
@@ -47,10 +47,6 @@
static void set_value( gpointer pObject, gpointer pValue );
static gpointer get_date( gpointer pObject, const QofParam* param );
static void set_date( gpointer pObject, gpointer pValue );
-static gpointer get_currency_guid( gpointer pObject, const QofParam* param );
-static void set_currency_guid( gpointer pObject, gpointer pValue );
-static gpointer get_commodity_guid( gpointer pObject, const QofParam* param );
-static void set_commodity_guid( gpointer pObject, gpointer pValue );
#define PRICE_MAX_SOURCE_LEN 50
#define PRICE_MAX_TYPE_LEN 50
@@ -58,8 +54,12 @@
static col_cvt_t col_table[] =
{
{ "guid", CT_GUID, 0, COL_NNUL, "guid" },
- { "commodity_guid", CT_GUID, 0, COL_NNUL, NULL, NULL, get_commodity_guid, set_commodity_guid },
- { "currency_guid", CT_GUID, 0, COL_NNUL, NULL, NULL, get_currency_guid, set_currency_guid },
+ { "commodity_guid", CT_GUID_C, 0, COL_NNUL, NULL, NULL,
+ (QofAccessFunc)gnc_price_get_commodity,
+ (QofSetterFunc)gnc_price_set_commodity },
+ { "currency_guid", CT_GUID_C, 0, COL_NNUL, NULL, NULL,
+ (QofAccessFunc)gnc_price_get_currency,
+ (QofSetterFunc)gnc_price_set_currency },
{ "date", CT_TIMESPEC, 0, COL_NNUL, NULL, NULL, get_date, set_date },
{ "source", CT_STRING, PRICE_MAX_SOURCE_LEN, 0, NULL, PRICE_SOURCE },
{ "type", CT_STRING, PRICE_MAX_TYPE_LEN, 0, NULL, PRICE_TYPE },
@@ -106,48 +106,6 @@
gnc_price_set_time( pPrice, *pTimespec );
}
-static gpointer
-get_currency_guid( gpointer pObject, const QofParam* param )
-{
- const GNCPrice* pPrice = GNC_PRICE(pObject);
-
- return (gpointer)qof_instance_get_guid(
- QOF_INSTANCE(gnc_price_get_currency( pPrice )) );
-}
-
-static void
-set_currency_guid( gpointer pObject, gpointer pValue )
-{
- GNCPrice* pPrice = GNC_PRICE(pObject);
- QofBook* pBook = qof_instance_get_book( QOF_INSTANCE(pPrice) );
- gnc_commodity* pCurrency;
- GUID* guid = (GUID*)pValue;
-
- pCurrency = gnc_commodity_find_commodity_by_guid( guid, pBook );
- gnc_price_set_currency( pPrice, pCurrency );
-}
-
-static gpointer
-get_commodity_guid( gpointer pObject, const QofParam* param )
-{
- const GNCPrice* pPrice = GNC_PRICE(pObject);
-
- return (gpointer)qof_instance_get_guid(
- QOF_INSTANCE(gnc_price_get_commodity( pPrice )) );
-}
-
-static void
-set_commodity_guid( gpointer pObject, gpointer pValue )
-{
- GNCPrice* pPrice = GNC_PRICE(pObject);
- QofBook* pBook = qof_instance_get_book( QOF_INSTANCE(pPrice) );
- gnc_commodity* pCommodity;
- GUID* guid = (GUID*)pValue;
-
- pCommodity = gnc_commodity_find_commodity_by_guid( guid, pBook );
- gnc_price_set_commodity( pPrice, pCommodity );
-}
-
static GNCPrice*
load_single_price( GncGdaBackend* be, GdaDataModel* pModel, int row )
{
@@ -155,7 +113,7 @@
pPrice = gnc_price_create( be->primary_book );
- gnc_gda_load_object( pModel, row, GNC_ID_PRICE, pPrice, col_table );
+ gnc_gda_load_object( be, pModel, row, GNC_ID_PRICE, pPrice, col_table );
qof_instance_mark_clean( QOF_INSTANCE(pPrice) );
Modified: gnucash/branches/gda-dev/src/backend/gda/gnc-recurrence-gda.c
===================================================================
--- gnucash/branches/gda-dev/src/backend/gda/gnc-recurrence-gda.c 2007-12-20 00:59:17 UTC (rev 16687)
+++ gnucash/branches/gda-dev/src/backend/gda/gnc-recurrence-gda.c 2007-12-20 02:55:12 UTC (rev 16688)
@@ -222,7 +222,7 @@
recurrence_info.be = be;
recurrence_info.pRecurrence = r;
- gnc_gda_load_object( pModel, row, TABLE_NAME, &recurrence_info, col_table );
+ gnc_gda_load_object( be, pModel, row, TABLE_NAME, &recurrence_info, col_table );
}
static GdaObject*
Modified: gnucash/branches/gda-dev/src/backend/gda/gnc-schedxaction-gda.c
===================================================================
--- gnucash/branches/gda-dev/src/backend/gda/gnc-schedxaction-gda.c 2007-12-20 00:59:17 UTC (rev 16687)
+++ gnucash/branches/gda-dev/src/backend/gda/gnc-schedxaction-gda.c 2007-12-20 02:55:12 UTC (rev 16688)
@@ -73,7 +73,7 @@
{ "adv_notify", CT_INT, 0, COL_NNUL, NULL, NULL,
(QofAccessFunc)xaccSchedXactionGetAdvanceReminder,
(QofSetterFunc)xaccSchedXactionSetAdvanceReminder },
- { "template_act_guid", CT_GUID, 0, COL_NNUL, NULL, NULL, get_template_act_guid, set_template_act_guid },
+ { "template_act_guid", CT_GUID_A, 0, COL_NNUL, NULL, NULL, get_template_act_guid, set_template_act_guid },
{ NULL }
};
@@ -154,12 +154,12 @@
SchedXaction* pSx;
GList* schedule = NULL;
- guid = gnc_gda_load_guid( pModel, row );
+ guid = gnc_gda_load_guid( be, pModel, row );
sx_guid = *guid;
pSx = xaccSchedXactionMalloc( be->primary_book );
- gnc_gda_load_object( pModel, row, /*GNC_ID_SCHEDXACTION*/GNC_SX_ID, pSx, col_table );
+ gnc_gda_load_object( be, pModel, row, /*GNC_ID_SCHEDXACTION*/GNC_SX_ID, pSx, col_table );
gnc_gda_recurrence_load_list( be, guid, &schedule );
gnc_sx_set_schedule( pSx, schedule );
gnc_gda_slots_load( be, qof_instance_get_guid( QOF_INSTANCE(pSx) ),
Modified: gnucash/branches/gda-dev/src/backend/gda/gnc-slots-gda.c
===================================================================
--- gnucash/branches/gda-dev/src/backend/gda/gnc-slots-gda.c 2007-12-20 00:59:17 UTC (rev 16687)
+++ gnucash/branches/gda-dev/src/backend/gda/gnc-slots-gda.c 2007-12-20 02:55:12 UTC (rev 16688)
@@ -357,7 +357,7 @@
slot_info.pKvpFrame = pFrame;
slot_info.path = NULL;
- gnc_gda_load_object( pModel, row, TABLE_NAME, &slot_info, col_table );
+ gnc_gda_load_object( be, pModel, row, TABLE_NAME, &slot_info, col_table );
if( slot_info.path != NULL ) {
g_string_free( slot_info.path, TRUE );
Modified: gnucash/branches/gda-dev/src/backend/gda/gnc-transaction-gda.c
===================================================================
--- gnucash/branches/gda-dev/src/backend/gda/gnc-transaction-gda.c 2007-12-20 00:59:17 UTC (rev 16687)
+++ gnucash/branches/gda-dev/src/backend/gda/gnc-transaction-gda.c 2007-12-20 02:55:12 UTC (rev 16688)
@@ -58,8 +58,6 @@
static gpointer get_guid( gpointer pObject, const QofParam* param );
static void set_guid( gpointer pObject, gpointer pValue );
-static gpointer get_tx_currency_guid( gpointer pObject, const QofParam* param );
-static void set_tx_currency_guid( gpointer pObject, gpointer pValue );
static gpointer get_tx_num( gpointer pObject, const QofParam* param );
static void set_tx_num( gpointer pObject, gpointer pValue );
static gpointer get_tx_post_date( gpointer pObject, const QofParam* param );
@@ -73,7 +71,9 @@
static col_cvt_t tx_col_table[] =
{
{ "guid", CT_GUID, 0, COL_NNUL, "guid" },
- { "currency_guid", CT_GUID, 0, COL_NNUL, NULL, NULL, get_tx_currency_guid, set_tx_currency_guid },
+ { "currency_guid", CT_GUID_C, 0, COL_NNUL, NULL, NULL,
+ (QofAccessFunc)xaccTransGetCurrency,
+ (QofSetterFunc)xaccTransSetCurrency },
{ "num", CT_STRING, TX_MAX_NUM_LEN, COL_NNUL, NULL, NULL, get_tx_num, set_tx_num },
{ "post_date", CT_TIMESPEC, 0, COL_NNUL, NULL, NULL, get_tx_post_date, set_tx_post_date },
{ "enter_date", CT_TIMESPEC, 0, COL_NNUL, NULL, NULL, get_tx_enter_date, set_tx_enter_date },
@@ -102,8 +102,8 @@
static col_cvt_t split_col_table[] =
{
{ "guid", CT_GUID, 0, COL_NNUL, "guid" },
- { "tx_guid", CT_GUID, 0, COL_NNUL, NULL, NULL, get_split_tx_guid, set_split_tx_guid },
- { "account_guid", CT_GUID, 0, COL_NNUL, NULL, NULL, get_split_account_guid, set_split_account_guid },
+ { "tx_guid", CT_GUID_T, 0, COL_NNUL, NULL, NULL, get_split_tx_guid, set_split_tx_guid },
+ { "account_guid", CT_GUID_A, 0, COL_NNUL, NULL, NULL, get_split_account_guid, set_split_account_guid },
{ "memo", CT_STRING, SPLIT_MAX_MEMO_LEN, COL_NNUL, NULL, SPLIT_MEMO },
{ "action", CT_STRING, SPLIT_MAX_ACTION_LEN, COL_NNUL, NULL, SPLIT_ACTION },
{ "reconcile_state", CT_STRING, 1, COL_NNUL, NULL, NULL, get_split_reconcile_state, set_split_reconcile_state },
@@ -136,27 +136,6 @@
}
static gpointer
-get_tx_currency_guid( gpointer pObject, const QofParam* param )
-{
- const Transaction* pTx = GNC_TRANS(pObject);
-
- return (gpointer)qof_instance_get_guid(
- QOF_INSTANCE(xaccTransGetCurrency( pTx )) );
-}
-
-static void
-set_tx_currency_guid( gpointer pObject, gpointer pValue )
-{
- Transaction* pTx = GNC_TRANS(pObject);
- QofBook* pBook = qof_instance_get_book( QOF_INSTANCE(pTx) );
- gnc_commodity* pCurrency;
- GUID* guid = (GUID*)pValue;
-
- pCurrency = gnc_commodity_find_commodity_by_guid( guid, pBook );
- xaccTransSetCurrency( pTx, pCurrency );
-}
-
-static gpointer
get_tx_num( gpointer pObject, const QofParam* param )
{
const Transaction* pTx = GNC_TRANS(pObject);
@@ -350,11 +329,11 @@
};
static gnc_numeric
-get_gnc_numeric_from_row( GdaDataModel* model, int row )
+get_gnc_numeric_from_row( GncGdaBackend* be, GdaDataModel* model, int row )
{
gnc_numeric val;
- gnc_gda_load_object( model, row, NULL, &val, quantity_table );
+ gnc_gda_load_object( be, model, row, NULL, &val, quantity_table );
return val;
}
@@ -381,7 +360,7 @@
int r;
for( r = 0; r < numRows; r++ ) {
- gnc_numeric val = get_gnc_numeric_from_row( pModel, r );
+ gnc_numeric val = get_gnc_numeric_from_row( be, pModel, r );
bal = gnc_numeric_add( bal, val, GNC_DENOM_AUTO, GNC_HOW_DENOM_LCD );
}
}
@@ -461,7 +440,7 @@
GUID split_guid;
Split* pSplit;
- guid = gnc_gda_load_guid( pModel, row );
+ guid = gnc_gda_load_guid( be, pModel, row );
split_guid = *guid;
pSplit = xaccSplitLookup( &split_guid, be->primary_book );
@@ -474,7 +453,7 @@
return pSplit;
}
- gnc_gda_load_object( pModel, row, GNC_ID_SPLIT, pSplit, split_col_table );
+ gnc_gda_load_object( be, pModel, row, GNC_ID_SPLIT, pSplit, split_col_table );
gnc_gda_slots_load( be, qof_instance_get_guid( QOF_INSTANCE(pSplit) ),
qof_instance_get_slots( QOF_INSTANCE(pSplit) ) );
@@ -524,7 +503,7 @@
GUID tx_guid;
Transaction* pTx;
- guid = gnc_gda_load_guid( pModel, row );
+ guid = gnc_gda_load_guid( be, pModel, row );
tx_guid = *guid;
pTx = xaccTransLookup( &tx_guid, be->primary_book );
@@ -532,7 +511,7 @@
pTx = xaccMallocTransaction( be->primary_book );
}
xaccTransBeginEdit( pTx );
- gnc_gda_load_object( pModel, row, GNC_ID_TRANS, pTx, tx_col_table );
+ gnc_gda_load_object( be, pModel, row, GNC_ID_TRANS, pTx, tx_col_table );
gnc_gda_slots_load( be, qof_instance_get_guid( QOF_INSTANCE(pTx) ),
qof_instance_get_slots( QOF_INSTANCE(pTx) ) );
load_all_splits( be, qof_instance_get_guid( QOF_INSTANCE(pTx) ) );
@@ -737,7 +716,7 @@
for( r = 0; r < numRows; r++ ) {
const GUID* guid;
- guid = gnc_gda_load_tx_guid( pModel, r );
+ guid = gnc_gda_load_tx_guid( be, pModel, r );
guid_to_string_buff( guid, guid_buf );
if( r == 0 ) {
s = g_strconcat( buf, "'", guid_buf, "'", NULL );
More information about the gnucash-changes
mailing list