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