# Bachelor programme processor _(Bachelorizer)_ Bachelorizer is a command-line tool to validate course compositions for bachelor programmes at Roskilde University. It was initially created as a Computer Science mini project assignment for the bachelor course in Computer Science "Subject Module Course 2: Software Development F2025" at Roskilde University, done by [Jonas Smedegaard]. [Jonas Smedegaard]: Bachelorizer is publicly available as [source]. [source]: "Web instance of sources for Bachelorizer" ## Database creation The database file `identifier.sqlite` needed by the program can be created on a linux system using the command-line tool `sqlite3` with the following command: ```shell sqlite3 identifier.sqlite < database.txt ``` Since Intellij executes from a different directory than from commandline, the generated database file is then copied into the directory `src/dk.biks.bachelorizer`. ## Code execution The code has only been verified to work from command-line (it is unknown if it works in IDEs other than Intellij, such as Eclipse or NetBeans). GNUMake files are provided for building, packaging and running the code. For those not using GNUMake, Concrete example commands are provided below, with notes on OpenJDK versions the commands are known to work with. Execution succeeds with OpenJDK 17, 21, 22, 23, 24 and build 20 of 25, except JavaFX/OpenJFX code fails with OpenJDK 17 and 21, and fails with OpenJDK 17, 21, 22 and 23 when executed from source. These failures are likely limitations to "source code mode" (i.e. [JEP 330] since OpenJDK 11 and [JEP 458] since OpenJDK 22). OpenJDK versions before 23 emit many errors due to not recognizing the Markdown-flavored javadoc comments. Code has been tested only against the following library releases: * JavaFX/OpenJFX 11.0.11 from . * SQLite JDBC 3.46.1.3 from . [JEP 330]: https://openjdk.org/jeps/330 [JEP 458]: https://openjdk.org/jeps/458 ### Executing from source The command `make runsrc-dk.biks.bachelorizer` is equivalent to these three commands: ```sh rm -rf mods/com.example.portfolio3 javac -Xlint -Xdoclint -implicit:none -d mods/com.example.portfolio3 \ src/com.example.portfolio3/module-info.java \ src/com.example.portfolio3/com/example/portfolio3/AbstractGraph.java \ src/com.example.portfolio3/com/example/portfolio3/AdjListGraph.java \ src/com.example.portfolio3/com/example/portfolio3/AdjMapGraph.java \ src/com.example.portfolio3/com/example/portfolio3/Edge.java \ src/com.example.portfolio3/com/example/portfolio3/GraphAlgorithms.java \ src/com.example.portfolio3/com/example/portfolio3/Graph.java \ src/com.example.portfolio3/com/example/portfolio3/Graphs.java \ src/com.example.portfolio3/com/example/portfolio3/MatrixGraph.java \ src/com.example.portfolio3/com/example/portfolio3/Vertex.java java --module-path /usr/share/openjfx/lib:mods/com.example.portfolio3 \ --add-modules javafx.base,javafx.controls,javafx.graphics \ --enable-native-access=javafx.graphics \ src/dk.biks.bachelorizer/dk/biks/bachelorizer/Main.java ``` ### Executing from class files The command `make runclass-dk.biks.bachelorizer` is equivalent to these five commands: ```sh rm -rf mods/com.example.portfolio3 javac -Xlint -Xdoclint -implicit:none -d mods/com.example.portfolio3 \ src/com.example.portfolio3/module-info.java \ src/com.example.portfolio3/com/example/portfolio3/AbstractGraph.java \ src/com.example.portfolio3/com/example/portfolio3/AdjListGraph.java \ src/com.example.portfolio3/com/example/portfolio3/AdjMapGraph.java \ src/com.example.portfolio3/com/example/portfolio3/Edge.java \ src/com.example.portfolio3/com/example/portfolio3/GraphAlgorithms.java \ src/com.example.portfolio3/com/example/portfolio3/Graph.java \ src/com.example.portfolio3/com/example/portfolio3/Graphs.java \ src/com.example.portfolio3/com/example/portfolio3/MatrixGraph.java \ src/com.example.portfolio3/com/example/portfolio3/Vertex.java rm -rf mods/dk.biks.bachelorizer javac --module-path /usr/share/openjfx/lib:mods/com.example.portfolio3 \ --add-modules javafx.base,javafx.controls,javafx.graphics \ -Xlint -Xdoclint -implicit:none \ -d mods/dk.biks.bachelorizer \ src/dk.biks.bachelorizer/module-info.java \ src/dk.biks.bachelorizer/dk/biks/bachelorizer/Main.java \ src/dk.biks.bachelorizer/dk/biks/bachelorizer/Combi.java \ src/dk.biks.bachelorizer/dk/biks/bachelorizer/Window.java \ src/dk.biks.bachelorizer/dk/biks/bachelorizer/Control.java \ src/dk.biks.bachelorizer/dk/biks/bachelorizer/GUI.java \ src/dk.biks.bachelorizer/dk/biks/bachelorizer/Person.java java --module-path mods/dk.biks.bachelorizer \ :/usr/share/openjfx/lib:mods/com.example.portfolio3 \ --add-modules javafx.base,javafx.controls,javafx.graphics \ --enable-native-access=javafx.graphics \ -m dk.biks.bachelorizer/dk.biks.bachelorizer.Main ``` ### Executing from jar containers The command `make runjar-dk.biks.bachelorizer` is equivalent to these six commands: ```sh rm -rf mods/com.example.portfolio3 javac -Xlint -Xdoclint -implicit:none -d mods/com.example.portfolio3 \ src/com.example.portfolio3/module-info.java \ src/com.example.portfolio3/com/example/portfolio3/AbstractGraph.java \ src/com.example.portfolio3/com/example/portfolio3/AdjListGraph.java \ src/com.example.portfolio3/com/example/portfolio3/AdjMapGraph.java \ src/com.example.portfolio3/com/example/portfolio3/Edge.java \ src/com.example.portfolio3/com/example/portfolio3/GraphAlgorithms.java \ src/com.example.portfolio3/com/example/portfolio3/Graph.java \ src/com.example.portfolio3/com/example/portfolio3/Graphs.java \ src/com.example.portfolio3/com/example/portfolio3/MatrixGraph.java \ src/com.example.portfolio3/com/example/portfolio3/Vertex.java rm -rf mods/dk.biks.bachelorizer javac --module-path /usr/share/openjfx/lib:mods/com.example.portfolio3 \ --add-modules javafx.base,javafx.controls,javafx.graphics \ -Xlint -Xdoclint -implicit:none \ -d mods/dk.biks.bachelorizer \ src/dk.biks.bachelorizer/module-info.java \ src/dk.biks.bachelorizer/dk/biks/bachelorizer/Main.java \ src/dk.biks.bachelorizer/dk/biks/bachelorizer/Combi.java \ src/dk.biks.bachelorizer/dk/biks/bachelorizer/Window.java \ src/dk.biks.bachelorizer/dk/biks/bachelorizer/Control.java \ src/dk.biks.bachelorizer/dk/biks/bachelorizer/GUI.java \ src/dk.biks.bachelorizer/dk/biks/bachelorizer/Person.java jar --create --file dk.biks.bachelorizer.jar \ --main-class dk.biks.bachelorizer.Main \ -C mods/dk.biks.bachelorizer . java --module-path dk.biks.bachelorizer.jar\ :/usr/share/openjfx/lib:mods/com.example.portfolio3 \ --enable-native-access=javafx.graphics \ --module dk.biks.bachelorizer ``` ## License Copyright © 2025 Jonas Smedegaard Except when otherwise noted, this work is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License ([CC-BY-SA-4.0]). [CC-BY-SA-4.0]: "Creative Commons Attribution-ShareAlike 4.0 International license"