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