[planner: 13/40] unknown type name 'GdaDataSourceInfo'.
- From: Mart Raudsepp <mraudsepp src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [planner: 13/40] unknown type name 'GdaDataSourceInfo'.
- Date: Thu, 3 Jun 2021 16:28:55 +0000 (UTC)
commit 0d23d593caeb37e4f4a596dab4f851bd80a22ff0
Author: Ahmed Baïzid <ahmed baizid org>
Date: Thu Jun 18 15:06:15 2015 +0200
unknown type name 'GdaDataSourceInfo'.
https://bugzilla.gnome.org/show_bug.cgi?id=584556
libplanner/mrp-sql.c | 51 +++++++++++++++++++++++--------------
src/planner-sql-plugin.c | 65 ++++++++++++++++++++++++++++++------------------
2 files changed, 74 insertions(+), 42 deletions(-)
---
diff --git a/libplanner/mrp-sql.c b/libplanner/mrp-sql.c
index 500ffd29..6c66204d 100644
--- a/libplanner/mrp-sql.c
+++ b/libplanner/mrp-sql.c
@@ -2215,6 +2215,22 @@ sql_read_tasks (SQLData *data)
return FALSE;
}
+/*
+ * mrp_sql_load_project:
+ * @storage: an #MrpStorageSQL
+ * @host: unused
+ * @port: unused
+ * @database: used to display warnings
+ * @login: unused
+ * @password: unused
+ * @project_id: identify the project in the database
+ * @error: location to store error, or NULL
+ *
+ * Import a project from a database.
+ * The "planner-auto" libgda DSN is used.
+ *
+ * Returns: %TRUE on success, %FALSE on failure.
+ */
gboolean
mrp_sql_load_project (MrpStorageSQL *storage,
const gchar *host,
@@ -2228,11 +2244,9 @@ mrp_sql_load_project (MrpStorageSQL *storage,
SQLData *data;
gboolean success;
const gchar *dsn_name = "planner-auto";
- gchar *db_txt;
MrpCalendar *calendar;
MrpGroup *group;
MrpTaskManager *task_manager;
- const gchar *provider = "PostgreSQL";
data = g_new0 (SQLData, 1);
@@ -2252,13 +2266,6 @@ mrp_sql_load_project (MrpStorageSQL *storage,
data->root_task = mrp_task_new ();
- db_txt = g_strdup_printf (CONNECTION_FORMAT_STRING, host, database);
- gda_config_save_data_source (dsn_name,
- provider,
- db_txt,
- "planner project", login, password, FALSE);
- g_free (db_txt);
-
data->con = gda_connection_open_from_dsn (dsn_name, NULL, GDA_CONNECTION_OPTIONS_NONE, error);
if (!GDA_IS_CONNECTION (data->con)) {
@@ -3643,6 +3650,23 @@ sql_write_tasks (SQLData *data)
return FALSE;
}
+/*
+ * mrp_sql_save_project:
+ * @storage: an #MrpStorageSQL
+ * @force: If the database changed since the import, overwrite the project or not?
+ * @host: unused
+ * @port: unused
+ * @database: used to display warnings
+ * @user: unused
+ * @password: unused
+ * @project_id: identify the project in the database
+ * @error: location to store error, or NULL
+ *
+ * Export a project to a database.
+ * The "planner-auto" libgda DSN is used.
+ *
+ * Returns: %TRUE on success, %FALSE on failure.
+ */
gboolean
mrp_sql_save_project (MrpStorageSQL *storage,
gboolean force,
@@ -3655,11 +3679,9 @@ mrp_sql_save_project (MrpStorageSQL *storage,
GError **error)
{
SQLData *data;
- gchar *db_txt = NULL;
const gchar *dsn_name = "planner-auto";
gboolean success;
gboolean ret = FALSE;
- const gchar *provider = "PostgreSQL";
data = g_new0 (SQLData, 1);
data->project_id = *project_id;
@@ -3678,13 +3700,6 @@ mrp_sql_save_project (MrpStorageSQL *storage,
data->project = storage->project;
- db_txt = g_strdup_printf (CONNECTION_FORMAT_STRING, host, database);
- gda_config_save_data_source (dsn_name,
- provider,
- db_txt,
- "planner project", user, password, FALSE);
- g_free (db_txt);
-
data->con = gda_connection_open_from_dsn (dsn_name, NULL, GDA_CONNECTION_OPTIONS_NONE, error);
data->revision = GPOINTER_TO_INT (g_object_get_data (G_OBJECT (data->project),
diff --git a/src/planner-sql-plugin.c b/src/planner-sql-plugin.c
index 834dc51e..977452ed 100644
--- a/src/planner-sql-plugin.c
+++ b/src/planner-sql-plugin.c
@@ -52,6 +52,7 @@
#define CONF_USERNAME "/plugins/sql/username"
#define CONNECTION_FORMAT_STRING "HOST=%s;DB_NAME=%s"
+#define AUTH_FORMAT_STRING "USERNAME=%s;PASSWORD=%s"
struct _PlannerPluginPriv {
GtkActionGroup *actions;
@@ -665,23 +666,20 @@ create_database (const gchar *dsn_name,
guint result;
gboolean retval;
GdaConnection *conn;
- GdaDataSourceInfo *dsn;
- gchar *cnc_string_orig;
+ const GdaDsnInfo *dsn;
gchar *init_cnc;
/* FIXME: In postgresql we use template1 as the connection database */
gchar *init_database = "template1";
gchar *query;
GError *error = NULL;
- dsn = gda_config_find_data_source (dsn_name);
- cnc_string_orig = dsn->cnc_string;
+ dsn = gda_config_get_dsn_info (dsn_name);
retval = FALSE;
window = GTK_WINDOW (plugin->main_window);
/* Use same data but changing the database */
init_cnc = g_strdup_printf (CONNECTION_FORMAT_STRING, host, init_database);
- gda_config_save_data_source_info (dsn);
conn = gda_connection_open_from_string(dsn->provider, init_cnc, dsn->auth_string, 0, &error);
if (error) {
@@ -690,7 +688,7 @@ create_database (const gchar *dsn_name,
}
g_free(init_cnc);
if (conn == NULL) {
- g_warning ("Can't connect to database server in order to check/create the database: %s",
cnc_string_orig);
+ g_warning ("Can't connect to database server in order to check/create the database: %s",
dsn->cnc_string);
} else {
dialog = gtk_message_dialog_new (window,
GTK_DIALOG_DESTROY_WITH_PARENT,
@@ -714,7 +712,6 @@ create_database (const gchar *dsn_name,
}
gda_connection_close (conn);
}
- gda_config_save_data_source_info (dsn);
return retval;
}
@@ -807,18 +804,9 @@ sql_plugin_retrieve_project_id (PlannerPlugin *plugin,
gint project_id;
GtkTreeSelection *selection;
GtkTreeIter iter;
- gchar *db_txt;
const gchar *dsn_name = "planner-auto";
- const gchar *provider = "PostgreSQL";
gchar *filename;
- db_txt = g_strdup_printf (CONNECTION_FORMAT_STRING,server,database);
- gda_config_save_data_source (dsn_name,
- provider,
- db_txt,
- "planner project", login, password, FALSE);
- g_free (db_txt);
-
conn = sql_get_tested_connection (dsn_name, server, database, plugin);
if (conn == NULL) {
@@ -1062,6 +1050,41 @@ sql_plugin_retrieve_db_values (PlannerPlugin *plugin,
return ret;
}
+/*
+ * define_dsn:
+ * @server: a server
+ * @port: unused
+ * @database: a database
+ * @login: a login
+ * @password: a password
+ *
+ * Define "planner-auto" libgda DSN.
+ * Once defined, connections to the database can be made using the DSN name alone.
+ * provider, host, database, login, password are retrieved.
+ */
+static void
+define_dsn (const gchar *server, const gchar *port, const gchar *database, const gchar *login, const gchar
*password)
+{
+ GdaDsnInfo dsn_info = {
+ "planner-auto",
+ "PostgreSQL",
+ "planner project",
+ NULL,
+ NULL,
+ FALSE
+ };
+ GError *error = NULL;
+ dsn_info.cnc_string = g_strdup_printf (CONNECTION_FORMAT_STRING, server, database);
+ dsn_info.auth_string = g_strdup_printf (AUTH_FORMAT_STRING, login, password);
+ gda_config_define_dsn (&dsn_info, &error);
+ if (error) {
+ g_warning (error->message);
+ g_clear_error (&error);
+ }
+ g_free (dsn_info.cnc_string);
+ g_free (dsn_info.auth_string);
+}
+
static void
sql_plugin_open (GtkAction *action,
gpointer user_data)
@@ -1088,6 +1111,7 @@ sql_plugin_open (GtkAction *action,
&password)) {
return;
}
+ define_dsn (server, port, database, login, password);
project_id = sql_plugin_retrieve_project_id (plugin,
server,
@@ -1184,9 +1208,7 @@ sql_plugin_save (GtkAction *action,
gchar *uri = NULL;
const gchar *uri_plan = NULL;
GError *error = NULL;
- gchar *db_txt;
const gchar *dsn_name = "planner-auto";
- const gchar *provider = "PostgreSQL";
project = planner_window_get_project (plugin->main_window);
@@ -1200,12 +1222,7 @@ sql_plugin_save (GtkAction *action,
return;
}
- db_txt = g_strdup_printf (CONNECTION_FORMAT_STRING,server,database);
- gda_config_save_data_source (dsn_name,
- provider,
- db_txt,
- "planner project", login, password, FALSE);
- g_free (db_txt);
+ define_dsn (server, port, database, login, password);
conn = sql_get_tested_connection (dsn_name, server, database, plugin);
if (conn == NULL) {
return;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]