r18766 - gnucash/trunk/src - More conversion to read/write objects from sql backend using gobject parameters

Phil Longstaff plongstaff at code.gnucash.org
Sun Feb 28 18:19:34 EST 2010


Author: plongstaff
Date: 2010-02-28 18:19:34 -0500 (Sun, 28 Feb 2010)
New Revision: 18766
Trac: http://svn.gnucash.org/trac/changeset/18766

Modified:
   gnucash/trunk/src/backend/sql/gnc-account-sql.c
   gnucash/trunk/src/backend/sql/gnc-backend-sql.c
   gnucash/trunk/src/backend/sql/gnc-price-sql.c
   gnucash/trunk/src/backend/sql/gnc-schedxaction-sql.c
   gnucash/trunk/src/backend/sql/gnc-transaction-sql.c
   gnucash/trunk/src/engine/Account.c
   gnucash/trunk/src/engine/SchedXaction.c
   gnucash/trunk/src/engine/Split.c
   gnucash/trunk/src/engine/gnc-pricedb.c
   gnucash/trunk/src/report/report-system/report-utilities.scm
Log:
More conversion to read/write objects from sql backend using gobject parameters


Modified: gnucash/trunk/src/backend/sql/gnc-account-sql.c
===================================================================
--- gnucash/trunk/src/backend/sql/gnc-account-sql.c	2010-02-28 22:53:02 UTC (rev 18765)
+++ gnucash/trunk/src/backend/sql/gnc-account-sql.c	2010-02-28 23:19:34 UTC (rev 18766)
@@ -66,7 +66,7 @@
     { "guid",           CT_GUID,         0,                           COL_NNUL|COL_PKEY, "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_COMMODITYREF, 0,                           0,          "commodity" },
+    { "commodity_guid", CT_COMMODITYREF, 0,                           0,                 "commodity" },
 	{ "commodity_scu",  CT_INT,          0,                           COL_NNUL,          "commodity-scu" },
 	{ "non_std_scu",    CT_BOOLEAN,      0,                           COL_NNUL,          "non-std-scu" },
     { "parent_guid",    CT_GUID,         0,                           0,                 NULL, NULL,

Modified: gnucash/trunk/src/backend/sql/gnc-backend-sql.c
===================================================================
--- gnucash/trunk/src/backend/sql/gnc-backend-sql.c	2010-02-28 22:53:02 UTC (rev 18765)
+++ gnucash/trunk/src/backend/sql/gnc-backend-sql.c	2010-02-28 23:19:34 UTC (rev 18766)
@@ -1805,11 +1805,9 @@
     gint64 num, denom;
     gnc_numeric n;
     gboolean isNull = FALSE;
-	NumericSetterFunc n_setter = (NumericSetterFunc)setter;
 
 	g_return_if_fail( be != NULL );
 	g_return_if_fail( row != NULL );
-	g_return_if_fail( setter != NULL );
 	g_return_if_fail( pObject != NULL );
 	g_return_if_fail( table_row != NULL );
 
@@ -1833,7 +1831,12 @@
     }
     n = gnc_numeric_create( num, denom );
     if( !isNull ) {
-        (*n_setter)( pObject, n );
+        if( table_row->gobj_param_name != NULL ) {
+            g_object_set( pObject, table_row->gobj_param_name, &n, NULL );
+		} else {
+	        NumericSetterFunc n_setter = (NumericSetterFunc)setter;
+            (*n_setter)( pObject, n );
+		}
     }
 }
 
@@ -1882,16 +1885,18 @@
 	g_return_if_fail( pObject != NULL );
 	g_return_if_fail( table_row != NULL );
 
