r17185 - gnucash/branches/gda-dev2/src/backend/gda - Add support for backend save_may_clobber_data() function so that if the
Phil Longstaff
plongstaff at cvs.gnucash.org
Sun Jun 1 11:54:39 EDT 2008
Author: plongstaff
Date: 2008-06-01 11:54:39 -0400 (Sun, 01 Jun 2008)
New Revision: 17185
Trac: http://svn.gnucash.org/trac/changeset/17185
Modified:
gnucash/branches/gda-dev2/src/backend/gda/gnc-backend-gda.c
Log:
Add support for backend save_may_clobber_data() function so that if the
user tries to save to a db which already has tables, a prompt will
appear for whether to overwrite it or not.
Modified: gnucash/branches/gda-dev2/src/backend/gda/gnc-backend-gda.c
===================================================================
--- gnucash/branches/gda-dev2/src/backend/gda/gnc-backend-gda.c 2008-06-01 14:59:27 UTC (rev 17184)
+++ gnucash/branches/gda-dev2/src/backend/gda/gnc-backend-gda.c 2008-06-01 15:54:39 UTC (rev 17185)
@@ -311,18 +311,6 @@
PERR( "gda_dict_update_dbms_meta_data() error: %s\n", error->message );
}
- // Set up table version information
- _init_version_info( be );
-
- // Call all object backends to create any required tables
- 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 );
- if( error != NULL ) {
- PERR( "gda_dict_update_dbms_meta_data() error: %s\n", error->message );
- }
-
LEAVE (" ");
}
@@ -394,6 +382,7 @@
GncGdaDataType_t* pData;
int i;
Account* root;
+ GError* error = NULL;
g_return_if_fail( be_start != NULL );
g_return_if_fail( book != NULL );
@@ -403,6 +392,18 @@
g_assert( be->primary_book == NULL );
be->primary_book = book;
+ // Set up table version information
+ _init_version_info( be );
+
+ // Call all object backends to create any required tables
+ 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 );
+ if( error != NULL ) {
+ PERR( "gda_dict_update_dbms_meta_data() error: %s\n", error->message );
+ }
+
/* Load any initial stuff */
be->loading = TRUE;
@@ -586,6 +587,27 @@
}
}
+static gboolean
+gnc_gda_save_may_clobber_data( QofBackend* qbe )
+{
+ GncGdaBackend* be = (GncGdaBackend*)qbe;
+ GdaDataModel* tables;
+ GError* error = NULL;
+ gint numTables;
+
+ /* Data may be clobbered iff the number of tables != 0 */
+ tables = gda_connection_get_schema( be->pConnection,
+ GDA_CONNECTION_SCHEMA_TABLES,
+ NULL,
+ &error );
+ if( error != NULL ) {
+ PERR( "SQL error: %s\n", error->message );
+ }
+ numTables = gda_data_model_get_n_rows( tables );
+
+ return (numTables != 0);
+}
+
static void
gnc_gda_sync_all( QofBackend* fbe, QofBook *book )
{
@@ -1147,7 +1169,7 @@
be->destroy_backend = gnc_gda_destroy_backend;
be->load = gnc_gda_load;
- be->save_may_clobber_data = NULL;
+ be->save_may_clobber_data = gnc_gda_save_may_clobber_data;
/* The gda backend treats accounting periods transactionally. */
be->begin = gnc_gda_begin_edit;
More information about the gnucash-changes
mailing list