[glom] DbUtils: Avoid some repeated code.



commit 00c3f4f327271a6aa6b6a72de01d15746c3bcc36
Author: Murray Cumming <murrayc murrayc com>
Date:   Thu Oct 13 19:25:33 2011 +0200

    DbUtils: Avoid some repeated code.
    
    	* glom/libglom/db_utils.cc: Add a utility function for adding the where
    	clause for the auto-increments table.

 ChangeLog                |    7 +++++++
 glom/libglom/db_utils.cc |   38 +++++++++++++++-----------------------
 2 files changed, 22 insertions(+), 23 deletions(-)
---
diff --git a/ChangeLog b/ChangeLog
index 461caf2..bd61916 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,12 @@
 2011-10-13  Murray Cumming  <murrayc murrayc com>
 
+	DbUtils: Avoid some repeated code.
+
+	* glom/libglom/db_utils.cc: Add a utility function for adding the where 
+	clause for the auto-increments table.
+
+2011-10-13  Murray Cumming  <murrayc murrayc com>
+
 	Use Glib::ustring::compose() instead of concatenation for translatable strings.
 
 	* glom/bakery/dialog_offersave.cc:
diff --git a/glom/libglom/db_utils.cc b/glom/libglom/db_utils.cc
index 47c6cdf..c276ef5 100644
--- a/glom/libglom/db_utils.cc
+++ b/glom/libglom/db_utils.cc
@@ -1235,12 +1235,22 @@ bool drop_column(const Glib::ustring& table_name, const Glib::ustring& field_nam
   return true;
 }
 