-//	if( table_row->gobj_param_name != NULL ) {
-//		g_object_get( pObject, table_row->gobj_param_name, &s, NULL );
-//	} else {
+	if( table_row->gobj_param_name != NULL ) {
+		gnc_numeric *s;
+		g_object_get( pObject, table_row->gobj_param_name, &s, NULL );
+		n = *s;
+	} else {
     	getter = (NumericGetterFunc)gnc_sql_get_getter( obj_name, table_row );
 		if( getter != NULL ) {
     		n = (*getter)( pObject );
 		} else {
 			n = gnc_numeric_zero();
 		}
-//	}
+	}
 
     num_value = g_new0( GValue, 1 );
 	g_assert( num_value != NULL );

Modified: gnucash/trunk/src/backend/sql/gnc-price-sql.c
===================================================================
--- gnucash/trunk/src/backend/sql/gnc-price-sql.c	2010-02-28 22:53:02 UTC (rev 18765)
+++ gnucash/trunk/src/backend/sql/gnc-price-sql.c	2010-02-28 23:19:34 UTC (rev 18766)
@@ -60,7 +60,7 @@
     { "date",           CT_TIMESPEC,       0,                    COL_NNUL,          NULL, PRICE_DATE },
     { "source",         CT_STRING,         PRICE_MAX_SOURCE_LEN, 0,                 "source" },
     { "type",           CT_STRING,         PRICE_MAX_TYPE_LEN,   0,                 "type" },
-    { "value",          CT_NUMERIC,        0,                    COL_NNUL,          NULL, PRICE_VALUE },
+    { "value",          CT_NUMERIC,        0,                    COL_NNUL,          "value" },
     { NULL }
 	/*@ +full_init_block @*/
 };

Modified: gnucash/trunk/src/backend/sql/gnc-schedxaction-sql.c
===================================================================
--- gnucash/trunk/src/backend/sql/gnc-schedxaction-sql.c	2010-02-28 22:53:02 UTC (rev 18765)
+++ gnucash/trunk/src/backend/sql/gnc-schedxaction-sql.c	2010-02-28 23:19:34 UTC (rev 18766)
@@ -55,10 +55,6 @@
 
 #define SX_MAX_NAME_LEN 2048
 
-static gboolean get_autocreate( gpointer pObject );
-static void set_autocreate( gpointer pObject, gboolean value );
-static gboolean get_autonotify( gpointer pObject );
-static void set_autonotify( gpointer pObject, gboolean value );
 static gint get_instance_count( gpointer pObject );
 static /*@ null @*/ gpointer get_template_act_guid( gpointer pObject );
 static void set_template_act_guid( gpointer pObject, /*@ null @*/ gpointer pValue );
@@ -74,18 +70,12 @@
     { "end_date",          CT_GDATE,   0,               0,                 NULL, NULL,
 			(QofAccessFunc)xaccSchedXactionGetEndDate, (QofSetterFunc)xaccSchedXactionSetEndDate },
     { "last_occur",        CT_GDATE,   0,               0,                 NULL, GNC_SX_LAST_DATE },
