r21921 - gnucash/trunk/src - Add more properties to employee object and convert sql backend to use them to save/load objects

Phil Longstaff plongstaff at code.gnucash.org
Mon Jan 30 19:00:15 EST 2012


Author: plongstaff
Date: 2012-01-30 19:00:15 -0500 (Mon, 30 Jan 2012)
New Revision: 21921
Trac: http://svn.gnucash.org/trac/changeset/21921

Modified:
   gnucash/trunk/src/backend/sql/gnc-address-sql.c
   gnucash/trunk/src/backend/sql/gnc-employee-sql.c
   gnucash/trunk/src/engine/gncEmployee.c
Log:
Add more properties to employee object and convert sql backend to use them to save/load objects


Modified: gnucash/trunk/src/backend/sql/gnc-address-sql.c
===================================================================
--- gnucash/trunk/src/backend/sql/gnc-address-sql.c	2012-01-30 13:38:32 UTC (rev 21920)
+++ gnucash/trunk/src/backend/sql/gnc-address-sql.c	2012-01-31 00:00:15 UTC (rev 21921)
@@ -113,7 +113,14 @@
             (*setter)( addr, (const gpointer)s );
         }
     }
-    (*a_setter)( pObject, addr );
+    if ( table_row->gobj_param_name != NULL )
+    {
+        g_object_set( pObject, table_row->gobj_param_name, addr, NULL );
+    }
+    else
+    {
+        (*a_setter)( pObject, addr );
+    }
 }
 
 static void
@@ -163,9 +170,15 @@
     g_return_if_fail( value != NULL );
 
     memset( value, 0, sizeof( GValue ) );
-
-    getter = (AddressGetterFunc)gnc_sql_get_getter( obj_name, table_row );
-    addr = (*getter)( pObject );
+    if ( table_row->gobj_param_name != NULL )
+    {
+        g_object_get( pObject, table_row->gobj_param_name, &addr, NULL );
+    }
+    else
+    {
+        getter = (AddressGetterFunc)gnc_sql_get_getter( obj_name, table_row );
+        addr = (*getter)( pObject );
+    }
     g_value_init( value, gnc_address_get_type() );
     g_value_set_object( value, addr );
 }

Modified: gnucash/trunk/src/backend/sql/gnc-employee-sql.c
===================================================================
--- gnucash/trunk/src/backend/sql/gnc-employee-sql.c	2012-01-30 13:38:32 UTC (rev 21920)
+++ gnucash/trunk/src/backend/sql/gnc-employee-sql.c	2012-01-31 00:00:15 UTC (rev 21921)
@@ -59,19 +59,16 @@
 static GncSqlColumnTableEntry col_table[] =
 {
     { "guid",       CT_GUID,          0,                COL_NNUL | COL_PKEY, "guid" },
-    { "username",   CT_STRING,        MAX_USERNAME_LEN, COL_NNUL,          "username" },
-    { "id",         CT_STRING,        MAX_ID_LEN,       COL_NNUL,          NULL, EMPLOYEE_ID },
-    { "language",   CT_STRING,        MAX_LANGUAGE_LEN, COL_NNUL,          NULL, EMPLOYEE_LANGUAGE },
-    { "acl",        CT_STRING,        MAX_ACL_LEN,      COL_NNUL,          NULL, EMPLOYEE_ACL },
-    { "active",     CT_BOOLEAN,       0,                COL_NNUL,          NULL, QOF_PARAM_ACTIVE },
-    {
-        "currency",   CT_COMMODITYREF,  0,                COL_NNUL,          NULL, NULL,
-        (QofAccessFunc)gncEmployeeGetCurrency, (QofSetterFunc)gncEmployeeSetCurrency
-    },
-    { "ccard_guid", CT_ACCOUNTREF,    0,                0,                 NULL, EMPLOYEE_CC },
-    { "workday",    CT_NUMERIC,       0,                COL_NNUL,          NULL, EMPLOYEE_WORKDAY },
-    { "rate",       CT_NUMERIC,       0,                COL_NNUL,          NULL, EMPLOYEE_RATE },
-    { "addr",       CT_ADDRESS,       0,                0,                 NULL, EMPLOYEE_ADDR },
+    { "username",   CT_STRING,        MAX_USERNAME_LEN, COL_NNUL,            "username" },
+    { "id",         CT_STRING,        MAX_ID_LEN,       COL_NNUL,            "id" },
+    { "language",   CT_STRING,        MAX_LANGUAGE_LEN, COL_NNUL,            "language" },
+    { "acl",        CT_STRING,        MAX_ACL_LEN,      COL_NNUL,            "acl" },
+    { "active",     CT_BOOLEAN,       0,                COL_NNUL,            "active" },
+    { "currency",   CT_COMMODITYREF,  0,                COL_NNUL,            "currency" },
+    { "ccard_guid", CT_ACCOUNTREF,    0,                0,                   "credit-card-account" },
+    { "workday",    CT_NUMERIC,       0,                COL_NNUL,            "workday" },
+    { "rate",       CT_NUMERIC,       0,                COL_NNUL,            "rate" },
+    { "addr",       CT_ADDRESS,       0,                0,                   "address" },
     { NULL }
 };
 

Modified: gnucash/trunk/src/engine/gncEmployee.c
===================================================================
--- gnucash/trunk/src/engine/gncEmployee.c	2012-01-30 13:38:32 UTC (rev 21920)
+++ gnucash/trunk/src/engine/gncEmployee.c	2012-01-31 00:00:15 UTC (rev 21921)
@@ -79,7 +79,16 @@
 enum
 {
     PROP_0,
-    PROP_USERNAME
+    PROP_USERNAME,
+    PROP_ID,
+    PROP_ACTIVE,
+    PROP_LANGUAGE,
+    PROP_CURRENCY,
+    PROP_ACL,
+    PROP_ADDRESS,
+    PROP_WORKDAY,
+    PROP_RATE,
+    PROP_CCARD
 };
 
 /* GObject Initialization */