+static void builder_set_where_autoincrement(const Glib::RefPtr<Gnome::Gda::SqlBuilder>& builder, const Glib::ustring& table_name, const Glib::ustring& field_name)
+{
+  builder->set_where(builder->add_cond(Gnome::Gda::SQL_OPERATOR_TYPE_AND,
+    builder->add_cond(Gnome::Gda::SQL_OPERATOR_TYPE_EQ,
+      builder->add_field_id(GLOM_STANDARD_TABLE_AUTOINCREMENTS_FIELD_TABLE_NAME, GLOM_STANDARD_TABLE_AUTOINCREMENTS_TABLE_NAME),
+      builder->add_expr(table_name)),
+    builder->add_cond(Gnome::Gda::SQL_OPERATOR_TYPE_EQ,
+      builder->add_field_id(GLOM_STANDARD_TABLE_AUTOINCREMENTS_FIELD_FIELD_NAME, GLOM_STANDARD_TABLE_AUTOINCREMENTS_TABLE_NAME),
+      builder->add_expr(field_name))));
+}
+
 Gnome::Gda::Value get_next_auto_increment_value(const Glib::ustring& table_name, const Glib::ustring& field_name)
 {
   const Gnome::Gda::Value result = DbUtils::auto_increment_insert_first_if_necessary(table_name, field_name);
   double num_result = Conversions::get_double_for_gda_value_numeric(result);
 
-
   //Increment the next_value:
   ++num_result;
   const Gnome::Gda::Value next_value = Conversions::parse_value(num_result);
@@ -1248,13 +1258,8 @@ Gnome::Gda::Value get_next_auto_increment_value(const Glib::ustring& table_name,
   Glib::RefPtr<Gnome::Gda::SqlBuilder> builder = Gnome::Gda::SqlBuilder::create(Gnome::Gda::SQL_STATEMENT_UPDATE);
   builder->set_table(GLOM_STANDARD_TABLE_AUTOINCREMENTS_TABLE_NAME);
   builder->add_field_value_as_value(GLOM_STANDARD_TABLE_AUTOINCREMENTS_FIELD_NEXT_VALUE, next_value);
-  builder->set_where(builder->add_cond(Gnome::Gda::SQL_OPERATOR_TYPE_AND,
-                                       builder->add_cond(Gnome::Gda::SQL_OPERATOR_TYPE_EQ,
-                                                         builder->add_field_id(GLOM_STANDARD_TABLE_AUTOINCREMENTS_FIELD_TABLE_NAME, GLOM_STANDARD_TABLE_AUTOINCREMENTS_TABLE_NAME),
-                                                         builder->add_expr(table_name)),
-                                       builder->add_cond(Gnome::Gda::SQL_OPERATOR_TYPE_EQ,
-                                                         builder->add_field_id(GLOM_STANDARD_TABLE_AUTOINCREMENTS_FIELD_FIELD_NAME, GLOM_STANDARD_TABLE_AUTOINCREMENTS_TABLE_NAME),
-                                                         builder->add_expr(field_name))));
+  builder_set_where_autoincrement(builder, table_name, field_name);
+
   const bool test = query_execute(builder);
   if(!test)
     std::cerr << G_STRFUNC << ": Increment failed." << std::endl;
@@ -1278,14 +1283,7 @@ Gnome::Gda::Value auto_increment_insert_first_if_necessary(const Glib::ustring&
     Gnome::Gda::SqlBuilder::create(Gnome::Gda::SQL_STATEMENT_SELECT);
   builder->select_add_field("next_value", GLOM_STANDARD_TABLE_AUTOINCREMENTS_TABLE_NAME);
   builder->select_add_target(GLOM_STANDARD_TABLE_AUTOINCREMENTS_TABLE_NAME);
-  builder->set_where(
-    builder->add_cond(Gnome::Gda::SQL_OPERATOR_TYPE_AND,
-      builder->add_cond(Gnome::Gda::SQL_OPERATOR_TYPE_EQ,
-        builder->add_field_id(GLOM_STANDARD_TABLE_AUTOINCREMENTS_FIELD_TABLE_NAME, GLOM_STANDARD_TABLE_AUTOINCREMENTS_TABLE_NAME),
-        builder->add_expr(table_name)),
-      builder->add_cond(Gnome::Gda::SQL_OPERATOR_TYPE_EQ,
-        builder->add_field_id(GLOM_STANDARD_TABLE_AUTOINCREMENTS_FIELD_FIELD_NAME, GLOM_STANDARD_TABLE_AUTOINCREMENTS_TABLE_NAME),
-        builder->add_expr(field_name))));
+  builder_set_where_autoincrement(builder, table_name, field_name);
 
   const Glib::RefPtr<const Gnome::Gda::DataModel> datamodel = query_execute_select(builder);
   if(!datamodel || (datamodel->get_n_rows() == 0))
@@ -1353,13 +1351,7 @@ static void recalculate_next_auto_increment_value(const Glib::ustring& table_nam
     builder = Gnome::Gda::SqlBuilder::create(Gnome::Gda::SQL_STATEMENT_UPDATE);
     builder->set_table(GLOM_STANDARD_TABLE_AUTOINCREMENTS_TABLE_NAME);
     builder->add_field_value_as_value(GLOM_STANDARD_TABLE_AUTOINCREMENTS_FIELD_NEXT_VALUE, next_value);
-    builder->set_where(builder->add_cond(Gnome::Gda::SQL_OPERATOR_TYPE_AND,
-      builder->add_cond(Gnome::Gda::SQL_OPERATOR_TYPE_EQ,
-        builder->add_field_id(GLOM_STANDARD_TABLE_AUTOINCREMENTS_FIELD_TABLE_NAME, GLOM_STANDARD_TABLE_AUTOINCREMENTS_TABLE_NAME),
-        builder->add_expr(table_name)),
-      builder->add_cond(Gnome::Gda::SQL_OPERATOR_TYPE_EQ,
-        builder->add_field_id(GLOM_STANDARD_TABLE_AUTOINCREMENTS_FIELD_FIELD_NAME, GLOM_STANDARD_TABLE_AUTOINCREMENTS_TABLE_NAME),
-        builder->add_expr(field_name))));
+    builder_set_where_autoincrement(builder, table_name, field_name);
 
     const bool test = query_execute(builder);
     if(!test)



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]