From 5c5a039691d2a18d198e0ea5b13ed53103cc66ff Mon Sep 17 00:00:00 2001
From: Jonas Smedegaard <dr@jones.dk>
Date: Tue, 29 Apr 2025 16:31:32 +0200
Subject: move hardcoded subject module list to class Database

---
 .../com/example/portfolio2/Controller.java         |  6 ++---
 .../com/example/portfolio2/Database.java           | 29 ++++++++++++++++++++++
 .../com/example/portfolio2/Window.java             | 10 ++------
 3 files changed, 33 insertions(+), 12 deletions(-)

(limited to 'src/com.example.portfolio2')

diff --git a/src/com.example.portfolio2/com/example/portfolio2/Controller.java b/src/com.example.portfolio2/com/example/portfolio2/Controller.java
index 11ce9b9..91236ea 100644
--- a/src/com.example.portfolio2/com/example/portfolio2/Controller.java
+++ b/src/com.example.portfolio2/com/example/portfolio2/Controller.java
@@ -82,15 +82,13 @@ class Controller {
 	///
 	/// @param subject1        involved 1st column subject module box
 	/// @param subject2        involved 2nd column subject module box
-	/// @param subjectModules  list of selected subject modules
 	void onSubjectModuleSelected(
 		final ComboBox<String> subject1,
-		final ComboBox<String> subject2,
-		final List<String> subjectModules
+		final ComboBox<String> subject2
 	) {
 
 		// remove chosen option from opposite subject module box
-		for (String sub: subjectModules) {
+		for (String sub: store.getAllModules()) {
 			if (sub.equals(subject1.getValue())) {
 				subject2.getItems().remove(
 					subject1.getValue());
diff --git a/src/com.example.portfolio2/com/example/portfolio2/Database.java b/src/com.example.portfolio2/com/example/portfolio2/Database.java
index 85b2b09..d978e83 100644
--- a/src/com.example.portfolio2/com/example/portfolio2/Database.java
+++ b/src/com.example.portfolio2/com/example/portfolio2/Database.java
@@ -7,6 +7,7 @@
 package com.example.portfolio2;
 
 import java.util.ArrayList;
+import java.util.List;
 
 /// Bachelorizer - database model
 ///
@@ -16,6 +17,14 @@ class Database {
 	/// database singleton
 	MyDB db = new MyDB();
 
+	/// available subject modules
+	// TODO: replace this dummy placeholder with database query
+	private List<String> Modules = List.of(
+		"Computer Science",
+		"Informatik",
+		"Astrology"
+	);
+
 	/// default constructor
 	// (declared explicitly only to silence javadoc)
 	Database() { }
@@ -25,6 +34,19 @@ class Database {
 		clearParticipation();
 	}
 
+	/// resolve subject module index from name
+	///
+	/// @param name  subject module name
+	/// @return      index of subject module as integer
+	// TODO: replace this dummy placeholder with database query
+	int getModuleIndeks(final String name) {
+		if (name == null) {
+			return -1;
+		}
+
+		return Modules.indexOf(name);
+	}
+
 	/// resolve activity index from name
 	///
 	/// @param name  activity name
@@ -102,6 +124,13 @@ class Database {
 		return result.getFirst();
 	}
 
+	/// list of available subject modules
+	///
+	/// @return  names of all subject moduless as list of strings
+	List<String> getAllModules() {
+		return Modules;
+	}
+
 	/// list of available activities
 	///
 	/// @return  names of all activities as list of strings
diff --git a/src/com.example.portfolio2/com/example/portfolio2/Window.java b/src/com.example.portfolio2/com/example/portfolio2/Window.java
index 0c375fa..fa8d2f9 100644
--- a/src/com.example.portfolio2/com/example/portfolio2/Window.java
+++ b/src/com.example.portfolio2/com/example/portfolio2/Window.java
@@ -64,10 +64,6 @@ public final class Window extends Application {
 			new ActivityColumn("Elective")
 		);
 
-		// define list of subject modules
-		List<String> subjectModules = List.of(
-			"Computer Science", "Informatik", "Astrology");
-
 		// define button functionality for each activity column
 		for (ActivityColumn col : columns) {
 			col.nameLabel.setStyle(LABEL_STYLE);
@@ -111,8 +107,7 @@ public final class Window extends Application {
 					con.onSubjectModuleSelected(
 						col.categoryCombo,
 						columns.get(2)
-							.categoryCombo,
-						subjectModules);
+							.categoryCombo);
 					con.onCategorySelected(
 						col.categoryCombo,
 						col.activitySelect,
@@ -129,8 +124,7 @@ public final class Window extends Application {
 					con.onSubjectModuleSelected(
 						col.categoryCombo,
 						columns.get(1)
-							.categoryCombo,
-						subjectModules);
+							.categoryCombo);
 					con.onCategorySelected(
 						col.categoryCombo,
 						col.activitySelect,
-- 
cgit v1.2.3