-    { "num_occur",         CT_INT,     0,               COL_NNUL,          NULL, GNC_SX_NUM_OCCUR },
-    { "rem_occur",         CT_INT,     0,               COL_NNUL,          NULL, GNC_SX_REM_OCCUR },
-    { "auto_create",       CT_BOOLEAN, 0,               COL_NNUL,          NULL, NULL,
-			(QofAccessFunc)get_autocreate,        (QofSetterFunc)set_autocreate },
-    { "auto_notify",       CT_BOOLEAN, 0,               COL_NNUL,          NULL, NULL,
-			(QofAccessFunc)get_autonotify,        (QofSetterFunc)set_autonotify },
-    { "adv_creation",      CT_INT,     0,               COL_NNUL,          NULL, NULL,
-            (QofAccessFunc)xaccSchedXactionGetAdvanceCreation,
-            (QofSetterFunc)xaccSchedXactionSetAdvanceCreation },
-    { "adv_notify",        CT_INT,     0,               COL_NNUL,          NULL, NULL,
-            (QofAccessFunc)xaccSchedXactionGetAdvanceReminder,
-            (QofSetterFunc)xaccSchedXactionSetAdvanceReminder },
+    { "num_occur",         CT_INT,     0,               COL_NNUL,          "num-occurance" },
+    { "rem_occur",         CT_INT,     0,               COL_NNUL,          "rem-occurance" },
+    { "auto_create",       CT_BOOLEAN, 0,               COL_NNUL,          "auto-create" },
+    { "auto_notify",       CT_BOOLEAN, 0,               COL_NNUL,          "auto-create-notify" },
+    { "adv_creation",      CT_INT,     0,               COL_NNUL,          "advance-creation-days" },
+    { "adv_notify",        CT_INT,     0,               COL_NNUL,          "advance-reminder-days" },
 	{ "instance_count",    CT_INT,     0,               COL_NNUL,          NULL, NULL,
 			(QofAccessFunc)get_instance_count, (QofSetterFunc)gnc_sx_set_instance_count },
     { "template_act_guid", CT_GUID,    0,               COL_NNUL,          NULL, NULL,
@@ -96,66 +86,6 @@
 
 /* ================================================================= */
 
-static gboolean
-get_autocreate( gpointer pObject )
-{
-    const SchedXaction* pSx;
-    gboolean autoCreate;
-    gboolean autoNotify;
-
-	g_return_val_if_fail( pObject != NULL, FALSE );
-	g_return_val_if_fail( GNC_IS_SX(pObject), FALSE );
-
-    pSx = GNC_SX(pObject);
-    xaccSchedXactionGetAutoCreate( pSx, &autoCreate, &autoNotify );
-    return autoCreate;
-}
-
-static void 
-set_autocreate( gpointer pObject, gboolean value )
-{
-    SchedXaction* pSx;
-    gboolean autoNotify;
-	gboolean dummy;
-
-	g_return_if_fail( pObject != NULL );
-	g_return_if_fail( GNC_IS_SX(pObject) );
-
-    pSx = GNC_SX(pObject);
-    xaccSchedXactionGetAutoCreate( pSx, &dummy, &autoNotify );
-    xaccSchedXactionSetAutoCreate( pSx, value, autoNotify );
-}
-
-static gboolean
-get_autonotify( gpointer pObject )
-{
-    const SchedXaction* pSx;
-    gboolean autoCreate;
-    gboolean autoNotify;
-
-	g_return_val_if_fail( pObject != NULL, FALSE );
-	g_return_val_if_fail( GNC_IS_SX(pObject), FALSE );
-
-    pSx = GNC_SX(pObject);
-    xaccSchedXactionGetAutoCreate( pSx, &autoCreate, &autoNotify );
-    return autoNotify;
-}
-
-static void 
-set_autonotify( gpointer pObject, gboolean value )
-{
-    SchedXaction* pSx;
-    gboolean autoCreate;
-    gboolean dummy;
-
-	g_return_if_fail( pObject != NULL );
-	g_return_if_fail( GNC_IS_SX(pObject) );
-
-    pSx = GNC_SX(pObject);
-    xaccSchedXactionGetAutoCreate( pSx, &autoCreate, &dummy );
-    xaccSchedXactionSetAutoCreate( pSx, autoCreate, value );
-}
-
 static gint
 get_instance_count( gpointer pObject )
 {

Modified: gnucash/trunk/src/backend/sql/gnc-transaction-sql.c
===================================================================
--- gnucash/trunk/src/backend/sql/gnc-transaction-sql.c	2010-02-28 22:53:02 UTC (rev 18765)
+++ gnucash/trunk/src/backend/sql/gnc-transaction-sql.c	2010-02-28 23:19:34 UTC (rev 18766)
@@ -108,8 +108,8 @@
 			(QofAccessFunc)get_split_reconcile_state, set_split_reconcile_state },
     { "reconcile_date",  CT_TIMESPEC,     0,                    0,                 NULL, NULL,
 			(QofAccessFunc)xaccSplitRetDateReconciledTS, (QofSetterFunc)set_split_reconcile_date },
-    { "value",           CT_NUMERIC,      0,                    COL_NNUL,          NULL, SPLIT_VALUE },
-    { "quantity",        CT_NUMERIC,      0,                    COL_NNUL,          NULL, SPLIT_AMOUNT },
+    { "value",           CT_NUMERIC,      0,                    COL_NNUL,          "value" },
+    { "quantity",        CT_NUMERIC,      0,                    COL_NNUL,          "amount" },
 	{ "lot_guid",        CT_LOTREF,       0,                    0,                 NULL, NULL,
 			(QofAccessFunc)xaccSplitGetLot, set_split_lot },
     { NULL }

Modified: gnucash/trunk/src/engine/Account.c
===================================================================
--- gnucash/trunk/src/engine/Account.c	2010-02-28 22:53:02 UTC (rev 18765)
+++ gnucash/trunk/src/engine/Account.c	2010-02-28 23:19:34 UTC (rev 18766)
@@ -461,8 +461,6 @@
     }    
 }
 
