Esempio n. 1
0
static GdaRow *
create_new_row (GdaDataAccessWrapper *model)
{
	gint i;
	GdaRow *row;

	row = gda_row_new (model->priv->nb_cols);
	for (i = 0; i < model->priv->nb_cols; i++) {
		GdaHolder *holder;
		GValue *dest;
		dest = gda_row_get_value (row, i);
		if (model->priv->rows_mapping)
			holder = gda_set_get_nth_holder ((GdaSet *) model->priv->iter, model->priv->rows_mapping [i]);
		else
			holder = gda_set_get_nth_holder ((GdaSet *) model->priv->iter, i);
		if (holder) {
			const GValue *cvalue = gda_holder_get_value (holder);
			if (cvalue) {
				gda_value_reset_with_type (dest, G_VALUE_TYPE ((GValue *) cvalue));
				g_value_copy (cvalue, dest);
			}
			else
				gda_value_set_null (dest);
		}
		else
			gda_row_invalidate_value (row, dest);
	}

	gint *ptr;
	ptr = g_new (gint, 1);
	*ptr = model->priv->iter_row;
	g_hash_table_insert (model->priv->rows, ptr, row);
	/*g_print ("%s(%d)\n", __FUNCTION__, model->priv->iter_row);*/

	return row;
}
Esempio n. 2
0
static void
handle_user_prefs_for_sql_statement (UiFormGrid *formgrid, TConnection *tcnc,
				     GdaSqlStatement *sqlst)
{
	g_assert (sqlst);
	if (sqlst->stmt_type == GDA_SQL_STATEMENT_COMPOUND) {
		GdaSqlStatementCompound *comp;
		GSList *list;
		comp = (GdaSqlStatementCompound*) sqlst->contents;
		for (list = comp->stmt_list; list; list = list->next)
			handle_user_prefs_for_sql_statement (formgrid, tcnc,
							     (GdaSqlStatement *) list->data);
	}
	else {
		GdaSet *set;
		set = (GdaSet*) ui_formgrid_get_form_data_set (UI_FORMGRID (formgrid));

		GdaSqlStatementSelect *sel;
		GSList *list;
		gint pos;
		sel = (GdaSqlStatementSelect*) sqlst->contents;
		for (pos = 0, list = sel->expr_list; list; pos ++, list = list->next) {
			GdaSqlSelectField *field = (GdaSqlSelectField*) list->data;
			if (! field->validity_meta_object ||
			    (field->validity_meta_object->obj_type != GDA_META_DB_TABLE) ||
			    !field->validity_meta_table_column)
				continue;

			gchar *plugin;
			plugin = t_connection_get_table_column_attribute (tcnc,
										GDA_META_TABLE (field->validity_meta_object),
										field->validity_meta_table_column,
										T_CONNECTION_COLUMN_PLUGIN, NULL);
			if (!plugin)
				continue;

			GdaHolder *holder;
			holder = gda_set_get_nth_holder (set, pos);
			if (holder) {
				GValue *value;
				value = gda_value_new_from_string (plugin, G_TYPE_STRING);
				gda_holder_set_attribute_static (holder, GDAUI_ATTRIBUTE_PLUGIN, value);
				gda_value_free (value);
			}
			g_free (plugin);
		}
	}
}