r16781 - gnucash/branches/gda-dev2/src/backend/gda - Prices and budgets use the more general write mechanism for "save as"
Phil Longstaff
plongstaff at cvs.gnucash.org
Tue Jan 1 16:28:30 EST 2008
Author: plongstaff
Date: 2008-01-01 16:28:30 -0500 (Tue, 01 Jan 2008)
New Revision: 16781
Trac: http://svn.gnucash.org/trac/changeset/16781
Modified:
gnucash/branches/gda-dev2/src/backend/gda/gnc-backend-gda.c
gnucash/branches/gda-dev2/src/backend/gda/gnc-budget-gda.c
gnucash/branches/gda-dev2/src/backend/gda/gnc-budget-gda.h
gnucash/branches/gda-dev2/src/backend/gda/gnc-price-gda.c
gnucash/branches/gda-dev2/src/backend/gda/gnc-price-gda.h
Log:
Prices and budgets use the more general write mechanism for "save as"
Modified: gnucash/branches/gda-dev2/src/backend/gda/gnc-backend-gda.c
===================================================================
--- gnucash/branches/gda-dev2/src/backend/gda/gnc-backend-gda.c 2008-01-01 20:55:25 UTC (rev 16780)
+++ gnucash/branches/gda-dev2/src/backend/gda/gnc-backend-gda.c 2008-01-01 21:28:30 UTC (rev 16781)
@@ -41,7 +41,6 @@
#include "gnc-engine.h"
#include "SX-book.h"
#include "Recurrence.h"
-#include "gnc-budget.h"
#include "gnc-backend-util-gda.h"
#include "gnc-gconf-utils.h"
@@ -88,16 +87,16 @@
/* ================================================================= */
static void
-create_tables_cb( const gchar* type, gpointer data_p, gpointer be_data_p )
+create_tables_cb( const gchar* type, gpointer data_p, gpointer be_p )
{
GncGdaDataType_t* pData = data_p;
- gda_backend* be_data = be_data_p;
+ GncGdaBackend* be = be_p;
- g_return_if_fail( type != NULL && pData != NULL && be_data != NULL );
+ g_return_if_fail( type != NULL && data_p != NULL && be_p != NULL );
g_return_if_fail( pData->version == GNC_GDA_BACKEND_VERSION );
if( pData->create_tables != NULL ) {
- (pData->create_tables)( be_data->be );
+ (pData->create_tables)( be );
}
}
@@ -109,7 +108,6 @@
{
GncGdaBackend *be = (GncGdaBackend*)be_start;
GError* error = NULL;
- gda_backend be_data;
gchar* book_info;
gchar* dsn;
gchar* username = "";
@@ -262,10 +260,7 @@
}
// Call all object backends to create any required tables
- be_data.ok = FALSE;
- be_data.be = be;
- be_data.inst = NULL;
- qof_object_foreach_backend( GNC_GDA_BACKEND, create_tables_cb, &be_data );
+ qof_object_foreach_backend( GNC_GDA_BACKEND, create_tables_cb, be );
// Update the dictionary because new tables may exist
gda_dict_update_dbms_meta_data( be->pDict, 0, NULL, &error );
@@ -317,13 +312,13 @@
{ GNC_ID_BOOK, GNC_ID_COMMODITY, GNC_ID_ACCOUNT, NULL };
static void
-initial_load_cb( const gchar* type, gpointer data_p, gpointer be_data_p )
+initial_load_cb( const gchar* type, gpointer data_p, gpointer be_p )
{
GncGdaDataType_t* pData = data_p;
- gda_backend* be_data = be_data_p;
+ GncGdaBackend* be = be_p;
int i;
- g_return_if_fail( type != NULL && pData != NULL && be_data != NULL );
+ g_return_if_fail( type != NULL && data_p != NULL && be_p != NULL );
g_return_if_fail( pData->version == GNC_GDA_BACKEND_VERSION );
// Don't need to load anything if it has already been loaded with the fixed order
@@ -332,7 +327,7 @@
}
if( pData->initial_load != NULL ) {
- (pData->initial_load)( be_data->be );
+ (pData->initial_load)( be );
}
}
@@ -340,7 +335,6 @@
gnc_gda_load(QofBackend* be_start, QofBook *book)
{
GncGdaBackend *be = (GncGdaBackend*)be_start;
- gda_backend be_data;
GncGdaDataType_t* pData;
int i;
@@ -363,10 +357,7 @@
}
}
- be_data.ok = FALSE;
- be_data.be = be;
- be_data.inst = NULL;
- qof_object_foreach_backend( GNC_GDA_BACKEND, initial_load_cb, &be_data );
+ qof_object_foreach_backend( GNC_GDA_BACKEND, initial_load_cb, be );
be->loading = FALSE;
@@ -398,7 +389,7 @@
}
static void
-save_commodities( GncGdaBackend* be, QofBook* book )
+write_commodities( GncGdaBackend* be, QofBook* book )
{
gnc_commodity_table* tbl;
GList* namespaces;
@@ -426,7 +417,7 @@
}
static void
-save_account_tree( GncGdaBackend* be, Account* root )
+write_account_tree( GncGdaBackend* be, Account* root )
{
GList* descendants;
GList* node;
@@ -442,64 +433,15 @@
}
static void
-save_accounts( GncGdaBackend* be, QofBook* book )
+write_accounts( GncGdaBackend* be )
{
g_return_if_fail( be != NULL );
- g_return_if_fail( book != NULL );
- save_account_tree( be, gnc_book_get_root_account( book ) );
+ write_account_tree( be, gnc_book_get_root_account( be->primary_book ) );
}
-static void
-write_budget( QofInstance* ent, gpointer data )
-{
- GncGdaBackend* be = (GncGdaBackend*)data;
-
- g_return_if_fail( data != NULL );
- g_return_if_fail( ent != NULL );
- g_return_if_fail( GNC_IS_BUDGET(ent) );
-
- gnc_gda_save_budget( be, ent );
-}
-
-static void
-save_budgets( GncGdaBackend* be, QofBook* book )
-{
- g_return_if_fail( be != NULL );
- g_return_if_fail( book != NULL );
-
- qof_collection_foreach( qof_book_get_collection( book, GNC_ID_BUDGET ),
- write_budget, be );
-}
-
-static gboolean
-save_price( GNCPrice* p, gpointer data )
-{
- GncGdaBackend* be = (GncGdaBackend*)data;
-
- g_return_val_if_fail( p != NULL, FALSE );
- g_return_val_if_fail( data != NULL, FALSE );
-
- gnc_gda_save_price( be, QOF_INSTANCE(p) );
-
- return TRUE;
-}
-
-static void
-save_prices( GncGdaBackend* be, QofBook* book )
-{
- GNCPriceDB* priceDB;
-
- g_return_if_fail( be != NULL );
- g_return_if_fail( book != NULL );
-
- priceDB = gnc_book_get_pricedb( book );
-
- gnc_pricedb_foreach_price( priceDB, save_price, be, TRUE );
-}
-
static int
-save_tx( Transaction* tx, gpointer data )
+write_tx( Transaction* tx, gpointer data )
{
GncGdaBackend* be = (GncGdaBackend*)data;
@@ -512,41 +454,38 @@
}
static void
-save_transactions( GncGdaBackend* be, QofBook* book )
+write_transactions( GncGdaBackend* be )
{
g_return_if_fail( be != NULL );
- g_return_if_fail( book != NULL );
- xaccAccountTreeForEachTransaction( gnc_book_get_root_account( book ),
- save_tx,
+ xaccAccountTreeForEachTransaction( gnc_book_get_root_account( be->primary_book ),
+ write_tx,
(gpointer)be );
}
static void
-save_template_transactions( GncGdaBackend* be, QofBook* book )
+write_template_transactions( GncGdaBackend* be )
{
Account* ra;
g_return_if_fail( be != NULL );
- g_return_if_fail( book != NULL );
- ra = gnc_book_get_template_root( book );
+ ra = gnc_book_get_template_root( be->primary_book );
if( gnc_account_n_descendants( ra ) > 0 ) {
- save_account_tree( be, ra );
- xaccAccountTreeForEachTransaction( ra, save_tx, (gpointer)be );
+ write_account_tree( be, ra );
+ xaccAccountTreeForEachTransaction( ra, write_tx, (gpointer)be );
}
}
static void
-save_schedXactions( GncGdaBackend* be, QofBook* book )
+write_schedXactions( GncGdaBackend* be )
{
GList* schedXactions;
SchedXaction* tmpSX;
g_return_if_fail( be != NULL );
- g_return_if_fail( book != NULL );
- schedXactions = gnc_book_get_schedxactions( book )->sx_list;
+ schedXactions = gnc_book_get_schedxactions( be->primary_book )->sx_list;
for( ; schedXactions != NULL; schedXactions = schedXactions->next ) {
tmpSX = schedXactions->data;
@@ -555,36 +494,35 @@
}
static void
-write_cb( const gchar* type, gpointer data_p, gpointer be_data_p )
+write_cb( const gchar* type, gpointer data_p, gpointer be_p )
{
GncGdaDataType_t* pData = data_p;
- gda_backend* be_data = be_data_p;
+ GncGdaBackend* be = (GncGdaBackend*)be_p;
- g_return_if_fail( type != NULL && pData != NULL && be_data != NULL );
+ g_return_if_fail( type != NULL && data_p != NULL && be_p != NULL );
g_return_if_fail( pData->version == GNC_GDA_BACKEND_VERSION );
if( pData->write != NULL ) {
- (pData->write)( be_data->be );
+ (pData->write)( be );
}
}
static void
-gnc_gda_sync_all( QofBackend* be, QofBook *book )
+gnc_gda_sync_all( QofBackend* fbe, QofBook *book )
{
- GncGdaBackend *fbe = (GncGdaBackend *) be;
+ GncGdaBackend* be = (GncGdaBackend*)fbe;
GdaDataModel* tables;
GError* error = NULL;
gint row;
gint numTables;
- gda_backend be_data;
g_return_if_fail( be != NULL );
g_return_if_fail( book != NULL );
- ENTER ("book=%p, primary=%p", book, fbe->primary_book);
+ ENTER ("book=%p, primary=%p", book, be->primary_book);
/* Destroy the current contents of the database */
- tables = gda_connection_get_schema( fbe->pConnection,
+ tables = gda_connection_get_schema( be->pConnection,
GDA_CONNECTION_SCHEMA_TABLES,
NULL,
&error );
@@ -599,7 +537,7 @@
row_value = gda_data_model_get_value_at( tables, 0, row );
table_name = g_value_get_string( row_value );
error = NULL;
- if( !gda_drop_table( fbe->pConnection, table_name, &error ) ) {
+ if( !gda_drop_table( be->pConnection, table_name, &error ) ) {
g_critical( "Unable to drop table %s\n", table_name );
if( error != NULL ) {
g_critical( "SQL error: %s\n", error->message );
@@ -608,33 +546,28 @@
}
// Update the dictionary because new tables may exist
- gda_dict_update_dbms_meta_data( fbe->pDict, 0, NULL, &error );
+ gda_dict_update_dbms_meta_data( be->pDict, 0, NULL, &error );
if( error != NULL ) {
g_critical( "gda_dict_update_dbms_meta_data() error: %s\n", error->message );
}
/* Create new tables */
- be_data.ok = FALSE;
- be_data.be = fbe;
- be_data.inst = NULL;
- qof_object_foreach_backend( GNC_GDA_BACKEND, create_tables_cb, &be_data );
+ qof_object_foreach_backend( GNC_GDA_BACKEND, create_tables_cb, be );
// Update the dictionary because new tables may exist
- gda_dict_update_dbms_meta_data( fbe->pDict, 0, NULL, &error );
+ gda_dict_update_dbms_meta_data( be->pDict, 0, NULL, &error );
if( error != NULL ) {
g_critical( "gda_dict_update_dbms_meta_data() error: %s\n", error->message );
}
/* Save all contents */
- //save_commodities( fbe, book );
- gnc_gda_save_book( fbe, QOF_INSTANCE(book) );
- save_accounts( fbe, book );
- save_prices( fbe, book );
- save_transactions( fbe, book );
- save_template_transactions( fbe, book );
- save_schedXactions( fbe, book );
- save_budgets( fbe, book );
- qof_object_foreach_backend( GNC_GDA_BACKEND, write_cb, &be_data );
+ //write_commodities( be, book );
+ gnc_gda_save_book( be, QOF_INSTANCE(book) );
+ write_accounts( be );
+ write_transactions( be );
+ write_template_transactions( be );
+ write_schedXactions( be );
+ qof_object_foreach_backend( GNC_GDA_BACKEND, write_cb, be );
LEAVE ("book=%p", book);
}
Modified: gnucash/branches/gda-dev2/src/backend/gda/gnc-budget-gda.c
===================================================================
--- gnucash/branches/gda-dev2/src/backend/gda/gnc-budget-gda.c 2008-01-01 20:55:25 UTC (rev 16780)
+++ gnucash/branches/gda-dev2/src/backend/gda/gnc-budget-gda.c 2008-01-01 21:28:30 UTC (rev 16781)
@@ -122,8 +122,8 @@
}
/* ================================================================= */
-void
-gnc_gda_save_budget( GncGdaBackend* be, QofInstance* inst )
+static void
+save_budget( GncGdaBackend* be, QofInstance* inst )
{
GncBudget* pBudget = GNC_BUDGET(inst);
const GUID* guid;
@@ -149,6 +149,27 @@
}
}
+static void
+write_budget( QofInstance* ent, gpointer data )
+{
+ GncGdaBackend* be = (GncGdaBackend*)data;
+
+ g_return_if_fail( data != NULL );
+ g_return_if_fail( ent != NULL );
+ g_return_if_fail( GNC_IS_BUDGET(ent) );
+
+ save_budget( be, ent );
+}
+
+static void
+write_budgets( GncGdaBackend* be )
+{
+ g_return_if_fail( be != NULL );
+
+ qof_collection_foreach( qof_book_get_collection( be->primary_book, GNC_ID_BUDGET ),
+ write_budget, be );
+}
+
/* ================================================================= */
void
gnc_gda_init_budget_handler( void )
@@ -157,9 +178,11 @@
{
GNC_GDA_BACKEND_VERSION,
GNC_ID_BUDGET,
- gnc_gda_save_budget, /* commit */
- load_all_budgets, /* initial_load */
- create_budget_tables /* create_tables */
+ save_budget, /* commit */
+ load_all_budgets, /* initial_load */
+ create_budget_tables, /* create_tables */
+ NULL, NULL, NULL,
+ write_budgets /* write */
};
qof_object_register_backend( GNC_ID_BUDGET, GNC_GDA_BACKEND, &be_data );
Modified: gnucash/branches/gda-dev2/src/backend/gda/gnc-budget-gda.h
===================================================================
--- gnucash/branches/gda-dev2/src/backend/gda/gnc-budget-gda.h 2008-01-01 20:55:25 UTC (rev 16780)
+++ gnucash/branches/gda-dev2/src/backend/gda/gnc-budget-gda.h 2008-01-01 21:28:30 UTC (rev 16781)
@@ -33,6 +33,5 @@
#include <gmodule.h>
void gnc_gda_init_budget_handler( void );
-void gnc_gda_save_budget( GncGdaBackend* be, QofInstance* inst );
#endif /* GNC_BUDGET_GDA_H_ */
Modified: gnucash/branches/gda-dev2/src/backend/gda/gnc-price-gda.c
===================================================================
--- gnucash/branches/gda-dev2/src/backend/gda/gnc-price-gda.c 2008-01-01 20:55:25 UTC (rev 16780)
+++ gnucash/branches/gda-dev2/src/backend/gda/gnc-price-gda.c 2008-01-01 21:28:30 UTC (rev 16781)
@@ -121,8 +121,8 @@
/* ================================================================= */
-void
-gnc_gda_save_price( GncGdaBackend* be, QofInstance* inst )
+static void
+save_price( GncGdaBackend* be, QofInstance* inst )
{
GNCPrice* pPrice = GNC_PRICE(inst);
@@ -141,6 +141,31 @@
col_table );
}
+static gboolean
+write_price( GNCPrice* p, gpointer data )
+{
+ GncGdaBackend* be = (GncGdaBackend*)data;
+
+ g_return_val_if_fail( p != NULL, FALSE );
+ g_return_val_if_fail( data != NULL, FALSE );
+
+ save_price( be, QOF_INSTANCE(p) );
+
+ return TRUE;
+}
+
+static void
+write_prices( GncGdaBackend* be )
+{
+ GNCPriceDB* priceDB;
+
+ g_return_if_fail( be != NULL );
+
+ priceDB = gnc_book_get_pricedb( be->primary_book );
+
+ gnc_pricedb_foreach_price( priceDB, write_price, be, TRUE );
+}
+
/* ================================================================= */
void
gnc_gda_init_price_handler( void )
@@ -149,9 +174,11 @@
{
GNC_GDA_BACKEND_VERSION,
GNC_ID_PRICE,
- gnc_gda_save_price, /* commit */
+ save_price, /* commit */
load_all_prices, /* initial_load */
- create_prices_tables /* create tables */
+ create_prices_tables, /* create tables */
+ NULL, NULL, NULL,
+ write_prices /* write */
};
qof_object_register_backend( GNC_ID_PRICE, GNC_GDA_BACKEND, &be_data );
Modified: gnucash/branches/gda-dev2/src/backend/gda/gnc-price-gda.h
===================================================================
--- gnucash/branches/gda-dev2/src/backend/gda/gnc-price-gda.h 2008-01-01 20:55:25 UTC (rev 16780)
+++ gnucash/branches/gda-dev2/src/backend/gda/gnc-price-gda.h 2008-01-01 21:28:30 UTC (rev 16781)
@@ -33,6 +33,5 @@
#include <gmodule.h>
void gnc_gda_init_price_handler( void );
-void gnc_gda_save_price( GncGdaBackend* be, QofInstance* inst );
#endif /* GNC_PRICE_GDA_H_ */
More information about the gnucash-changes
mailing list