-
-
 static void
 gnc_account_class_init (AccountClass *klass)
 {

Modified: gnucash/trunk/src/engine/SchedXaction.c
===================================================================
--- gnucash/trunk/src/engine/SchedXaction.c	2010-02-28 22:53:02 UTC (rev 18765)
+++ gnucash/trunk/src/engine/SchedXaction.c	2010-02-28 23:19:34 UTC (rev 18766)
@@ -46,7 +46,13 @@
 
 enum {
     PROP_0,
-	PROP_NAME
+	PROP_NAME,
+	PROP_NUM_OCCURANCE,
+	PROP_REM_OCCURANCE,
+	PROP_AUTO_CREATE,
+	PROP_AUTO_CREATE_NOTIFY,
+	PROP_ADVANCE_CREATION_DAYS,
+	PROP_ADVANCE_REMINDER_DAYS
 };
 
 /* GObject initialization */
@@ -98,6 +104,24 @@
 	case PROP_NAME:
 	    g_value_set_string(value, sx->name);
 		break;
+    case PROP_NUM_OCCURANCE:
+	    g_value_set_int(value, sx->num_occurances_total);
+		break;
+    case PROP_REM_OCCURANCE:
+	    g_value_set_int(value, sx->num_occurances_remain);
+		break;
+	case PROP_AUTO_CREATE:
+	    g_value_set_boolean(value, sx->autoCreateOption);
+		break;
+    case PROP_AUTO_CREATE_NOTIFY:
+	    g_value_set_boolean(value, sx->autoCreateNotify);
+		break;
+	case PROP_ADVANCE_CREATION_DAYS:
+	    g_value_set_int(value, sx->advanceCreateDays);
+		break;
+	case PROP_ADVANCE_REMINDER_DAYS:
+	    g_value_set_int(value, sx->advanceRemindDays);
+		break;
 	default:
 	    G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec);
 	    break;
@@ -119,6 +143,24 @@
 	case PROP_NAME:
 	    xaccSchedXactionSetName(sx, g_value_get_string(value));
 		break;
+    case PROP_NUM_OCCURANCE:
+	    xaccSchedXactionSetNumOccur(sx, g_value_get_int(value));
+		break;
+    case PROP_REM_OCCURANCE:
+	    xaccSchedXactionSetRemOccur(sx, g_value_get_int(value));
+		break;
+    case PROP_AUTO_CREATE:
+	    xaccSchedXactionSetAutoCreate(sx, g_value_get_boolean(value), sx->autoCreateNotify);
+		break;
+    case PROP_AUTO_CREATE_NOTIFY:
+	    xaccSchedXactionSetAutoCreate(sx, sx->autoCreateOption, g_value_get_boolean(value));
+		break;
+	case PROP_ADVANCE_CREATION_DAYS:
+	    xaccSchedXactionSetAdvanceCreation(sx, g_value_get_int(value));
+		break;
+	case PROP_ADVANCE_REMINDER_DAYS:
+	    xaccSchedXactionSetAdvanceReminder(sx, g_value_get_int(value));
+		break;
 	default:
 	    G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec);
 	    break;
