-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 @@ | |||
1 | #ifndef SELECTION_TO_DB_H | ||
2 | #define SELECTION_TO_DB_H | ||
3 | |||
4 | /* | ||
5 | * Send the current selection from memory to the database. | ||
6 | */ | ||
7 | void selection_to_db (void); | ||
8 | |||
9 | #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 @@ | |||
1 | #include "selection_to_db.h" | 1 | #include "selection_to_db.h" |
2 | #include "../view/exp004state0.h" | 2 | #include "../view/exp004state0.h" |
3 | #include <string.h> | 3 | #include <string.h> |
4 | 4 | #include "../util/check_error.h" | |
5 | EXEC SQL INCLUDE sqlca; | 5 | #include "sqlca.h" |
6 | extern struct sqlca sqlca; | ||
6 | 7 | ||
7 | /* | 8 | /* |
8 | * A simple alias to make the code more readable. | 9 | * A simple alias to make the code more readable. |
@@ -22,7 +23,8 @@ selection_to_db (void) | |||
22 | * gi is defined as NOT NULL this will clear the entire table. | 23 | * gi is defined as NOT NULL this will clear the entire table. |
23 | */ | 24 | */ |
24 | EXEC SQL DELETE FROM vis_selection WHERE gi IS NOT NULL; | 25 | EXEC SQL DELETE FROM vis_selection WHERE gi IS NOT NULL; |
25 | 26 | check_error (__FILE__, __LINE__); | |
27 | |||
26 | for (unsigned int i = 0; i < ROWS; i++) | 28 | for (unsigned int i = 0; i < ROWS; i++) |
27 | { | 29 | { |
28 | if (S.selection[i] == true) | 30 | if (S.selection[i] == true) |
@@ -33,6 +35,7 @@ selection_to_db (void) | |||
33 | } | 35 | } |
34 | 36 | ||
35 | EXEC SQL COMMIT; | 37 | EXEC SQL COMMIT; |
38 | check_error (__FILE__, __LINE__); | ||
36 | 39 | ||
37 | return; | 40 | return; |
38 | } | 41 | } |
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 @@ | |||
1 | #ifndef SELSAVE_H | ||
2 | #define SELSAVE_H | ||
3 | |||
4 | /* | ||
5 | * Send the current selection from memory to the database. | ||
6 | */ | ||
7 | void selsave (void); | ||
8 | |||
9 | #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 @@ | |||
1 | #include "../util/check_error.h" | ||
2 | #include "../view/exp004state0.h" | ||
3 | #include "selsave.h" | ||
4 | #include "sqlca.h" | ||
5 | #include <string.h> | ||
6 | extern struct sqlca sqlca; | ||
7 | |||
8 | /* | ||
9 | * A simple alias to make the code more readable. | ||
10 | */ | ||
11 | #define S exp004state0 | ||
12 | |||
13 | void | ||
14 | selsave (void) | ||
15 | { | ||
16 | EXEC SQL BEGIN DECLARE SECTION; | ||
17 | char gi[255]; | ||
18 | EXEC SQL END DECLARE SECTION; | ||
19 | |||
20 | /* | ||
21 | * WHERE gi IS NOT NULL is added to prevent the PRECOMPILE command | ||
22 | * from throwing a warning about modifying an entire table. Since | ||
23 | * gi is defined as NOT NULL this will clear the entire table. | ||
24 | */ | ||
25 | EXEC SQL DELETE FROM vis_selection WHERE gi IS NOT NULL; | ||
26 | check_error (__FILE__, __LINE__); | ||
27 | |||
28 | for (unsigned int i = 0; i < ROWS; i++) | ||
29 | { | ||
30 | if (S.selection[i] == true) | ||
31 | { | ||
32 | strncpy (gi, S.gi_data[i] + 3, sizeof(gi)); | ||
33 | EXEC SQL INSERT INTO vis_selection VALUES (:gi); | ||
34 | } | ||
35 | } | ||
36 | |||
37 | EXEC SQL COMMIT; | ||
38 | check_error (__FILE__, __LINE__); | ||
39 | |||
40 | return; | ||
41 | } | ||