From d2d6dbcd7cce68b96c314dabe6f6fc9fd8990704 Mon Sep 17 00:00:00 2001 From: Don Pellegrino Date: Wed, 17 Jun 2009 17:57:11 +0000 Subject: Renamed selection_to_db to selsave to reduce the filename to eight characters. This is necessary due to the limitation of the package name in DB2 for the binding. It will conflict with selection_from_db otherwise. --- diff --git a/src/controller/selection_to_db.h b/src/controller/selection_to_db.h deleted file mode 100644 index 4344e0b..0000000 --- a/src/controller/selection_to_db.h +++ b/dev/null @@ -1,9 +0,0 @@ -#ifndef SELECTION_TO_DB_H -#define SELECTION_TO_DB_H - -/* - * Send the current selection from memory to the database. - */ -void selection_to_db (void); - -#endif // SELECTION_TO_DB_H diff --git a/src/controller/selection_to_db.sqc b/src/controller/selection_to_db.sqc index a6c91b9..0d7de7f 100644 --- a/src/controller/selection_to_db.sqc +++ b/src/controller/selection_to_db.sqc @@ -1,8 +1,9 @@ #include "selection_to_db.h" #include "../view/exp004state0.h" #include - -EXEC SQL INCLUDE sqlca; +#include "../util/check_error.h" +#include "sqlca.h" +extern struct sqlca sqlca; /* * A simple alias to make the code more readable. @@ -22,7 +23,8 @@ selection_to_db (void) * gi is defined as NOT NULL this will clear the entire table. */ EXEC SQL DELETE FROM vis_selection WHERE gi IS NOT NULL; - + check_error (__FILE__, __LINE__); + for (unsigned int i = 0; i < ROWS; i++) { if (S.selection[i] == true) @@ -33,6 +35,7 @@ selection_to_db (void) } EXEC SQL COMMIT; + check_error (__FILE__, __LINE__); return; } diff --git a/src/controller/selsave.h b/src/controller/selsave.h new file mode 100644 index 0000000..f5b8fa7 --- a/dev/null +++ b/src/controller/selsave.h @@ -0,0 +1,9 @@ +#ifndef SELSAVE_H +#define SELSAVE_H + +/* + * Send the current selection from memory to the database. + */ +void selsave (void); + +#endif // SELSAVE_H diff --git a/src/controller/selsave.sqc b/src/controller/selsave.sqc new file mode 100644 index 0000000..97a73b2 --- a/dev/null +++ b/src/controller/selsave.sqc @@ -0,0 +1,41 @@ +#include "../util/check_error.h" +#include "../view/exp004state0.h" +#include "selsave.h" +#include "sqlca.h" +#include +extern struct sqlca sqlca; + +/* + * A simple alias to make the code more readable. + */ +#define S exp004state0 + +void +selsave (void) +{ + EXEC SQL BEGIN DECLARE SECTION; + char gi[255]; + EXEC SQL END DECLARE SECTION; + + /* + * WHERE gi IS NOT NULL is added to prevent the PRECOMPILE command + * from throwing a warning about modifying an entire table. Since + * gi is defined as NOT NULL this will clear the entire table. + */ + EXEC SQL DELETE FROM vis_selection WHERE gi IS NOT NULL; + check_error (__FILE__, __LINE__); + + for (unsigned int i = 0; i < ROWS; i++) + { + if (S.selection[i] == true) + { + strncpy (gi, S.gi_data[i] + 3, sizeof(gi)); + EXEC SQL INSERT INTO vis_selection VALUES (:gi); + } + } + + EXEC SQL COMMIT; + check_error (__FILE__, __LINE__); + + return; +} -- cgit v0.8.3.1-22-g547a