aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Makefile3
-rw-r--r--src/dk.biks.bachelorizer/dk/biks/bachelorizer/Controller.java6
-rw-r--r--src/dk.biks.bachelorizer/dk/biks/bachelorizer/Database.java10
-rw-r--r--src/dk.biks.bachelorizer/dk/biks/bachelorizer/Storage.java70
-rw-r--r--src/dk.biks.bachelorizer/dk/biks/bachelorizer/Window.java2
5 files changed, 81 insertions, 10 deletions
diff --git a/Makefile b/Makefile
index 5dc2c49..9b2e627 100644
--- a/Makefile
+++ b/Makefile
@@ -12,7 +12,8 @@ JAVA_MODULEPATHS_bachelorizer = \
/usr/share/openjfx/lib /usr/share/java/sqlite-jdbc.jar
JAVA_ROOT_bachelorizer = src/dk.biks.bachelorizer
JAVA_MAINCLASSES_bachelorizer = Main Graph Window
-JAVA_EXTRACLASSES_bachelorizer = Controller Database GUI Person UI
+JAVA_EXTRACLASSES_bachelorizer = \
+ Controller Database GUI Person Storage UI
JAVA_MODULES_bachelorizer = $(addprefix javafx.,base controls graphics)
ZIPNAME = bachelorizer
diff --git a/src/dk.biks.bachelorizer/dk/biks/bachelorizer/Controller.java b/src/dk.biks.bachelorizer/dk/biks/bachelorizer/Controller.java
index 64eeabc..532ac58 100644
--- a/src/dk.biks.bachelorizer/dk/biks/bachelorizer/Controller.java
+++ b/src/dk.biks.bachelorizer/dk/biks/bachelorizer/Controller.java
@@ -16,7 +16,7 @@ import javafx.scene.control.TextArea;
class Controller {
/// Storage model
- private Database store;
+ private Storage store;
/// UI model
private UI ui;
@@ -27,7 +27,7 @@ class Controller {
/// Parameters passed on command-line and in JNLP file
private List<String> parameters;
- /// clear the participation database at program launch
+ /// clear the participation choices at program launch
void initialize() {
store.initialize();
}
@@ -38,7 +38,7 @@ class Controller {
/// @param ui UI model
/// @param view Application view
Controller(
- final Database store, final UI ui, final Window view
+ final Storage store, final UI ui, final Window view
) {
this.store = store;
this.ui = ui;
diff --git a/src/dk.biks.bachelorizer/dk/biks/bachelorizer/Database.java b/src/dk.biks.bachelorizer/dk/biks/bachelorizer/Database.java
index f746649..f814b92 100644
--- a/src/dk.biks.bachelorizer/dk/biks/bachelorizer/Database.java
+++ b/src/dk.biks.bachelorizer/dk/biks/bachelorizer/Database.java
@@ -11,10 +11,10 @@ import java.util.List;
import com.example.portfolio2.MyDB;
-/// Bachelorizer - database model
+/// Bachelorizer - database storage model
///
/// This model handles all interaction with the database.
-class Database {
+class Database extends Storage {
/// database singleton
private MyDB db = new MyDB();
@@ -32,7 +32,7 @@ class Database {
clearParticipation();
}
- /// Add student
+ /// add student
///
/// @param name Name of student
// TODO: replace this dummy placeholder with database query
@@ -40,7 +40,7 @@ class Database {
student = new Person(name);
}
- /// Get student name
+ /// get student name
///
/// @return name of student
// TODO: replace this dummy placeholder with database query
@@ -84,7 +84,7 @@ class Database {
"name");
}
- /// purge participation database
+ /// purge participation choices
void clearParticipation() {
db.cmd("DELETE FROM participation");
}
diff --git a/src/dk.biks.bachelorizer/dk/biks/bachelorizer/Storage.java b/src/dk.biks.bachelorizer/dk/biks/bachelorizer/Storage.java
new file mode 100644
index 0000000..95e5851
--- /dev/null
+++ b/src/dk.biks.bachelorizer/dk/biks/bachelorizer/Storage.java
@@ -0,0 +1,70 @@
+// SPDX-FileCopyrightText: 2025 Jonas Smedegaard <dr@jones.dk>
+// SPDX-License-Identifier: GPL-3.0-or-later
+
+package dk.biks.bachelorizer;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/// Bachelorizer - reference storage model
+abstract class Storage {
+
+ /// default constructor
+ // (declared explicitly only to silence javadoc)
+ Storage() { }
+
+ /// initialization as needed
+ abstract void initialize();
+
+ /// add student
+ ///
+ /// @param name Name of student
+ public abstract void addStudent(String name);
+
+ /// get student name
+ ///
+ /// @return name of student
+ public abstract String getStudentName();
+
+ /// resolve activity index from name
+ ///
+ /// @param name activity name
+ /// @return index of activity as integer
+ abstract int getActivityIndeks(String name);
+
+ /// insert activity into participation
+ ///
+ /// @param activityIndex index of activity
+ abstract void addParticipation(int activityIndex);
+
+ /// list currently participating activities
+ ///
+ /// @param program programme name
+ /// @return names of participating activities
+ abstract ArrayList<String> getParticipation(String program);
+
+ /// purge participation choices
+ abstract void clearParticipation();
+
+ /// list activities within a program
+ ///
+ /// @param program programme name
+ /// @return names of contained activities
+ abstract ArrayList<String> selectProgram(String program);
+
+ /// sum of ECTS points under the given category
+ ///
+ /// @param program programme name
+ /// @return ECTS points as String
+ abstract String getSumEcts(String program);
+
+ /// list of available subject modules
+ ///
+ /// @return names of all subject modules as list of strings
+ abstract List<String> getAllSubjects();
+
+ /// list of available activities
+ ///
+ /// @return names of all activities as list of strings
+ abstract ArrayList<String> getAllActivities();
+}
diff --git a/src/dk.biks.bachelorizer/dk/biks/bachelorizer/Window.java b/src/dk.biks.bachelorizer/dk/biks/bachelorizer/Window.java
index ba3033a..2da85b3 100644
--- a/src/dk.biks.bachelorizer/dk/biks/bachelorizer/Window.java
+++ b/src/dk.biks.bachelorizer/dk/biks/bachelorizer/Window.java
@@ -46,7 +46,7 @@ public final class Window extends Application {
+ "-fx-padding: 10";
/// Storage model
- private Database store = new Database();
+ private Storage store = new Database();
/// UI model
///