@@ -118,6 +127,33 @@
     case PROP_USERNAME:
         g_value_set_string(value, emp->username);
         break;
+    case PROP_ID:
+        g_value_set_string(value, emp->id);
+        break;
+    case PROP_ACTIVE:
+        g_value_set_boolean(value, emp->active);
+        break;
+    case PROP_LANGUAGE:
+        g_value_set_string(value, emp->language);
+        break;
+    case PROP_CURRENCY:
+        g_value_set_object(value, emp->currency);
+        break;
+    case PROP_ACL:
+        g_value_set_string(value, emp->acl);
+        break;
+    case PROP_ADDRESS:
+        g_value_set_object(value, emp->addr);
+        break;
+    case PROP_WORKDAY:
+    	g_value_set_boxed(value, &emp->workday);
+    	break;
+    case PROP_RATE:
+    	g_value_set_boxed(value, &emp->rate);
+    	break;
+    case PROP_CCARD:
+    	g_value_set_object(value, emp->ccard_acc);
+    	break;
     default:
         G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec);
         break;
@@ -140,6 +176,33 @@
     case PROP_USERNAME:
         gncEmployeeSetUsername(emp, g_value_get_string(value));
         break;
+    case PROP_ID:
+        gncEmployeeSetID(emp, g_value_get_string(value));
+        break;
+    case PROP_ACTIVE:
+        gncEmployeeSetActive(emp, g_value_get_boolean(value));
+        break;
+    case PROP_LANGUAGE:
+        gncEmployeeSetLanguage(emp, g_value_get_string(value));
+        break;
+    case PROP_CURRENCY:
+        gncEmployeeSetCurrency(emp, g_value_get_object(value));
+        break;
+    case PROP_ACL:
+        gncEmployeeSetAcl(emp, g_value_get_string(value));
+        break;
+    case PROP_ADDRESS:
+        qofEmployeeSetAddr(emp, g_value_get_object(value));
+        break;
+    case PROP_WORKDAY:
+    	gncEmployeeSetWorkday(emp, *(gnc_numeric*)g_value_get_boxed(value));
+    	break;
+    case PROP_RATE:
+    	gncEmployeeSetRate(emp, *(gnc_numeric*)g_value_get_boxed(value));
+    	break;
+    case PROP_CCARD:
+    	gncEmployeeSetCCard(emp, g_value_get_object(value));
+    	break;
     default:
         G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec);
         break;
@@ -211,6 +274,93 @@
                           "name.",
                           NULL,
                           G_PARAM_READWRITE));
+
+    g_object_class_install_property
+    (gobject_class,
+     PROP_ID,
+     g_param_spec_string ("id",
+                          "Employee ID",
+                          "The employee ID is an arbitrary string "
+                          "assigned by the user which provides the employee "
+                          "ID.",
+                          NULL,
+                          G_PARAM_READWRITE));
+
+    g_object_class_install_property
+    (gobject_class,
+     PROP_ACTIVE,
+     g_param_spec_boolean ("active",
+                           "Active",
+                           "TRUE if the employee is active.  FALSE if inactive.",
+                           FALSE,
+                           G_PARAM_READWRITE));
+
+    g_object_class_install_property
+    (gobject_class,
+     PROP_LANGUAGE,
+     g_param_spec_string ("language",
+                          "Employee Language",
+                          "The language is an arbitrary string "
+                          "assigned by the user which provides the language spoken "
+                          " by the employee.",
+                          NULL,
+                          G_PARAM_READWRITE));
+
+    g_object_class_install_property
+    (gobject_class,
+     PROP_CURRENCY,
+     g_param_spec_object ("currency",
+                          "Currency",
+                          "The currency property denotes the currency used by this employee.",
+                          GNC_TYPE_COMMODITY,
+                          G_PARAM_READWRITE));
+
+    g_object_class_install_property
+    (gobject_class,
+     PROP_ACL,
+     g_param_spec_string ("acl",
+                          "Employee ACL",
+                          "The acl is an arbitrary string "
+                          "assigned by the user which provides ??? "
+                          " for the employee.",
+                          NULL,
+                          G_PARAM_READWRITE));
+
+    g_object_class_install_property
+    (gobject_class,
+     PROP_ADDRESS,
+     g_param_spec_object ("address",
+                          "Address",
+                          "The address property contains the address information for this employee.",
+                          GNC_TYPE_ADDRESS,
+                          G_PARAM_READWRITE));
+
+    g_object_class_install_property
+    (gobject_class,
+     PROP_WORKDAY,
+     g_param_spec_boxed("workday",
+                        "Workday rate",
+                        "The daily rate for this employee.",
+                        GNC_TYPE_NUMERIC,
+                        G_PARAM_READWRITE));
+
+    g_object_class_install_property
+    (gobject_class,
+     PROP_RATE,
+     g_param_spec_boxed("rate",
+                        "Hourly rate",
+                        "The hourly rate for this employee.",
+                        GNC_TYPE_NUMERIC,
+                        G_PARAM_READWRITE));
+
+    g_object_class_install_property
+    (gobject_class,
+     PROP_CCARD,
+     g_param_spec_object ("credit-card-account",
+                          "Credit card account",
+                          "The credit card account for this employee.",
+                          GNC_TYPE_ACCOUNT,
+                          G_PARAM_READWRITE));
 }
 
 /* Create/Destroy Functions */



More information about the gnucash-changes mailing list