planner r881 - in trunk: . libplanner src
- From: mvdpot svn gnome org
- To: svn-commits-list gnome org
- Subject: planner r881 - in trunk: . libplanner src
- Date: Thu, 14 Feb 2008 20:14:56 +0000 (GMT)
Author: mvdpot
Date: Thu Feb 14 20:14:56 2008
New Revision: 881
URL: http://svn.gnome.org/viewvc/planner?rev=881&view=rev
Log:
2008-02-14 Maurice van der Pot <griffon26 kfk4ever com>
* configure.in:
* libplanner/Makefile.am:
* libplanner/mrp-sql.c: ...
* libplanner/mrp-sql.h:
* libplanner/mrp-storage-sql.c: (storage_sql_init):
* src/Makefile.am:
* src/planner-sql-plugin.c: ...
Added support for libgda 3 as requested by Martin-Ãric Racine
<q-funk iki fi> in bug #511833.
Modified:
trunk/ChangeLog
trunk/configure.in
trunk/libplanner/Makefile.am
trunk/libplanner/mrp-sql.c
trunk/libplanner/mrp-sql.h
trunk/libplanner/mrp-storage-sql.c
trunk/src/Makefile.am
trunk/src/planner-sql-plugin.c
Modified: trunk/configure.in
==============================================================================
--- trunk/configure.in (original)
+++ trunk/configure.in Thu Feb 14 20:14:56 2008
@@ -83,22 +83,27 @@
AC_ARG_ENABLE(database, [ --enable-database=[no/yes] enable database support [default=no]], enable_database="$enableval", enable_database=no)
if test "x$enable_database" = "xyes" ; then
- PKG_CHECK_MODULES(GDA, libgda >= 1.0)
+
+ PKG_CHECK_MODULES(GDA, libgda-3.0 >= 1.0,
+ [
+ GDA_VER=30
+ ],
+ [
+ PKG_CHECK_MODULES(GDA, libgda-2.0 >= 1.0,
+ [
+ GDA_VER=20
+ ],
+ [
+ PKG_CHECK_MODULES(GDA, libgda >= 1.0)
+ GDA_VER=10
+ ])
+ ])
use_gda=yes
else
use_gda=no
fi
-
+AC_SUBST(GDA_VER)
AM_CONDITIONAL(HAVE_GDA, test x$use_gda = xyes)
-
-if test "x$enable_database" = "xyes" ; then
- PKG_CHECK_MODULES(GDA, libgda-2.0 >= 1.0)
- have_gda2=yes
-else
- have_gda2=no
-fi
-
-AM_CONDITIONAL(HAVE_GDA2, test x$have_gda2 = xyes)
dnl -----------------------------------------------------------
Modified: trunk/libplanner/Makefile.am
==============================================================================
--- trunk/libplanner/Makefile.am (original)
+++ trunk/libplanner/Makefile.am Thu Feb 14 20:14:56 2008
@@ -91,7 +91,7 @@
mrp-sql.h
libstorage_sql_la_LDFLAGS = -avoid-version -module
-libstorage_sql_la_CFLAGS = $(GDA_CFLAGS)
+libstorage_sql_la_CFLAGS = $(GDA_CFLAGS) -DGDA_VERSION= GDA_VER@
libstorage_sql_la_LIBADD = $(GDA_LIBS) libplanner-1.la
endif
Modified: trunk/libplanner/mrp-sql.c
==============================================================================
--- trunk/libplanner/mrp-sql.c (original)
+++ trunk/libplanner/mrp-sql.c Thu Feb 14 20:14:56 2008
@@ -36,6 +36,14 @@
#define REVISION "sql-storage-revision"
+#if GDA_VERSION >= 30
+#define GDAVALUE GValue
+#define CONNECTION_FORMAT_STRING "HOST=%s;DB_NAME=%s"
+#else
+#define GDAVALUE GdaValue
+#define CONNECTION_FORMAT_STRING "HOST=%s;DATABASE=%s"
+#endif
+
/* Struct to keep calendar data before we can build the tree, create the
* calendars and insert them in the project.
*/
@@ -104,22 +112,22 @@
GHashTable *property_type_hash;
} SQLData;
-static gint get_int (GdaDataModel *res,
+static gint get_int (GdaDataModel *model,
gint i,
gint j);
-static gint get_id (GdaDataModel *res,
+static gint get_id (GdaDataModel *model,
gint i,
gint j);
-static gchar * get_string (GdaDataModel *res,
+static gchar * get_string (GdaDataModel *model,
gint i,
gint j);
-static gboolean get_boolean (GdaDataModel *res,
+static gboolean get_boolean (GdaDataModel *model,
gint i,
gint j);
-static gfloat get_float (GdaDataModel *res,
+static gfloat get_float (GdaDataModel *model,
gint i,
gint j);
-static gboolean is_field (GdaDataModel *res,
+static gboolean is_field (GdaDataModel *model,
gint j,
const gchar *name);
static gint get_inserted_id (SQLData *data,
@@ -180,41 +188,115 @@
static GdaDataModel *
sql_execute_query (GdaConnection *con,
gchar *query);
+static gboolean sql_execute_command (GdaConnection *con,
+ gchar *query);
+
+#if GDA_VERSION >= 30
+
+static gboolean
+sql_execute_command (GdaConnection *con, gchar *command)
+{
+ GdaCommand *cmd;
+ GList *list;
+ GError *error = NULL;
+
+ cmd = gda_command_new (command, GDA_COMMAND_TYPE_SQL, GDA_COMMAND_OPTION_STOP_ON_ERRORS);
+ list = gda_connection_execute_command (con, cmd, NULL, &error);
+ gda_command_free (cmd);
+
+ while (list) {
+ if (list->data) {
+ g_object_unref (list->data);
+ }
+ list = list->next;
+ }
+ g_list_free (list);
-#define STOP_ON_ERR GDA_COMMAND_OPTION_STOP_ON_ERRORS
+ if(error != NULL) {
+ g_error_free (error);
+ return FALSE;
+ }
+ else
+ {
+ return TRUE;
+ }
+}
+
+static GdaDataModel *
+sql_execute_query (GdaConnection *con, gchar *query)
+{
+ GdaCommand *cmd;
+ GdaDataModel *result;
+
+ cmd = gda_command_new (query, GDA_COMMAND_TYPE_SQL, GDA_COMMAND_OPTION_STOP_ON_ERRORS);
+ result = gda_connection_execute_select_command (con, cmd, NULL, NULL);
+ gda_command_free (cmd);
+
+ return result;
+}
+
+#else
+
+/* The two functions below support libgda older than 3.0.
+ * Once older libgda versions have been phased out, we should
+ * remove the #if..#else and just use the ones above.
+ */
+
+static gboolean
+sql_execute_command (GdaConnection *con, gchar *command)
+{
+ GdaDataModel *res;
+
+ res = sql_execute_query (con, command);
+
+ if(res != NULL) {
+ g_object_unref (res);
+ res = NULL;
+ return TRUE;
+ } else {
+ return FALSE;
+ }
+}
static GdaDataModel *
sql_execute_query (GdaConnection *con, gchar *query)
{
GdaCommand *cmd;
- GdaDataModel *res = NULL;
-#ifdef HAVE_GDA2
- GError *error;
+ GdaDataModel *res;
+#if GDA_VERSION >= 20
+ GError *error;
#endif
- cmd = gda_command_new (query, GDA_COMMAND_TYPE_SQL, STOP_ON_ERR);
-#ifdef HAVE_GDA2
- res = gda_connection_execute_single_command (con, cmd, NULL, &error);
+ cmd = gda_command_new (query, GDA_COMMAND_TYPE_SQL, GDA_COMMAND_OPTION_STOP_ON_ERRORS);
+#if GDA_VERSION >=20
+ res = gda_connection_execute_single_command (con, cmd, NULL, &error);
#else
- res = gda_connection_execute_single_command (con, cmd, NULL);
+ res = gda_connection_execute_single_command (con, cmd, NULL);
#endif
gda_command_free (cmd);
+
return res;
}
+#endif
+
static const gchar *
sql_get_last_error (GdaConnection *connection)
{
-#ifdef HAVE_GDA2
- GList *list;
- GdaConnectionEvent *error;
- const gchar *error_txt;
+#if GDA_VERSION >= 20
+ GList *list;
+ GdaConnectionEvent *error;
+ const gchar *error_txt;
g_return_val_if_fail (GDA_IS_CONNECTION (connection),
_("Can't connect to database server"));
list = (GList *) gda_connection_get_events (connection);
+ if (list == NULL) {
+ return _("No errors reported.");
+ }
+
error = (GdaConnectionEvent *) g_list_last (list)->data;
/* FIXME: Poor user, she won't get localized messages */
@@ -229,25 +311,30 @@
list = (GList *) gda_connection_get_errors (connection);
+ if (list == NULL) {
+ return _("No errors reported.");
+ }
+
error = (GdaError *) g_list_last (list)->data;
/* FIXME: Poor user, she won't get localized messages */
error_txt = gda_error_get_description (error);
#endif
+
return error_txt;
}
static gint
-get_int (GdaDataModel *res, gint row, gint column)
+get_int (GdaDataModel *model, gint row, gint column)
{
- GdaValue *value;
+ GDAVALUE *value;
gchar *str;
gint i;
- value = (GdaValue *) gda_data_model_get_value_at (res, column, row);
+ value = (GDAVALUE *) gda_data_model_get_value_at (model, column, row);
if (value == NULL) {
g_warning ("Failed to get a value: (%d,%d)", column, row);
- d(sql_show_result (res));
+ d(sql_show_result (model));
return INT_MAX;
}
@@ -257,18 +344,17 @@
return i;
}
-
static gint
-get_id (GdaDataModel *res, gint row, gint column)
+get_id (GdaDataModel *model, gint row, gint column)
{
- GdaValue *value;
+ GDAVALUE *value;
gchar *str;
gint i;
- value = (GdaValue *) gda_data_model_get_value_at (res, column, row);
+ value = (GDAVALUE *) gda_data_model_get_value_at (model, column, row);
if (value == NULL) {
g_warning ("Failed to get a value: (%d,%d)", column, row);
- d(sql_show_result (res));
+ d(sql_show_result (model));
return INT_MAX;
}
@@ -285,17 +371,17 @@
}
static gchar *
-get_string (GdaDataModel *res, gint row, gint column)
+get_string (GdaDataModel *model, gint row, gint column)
{
- GdaValue *value;
+ GDAVALUE *value;
gsize len;
gchar *ret;
gchar *str;
- value = (GdaValue *) gda_data_model_get_value_at (res, column, row);
+ value = (GDAVALUE *) gda_data_model_get_value_at (model, column, row);
if (value == NULL) {
g_warning ("Failed to get a value: (%d,%d)", column, row);
- d(sql_show_result (res));
+ d(sql_show_result (model));
return g_strdup ("");
}
@@ -325,32 +411,36 @@
}
static gboolean
-get_boolean (GdaDataModel *res, gint row, gint column)
+get_boolean (GdaDataModel *model, gint row, gint column)
{
- GdaValue *value;
+ GDAVALUE *value;
- value = (GdaValue *) gda_data_model_get_value_at (res, column, row);
+ value = (GDAVALUE *) gda_data_model_get_value_at (model, column, row);
if (value == NULL) {
g_warning ("Failed to get a value: (%d,%d)", column, row);
- d(sql_show_result (res));
+ d(sql_show_result (model));
return FALSE;
}
+#if GDA_VERSION >= 30
+ return g_value_get_boolean (value);
+#else
return gda_value_get_boolean (value);
+#endif
}
static gfloat
-get_float (GdaDataModel *res, gint row, gint column)
+get_float (GdaDataModel *model, gint row, gint column)
{
- GdaValue *value;
+ GDAVALUE *value;
gchar *str;
gdouble d;
- value = (GdaValue *) gda_data_model_get_value_at (res, column, row);
+ value = (GDAVALUE *) gda_data_model_get_value_at (model, column, row);
if (value == NULL) {
g_warning ("Failed to get a value: (%d,%d)", column, row);
- d(sql_show_result (res));
+ d(sql_show_result (model));
return -1;
}
@@ -362,11 +452,11 @@
}
static gboolean
-is_field (GdaDataModel *res, gint j, const gchar *name)
+is_field (GdaDataModel *model, gint j, const gchar *name)
{
const gchar *str;
- str = gda_data_model_get_column_title (res, j);
+ str = gda_data_model_get_column_title (model, j);
return str && (strcmp (str, name) == 0);
}
@@ -375,47 +465,44 @@
get_inserted_id (SQLData *data,
const gchar *id_name)
{
- GdaDataModel *res;
+ GdaDataModel *model = NULL;
+ gboolean success;
gchar *query;
gint id = -1;
/* Check which id the field id_name got assigned. */
query = g_strdup_printf ("DECLARE idcursor CURSOR FOR SELECT "
"currval('%s')", id_name);
- res = sql_execute_query (data->con, query);
+ success = sql_execute_command (data->con, query);
g_free (query);
- if (res == NULL) {
+ if (!success) {
g_warning ("Couldn't get cursor (get_inserted_id) %s.",
sql_get_last_error (data->con));
goto out;
}
- g_object_unref (res);
- res = sql_execute_query (data->con, "FETCH ALL in idcursor");
+ model = sql_execute_query (data->con, "FETCH ALL in idcursor");
- if (res == NULL) {
+ if (model == NULL) {
g_warning ("FETCH ALL failed (%s) %s.", id_name,
sql_get_last_error (data->con));
goto out;
}
- if (gda_data_model_get_n_rows (res) > 0) {
- id = get_int (res, 0, 0);
+ if (gda_data_model_get_n_rows (model) > 0) {
+ id = get_int (model, 0, 0);
}
- g_object_unref (res);
+ g_object_unref (model);
- res = sql_execute_query (data->con,"CLOSE idcursor");
-
- g_object_unref (res);
-
+ sql_execute_command (data->con, "CLOSE idcursor");
return id;
out:
- if (res) {
- g_object_unref (res);
+ if (model) {
+ g_object_unref (model);
}
return -1;
@@ -433,12 +520,25 @@
return GPOINTER_TO_INT (value);
}
+/*************************
+ * Init
+ */
+void
+mrp_sql_init (void)
+{
+ gda_init (PACKAGE, VERSION, 0, NULL);
+}
+
+/*************************
+ * Load
+ */
static gboolean
sql_read_project (SQLData *data, gint proj_id)
{
gint n;
gint j;
- GdaDataModel *res;
+ GdaDataModel *model = NULL;
+ gboolean success;
gchar *query;
gchar *name = NULL;
@@ -451,63 +551,63 @@
query = g_strdup_printf ("DECLARE mycursor CURSOR FOR SELECT "
"extract (epoch from proj_start) as proj_start_seconds, "
" * FROM project WHERE proj_id=%d", proj_id);
- res = sql_execute_query (data->con, query);
+ success = sql_execute_command (data->con, query);
g_free (query);
- if (res == NULL) {
+ if (!success) {
g_warning ("DECLARE CURSOR command failed (project) %s.",
sql_get_last_error (data->con));
goto out;
}
- g_object_unref (res);
- res = sql_execute_query (data->con, "FETCH ALL in mycursor");
+ model = sql_execute_query (data->con, "FETCH ALL in mycursor");
- if (res == NULL) {
+ if (model == NULL) {
g_warning ("FETCH ALL failed %s.", sql_get_last_error (data->con));
goto out;
}
- if (gda_data_model_get_n_rows (res) == 0) {
+ if (gda_data_model_get_n_rows (model) == 0) {
g_warning ("There is no project with the id '%d'.", proj_id);
goto out;
}
- n = gda_data_model_get_n_columns (res);
+ n = gda_data_model_get_n_columns (model);
for (j = 0; j < n; j++) {
- if (is_field (res, j, "proj_id")) {
- data->project_id = get_int (res, 0, j);
+ if (is_field (model, j, "proj_id")) {
+ data->project_id = get_int (model, 0, j);
}
- else if (is_field (res, j, "name")) {
- name = get_string (res, 0, j);
+ else if (is_field (model, j, "name")) {
+ name = get_string (model, 0, j);
}
- else if (is_field (res, j, "manager")) {
- manager = get_string (res, 0, j);
+ else if (is_field (model, j, "manager")) {
+ manager = get_string (model, 0, j);
}
- else if (is_field (res, j, "company")) {
- company = get_string (res, 0, j);
+ else if (is_field (model, j, "company")) {
+ company = get_string (model, 0, j);
}
- else if (is_field (res, j, "proj_start_seconds")) {
- project_start = get_int (res, 0, j);
+ else if (is_field (model, j, "proj_start_seconds")) {
+ project_start = get_int (model, 0, j);
}
- else if (is_field (res, j, "cal_id")) {
- data->calendar_id = get_int (res, 0, j);
+ else if (is_field (model, j, "cal_id")) {
+ data->calendar_id = get_int (model, 0, j);
}
- else if (is_field (res, j, "phase")) {
- phase = get_string (res, 0, j);
+ else if (is_field (model, j, "phase")) {
+ phase = get_string (model, 0, j);
}
- else if (is_field (res, j, "default_group_id")) {
- data->default_group_id = get_id (res, 0, j);
+ else if (is_field (model, j, "default_group_id")) {
+ data->default_group_id = get_id (model, 0, j);
}
- else if (is_field (res, j, "revision")) {
- data->revision = get_int (res, 0, j);
+ else if (is_field (model, j, "revision")) {
+ data->revision = get_int (model, 0, j);
}
- else if (is_field (res, j, "last_user")) {
- data->last_user = get_string (res, 0, j);
+ else if (is_field (model, j, "last_user")) {
+ data->last_user = get_string (model, 0, j);
}
}
- g_object_unref (res);
+ g_object_unref (model);
+ model = NULL;
g_object_set (data->project,
"name", name,
@@ -522,15 +622,13 @@
g_free (company);
g_free (phase);
- res = sql_execute_query (data->con, "CLOSE mycursor");
- g_object_unref (res);
-
+ sql_execute_command (data->con, "CLOSE mycursor");
return TRUE;
out:
- if (res) {
- g_object_unref (res);
+ if (model) {
+ g_object_unref (model);
}
return FALSE;
}
@@ -539,7 +637,8 @@
sql_read_phases (SQLData *data)
{
gint n, i, j;
- GdaDataModel *res;
+ GdaDataModel *model = NULL;
+ gboolean success;
gchar *query;
gchar *name;
@@ -549,32 +648,31 @@
query = g_strdup_printf ("DECLARE mycursor CURSOR FOR SELECT * FROM phase WHERE proj_id=%d",
data->project_id);
- res = sql_execute_query (data->con, query);
+ success = sql_execute_command (data->con, query);
g_free (query);
- if (res == NULL) {
+ if (!success) {
g_warning ("DECLARE CURSOR command failed (phase) %s.",
sql_get_last_error (data->con));
goto out;
}
- g_object_unref (res);
- res = sql_execute_query (data->con, "FETCH ALL in mycursor");
- if (res == NULL) {
+ model = sql_execute_query (data->con, "FETCH ALL in mycursor");
+ if (model == NULL) {
g_warning ("FETCH ALL failed for phase %s.",
sql_get_last_error (data->con));
goto out;
}
- n = gda_data_model_get_n_columns (res);
- for (i = 0; i < gda_data_model_get_n_rows (res); i++) {
+ n = gda_data_model_get_n_columns (model);
+ for (i = 0; i < gda_data_model_get_n_rows (model); i++) {
name = NULL;
for (j = 0; j < n; j++) {
- if (is_field (res, j, "name")) {
- name = get_string (res, i, j);
+ if (is_field (model, j, "name")) {
+ name = get_string (model, i, j);
}
}
@@ -583,11 +681,10 @@
}
}
- g_object_unref (res);
-
+ g_object_unref (model);
+ model = NULL;
- res = sql_execute_query (data->con, "CLOSE mycursor");
- g_object_unref (res);
+ sql_execute_command (data->con, "CLOSE mycursor");
phases = g_list_reverse (phases);
@@ -597,8 +694,8 @@
return TRUE;
out:
- if (res) {
- g_object_unref (res);
+ if (model) {
+ g_object_unref (model);
}
return FALSE;
@@ -608,7 +705,8 @@
sql_read_property_specs (SQLData *data)
{
gint n, i, j;
- GdaDataModel *res;
+ GdaDataModel *model = NULL;
+ gboolean success;
gchar *query;
gint property_type_id;
@@ -624,27 +722,26 @@
query = g_strdup_printf ("DECLARE mycursor CURSOR FOR SELECT * FROM property_type WHERE proj_id=%d",
data->project_id);
- res = sql_execute_query (data->con, query);
+ success = sql_execute_command (data->con, query);
g_free (query);
- if (res == NULL) {
+ if (!success) {
g_warning ("DECLARE CURSOR command failed (property_type) %s.",
sql_get_last_error (data->con));
goto out;
}
- g_object_unref (res);
- res = sql_execute_query (data->con, "FETCH ALL in mycursor");
- if (res == NULL) {
+ model = sql_execute_query (data->con, "FETCH ALL in mycursor");
+ if (model == NULL) {
g_warning ("FETCH ALL failed for property_type %s.",
sql_get_last_error (data->con));
goto out;
}
- n = gda_data_model_get_n_columns (res);
- for (i = 0; i < gda_data_model_get_n_rows (res); i++) {
+ n = gda_data_model_get_n_columns (model);
+ for (i = 0; i < gda_data_model_get_n_rows (model); i++) {
name = NULL;
label = NULL;
description = NULL;
@@ -653,30 +750,30 @@
type = MRP_PROPERTY_TYPE_NONE;
for (j = 0; j < n; j++) {
- if (is_field (res, j, "name")) {
- name = get_string (res, i, j);
+ if (is_field (model, j, "name")) {
+ name = get_string (model, i, j);
}
- else if (is_field (res, j, "label")) {
- label = get_string (res, i, j);
+ else if (is_field (model, j, "label")) {
+ label = get_string (model, i, j);
}
- else if (is_field (res, j, "descr")) {
- description = get_string (res, i, j);
+ else if (is_field (model, j, "descr")) {
+ description = get_string (model, i, j);
}
- else if (is_field (res, j, "owner")) {
- tmp = get_string (res, i, j);
+ else if (is_field (model, j, "owner")) {
+ tmp = get_string (model, i, j);
if (!strcmp (tmp, "task")) {
owner = MRP_TYPE_TASK;
}
- else if (!strcmp (tmp, "resource")) {
+ else if (!strcmp (tmp, "modelource")) {
owner = MRP_TYPE_RESOURCE;
}
else if (!strcmp (tmp, "project")) {
owner = MRP_TYPE_PROJECT;
}
}
- else if (is_field (res, j, "type")) {
- tmp = get_string (res, i, j);
+ else if (is_field (model, j, "type")) {
+ tmp = get_string (model, i, j);
if (!strcmp (tmp, "date")) {
type = MRP_PROPERTY_TYPE_DATE;
@@ -700,8 +797,8 @@
type = MRP_PROPERTY_TYPE_COST;
}
}
- else if (is_field (res, j, "proptype_id")) {
- property_type_id = get_int (res, i, j);
+ else if (is_field (model, j, "proptype_id")) {
+ property_type_id = get_int (model, i, j);
}
}
@@ -732,17 +829,16 @@
g_free (label);
g_free (description);
}
- g_object_unref (res);
+ g_object_unref (model);
+ model = NULL;
- res = sql_execute_query (data->con, "CLOSE mycursor");
- g_object_unref (res);
-
+ sql_execute_command (data->con, "CLOSE mycursor");
return TRUE;
out:
- if (res) {
- g_object_unref (res);
+ if (model) {
+ g_object_unref (model);
}
return FALSE;
@@ -802,18 +898,19 @@
sql_read_property_values (SQLData *data,
MrpObject *object)
{
- gint n, i, j;
- GdaDataModel *res;
- gchar *query;
-
- const gchar *table;
- const gchar *object_id_name;
- gint object_id;
- gint prop_id;
- GList *prop_ids = NULL, *l;
- gint prop_type_id;
- MrpProperty *property;
- gchar *value;
+ gint n, i, j;
+ GdaDataModel *model = NULL;
+ gboolean success;
+ gchar *query;
+
+ const gchar *table;
+ const gchar *object_id_name;
+ gint object_id;
+ gint prop_id;
+ GList *prop_ids = NULL, *l;
+ gint prop_type_id;
+ MrpProperty *property;
+ gchar *value;
if (G_OBJECT_TYPE (object) == MRP_TYPE_PROJECT) {
table = "project_to_property";
@@ -842,41 +939,39 @@
"FROM %s WHERE %s=%d",
table, object_id_name, object_id);
- res = sql_execute_query (data->con, query);
+ success = sql_execute_command (data->con, query);
g_free (query);
-
- if (res == NULL) {
+ if (!success) {
g_warning ("DECLARE CURSOR command failed (*_to_property) %s.",
sql_get_last_error (data->con));
goto out;
}
- g_object_unref (res);
- res = sql_execute_query (data->con,"FETCH ALL in propcursor");
- if (res == NULL) {
+ model = sql_execute_query (data->con,"FETCH ALL in propcursor");
+ if (model == NULL) {
g_warning ("FETCH ALL failed for *_to_property %s.",
sql_get_last_error (data->con));
goto out;
}
- n = gda_data_model_get_n_columns (res);
- for (i = 0; i < gda_data_model_get_n_rows (res); i++) {
+ n = gda_data_model_get_n_columns (model);
+ for (i = 0; i < gda_data_model_get_n_rows (model); i++) {
prop_id = -1;
for (j = 0; j < n; j++) {
- if (is_field (res, j, "prop_id")) {
- prop_id = get_id (res, i, j);
+ if (is_field (model, j, "prop_id")) {
+ prop_id = get_id (model, i, j);
}
}
prop_ids = g_list_prepend (prop_ids, GINT_TO_POINTER (prop_id));
}
- g_object_unref (res);
+ g_object_unref (model);
+ model = NULL;
- res = sql_execute_query (data->con, "CLOSE propcursor");
- g_object_unref (res);
+ sql_execute_command (data->con, "CLOSE propcursor");
/* Get the actual values. */
@@ -887,36 +982,35 @@
"FROM property WHERE prop_id=%d",
prop_id);
- res = sql_execute_query (data->con, query);
+ success = sql_execute_command (data->con, query);
g_free (query);
- if (res == NULL) {
+ if (!success) {
g_warning ("DECLARE CURSOR command failed (property) %s.",
sql_get_last_error (data->con));
goto out;
}
- g_object_unref (res);
- res = sql_execute_query (data->con,"FETCH ALL in propcursor");
- if (res == NULL) {
+ model = sql_execute_query (data->con,"FETCH ALL in propcursor");
+ if (model == NULL) {
g_warning ("FETCH ALL failed for property %s.",
sql_get_last_error (data->con));
goto out;
}
- n = gda_data_model_get_n_columns (res);
- for (i = 0; i < gda_data_model_get_n_rows (res); i++) {
+ n = gda_data_model_get_n_columns (model);
+ for (i = 0; i < gda_data_model_get_n_rows (model); i++) {
prop_type_id = -1;
value = NULL;
for (j = 0; j < n; j++) {
- if (is_field (res, j, "proptype_id")) {
- prop_type_id = get_id (res, i, j);
+ if (is_field (model, j, "proptype_id")) {
+ prop_type_id = get_id (model, i, j);
}
- if (is_field (res, j, "value")) {
- value = get_string (res, i, j);
+ if (is_field (model, j, "value")) {
+ value = get_string (model, i, j);
}
}
@@ -925,11 +1019,10 @@
sql_set_property_value (data, object, property, value);
g_free (value);
}
- g_object_unref (res);
-
- res = sql_execute_query (data->con, "CLOSE propcursor");
- g_object_unref (res);
+ g_object_unref (model);
+ model = NULL;
+ sql_execute_command (data->con, "CLOSE propcursor");
}
@@ -938,8 +1031,8 @@
return TRUE;
out:
- if (res) {
- g_object_unref (res);
+ if (model) {
+ g_object_unref (model);
}
return FALSE;
@@ -964,7 +1057,8 @@
sql_read_overriden_day_types (SQLData *data, gint calendar_id)
{
gint n, i, j;
- GdaDataModel *res;
+ GdaDataModel *model = NULL;
+ gboolean success;
gchar *query;
gint day_type_id;
@@ -982,19 +1076,18 @@
"* FROM day_interval WHERE cal_id=%d",
calendar_id);
- res = sql_execute_query (data->con, query);
+ success = sql_execute_command (data->con, query);
g_free (query);
- if (res == NULL) {
+ if (!success) {
g_warning ("DECLARE CURSOR command failed (day_interval) %s.",
sql_get_last_error (data->con));
goto out;
}
- g_object_unref (res);
- res = sql_execute_query (data->con, "FETCH ALL in daycursor");
- if (res == NULL) {
+ model = sql_execute_query (data->con, "FETCH ALL in daycursor");
+ if (model == NULL) {
g_warning ("FETCH ALL failed for day_interval %s.",
sql_get_last_error (data->con));
goto out;
@@ -1002,21 +1095,21 @@
hash = g_hash_table_new (NULL, NULL);
- n = gda_data_model_get_n_columns (res);
- for (i = 0; i < gda_data_model_get_n_rows (res); i++) {
+ n = gda_data_model_get_n_columns (model);
+ for (i = 0; i < gda_data_model_get_n_rows (model); i++) {
day_type_id = -1;
start = -1;
end = -1;
for (j = 0; j < n; j++) {
- if (is_field (res, j, "dtype_id")) {
- day_type_id = get_int (res, i, j);
+ if (is_field (model, j, "dtype_id")) {
+ day_type_id = get_int (model, i, j);
}
- else if (is_field (res, j, "start_seconds")) {
- start = get_int (res, i, j);
+ else if (is_field (model, j, "start_seconds")) {
+ start = get_int (model, i, j);
}
- else if (is_field (res, j, "end_seconds")) {
- end = get_int (res, i, j);
+ else if (is_field (model, j, "end_seconds")) {
+ end = get_int (model, i, j);
}
}
@@ -1039,10 +1132,10 @@
interval = mrp_interval_new (start, end);
}
- g_object_unref (res);
+ g_object_unref (model);
+ model = NULL;
- res = sql_execute_query (data->con,"CLOSE daycursor");
- g_object_unref (res);
+ sql_execute_command (data->con,"CLOSE daycursor");
/* Set the intervals for the day types. */
@@ -1053,8 +1146,8 @@
return TRUE;
out:
- if (res) {
- g_object_unref (res);
+ if (model) {
+ g_object_unref (model);
}
return FALSE;
@@ -1066,7 +1159,8 @@
sql_read_overriden_days (SQLData *data, gint calendar_id)
{
gint n, i, j;
- GdaDataModel *res;
+ GdaDataModel *model = NULL;
+ gboolean success;
gchar *query;
gint day_type_id;
@@ -1078,36 +1172,35 @@
"* FROM day WHERE cal_id=%d",
calendar_id);
- res = sql_execute_query (data->con, query);
+ success = sql_execute_command (data->con, query);
g_free (query);
- if (res == NULL) {
+ if (!success) {
g_warning ("DECLARE CURSOR command failed (day) %s.",
sql_get_last_error (data->con));
goto out;
}
- g_object_unref (res);
- res = sql_execute_query (data->con, "FETCH ALL in daycursor");
- if (res == NULL) {
+ model = sql_execute_query (data->con, "FETCH ALL in daycursor");
+ if (model == NULL) {
g_warning ("FETCH ALL failed for day %s.",
sql_get_last_error (data->con));
goto out;
}
- n = gda_data_model_get_n_columns (res);
- for (i = 0; i < gda_data_model_get_n_rows (res); i++) {
+ n = gda_data_model_get_n_columns (model);
+ for (i = 0; i < gda_data_model_get_n_rows (model); i++) {
day_type_id = -1;
date = -1;
for (j = 0; j < n; j++) {
- if (is_field (res, j, "date_seconds")) {
- date = get_int (res, i, j);
+ if (is_field (model, j, "date_seconds")) {
+ date = get_int (model, i, j);
}
- else if (is_field (res, j, "dtype_id")) {
- day_type_id = get_int (res, i, j);
+ else if (is_field (model, j, "dtype_id")) {
+ day_type_id = get_int (model, i, j);
}
}
@@ -1115,17 +1208,17 @@
/*data->days = g_list_prepend (data->days, day);*/
}
- g_object_unref (res);
+ g_object_unref (model);
+ model = NULL;
- res = sql_execute_query (data->con,"CLOSE daycursor");
- g_object_unref (res);
+ sql_execute_command (data->con,"CLOSE daycursor");
return TRUE;
out:
- if (res) {
- g_object_unref (res);
+ if (model) {
+ g_object_unref (model);
}
return FALSE;
@@ -1135,7 +1228,8 @@
sql_read_day_types (SQLData *data)
{
gint n, i, j;
- GdaDataModel *res;
+ GdaDataModel *model = NULL;
+ gboolean success;
gchar *query;
gint day_type_id;
@@ -1148,25 +1242,24 @@
query = g_strdup_printf ("DECLARE mycursor CURSOR FOR SELECT * FROM daytype WHERE proj_id=%d",
data->project_id);
- res = sql_execute_query (data->con, query);
+ success = sql_execute_command (data->con, query);
g_free (query);
- if (res == NULL) {
+ if (!success) {
g_warning ("DECLARE CURSOR command failed (daytype) %s.",
sql_get_last_error (data->con));
goto out;
}
- g_object_unref (res);
- res = sql_execute_query (data->con, "FETCH ALL in mycursor");
- if (res == NULL) {
+ model = sql_execute_query (data->con, "FETCH ALL in mycursor");
+ if (model == NULL) {
g_warning ("FETCH ALL failed for daytype %s.",
sql_get_last_error (data->con));
goto out;
}
- n = gda_data_model_get_n_columns (res);
- for (i = 0; i < gda_data_model_get_n_rows (res); i++) {
+ n = gda_data_model_get_n_columns (model);
+ for (i = 0; i < gda_data_model_get_n_rows (model); i++) {
name = NULL;
description = NULL;
day_type_id = -1;
@@ -1174,20 +1267,20 @@
is_nonwork = FALSE;
for (j = 0; j < n; j++) {
- if (is_field (res, j, "name")) {
- name = get_string (res, i, j);
+ if (is_field (model, j, "name")) {
+ name = get_string (model, i, j);
}
- else if (is_field (res, j, "descr")) {
- description = get_string (res, i, j);
+ else if (is_field (model, j, "descr")) {
+ description = get_string (model, i, j);
}
- else if (is_field (res, j, "dtype_id")) {
- day_type_id = get_int (res, i, j);
+ else if (is_field (model, j, "dtype_id")) {
+ day_type_id = get_int (model, i, j);
}
- else if (is_field (res, j, "is_work")) {
- is_work = get_boolean (res, i, j);
+ else if (is_field (model, j, "is_work")) {
+ is_work = get_boolean (model, i, j);
}
- else if (is_field (res, j, "is_nonwork")) {
- is_nonwork = get_boolean (res, i, j);
+ else if (is_field (model, j, "is_nonwork")) {
+ is_nonwork = get_boolean (model, i, j);
}
}
@@ -1207,16 +1300,16 @@
g_hash_table_insert (data->day_id_hash, GINT_TO_POINTER (day_type_id), day);
}
- g_object_unref (res);
+ g_object_unref (model);
+ model = NULL;
- res = sql_execute_query (data->con, "CLOSE mycursor");
- g_object_unref (res);
+ sql_execute_query (data->con, "CLOSE mycursor");
return TRUE;
out:
- if (res) {
- g_object_unref (res);
+ if (model) {
+ g_object_unref (model);
}
return FALSE;
@@ -1323,7 +1416,8 @@
sql_read_calendars (SQLData *data)
{
gint n, i, j;
- GdaDataModel *res;
+ GdaDataModel *model = NULL;
+ gboolean success;
gchar *query;
CalendarData *calendar_data;
@@ -1336,18 +1430,17 @@
/* Get calendars. */
query = g_strdup_printf ("DECLARE mycursor CURSOR FOR SELECT * FROM calendar WHERE proj_id=%d",
data->project_id);
- res = sql_execute_query (data->con, query);
+ success = sql_execute_command (data->con, query);
g_free (query);
- if (res == NULL) {
+ if (!success) {
g_warning ("DECLARE CURSOR command failed (calendar) %s.",
sql_get_last_error (data->con));
goto out;
}
- g_object_unref (res);
- res = sql_execute_query (data->con, "FETCH ALL in mycursor");
- if (res == NULL) {
+ model = sql_execute_query (data->con, "FETCH ALL in mycursor");
+ if (model == NULL) {
g_warning ("FETCH ALL failed for calendar %s.",
sql_get_last_error (data->con));
goto out;
@@ -1356,47 +1449,47 @@
tree = g_node_new (NULL);
hash = g_hash_table_new (NULL, NULL);
- n = gda_data_model_get_n_columns (res);
- for (i = 0; i < gda_data_model_get_n_rows (res); i++) {
+ n = gda_data_model_get_n_columns (model);
+ for (i = 0; i < gda_data_model_get_n_rows (model); i++) {
calendar_data = g_new0 (CalendarData, 1);
node = g_node_new (calendar_data);
for (j = 0; j < n; j++) {
- if (is_field (res, j, "name")) {
- calendar_data->name = get_string (res, i, j);
+ if (is_field (model, j, "name")) {
+ calendar_data->name = get_string (model, i, j);
}
- else if (is_field (res, j, "cal_id")) {
- calendar_data->id = get_int (res, i, j);
+ else if (is_field (model, j, "cal_id")) {
+ calendar_data->id = get_int (model, i, j);
}
- else if (is_field (res, j, "parent_cid")) {
- calendar_data->parent_id = get_id (res, i, j);
+ else if (is_field (model, j, "parent_cid")) {
+ calendar_data->parent_id = get_id (model, i, j);
}
- else if (is_field (res, j, "day_mon")) {
- day_id = get_int (res, i, j);
+ else if (is_field (model, j, "day_mon")) {
+ day_id = get_int (model, i, j);
calendar_data->day_mon = g_hash_table_lookup (data->day_id_hash, GINT_TO_POINTER (day_id));
}
- else if (is_field (res, j, "day_tue")) {
- day_id = get_int (res, i, j);
+ else if (is_field (model, j, "day_tue")) {
+ day_id = get_int (model, i, j);
calendar_data->day_tue = g_hash_table_lookup (data->day_id_hash, GINT_TO_POINTER (day_id));
}
- else if (is_field (res, j, "day_wed")) {
- day_id = get_int (res, i, j);
+ else if (is_field (model, j, "day_wed")) {
+ day_id = get_int (model, i, j);
calendar_data->day_wed = g_hash_table_lookup (data->day_id_hash, GINT_TO_POINTER (day_id));
}
- else if (is_field (res, j, "day_thu")) {
- day_id = get_int (res, i, j);
+ else if (is_field (model, j, "day_thu")) {
+ day_id = get_int (model, i, j);
calendar_data->day_thu = g_hash_table_lookup (data->day_id_hash, GINT_TO_POINTER (day_id));
}
- else if (is_field (res, j, "day_fri")) {
- day_id = get_int (res, i, j);
+ else if (is_field (model, j, "day_fri")) {
+ day_id = get_int (model, i, j);
calendar_data->day_fri = g_hash_table_lookup (data->day_id_hash, GINT_TO_POINTER (day_id));
}
- else if (is_field (res, j, "day_sat")) {
- day_id = get_int (res, i, j);
+ else if (is_field (model, j, "day_sat")) {
+ day_id = get_int (model, i, j);
calendar_data->day_sat = g_hash_table_lookup (data->day_id_hash, GINT_TO_POINTER (day_id));
}
- else if (is_field (res, j, "day_sun")) {
- day_id = get_int (res, i, j);
+ else if (is_field (model, j, "day_sun")) {
+ day_id = get_int (model, i, j);
calendar_data->day_sun = g_hash_table_lookup (data->day_id_hash, GINT_TO_POINTER (day_id));
}
}
@@ -1409,10 +1502,10 @@
calendars = g_list_prepend (calendars, node);
g_hash_table_insert (hash, GINT_TO_POINTER (calendar_data->id), node);
}
- g_object_unref (res);
+ g_object_unref (model);
+ model = NULL;
- res = sql_execute_query (data->con, "CLOSE mycursor");
- g_object_unref (res);
+ sql_execute_command (data->con, "CLOSE mycursor");
/* Build a GNode tree with all the calendars. */
for (l = calendars; l; l = l->next) {
@@ -1445,8 +1538,8 @@
return TRUE;
out:
- if (res) {
- g_object_unref (res);
+ if (model) {
+ g_object_unref (model);
}
return FALSE;
@@ -1456,7 +1549,8 @@
sql_read_groups (SQLData *data)
{
gint n, i, j;
- GdaDataModel *res;
+ GdaDataModel *model = NULL;
+ gboolean success;
gchar *query;
MrpGroup *group;
@@ -1469,25 +1563,24 @@
/* Get resource groups. */
query = g_strdup_printf ("DECLARE mycursor CURSOR FOR SELECT * FROM resource_group WHERE proj_id=%d",
data->project_id);
- res = sql_execute_query (data->con, query);
+ success = sql_execute_command (data->con, query);
g_free (query);
- if (res == NULL) {
+ if (!success) {
g_warning ("DECLARE CURSOR command failed (resource_group) %s.",
sql_get_last_error (data->con));
goto out;
}
- g_object_unref (res);
- res = sql_execute_query (data->con, "FETCH ALL in mycursor");
- if (res == NULL) {
+ model = sql_execute_query (data->con, "FETCH ALL in mycursor");
+ if (model == NULL) {
g_warning ("FETCH ALL failed for resource_group %s.",
sql_get_last_error (data->con));
goto out;
}
- n = gda_data_model_get_n_columns (res);
- for (i = 0; i < gda_data_model_get_n_rows (res); i++) {
+ n = gda_data_model_get_n_columns (model);
+ for (i = 0; i < gda_data_model_get_n_rows (model); i++) {
group_id = -1;
name = NULL;
admin_name = NULL;
@@ -1495,20 +1588,20 @@
admin_email = NULL;
for (j = 0; j < n; j++) {
- if (is_field (res, j, "name")) {
- name = get_string (res, i, j);
+ if (is_field (model, j, "name")) {
+ name = get_string (model, i, j);
}
- else if (is_field (res, j, "group_id")) {
- group_id = get_int (res, i, j);
+ else if (is_field (model, j, "group_id")) {
+ group_id = get_int (model, i, j);
}
- else if (is_field (res, j, "admin_name")) {
- admin_name = get_string (res, i, j);
+ else if (is_field (model, j, "admin_name")) {
+ admin_name = get_string (model, i, j);
}
- else if (is_field (res, j, "admin_phone")) {
- admin_phone = get_string (res, i, j);
+ else if (is_field (model, j, "admin_phone")) {
+ admin_phone = get_string (model, i, j);
}
- else if (is_field (res, j, "admin_email")) {
- admin_email = get_string (res, i, j);
+ else if (is_field (model, j, "admin_email")) {
+ admin_email = get_string (model, i, j);
}
}
@@ -1529,16 +1622,16 @@
g_hash_table_insert (data->group_id_hash, GINT_TO_POINTER (group_id), group);
}
- g_object_unref (res);
+ g_object_unref (model);
+ model = NULL;
- res = sql_execute_query (data->con, "CLOSE mycursor");
- g_object_unref (res);
+ sql_execute_query (data->con, "CLOSE mycursor");
return TRUE;
out:
- if (res) {
- g_object_unref (res);
+ if (model) {
+ g_object_unref (model);
}
return FALSE;
@@ -1548,7 +1641,8 @@
sql_read_resources (SQLData *data)
{
gint n, i, j;
- GdaDataModel *res;
+ GdaDataModel *model = NULL;
+ gboolean success;
gchar *query;
gint resource_id;
@@ -1565,26 +1659,25 @@
/* Get resources. */
query = g_strdup_printf ("DECLARE mycursor CURSOR FOR SELECT * FROM resource WHERE proj_id=%d",
data->project_id);
- res = sql_execute_query (data->con, query);
+ success = sql_execute_command (data->con, query);
g_free (query);
- if (res == NULL) {
+ if (!success) {
g_warning ("DECLARE CURSOR command failed (resource) %s.",
sql_get_last_error (data->con));
goto out;
}
- g_object_unref (res);
- res = sql_execute_query (data->con, "FETCH ALL in mycursor");
- if (res == NULL) {
+ model = sql_execute_query (data->con, "FETCH ALL in mycursor");
+ if (model == NULL) {
g_warning ("FETCH ALL failed for resource %s.",
sql_get_last_error (data->con));
goto out;
}
- n = gda_data_model_get_n_columns (res);
+ n = gda_data_model_get_n_columns (model);
- for (i = 0; i < gda_data_model_get_n_rows (res); i++) {
+ for (i = 0; i < gda_data_model_get_n_rows (model); i++) {
resource_id = -1;
group_id = -1;
calendar_id = -1;
@@ -1594,11 +1687,11 @@
note = NULL;
for (j = 0; j < n; j++) {
- if (is_field (res, j, "name")) {
- name = get_string (res, i, j);
+ if (is_field (model, j, "name")) {
+ name = get_string (model, i, j);
}
- else if (is_field (res, j, "short_name")) {
- short_name = get_string (res, i, j);
+ else if (is_field (model, j, "short_name")) {
+ short_name = get_string (model, i, j);
/* FIXME: The next section detects the case if
* short_name is NULL. If a string field is null
@@ -1612,20 +1705,20 @@
short_name = g_strdup ("");
}
}
- else if (is_field (res, j, "group_id")) {
- group_id = get_id (res, i, j);
+ else if (is_field (model, j, "group_id")) {
+ group_id = get_id (model, i, j);
}
- else if (is_field (res, j, "res_id")) {
- resource_id = get_id (res, i, j);
+ else if (is_field (model, j, "res_id")) {
+ resource_id = get_id (model, i, j);
}
- else if (is_field (res, j, "email")) {
- email = get_string (res, i, j);
+ else if (is_field (model, j, "email")) {
+ email = get_string (model, i, j);
}
- else if (is_field (res, j, "note")) {
- note = get_string (res, i, j);
+ else if (is_field (model, j, "note")) {
+ note = get_string (model, i, j);
}
- else if (strcmp (gda_data_model_get_column_title (res, j), "cal_id") == 0) {
- calendar_id = get_id (res, i, j);
+ else if (strcmp (gda_data_model_get_column_title (model, j), "cal_id") == 0) {
+ calendar_id = get_id (model, i, j);
}
}
@@ -1662,16 +1755,16 @@
}
}
- g_object_unref (res);
+ g_object_unref (model);
+ model = NULL;
- res = sql_execute_query (data->con, "CLOSE mycursor");
- g_object_unref (res);
+ sql_execute_command (data->con, "CLOSE mycursor");
return TRUE;
out:
- if (res) {
- g_object_unref (res);
+ if (model) {
+ g_object_unref (model);
}
return FALSE;
@@ -1682,7 +1775,8 @@
gint task_id)
{
gint n, i, j;
- GdaDataModel *res;
+ GdaDataModel *model = NULL;
+ gboolean success;
gchar *query;
gint units;
@@ -1694,34 +1788,33 @@
query = g_strdup_printf ("DECLARE alloccursor CURSOR FOR SELECT "
"* FROM allocation WHERE task_id=%d",
task_id);
- res = sql_execute_query (data->con, query);
+ success = sql_execute_command (data->con, query);
g_free (query);
- if (res == NULL) {
+ if (!success) {
g_warning ("DECLARE CURSOR command failed (allocation) %s.",
sql_get_last_error (data->con));
goto out;
}
- g_object_unref (res);
- res = sql_execute_query (data->con, "FETCH ALL in alloccursor");
- if (res == NULL) {
+ model = sql_execute_query (data->con, "FETCH ALL in alloccursor");
+ if (model == NULL) {
g_warning ("FETCH ALL failed for allocation %s.",
sql_get_last_error (data->con));
goto out;
}
- n = gda_data_model_get_n_columns (res);
- for (i = 0; i < gda_data_model_get_n_rows (res); i++) {
+ n = gda_data_model_get_n_columns (model);
+ for (i = 0; i < gda_data_model_get_n_rows (model); i++) {
resource_id = -1;
units = -1;
for (j = 0; j < n; j++) {
- if (is_field (res, j, "units")) {
- units = floor (0.5 + 100.0 * get_float (res, i, j));
+ if (is_field (model, j, "units")) {
+ units = floor (0.5 + 100.0 * get_float (model, i, j));
}
- else if (is_field (res, j, "res_id")) {
- resource_id = get_id (res, i, j);
+ else if (is_field (model, j, "res_id")) {
+ resource_id = get_id (model, i, j);
}
}
@@ -1730,16 +1823,16 @@
mrp_resource_assign (resource, task, units);
}
- g_object_unref (res);
+ g_object_unref (model);
+ model = NULL;
- res = sql_execute_query (data->con, "CLOSE alloccursor");
- g_object_unref (res);
+ sql_execute_command (data->con, "CLOSE alloccursor");
return TRUE;
out:
- if (res) {
- g_object_unref (res);
+ if (model) {
+ g_object_unref (model);
}
return FALSE;
@@ -1749,7 +1842,8 @@
sql_read_relations (SQLData *data, gint task_id)
{
gint n, i, j;
- GdaDataModel *res;
+ GdaDataModel *model = NULL;
+ gboolean success;
gchar *query;
gint predecessor_id;
@@ -1761,34 +1855,33 @@
query = g_strdup_printf ("DECLARE predcursor CURSOR FOR SELECT "
"* FROM predecessor WHERE task_id=%d",
task_id);
- res = sql_execute_query (data->con, query);
+ success = sql_execute_command (data->con, query);
g_free (query);
- if (res == NULL) {
+ if (!success) {
g_warning ("DECLARE CURSOR command failed (predecessor) %s.",
sql_get_last_error (data->con));
goto out;
}
- g_object_unref (res);
- res = sql_execute_query (data->con, "FETCH ALL in predcursor");
- if (res == NULL) {
+ model = sql_execute_query (data->con, "FETCH ALL in predcursor");
+ if (model == NULL) {
g_warning ("FETCH ALL failed for predecessor %s.",
sql_get_last_error (data->con));
goto out;
}
- n = gda_data_model_get_n_columns (res);
- for (i = 0; i < gda_data_model_get_n_rows (res); i++) {
+ n = gda_data_model_get_n_columns (model);
+ for (i = 0; i < gda_data_model_get_n_rows (model); i++) {
predecessor_id = -1;
lag = 0;
for (j = 0; j < n; j++) {
- if (is_field (res, j, "pred_task_id")) {
- predecessor_id = get_id (res, i, j);
+ if (is_field (model, j, "pred_task_id")) {
+ predecessor_id = get_id (model, i, j);
}
- else if (is_field (res, j, "lag")) {
- lag = get_int (res, i, j);
+ else if (is_field (model, j, "lag")) {
+ lag = get_int (model, i, j);
}
}
@@ -1801,16 +1894,16 @@
lag,
NULL);
}
- g_object_unref (res);
+ g_object_unref (model);
+ model = NULL;
- res = sql_execute_query (data->con, "CLOSE predcursor");
- g_object_unref (res);
+ sql_execute_command (data->con, "CLOSE predcursor");
return TRUE;
out:
- if (res) {
- g_object_unref (res);
+ if (model) {
+ g_object_unref (model);
}
return FALSE;
@@ -1927,7 +2020,8 @@
sql_read_tasks (SQLData *data)
{
gint n, i, j;
- GdaDataModel *res;
+ GdaDataModel *model = NULL;
+ gboolean success;
gchar *query;
gint task_id;
@@ -1956,18 +2050,17 @@
"extract (epoch from constraint_time) as constraint_time_seconds, "
"* FROM task WHERE proj_id=%d",
data->project_id);
- res = sql_execute_query (data->con, query);
+ success = sql_execute_command (data->con, query);
g_free (query);
- if (res == NULL) {
+ if (!success) {
g_warning ("DECLARE CURSOR command failed (task) %s.",
sql_get_last_error (data->con));
goto out;
}
- g_object_unref (res);
- res = sql_execute_query (data->con, "FETCH ALL in mycursor");
- if (res == NULL) {
+ model = sql_execute_query (data->con, "FETCH ALL in mycursor");
+ if (model == NULL) {
g_warning ("FETCH ALL failed for task %s.",
sql_get_last_error (data->con));
goto out;
@@ -1975,8 +2068,8 @@
hash = g_hash_table_new (NULL, NULL);
- n = gda_data_model_get_n_columns (res);
- for (i = 0; i < gda_data_model_get_n_rows (res); i++) {
+ n = gda_data_model_get_n_columns (model);
+ for (i = 0; i < gda_data_model_get_n_rows (model); i++) {
task_id = -1;
parent_id = -1;
name = NULL;
@@ -1991,42 +2084,42 @@
constraint_type = MRP_CONSTRAINT_ASAP;
for (j = 0; j < n; j++) {
- if (is_field (res, j, "name")) {
- name = get_string (res, i, j);
+ if (is_field (model, j, "name")) {
+ name = get_string (model, i, j);
}
- else if (is_field (res, j, "task_id")) {
- task_id = get_int (res, i, j);
+ else if (is_field (model, j, "task_id")) {
+ task_id = get_int (model, i, j);
}
- else if (is_field (res, j, "parent_id")) {
- parent_id = get_id (res, i, j);
+ else if (is_field (model, j, "parent_id")) {
+ parent_id = get_id (model, i, j);
}
- else if (is_field (res, j, "work")) {
- work = get_int (res, i, j);
+ else if (is_field (model, j, "work")) {
+ work = get_int (model, i, j);
}
- else if (is_field (res, j, "duration")) {
- duration = get_int (res, i, j);
+ else if (is_field (model, j, "duration")) {
+ duration = get_int (model, i, j);
}
- else if (is_field (res, j, "percent_complete")) {
- percent_complete = get_int (res, i, j);
+ else if (is_field (model, j, "percent_complete")) {
+ percent_complete = get_int (model, i, j);
}
- else if (is_field (res, j, "priority")) {
- priority = get_int (res, i, j);
+ else if (is_field (model, j, "priority")) {
+ priority = get_int (model, i, j);
}
- else if (is_field (res, j, "is_milestone")) {
- is_milestone = get_boolean (res, i, j);
+ else if (is_field (model, j, "is_milestone")) {
+ is_milestone = get_boolean (model, i, j);
}
- else if (is_field (res, j, "is_fixed_work")) {
- is_fixed_work = get_boolean (res, i, j);
+ else if (is_field (model, j, "is_fixed_work")) {
+ is_fixed_work = get_boolean (model, i, j);
}
- else if (is_field (res, j, "note")) {
- note = get_string (res, i, j);
+ else if (is_field (model, j, "note")) {
+ note = get_string (model, i, j);
}
- else if (is_field (res, j, "constraint_type")) {
+ else if (is_field (model, j, "constraint_type")) {
constraint_type = constraint_string_to_type
- (get_string (res, i, j));
+ (get_string (model, i, j));
}
- else if (is_field (res, j, "constraint_time_seconds")) {
- constraint_time = get_int (res, i, j);
+ else if (is_field (model, j, "constraint_time_seconds")) {
+ constraint_time = get_int (model, i, j);
}
}
@@ -2075,10 +2168,10 @@
g_hash_table_insert (data->task_id_hash, GINT_TO_POINTER (task_id), task);
g_hash_table_insert (data->task_hash, task, GINT_TO_POINTER (task_id));
}
- g_object_unref (res);
+ g_object_unref (model);
+ model = NULL;
- res = sql_execute_query (data->con, "CLOSE mycursor");
- g_object_unref (res);
+ sql_execute_command (data->con, "CLOSE mycursor");
/* Build a GNode tree with all the tasks. */
tree = g_node_new (NULL);
@@ -2142,8 +2235,8 @@
return TRUE;
out:
- if (res) {
- g_object_unref (res);
+ if (model) {
+ g_object_unref (model);
}
return FALSE;
@@ -2160,7 +2253,7 @@
GError **error)
{
SQLData *data;
- GdaDataModel *res = NULL;
+ gboolean success;
GdaClient *client;
const gchar *dsn_name = "planner-auto";
gchar *db_txt;
@@ -2187,8 +2280,8 @@
data->root_task = mrp_task_new ();
- db_txt = g_strdup_printf ("HOST=%s;DATABASE=%s", host, database);
-#ifdef HAVE_GDA2
+ db_txt = g_strdup_printf (CONNECTION_FORMAT_STRING, host, database);
+#if GDA_VERSION >= 20
gda_config_save_data_source (dsn_name,
provider,
db_txt,
@@ -2203,7 +2296,7 @@
client = gda_client_new ();
-#ifdef HAVE_GDA2
+#if GDA_VERSION >= 20
data->con = gda_client_open_connection (client, dsn_name, NULL, NULL, 0, error);
#else
data->con = gda_client_open_connection (client, dsn_name, NULL, NULL, 0);
@@ -2221,23 +2314,19 @@
goto out;
}
- res = sql_execute_query (data->con, "SET TIME ZONE UTC");
- if (res == NULL) {
+ success = sql_execute_command (data->con, "SET TIME ZONE UTC");
+ if (!success) {
g_warning ("SET TIME ZONE command failed: %s.",
sql_get_last_error (data->con));
goto out;
}
- g_object_unref (res);
- res = NULL;
- res = sql_execute_query (data->con, "BEGIN");
- if (res == NULL) {
+ success = sql_execute_command (data->con, "BEGIN");
+ if (!success) {
g_warning (_("BEGIN command failed %s."),
sql_get_last_error (data->con));
goto out;
}
- g_object_unref (res);
- res = NULL;
/* Get project. */
if (!sql_read_project (data, project_id)) {
@@ -2294,8 +2383,7 @@
mrp_task_manager_set_root (task_manager, data->root_task);
}
- res = sql_execute_query (data->con, "COMMIT");
- g_object_unref (res);
+ sql_execute_command (data->con, "COMMIT");
g_object_unref (data->con);
@@ -2308,10 +2396,6 @@
return TRUE;
out:
- if (res) {
- g_object_unref (res);
- }
-
if (data->con) {
g_object_unref (data->con);
}
@@ -2335,7 +2419,8 @@
gboolean force,
GError **error)
{
- GdaDataModel *res;
+ GdaDataModel *model = NULL;
+ gboolean success;
gchar *query;
gint project_id;
@@ -2357,43 +2442,41 @@
query = g_strdup_printf ("DECLARE mycursor CURSOR FOR SELECT "
"name, revision, last_user FROM project WHERE proj_id=%d",
project_id);
- res = sql_execute_query (data->con, query);
+ success = sql_execute_command (data->con, query);
g_free (query);
- if (res == NULL) {
+ if (!success) {
WRITE_ERROR (error, data->con);
return FALSE;
}
- g_object_unref (res);
- res = sql_execute_query (data->con, "FETCH ALL in mycursor");
- if (res == NULL) {
+ model = sql_execute_query (data->con, "FETCH ALL in mycursor");
+ if (model == NULL) {
WRITE_ERROR (error, data->con);
return FALSE;
}
- if (gda_data_model_get_n_rows (res) > 0) {
- name = get_string (res, 0, 0);
- revision = get_int (res, 0, 1);
- last_user = get_string (res, 0, 2);
+ if (gda_data_model_get_n_rows (model) > 0) {
+ name = get_string (model, 0, 0);
+ revision = get_int (model, 0, 1);
+ last_user = get_string (model, 0, 2);
- g_object_unref (res);
+ g_object_unref (model);
+ model = NULL;
- res = sql_execute_query (data->con, "CLOSE mycursor");
- g_object_unref (res);
+ sql_execute_command (data->con, "CLOSE mycursor");
/* Remove the old project. */
d(g_print ("Got old project with id %d (rev %d), remove.\n", project_id, revision));
query = g_strdup_printf ("DELETE FROM project WHERE proj_id=%d", project_id);
- res = sql_execute_query (data->con, query);
+ success = sql_execute_command (data->con, query);
g_free (query);
- if (res == NULL) {
+ if (!success) {
WRITE_ERROR (error, data->con);
return FALSE;
}
- g_object_unref (res);
d(g_print ("*** revision: %d, old revision: %d\n", revision, data->revision));
@@ -2415,7 +2498,8 @@
data->revision = revision + 1;
} else {
- g_object_unref (res);
+ g_object_unref (model);
+ model = NULL;
data->revision = 1;
}
@@ -2446,15 +2530,14 @@
name, company, manager, str, data->revision);
}
- res = sql_execute_query (data->con, query);
+ success = sql_execute_command (data->con, query);
g_free (query);
g_free (str);
- if (res == NULL) {
+ if (!success) {
WRITE_ERROR (error, data->con);
return FALSE;
}
- g_object_unref (res);
if (project_id == -1) {
@@ -2472,7 +2555,7 @@
static gboolean
sql_write_phases (SQLData *data)
{
- GdaDataModel *res;
+ gboolean success;
gchar *query;
GList *phases, *l;
@@ -2488,10 +2571,10 @@
"VALUES(%d, '%s')",
data->project_id, name);
- res = sql_execute_query (data->con, query);
+ success = sql_execute_command (data->con, query);
g_free (query);
- if (res == NULL) {
+ if (!success) {
g_warning ("INSERT command failed (phase) %s.",
sql_get_last_error (data->con));
goto out;
@@ -2503,17 +2586,13 @@
return TRUE;
out:
- if (res) {
- g_object_unref (res);
- }
-
return FALSE;
}
static gboolean
sql_write_phase (SQLData *data)
{
- GdaDataModel *res;
+ gboolean success;
gchar *query;
gchar *phase;
@@ -2530,10 +2609,10 @@
data->project_id);
}
- res = sql_execute_query (data->con, query);
+ success = sql_execute_command (data->con, query);
g_free (query);
- if (res == NULL) {
+ if (!success) {
g_warning ("UPDATE command failed (phase) %s.",
sql_get_last_error (data->con));
goto out;
@@ -2542,10 +2621,6 @@
return TRUE;
out:
- if (res) {
- g_object_unref (res);
- }
-
return FALSE;
}
@@ -2625,7 +2700,7 @@
static gboolean
sql_write_property_specs (SQLData *data)
{
- GdaDataModel *res;
+ gboolean success;
gchar *query;
GList *properties, *l;
@@ -2647,10 +2722,10 @@
"VALUES(%d, '%s', '%s', '%s', 'project', '%s')",
data->project_id,
name, label, type, description);
- res = sql_execute_query (data->con, query);
+ success = sql_execute_command (data->con, query);
g_free (query);
- if (res == NULL) {
+ if (!success) {
g_warning ("INSERT command failed (property_type) %s.",
sql_get_last_error (data->con));
goto out;
@@ -2677,10 +2752,10 @@
"VALUES(%d, '%s', '%s', '%s', 'task', '%s')",
data->project_id,
name, label, type, description);
- res = sql_execute_query (data->con, query);
+ success = sql_execute_command (data->con, query);
g_free (query);
- if (res == NULL) {
+ if (!success) {
g_warning ("INSERT command failed (property_type) %s.",
sql_get_last_error (data->con));
goto out;
@@ -2707,10 +2782,10 @@
"VALUES(%d, '%s', '%s', '%s', 'resource', '%s')",
data->project_id,
name, label, type, description);
- res = sql_execute_query (data->con, query);
+ success = sql_execute_command (data->con, query);
g_free (query);
- if (res == NULL) {
+ if (!success) {
g_warning ("INSERT command failed (property_type) %s.",
sql_get_last_error (data->con));
goto out;
@@ -2725,10 +2800,6 @@
return TRUE;
out:
- if (res) {
- g_object_unref (res);
- }
-
return FALSE;
}
@@ -2736,7 +2807,7 @@
sql_write_property_values (SQLData *data,
MrpObject *object)
{
- GdaDataModel *res;
+ gboolean success;
gchar *query;
GType object_type;
@@ -2778,11 +2849,11 @@
"VALUES(%d, NULL)", property_type_id);
}
- res = sql_execute_query (data->con, query);
+ success = sql_execute_command (data->con, query);
g_free (query);
g_free (value);
- if (res == NULL) {
+ if (!success) {
g_warning ("INSERT command failed (property) %s.",
sql_get_last_error (data->con));
goto out;
@@ -2812,10 +2883,10 @@
"VALUES(%d, %d)",
str,
object_id, id);
- res = sql_execute_query (data->con, query);
+ success = sql_execute_command (data->con, query);
g_free (query);
- if (res == NULL) {
+ if (!success) {
g_warning ("INSERT command failed (*_to_property) %s.",
sql_get_last_error (data->con));
goto out;
@@ -2825,17 +2896,13 @@
return TRUE;
out:
- if (res) {
- g_object_unref (res);
- }
-
return FALSE;
}
static gboolean
sql_write_day_types (SQLData *data)
{
- GdaDataModel *res;
+ gboolean success;
gchar *query;
GList *days, *l;
@@ -2871,10 +2938,10 @@
mrp_day_get_name (day),
mrp_day_get_description (day),
is_work, is_nonwork);
- res = sql_execute_query (data->con, query);
+ success = sql_execute_command (data->con, query);
g_free (query);
- if (res == NULL) {
+ if (!success) {
g_warning ("INSERT command failed (resource_group) %s.",
sql_get_last_error (data->con));
goto out;
@@ -2891,10 +2958,6 @@
return TRUE;
out:
- if (res) {
- g_object_unref (res);
- }
-
return FALSE;
}
@@ -2919,7 +2982,7 @@
MrpCalendar *calendar,
MrpDayWithIntervals *day_ivals)
{
- GdaDataModel *res;
+ gboolean success;
gchar *query;
GList *l;
@@ -2944,12 +3007,12 @@
"VALUES(%d, %d, '%s', '%s')",
calendar_id, day_type_id,
start_string, end_string);
- res = sql_execute_query (data->con, query);
+ success = sql_execute_command (data->con, query);
g_free (query);
g_free (start_string);
g_free (end_string);
- if (res == NULL) {
+ if (!success) {
g_warning ("INSERT command failed (day_interval) %s.",
sql_get_last_error (data->con));
goto out;
@@ -2959,10 +3022,6 @@
return TRUE;
out:
- if (res) {
- g_object_unref (res);
- }
-
return FALSE;
}
@@ -2971,7 +3030,7 @@
MrpCalendar *calendar,
MrpDateWithDay *date_day)
{
- GdaDataModel *res;
+ gboolean success;
gchar *query;
gint calendar_id;
@@ -2986,11 +3045,11 @@
query = g_strdup_printf ("INSERT INTO day(cal_id, dtype_id, date) "
"VALUES(%d, %d, '%s')",
calendar_id, day_type_id, date_string);
- res = sql_execute_query (data->con, query);
+ success = sql_execute_command (data->con, query);
g_free (query);
g_free (date_string);
- if (res == NULL) {
+ if (!success) {
g_warning ("INSERT command failed (day) %s.",
sql_get_last_error (data->con));
goto out;
@@ -2999,10 +3058,6 @@
return TRUE;
out:
- if (res) {
- g_object_unref (res);
- }
-
return FALSE;
}
@@ -3011,7 +3066,7 @@
MrpCalendar *parent,
MrpCalendar *calendar)
{
- GdaDataModel *res;
+ gboolean success;
gchar *query;
GList *list, *l;
@@ -3044,7 +3099,7 @@
"%s, %s, %s, %s, %s, %s, %s)",
data->project_id, parent_id_string, mrp_calendar_get_name (calendar),
mon, tue, wed, thu, fri, sat, sun);
- res = sql_execute_query (data->con, query);
+ success = sql_execute_command (data->con, query);
g_free (query);
g_free (mon);
g_free (tue);
@@ -3054,7 +3109,7 @@
g_free (sat);
g_free (sun);
- if (res == NULL) {
+ if (!success) {
g_warning ("INSERT command failed (calendar) %s.",
sql_get_last_error (data->con));
goto out;
@@ -3067,8 +3122,6 @@
g_free (parent_id_string);
- g_object_unref (res);
-
/* Write overridden day types. */
list = mrp_calendar_get_overridden_days (calendar);
for (l = list; l; l = l->next) {
@@ -3096,10 +3149,6 @@
return TRUE;
out:
- if (res) {
- g_object_unref (res);
- }
-
return FALSE;
}
@@ -3123,7 +3172,7 @@
static gboolean
sql_write_calendar_id (SQLData *data)
{
- GdaDataModel *res;
+ gboolean success;
gchar *query;
MrpCalendar *calendar;
@@ -3143,10 +3192,10 @@
data->project_id);
}
- res = sql_execute_query (data->con, query);
+ success = sql_execute_command (data->con, query);
g_free (query);
- if (res == NULL) {
+ if (!success) {
g_warning ("UPDATE command failed (cal_id) %s.",
sql_get_last_error (data->con));
goto out;
@@ -3155,17 +3204,13 @@
return TRUE;
out:
- if (res) {
- g_object_unref (res);
- }
-
return FALSE;
}
static gboolean
sql_write_groups (SQLData *data)
{
- GdaDataModel *res;
+ gboolean success;
gchar *query;
GList *groups, *l;
@@ -3189,10 +3234,10 @@
data->project_id,
name,
manager_name, manager_phone, manager_email);
- res = sql_execute_query (data->con, query);
+ success = sql_execute_command (data->con, query);
g_free (query);
- if (res == NULL) {
+ if (!success) {
g_warning ("INSERT command failed (resource_group) %s.",
sql_get_last_error (data->con));
goto out;
@@ -3212,17 +3257,13 @@
return TRUE;
out:
- if (res) {
- g_object_unref (res);
- }
-
return FALSE;
}
static gboolean
sql_write_default_group_id (SQLData *data)
{
- GdaDataModel *res;
+ gboolean success;
gchar *query;
MrpGroup *group;
@@ -3242,10 +3283,10 @@
data->project_id);
}
- res = sql_execute_query (data->con, query);
+ success = sql_execute_command (data->con, query);
g_free (query);
- if (res == NULL) {
+ if (!success) {
g_warning ("UPDATE command failed (default_group_id) %s.",
sql_get_last_error (data->con));
goto out;
@@ -3254,17 +3295,13 @@
return TRUE;
out:
- if (res) {
- g_object_unref (res);
- }
-
return FALSE;
}
static gboolean
sql_write_resources (SQLData *data)
{
- GdaDataModel *res;
+ gboolean success;
gchar *query;
GList *resources, *l;
@@ -3281,7 +3318,6 @@
gchar *cal_id_string;
gchar *group_id_string;
- res = NULL;
resources = mrp_project_get_resources (data->project);
for (l = resources; l; l = l->next) {
@@ -3322,7 +3358,7 @@
data->project_id, group_id_string, name,
short_name, email, note, is_worker, (double) units,
cal_id_string);
- res = sql_execute_query (data->con, query);
+ success = sql_execute_command (data->con, query);
g_free (query);
g_free (cal_id_string);
g_free (group_id_string);
@@ -3330,7 +3366,7 @@
g_free (email);
g_free (short_name);
- if (res == NULL) {
+ if (!success) {
g_warning ("INSERT command failed (resource) %s.",
sql_get_last_error (data->con));
goto out;
@@ -3356,17 +3392,13 @@
return TRUE;
out:
- if (res) {
- g_object_unref (res);
- }
-
return FALSE;
}
static gboolean
sql_write_tasks (SQLData *data)
{
- GdaDataModel *res = NULL;
+ gboolean success;
gchar *query;
GList *tasks, *l;
gchar *name, *note;
@@ -3488,7 +3520,7 @@
percent_complete, is_milestone, is_fixed_work,
constraint_type, constraint_time, priority);
- res = sql_execute_query (data->con, query);
+ success = sql_execute_command (data->con, query);
g_free (query);
g_free (start_string);
g_free (finish_string);
@@ -3497,7 +3529,7 @@
g_free (constraint_time);
g_free (constraint);
- if (res == NULL) {
+ if (!success) {
g_warning ("INSERT command failed (task) %s.",
sql_get_last_error (data->con));
goto out;
@@ -3549,10 +3581,10 @@
"type, lag) "
"VALUES(%d, %d, '%s', %d)",
id, pred_id, relation_type, lag);
- res = sql_execute_query (data->con, query);
+ success = sql_execute_command (data->con, query);
g_free (query);
- if (res == NULL) {
+ if (!success) {
g_warning ("INSERT command failed (predecessor) %s.",
sql_get_last_error (data->con));
goto out;
@@ -3592,10 +3624,10 @@
"VALUES(%d, %d, %s)",
id, resource_id, tmp);
- res = sql_execute_query (data->con, query);
+ success = sql_execute_command (data->con, query);
g_free (query);
- if (res == NULL) {
+ if (!success) {
g_warning ("INSERT command failed (allocation) %s.",
sql_get_last_error (data->con));
goto out;
@@ -3608,10 +3640,6 @@
return TRUE;
out:
- if (res) {
- g_object_unref (res);
- }
-
return FALSE;
}
@@ -3629,7 +3657,7 @@
SQLData *data;
gchar *db_txt = NULL;
const gchar *dsn_name = "planner-auto";
- GdaDataModel *res = NULL;
+ gboolean success;
GdaClient *client;
gboolean ret = FALSE;
const gchar *provider = "PostgreSQL";
@@ -3651,8 +3679,8 @@
data->project = storage->project;
- db_txt = g_strdup_printf ("HOST=%s;DATABASE=%s", host, database);
-#ifdef HAVE_GDA2
+ db_txt = g_strdup_printf (CONNECTION_FORMAT_STRING, host, database);
+#if GDA_VERSION >= 20
gda_config_save_data_source (dsn_name,
provider,
db_txt,
@@ -3667,7 +3695,7 @@
client = gda_client_new ();
-#ifdef HAVE_GDA2
+#if GDA_VERSION >= 20
data->con = gda_client_open_connection (client, dsn_name, NULL, NULL, 0, error);
#else
data->con = gda_client_open_connection (client, dsn_name, NULL, NULL, 0);
@@ -3684,24 +3712,20 @@
goto out;
}
- res = sql_execute_query (data->con, "SET TIME ZONE UTC");
+ success = sql_execute_command (data->con, "SET TIME ZONE UTC");
- if (res == NULL) {
+ if (!success) {
g_warning ("SET TIME ZONE command failed: %s.",
sql_get_last_error (data->con));
goto out;
}
- g_object_unref (res);
- res = NULL;
- res = sql_execute_query (data->con, "BEGIN");
+ success = sql_execute_command (data->con, "BEGIN");
- if (res == NULL) {
+ if (!success) {
WRITE_ERROR (error, data->con);
goto out;
}
- g_object_unref (res);
- res = NULL;
/* Write project. */
if (!sql_write_project (storage, data, force, error)) {
@@ -3763,9 +3787,7 @@
g_warning ("Couldn't write tasks.");
}
- res = sql_execute_query (data->con, "COMMIT");
- g_object_unref (res);
- res = NULL;
+ sql_execute_command (data->con, "COMMIT");
d(g_print ("Write project, set rev to %d\n", data->revision));
@@ -3776,10 +3798,6 @@
ret = TRUE;
out:
- if (res) {
- g_object_unref (res);
- }
-
if (data->con) {
g_object_unref (data->con);
}
Modified: trunk/libplanner/mrp-sql.h
==============================================================================
--- trunk/libplanner/mrp-sql.h (original)
+++ trunk/libplanner/mrp-sql.h Thu Feb 14 20:14:56 2008
@@ -25,6 +25,8 @@
#include "mrp-storage-sql.h"
+void mrp_sql_init (void);
+
gboolean mrp_sql_load_project (MrpStorageSQL *storage,
const gchar *host,
const gchar *port,
Modified: trunk/libplanner/mrp-storage-sql.c
==============================================================================
--- trunk/libplanner/mrp-storage-sql.c (original)
+++ trunk/libplanner/mrp-storage-sql.c Thu Feb 14 20:14:56 2008
@@ -77,6 +77,7 @@
static void
storage_sql_init (MrpStorageSQL *storage)
{
+ mrp_sql_init();
}
static void
Modified: trunk/src/Makefile.am
==============================================================================
--- trunk/src/Makefile.am (original)
+++ trunk/src/Makefile.am Thu Feb 14 20:14:56 2008
@@ -169,7 +169,7 @@
sql_plugin = libsql-plugin.la
libsql_plugin_la_SOURCES = planner-sql-plugin.c
libsql_plugin_la_LIBADD = $(GDA_LIBS)
-libsql_plugin_la_CFLAGS = $(GDA_CFLAGS)
+libsql_plugin_la_CFLAGS = $(GDA_CFLAGS) -DGDA_VERSION= GDA_VER@
libsql_plugin_la_LDFLAGS = -avoid-version -module
endif
Modified: trunk/src/planner-sql-plugin.c
==============================================================================
--- trunk/src/planner-sql-plugin.c (original)
+++ trunk/src/planner-sql-plugin.c Thu Feb 14 20:14:56 2008
@@ -51,7 +51,13 @@
#define CONF_DATABASE "/plugins/sql/database"
#define CONF_USERNAME "/plugins/sql/username"
-#define STOP_ON_ERR GDA_COMMAND_OPTION_STOP_ON_ERRORS
+#if GDA_VERSION >= 30
+#define GDAVALUE GValue
+#define CONNECTION_FORMAT_STRING "HOST=%s;DB_NAME=%s"
+#else
+#define GDAVALUE GdaValue
+#define CONNECTION_FORMAT_STRING "HOST=%s;DATABASE=%s"
+#endif
typedef struct {
GtkWidget *open_dialog;
@@ -76,6 +82,8 @@
gpointer user_data);
static GdaDataModel *sql_execute_query (GdaConnection *con,
gchar *query);
+static gboolean sql_execute_command (GdaConnection *con,
+ gchar *command);
static const gchar * sql_get_last_error (GdaConnection *connection);
void plugin_init (PlannerPlugin *plugin,
PlannerWindow *main_window);
@@ -98,20 +106,84 @@
G_CALLBACK (sql_plugin_save) }
};
-/**
- * Helper to execute a SQL query using GDA
+#if GDA_VERSION >= 30
+
+static gboolean
+sql_execute_command (GdaConnection *con, gchar *command)
+{
+ GdaCommand *cmd;
+ GList *list;
+ GError *error = NULL;
+
+ cmd = gda_command_new (command, GDA_COMMAND_TYPE_SQL, GDA_COMMAND_OPTION_STOP_ON_ERRORS);
+ list = gda_connection_execute_command (con, cmd, NULL, &error);
+ gda_command_free (cmd);
+
+ while (list) {
+ if (list->data) {
+ g_object_unref (list->data);
+ }
+ list = list->next;
+ }
+ g_list_free (list);
+
+ if(error != NULL) {
+ g_error_free (error);
+ return FALSE;
+ }
+ else
+ {
+ return TRUE;
+ }
+}
+
+static GdaDataModel *
+sql_execute_query (GdaConnection *con, gchar *query)
+{
+ GdaCommand *cmd;
+ GdaDataModel *result;
+
+ cmd = gda_command_new (query, GDA_COMMAND_TYPE_SQL, GDA_COMMAND_OPTION_STOP_ON_ERRORS);
+ result = gda_connection_execute_select_command (con, cmd, NULL, NULL);
+ gda_command_free (cmd);
+
+ return result;
+}
+
+#else
+
+/* The two functions below support libgda older than 3.0.
+ * Once older libgda versions have been phased out, we should
+ * remove the #if..#else and just use the ones above.
*/
+
+static gboolean
+sql_execute_command (GdaConnection *con, gchar *command)
+{
+ GdaDataModel *res;
+
+ res = sql_execute_query (con, command);
+
+ if(res != NULL) {
+ g_object_unref (res);
+ res = NULL;
+ return TRUE;
+ } else {
+ return FALSE;
+ }
+}
+
static GdaDataModel *
sql_execute_query (GdaConnection *con, gchar *query)
{
GdaCommand *cmd;
GdaDataModel *res;
-#ifdef HAVE_GDA2
+#if GDA_VERSION >= 20
GError *error;
#endif
- cmd = gda_command_new (query, GDA_COMMAND_TYPE_SQL, STOP_ON_ERR);
-#ifdef HAVE_GDA2
+ cmd = gda_command_new (query, GDA_COMMAND_TYPE_SQL, GDA_COMMAND_OPTION_STOP_ON_ERRORS);
+#if GDA_VERSION >=20
res = gda_connection_execute_single_command (con, cmd, NULL, &error);
#else
res = gda_connection_execute_single_command (con, cmd, NULL);
@@ -121,13 +193,18 @@
return res;
}
+#endif
+
static const gchar *
sql_get_last_error (GdaConnection *connection)
{
-#ifdef HAVE_GDA2
- GList *list;
- GdaConnectionEvent *error;
- const gchar *error_txt;
+#if GDA_VERSION >= 20
+ GList *list;
+ GdaConnectionEvent *error;
+ const gchar *error_txt;
+
+ g_return_val_if_fail (GDA_IS_CONNECTION (connection),
+ _("Can't connect to database server"));
list = (GList *) gda_connection_get_events (connection);
@@ -144,6 +221,9 @@
GdaError *error;
const gchar *error_txt;
+ g_return_val_if_fail (GDA_IS_CONNECTION (connection),
+ _("Can't connect to database server"));
+
list = (GList *) gda_connection_get_errors (connection);
if (list == NULL) {
@@ -167,10 +247,10 @@
get_int (GdaDataModel *res, gint row, gint column)
{
gchar *str;
- GdaValue *value;
+ GDAVALUE *value;
gint i;
- value = (GdaValue *) gda_data_model_get_value_at (res, column, row);
+ value = (GDAVALUE *) gda_data_model_get_value_at (res, column, row);
if (value == NULL) {
g_warning ("Failed to get a value: (%d,%d)", column, row);
return INT_MAX;
@@ -192,9 +272,9 @@
gchar *str;
gchar *ret;
gsize len;
- GdaValue *value;
+ GDAVALUE *value;
- value = (GdaValue *) gda_data_model_get_value_at (res, column, row);
+ value = (GDAVALUE *) gda_data_model_get_value_at (res, column, row);
if (value == NULL) {
g_warning ("Failed to get a value: (%d,%d)", column, row);
return "";
@@ -385,9 +465,10 @@
PlannerPlugin *plugin)
{
GtkWindow *window;
- GdaDataModel *res;
+ GdaDataModel *model;
GtkWidget *dialog;
gint result;
+ gboolean success;
GDir* dir;
const gchar *name;
gboolean upgradable = FALSE;
@@ -409,17 +490,17 @@
window = GTK_WINDOW (plugin->main_window);
/* Try to get the database version */
- res = sql_execute_query (conn, "SELECT value FROM property_global WHERE prop_name='database_version'");
- if (res == NULL) {
+ model = sql_execute_query (conn, "SELECT value FROM property_global WHERE prop_name='database_version'");
+ if (model == NULL) {
create_tables = TRUE;
} else {
create_tables = FALSE;
- database_version = get_string (res, 0, 0);
+ database_version = get_string (model, 0, 0);
g_message ("Database version : %s", database_version);
if (database_version == NULL) {
database_version = VERSION;
}
- g_object_unref (res);
+ g_object_unref (model);
}
/* Check for tables */
@@ -528,9 +609,9 @@
gtk_widget_destroy (dialog);
if (result == GTK_RESPONSE_YES) {
g_file_get_contents (upgrade_file, &contents, NULL, NULL);
- res = sql_execute_query (conn, contents);
+ success = sql_execute_command (conn, contents);
g_free (contents);
- if (res == NULL) {
+ if (!success) {
dialog = gtk_message_dialog_new (window,
GTK_DIALOG_DESTROY_WITH_PARENT,
GTK_MESSAGE_WARNING,
@@ -546,12 +627,11 @@
} else {
gchar *query;
- sql_execute_query (conn, "DELETE * FROM property_global WHERE prop_name='database_version'");
+ sql_execute_command (conn, "DELETE * FROM property_global WHERE prop_name='database_version'");
query = g_strdup_printf ("INSERT INTO property_global (prop_name, value) VALUES ('database_version','%s')", max_version_upgrade);
- sql_execute_query (conn, query);
+ sql_execute_command (conn, query);
g_free (query);
- g_object_unref (res);
retval = TRUE;
}
} else {
@@ -569,9 +649,9 @@
gchar *contents;
g_file_get_contents (database_file, &contents, NULL, NULL);
- res = sql_execute_query (conn, contents);
+ success = sql_execute_command (conn, contents);
g_free (contents);
- if (res == NULL) {
+ if (!success) {
dialog = gtk_message_dialog_new (window,
GTK_DIALOG_DESTROY_WITH_PARENT,
GTK_MESSAGE_WARNING,
@@ -587,9 +667,8 @@
query = g_strdup_printf ("INSERT INTO property_global (prop_name, value) VALUES ('database_version','%s')", max_version_database);
- sql_execute_query (conn, query);
+ sql_execute_command (conn, query);
g_free (query);
- g_object_unref (res);
retval = TRUE;
}
g_free (database_file);
@@ -618,7 +697,7 @@
/* FIXME: In postgresql we use template1 as the connection database */
gchar *init_database = "template1";
gchar *query;
-#ifdef HAVE_GDA2
+#if GDA_VERSION >= 20
GError *error;
#endif
@@ -629,11 +708,11 @@
window = GTK_WINDOW (plugin->main_window);
/* Use same data but changing the database */
- dsn->cnc_string = g_strdup_printf ("HOST=%s;DATABASE=%s", host, init_database);
+ dsn->cnc_string = g_strdup_printf (CONNECTION_FORMAT_STRING, host, init_database);
gda_config_save_data_source_info (dsn);
client = gda_client_new ();
-#ifdef HAVE_GDA2
+#if GDA_VERSION >= 20
conn = gda_client_open_connection (client, dsn_name, NULL, NULL, 0, &error);
#else
conn = gda_client_open_connection (client, dsn_name, NULL, NULL, 0);
@@ -655,7 +734,7 @@
if (result == GTK_RESPONSE_YES) {
query = g_strdup_printf ("CREATE DATABASE %s WITH ENCODING = 'UTF8'",
db_name);
- sql_execute_query (conn, query);
+ sql_execute_command (conn, query);
g_free (query);
retval = TRUE;
} else {
@@ -680,13 +759,13 @@
PlannerPlugin *plugin)
{
GdaConnection *conn = NULL;
- GdaDataModel *res = NULL;
+ gboolean success;
gchar *str;
-#ifdef HAVE_GDA2
+#if GDA_VERSION >= 20
GError *error;
#endif
-#ifdef HAVE_GDA2
+#if GDA_VERSION >= 20
conn = gda_client_open_connection (client, dsn_name, NULL, NULL, 0, &error);
#else
conn = gda_client_open_connection (client, dsn_name, NULL, NULL, 0 );
@@ -699,7 +778,7 @@
show_error_dialog (plugin, str);
conn = NULL;
} else {
-#ifdef HAVE_GDA2
+#if GDA_VERSION >= 20
conn = gda_client_open_connection (client, dsn_name, NULL, NULL, 0, &error);
#else
conn = gda_client_open_connection (client, dsn_name, NULL, NULL, 0 );
@@ -709,14 +788,12 @@
if (conn != NULL) {
- res = sql_execute_query (conn, "SET TIME ZONE UTC");
- if (res == NULL) {
+ success = sql_execute_command (conn, "SET TIME ZONE UTC");
+ if (!success) {
g_warning ("SET TIME ZONE command failed: %s.",
sql_get_last_error (conn));
goto out;
}
- g_object_unref (res);
- res = NULL;
if (!check_database_tables (conn, plugin)) {
str = g_strdup_printf (_("Test to tables in database '%s' failed."),
@@ -731,10 +808,6 @@
return conn;
out:
- if (res) {
- g_object_unref (res);
- }
-
if (conn) {
gda_connection_close (conn);
}
@@ -755,7 +828,8 @@
gchar *password)
{
GdaConnection *conn;
- GdaDataModel *res;
+ GdaDataModel *model;
+ gboolean success;
GdaClient *client;
GladeXML *gui;
GtkWidget *dialog;
@@ -774,8 +848,8 @@
const gchar *provider = "PostgreSQL";
gchar *filename;
- db_txt = g_strdup_printf ("HOST=%s;DATABASE=%s",server,database);
-#ifdef HAVE_GDA2
+ db_txt = g_strdup_printf (CONNECTION_FORMAT_STRING,server,database);
+#if GDA_VERSION >= 20
gda_config_save_data_source (dsn_name,
provider,
db_txt,
@@ -795,27 +869,24 @@
return -1;
}
- res = sql_execute_query (conn, "BEGIN");
- if (res == NULL) {
+ success = sql_execute_command (conn, "BEGIN");
+ if (!success) {
g_warning ("BEGIN command failed.");
return -1;
}
- g_object_unref (res);
- res = sql_execute_query (conn,
- "DECLARE mycursor CURSOR FOR SELECT proj_id, name,"
- "phase, revision FROM project ORDER by proj_id ASC");
+ success = sql_execute_command (conn,
+ "DECLARE mycursor CURSOR FOR SELECT proj_id, name,"
+ "phase, revision FROM project ORDER by proj_id ASC");
- if (res == NULL) {
+ if (!success) {
g_warning ("DECLARE CURSOR command failed (project).");
return -1;
}
- g_object_unref (res);
-
- res = sql_execute_query (conn, "FETCH ALL in mycursor");
+ model = sql_execute_query (conn, "FETCH ALL in mycursor");
- if (res == NULL) {
+ if (model == NULL) {
g_warning ("FETCH ALL failed.");
return -1;
}
@@ -880,16 +951,16 @@
G_CALLBACK (row_activated_cb),
ok_button);
- for (i = 0; i < gda_data_model_get_n_rows (res); i++) {
+ for (i = 0; i < gda_data_model_get_n_rows (model); i++) {
gint id;
gchar *name;
gchar *phase;
gint revision;
- id = get_int (res, i, 0);
- name = get_string (res, i, 1);
- phase = get_string (res, i, 2);
- revision = get_int (res, i, 3);
+ id = get_int (model, i, 0);
+ name = get_string (model, i, 1);
+ phase = get_string (model, i, 2);
+ revision = get_int (model, i, 3);
/* FIXME: needs fixing in the database backend. */
if (strcmp (phase, "NULL") == 0) {
@@ -910,15 +981,13 @@
g_free (phase);
}
- if (gda_data_model_get_n_columns (res) == 0) {
+ if (gda_data_model_get_n_columns (model) == 0) {
gtk_widget_set_sensitive (ok_button, FALSE);
}
- g_object_unref (res);
+ g_object_unref (model);
- res = sql_execute_query (conn,"CLOSE mycursor");
-
- g_object_unref (res);
+ sql_execute_command (conn,"CLOSE mycursor");
gtk_widget_show_all (dialog);
response = gtk_dialog_run (GTK_DIALOG (dialog));
@@ -1179,8 +1248,8 @@
return;
}
- db_txt = g_strdup_printf ("HOST=%s;DATABASE=%s",server,database);
-#ifdef HAVE_GDA2
+ db_txt = g_strdup_printf (CONNECTION_FORMAT_STRING,server,database);
+#if GDA_VERSION >= 20
gda_config_save_data_source (dsn_name,
provider,
db_txt,
@@ -1269,6 +1338,8 @@
GtkUIManager *ui;
gint i = -1;
gchar *filename;
+
+ gda_init (PACKAGE, VERSION, 0, NULL);
priv = g_new0 (SQLPluginPriv, 1);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]