41 #if defined( S_SPLINT_S )
42 #include "splint-defs.h"
47 static gpointer get_quote_source_name( gpointer pObject );
48 static void set_quote_source_name( gpointer pObject, gpointer pValue );
50 #define COMMODITIES_TABLE "commodities"
51 #define TABLE_VERSION 1
53 #define COMMODITY_MAX_NAMESPACE_LEN 2048
54 #define COMMODITY_MAX_MNEMONIC_LEN 2048
55 #define COMMODITY_MAX_FULLNAME_LEN 2048
56 #define COMMODITY_MAX_CUSIP_LEN 2048
57 #define COMMODITY_MAX_QUOTESOURCE_LEN 2048
58 #define COMMODITY_MAX_QUOTE_TZ_LEN 2048
65 "namespace", CT_STRING, COMMODITY_MAX_NAMESPACE_LEN,
COL_NNUL, NULL, NULL,
69 {
"mnemonic", CT_STRING, COMMODITY_MAX_MNEMONIC_LEN,
COL_NNUL,
"mnemonic" },
70 {
"fullname", CT_STRING, COMMODITY_MAX_FULLNAME_LEN, 0,
"fullname" },
71 {
"cusip", CT_STRING, COMMODITY_MAX_CUSIP_LEN, 0,
"cusip" },
72 {
"fraction", CT_INT, 0,
COL_NNUL,
"fraction" },
73 {
"quote_flag", CT_BOOLEAN, 0,
COL_NNUL,
"quote_flag" },
75 "quote_source", CT_STRING, COMMODITY_MAX_QUOTESOURCE_LEN, 0, NULL, NULL,
78 {
"quote_tz", CT_STRING, COMMODITY_MAX_QUOTE_TZ_LEN, 0,
"quote-tz" },
86 get_quote_source_name( gpointer pObject )
90 g_return_val_if_fail( pObject != NULL, NULL );
91 g_return_val_if_fail( GNC_IS_COMMODITY(pObject), NULL );
93 pCommodity = GNC_COMMODITY(pObject);
99 set_quote_source_name( gpointer pObject, gpointer pValue )
102 const gchar* quote_source_name = (
const gchar*)pValue;
105 g_return_if_fail( pObject != NULL );
106 g_return_if_fail( GNC_IS_COMMODITY(pObject) );
108 if ( pValue == NULL )
return;
110 pCommodity = GNC_COMMODITY(pObject);
122 gnc_commodity_begin_edit( pCommodity );
124 gnc_commodity_commit_edit( pCommodity );
138 if ( stmt == NULL )
return;
140 gnc_sql_statement_dispose( stmt );
141 if ( result != NULL )
144 GncSqlRow* row = gnc_sql_result_get_first_row( result );
147 while ( row != NULL )
149 pCommodity = load_single_commodity( be, row );
151 if ( pCommodity != NULL )
159 qof_instance_set_guid( QOF_INSTANCE(pCommodity), &guid );
161 row = gnc_sql_result_get_next_row( result );
163 gnc_sql_result_dispose( result );
165 sql = g_strdup_printf(
"SELECT DISTINCT guid FROM %s", COMMODITIES_TABLE );
167 (BookLookupFn)gnc_commodity_find_commodity_by_guid );
177 g_return_if_fail( be != NULL );
195 is_infant = qof_instance_get_infant( inst );
230 g_return_val_if_fail( be != NULL, FALSE );
231 g_return_val_if_fail( inst != NULL, FALSE );
232 g_return_val_if_fail( GNC_IS_COMMODITY(inst), FALSE );
234 return do_commit_commodity( be, inst, FALSE );
240 g_return_val_if_fail( be != NULL, FALSE );
241 g_return_val_if_fail( pCommodity != NULL, FALSE );
244 pCommodity, col_table );
250 gboolean is_ok = TRUE;
252 g_return_val_if_fail( be != NULL, FALSE );
253 g_return_val_if_fail( pCommodity != NULL, FALSE );
255 if ( !is_commodity_in_db( be, pCommodity ) )
257 is_ok = do_commit_commodity( be, QOF_INSTANCE(pCommodity), TRUE );
266 g_return_if_fail (pCommodity != NULL);
267 g_return_if_fail (GNC_IS_COMMODITY (pCommodity));
268 gnc_commodity_begin_edit (pCommodity);
269 gnc_commodity_commit_edit (pCommodity);
283 g_return_if_fail( be != NULL );
284 g_return_if_fail( row != NULL );
285 g_return_if_fail( pObject != NULL );
286 g_return_if_fail( table_row != NULL );
288 val = gnc_sql_row_get_value_at_col_name( row, table_row->
col_name );
289 if ( val != NULL && G_VALUE_HOLDS_STRING( val ) && g_value_get_string( val ) != NULL )
292 commodity = gnc_commodity_find_commodity_by_guid( &guid, be->
book );
293 if ( commodity != NULL )
297 qof_instance_increase_editlevel (pObject);
299 qof_instance_decrease_editlevel (pObject);
301 else if ( setter != NULL )
303 (*setter)( pObject, (
const gpointer)commodity );
308 PWARN(
"Commodity ref '%s' not found", g_value_get_string( val ) );
314 = { load_commodity_guid,
321 gnc_sql_init_commodity_handler(
void )
325 GNC_SQL_BACKEND_VERSION,
328 load_all_commodities,
329 create_commodities_tables,
gnc_commodity * gnc_commodity_table_insert(gnc_commodity_table *table, gnc_commodity *comm)
gboolean qof_object_register_backend(QofIdTypeConst type_name, const char *backend_name, gpointer be_data)
gboolean gnc_sql_object_is_it_in_db(GncSqlBackend *be, const gchar *table_name, QofIdTypeConst obj_name, gpointer pObject, const GncSqlColumnTableEntry *table)
gnc_commodity_table * gnc_commodity_table_get_table(QofBook *book)
const GncGUID * qof_instance_get_guid(gconstpointer)
gint gnc_sql_get_table_version(const GncSqlBackend *be, const gchar *table_name)
#define qof_instance_is_dirty
#define G_LOG_DOMAIN
Functions providing the SX List as a plugin page.
load and save data to SQL
void gnc_sql_add_colname_to_list(const GncSqlColumnTableEntry *table_row, GList **pList)
load and save accounts data to SQL
GncSqlStatement * gnc_sql_create_select_statement(GncSqlBackend *be, const gchar *table_name)
gboolean qof_instance_get_destroying(gconstpointer ptr)
gboolean string_to_guid(const gchar *string, GncGUID *guid)
gboolean gnc_sql_create_table(GncSqlBackend *be, const gchar *table_name, gint table_version, const GncSqlColumnTableEntry *col_table)
load and save data to SQL
void gnc_sql_register_col_type_handler(const gchar *colType, const GncSqlColumnTypeHandler *handler)
void gnc_sql_add_objectref_guid_col_info_to_list(const GncSqlBackend *be, const GncSqlColumnTableEntry *table_row, GList **pList)
const char * gnc_commodity_get_namespace(const gnc_commodity *cm)
gpointer(* QofAccessFunc)(gpointer object, const QofParam *param)
#define PWARN(format, args...)
void gnc_commodity_set_quote_source(gnc_commodity *cm, gnc_quote_source *src)
void gnc_sql_slots_load_for_sql_subquery(GncSqlBackend *be, const gchar *subquery, BookLookupFn lookup_fn)
void gnc_sql_add_gvalue_objectref_guid_to_slist(const GncSqlBackend *be, QofIdTypeConst obj_name, const gpointer pObject, const GncSqlColumnTableEntry *table_row, GSList **pList)
gnc_commodity * gnc_commodity_new(QofBook *book, const char *fullname, const char *name_space, const char *mnemonic, const char *cusip, int fraction)
GncSqlResult * gnc_sql_execute_select_statement(GncSqlBackend *be, GncSqlStatement *stmt)
void gnc_sql_load_object(const GncSqlBackend *be, GncSqlRow *row, QofIdTypeConst obj_name, gpointer pObject, const GncSqlColumnTableEntry *table)
const gchar * gobj_param_name
void gnc_sql_push_commodity_for_postload_processing(GncSqlBackend *be, gpointer *comm)
gnc_quote_source * gnc_quote_source_lookup_by_internal(const char *name)
gboolean gnc_sql_slots_delete(GncSqlBackend *be, const GncGUID *guid)
gnc_quote_source * gnc_commodity_get_quote_source(const gnc_commodity *cm)
void(* QofSetterFunc)(gpointer, gpointer)
void gnc_commodity_set_namespace(gnc_commodity *cm, const char *name_space)
gboolean gnc_sql_do_db_operation(GncSqlBackend *be, E_DB_OPERATION op, const gchar *table_name, QofIdTypeConst obj_name, gpointer pObject, const GncSqlColumnTableEntry *table)
const char * gnc_quote_source_get_internal_name(const gnc_quote_source *source)
Commodity handling public routines.
gboolean gnc_sql_slots_save(GncSqlBackend *be, const GncGUID *guid, gboolean is_infant, KvpFrame *pFrame)
const gchar * QofLogModule