-rw-r--r-- | src/controller/selection_to_db.h | 9 | ||||
-rw-r--r-- | src/controller/selection_to_db.sqc | 9 | ||||
-rw-r--r-- | src/controller/selsave.h | 9 | ||||
-rw-r--r-- | src/controller/selsave.sqc | 41 |
4 files changed, 56 insertions, 12 deletions
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 <string.h> - -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 <string.h> +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; +} |