@@ -146,6 +188,70 @@
 			      "that is displayed by the GUI.",
 			      NULL,
 			      G_PARAM_READWRITE));
+
+    g_object_class_install_property
+	(gobject_class,
+	 PROP_NUM_OCCURANCE,
+	 g_param_spec_int ("num-occurance",
+			   "Number of occurances",
+			   "Total number of occurances for this scheduled transaction.",
+			   0,
+			   G_MAXINT16,
+			   1,
+			   G_PARAM_READWRITE));
+
+    g_object_class_install_property
+	(gobject_class,
+	 PROP_REM_OCCURANCE,
+	 g_param_spec_int ("rem-occurance",
+			   "Number of occurances remaining",
+			   "Remaining number of occurances for this scheduled transaction.",
+			   0,
+			   G_MAXINT16,
+			   1,
+			   G_PARAM_READWRITE));
+
+    g_object_class_install_property
+        (gobject_class,
+         PROP_AUTO_CREATE,
+         g_param_spec_boolean ("auto-create",
+                               "Auto-create",
+                               "TRUE if the transaction will be automatically "
+							   "created when its time comes.",
+                               FALSE,
+                               G_PARAM_READWRITE));
+
+    g_object_class_install_property
+        (gobject_class,
+         PROP_AUTO_CREATE_NOTIFY,
+         g_param_spec_boolean ("auto-create-notify",
+                               "Auto-create-notify",
+                               "TRUE if the the user will be notified when the transaction "
+							   "is automatically created.",
+                               FALSE,
+                               G_PARAM_READWRITE));
+
+    g_object_class_install_property
+	(gobject_class,
+	 PROP_ADVANCE_CREATION_DAYS,
+	 g_param_spec_int ("advance-creation-days",
+			   "Days in advance to create",
+			   "Number of days in advance to create this scheduled transaction.",
+			   0,
+			   G_MAXINT16,
+			   0,
+			   G_PARAM_READWRITE));
+
+    g_object_class_install_property
+	(gobject_class,
+	 PROP_ADVANCE_REMINDER_DAYS,
+	 g_param_spec_int ("advance-reminder-days",
+			   "Days in advance to remind",
+			   "Number of days in advance to remind about this scheduled transaction.",
+			   0,
+			   G_MAXINT16,
+			   0,
+			   G_PARAM_READWRITE));
 }
 
 static void

Modified: gnucash/trunk/src/engine/Split.c
===================================================================
--- gnucash/trunk/src/engine/Split.c	2010-02-28 22:53:02 UTC (rev 18765)
+++ gnucash/trunk/src/engine/Split.c	2010-02-28 23:19:34 UTC (rev 18766)
@@ -62,7 +62,9 @@
 enum {
     PROP_0,
 	PROP_ACTION,
-	PROP_MEMO
+	PROP_MEMO,
+	PROP_VALUE,
+	PROP_AMOUNT
 };
 
 /* GObject Initialization */
@@ -124,6 +126,12 @@
 	case PROP_MEMO:
 	    g_value_set_string(value, split->memo);
 		break;
+	case PROP_VALUE:
+	    g_value_set_boxed(value, &split->value);
+	    break;
+	case PROP_AMOUNT:
+	    g_value_set_boxed(value, &split->amount);
+	    break;
 	default:
 	    G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec);
 	    break;
@@ -137,6 +145,7 @@
 			  GParamSpec      *pspec)
 {
     Split *split;
+	gnc_numeric* number;
 
     g_return_if_fail(GNC_IS_SPLIT(object));
 
@@ -148,6 +157,14 @@
 	case PROP_MEMO:
 	    xaccSplitSetMemo(split, g_value_get_string(value));
 		break;
+	case PROP_VALUE:
+	    number = g_value_get_boxed(value);
+	    xaccSplitSetValue(split, *number);
+	    break;
+	case PROP_AMOUNT:
+	    number = g_value_get_boxed(value);
+	    xaccSplitSetAmount(split, *number);
+	    break;
 	default:
 	    G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec);
 	    break;
