// SPDX-FileCopyrightText: 2025 Jonas Smedegaard // SPDX-License-Identifier: GPL-3.0-or-later package dk.biks.bachelorizer; 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 Александр Хмелев . /// /// * v0.0.1-draft /// * initial release, as part of delivery "Portfolio 1" /// /// @version 0.0.1-draft /// @see /// @see 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); } 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(final 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; } }