blob: 55ae0c129a4a8969ea6d911cbdf0bf4560bc5273 (
plain)
- // SPDX-FileCopyrightText: 2025 Jonas Smedegaard <dr@jones.dk>
- // SPDX-License-Identifier: GPL-3.0-or-later
- package dk.biks.bachelorizer;
- import java.lang.UnsupportedOperationException;
- import java.util.Arrays;
- /// Bachelorizer - bachelor programme registrar
- ///
- /// Tool for registering students
- /// for activities in their bachelor programme.
- ///
- /// Runner class spawning an interactive or non-interactive application
- /// based on passed arguments
- ///
- /// Multi-framework MVC structure inspired by project Криптоанализатор
- /// written by Александр Хмелев <akhmelev@gmail.com>.
- ///
- /// * v0.0.1-draft
- /// * initial release, as part of delivery "Portfolio 1"
- ///
- /// @version 0.0.1-draft
- /// @see <https://moodle.ruc.dk/mod/assign/view.php?id=523186>
- /// @see <https://github.com/demologin/CryptoAnalyzerLed>
- public class Main {
- /// Default constructor
- ///
- /// @param args command-line arguments or default demo data
- public Main(final String[] args) {
- switch (uiFromArgs(args)) {
- case "gui" -> { Window.main(args); }
- // TODO case "tui" -> { Screen.main(args); }
- // TODO case "cli" -> { Prompt.main(args); }
- default -> {
- throw new UnsupportedOperationException(
- "Not yet implemented.");
- }
- }
- }
- /// JVM entry point
- ///
- /// @param args command-line arguments
- public static void main(String[] args) {
- // inject initial sample data unless passed as arguments
- if ((args.length == 0)
- || (!Arrays.stream(args).anyMatch(
- s -> s != null && !s.startsWith("-")))
- ) {
- args = new String[] {
- "Jonas Smedegaard",
- "CS-SMC2",
- "CS-SMC3",
- };
- }
- new Main(args);
- }
- /// minimal argument parser to detect explicit UI choice
- ///
- /// @param args command-line arguments
- /// @return choice of UI as String
- public static String uiFromArgs(String[] args) {
- // TODO: make "cli" the default when implemented
- String defaultUI = "gui";
- for (String arg : args) {
- if (arg.matches("--(gui|tui|cli)")) {
- return (arg.length() == 2)
- ? defaultUI
- : arg.substring(2);
- }
- }
- return defaultUI;
- }
- }
|