@@ -187,6 +204,28 @@
 						 "this split.",
 						 NULL,
 						 G_PARAM_READWRITE));
+
+    g_object_class_install_property
+	(gobject_class,
+	 PROP_VALUE,
+	 g_param_spec_boxed("value",
+                            "Split Value",
+                            "The value for this split in the common currency. "
+                            "The value and the amount provide enough information to "
+							"calculate a conversion rate.",
+                            GNC_TYPE_NUMERIC,
+                            G_PARAM_READWRITE));
+
+    g_object_class_install_property
+	(gobject_class,
+	 PROP_AMOUNT,
+	 g_param_spec_boxed("amount",
+                            "Split Amount",
+                            "The value for this split in the currency of its account. "
+                            "The value and the amount provide enough information to "
+							"calculate a conversion rate.",
+                            GNC_TYPE_NUMERIC,
+                            G_PARAM_READWRITE));
 }
 
 /********************************************************************\

Modified: gnucash/trunk/src/engine/gnc-pricedb.c
===================================================================
--- gnucash/trunk/src/engine/gnc-pricedb.c	2010-02-28 22:53:02 UTC (rev 18765)
+++ gnucash/trunk/src/engine/gnc-pricedb.c	2010-02-28 23:19:34 UTC (rev 18766)
@@ -38,7 +38,8 @@
 enum {
     PROP_0,
 	PROP_SOURCE,
-	PROP_TYPE
+	PROP_TYPE,
+	PROP_VALUE
 };
 
 /* GObject Initialization */
@@ -80,6 +81,9 @@
 	case PROP_TYPE:
 	    g_value_set_string(value, price->type);
         break;
+	case PROP_VALUE:
+	    g_value_set_boxed(value, &price->value);
+		break;
 	default:
 	    G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec);
 	    break;
@@ -90,6 +94,7 @@
 gnc_price_set_property(GObject* object, guint prop_id, const GValue* value, GParamSpec* pspec)
 {
     GNCPrice* price;
+	gnc_numeric* number;
 
 	g_return_if_fail(GNC_IS_PRICE(object));
 
@@ -101,6 +106,10 @@
 	case PROP_TYPE:
 	    gnc_price_set_typestr(price, g_value_get_string(value));
         break;
+	case PROP_VALUE:
+	    number = g_value_get_boxed(value);
+	    gnc_price_set_value(price, *number);
+	    break;
 	default:
 	    G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec);
 	    break;
@@ -139,6 +148,15 @@
 				  "are 'bid', 'ask', 'last', 'nav' and 'unknown'.",
 			      NULL,
 				  G_PARAM_READWRITE));
+
+    g_object_class_install_property
+	(gobject_class,
+	 PROP_VALUE,
+	 g_param_spec_boxed("value",
+                            "Value",
+                            "The value of the price quote.",
+                            GNC_TYPE_NUMERIC,
+                            G_PARAM_READWRITE));
 }
 
 /* ==================================================================== */

Modified: gnucash/trunk/src/report/report-system/report-utilities.scm
===================================================================
--- gnucash/trunk/src/report/report-system/report-utilities.scm	2010-02-28 22:53:02 UTC (rev 18765)
+++ gnucash/trunk/src/report/report-system/report-utilities.scm	2010-02-28 23:19:34 UTC (rev 18766)
@@ -1048,11 +1048,11 @@
       account-balances)
     total))
 
-;; Adds "file://" to the beginning of a URL if it doesn't already exist
+;; Adds "file:///" to the beginning of a URL if it doesn't already exist
 ;;
 ;; @param url URL
-;; @return URL with "file://" as the URL type if it isn't already there
+;; @return URL with "file:///" as the URL type if it isn't already there
 (define (make-file-url url)
-  (if (string-prefix? "file://" url)
+  (if (string-prefix? "file:///" url)
      url
-     (string-append "file://" url)))
+     (string-append "file:///" url)))



More information about the gnucash-changes mailing list