From 2183c591bfbcf56252980ee24c449d80301cbda7 Mon Sep 17 00:00:00 2001 From: Lars Simon Winzer Date: Wed, 4 Mar 2026 11:23:39 +0100 Subject: [PATCH 1/5] Add: Main, ClientApp, and ServerApp classes for application entry point with primitive input validation --- .../ch/unibas/dmi/dbis/cs108/casono/Main.java | 42 +++++++++++++++++++ .../dbis/cs108/casono/client/ClientApp.java | 14 +++++++ .../dbis/cs108/casono/server/ServerApp.java | 8 ++++ 3 files changed, 64 insertions(+) create mode 100644 src/main/java/ch/unibas/dmi/dbis/cs108/casono/Main.java create mode 100644 src/main/java/ch/unibas/dmi/dbis/cs108/casono/client/ClientApp.java create mode 100644 src/main/java/ch/unibas/dmi/dbis/cs108/casono/server/ServerApp.java diff --git a/src/main/java/ch/unibas/dmi/dbis/cs108/casono/Main.java b/src/main/java/ch/unibas/dmi/dbis/cs108/casono/Main.java new file mode 100644 index 0000000..d1890db --- /dev/null +++ b/src/main/java/ch/unibas/dmi/dbis/cs108/casono/Main.java @@ -0,0 +1,42 @@ +package ch.unibas.dmi.dbis.cs108.casono; + +import ch.unibas.dmi.dbis.cs108.casono.client.ClientApp; +import ch.unibas.dmi.dbis.cs108.casono.server.ServerApp; + +public final class Main { + + public static void main(String[] args) { + if (!isValid(args)) { + printUsage(); + System.exit(1); + } + + switch (args[0]) { + case "server" -> ServerApp.start(args[1]); + case "client" -> ClientApp.start(args[1]); + default -> { + printUsage(); + System.exit(1); + } + } + } + + private static boolean isValid(String[] args) { + if (args.length != 2) { + return false; + } + + return switch (args[0]) { + case "server", "client" -> true; + default -> false; + }; + } + + private static void printUsage() { + System.err.println(""" + Usage: + java -jar xyz.jar server + java -jar xyz.jar client : + """); + } +} diff --git a/src/main/java/ch/unibas/dmi/dbis/cs108/casono/client/ClientApp.java b/src/main/java/ch/unibas/dmi/dbis/cs108/casono/client/ClientApp.java new file mode 100644 index 0000000..2c17a37 --- /dev/null +++ b/src/main/java/ch/unibas/dmi/dbis/cs108/casono/client/ClientApp.java @@ -0,0 +1,14 @@ +package ch.unibas.dmi.dbis.cs108.casono.client; + +public class ClientApp { + public static void start(String arg) { + String[] parts = arg.split(":", 2); + if (parts.length != 2) { + throw new IllegalArgumentException("Address must be in format :."); + } + String host = parts[0]; + int port = Integer.parseInt(parts[1]); + + System.out.println("You've selected the client. It will connect port " + port + " at host " + host); + } +} diff --git a/src/main/java/ch/unibas/dmi/dbis/cs108/casono/server/ServerApp.java b/src/main/java/ch/unibas/dmi/dbis/cs108/casono/server/ServerApp.java new file mode 100644 index 0000000..1004cd7 --- /dev/null +++ b/src/main/java/ch/unibas/dmi/dbis/cs108/casono/server/ServerApp.java @@ -0,0 +1,8 @@ +package ch.unibas.dmi.dbis.cs108.casono.server; + +public class ServerApp { + public static void start(String arg) { + int port = Integer.parseInt(arg); + System.out.println("You've selected the server. It will accept connections at port" + port); + } +} From ba1cd3905046d25fd078a4bc2fd2a790ee46a61c Mon Sep 17 00:00:00 2001 From: Lars Simon Winzer Date: Wed, 4 Mar 2026 11:24:33 +0100 Subject: [PATCH 2/5] Add: Ignore .vscode folder in source control --- .gitignore | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index b989b5d..a1b3b23 100644 --- a/.gitignore +++ b/.gitignore @@ -102,4 +102,7 @@ $RECYCLE.BIN/ *.lnk ## Jenv -.java-version \ No newline at end of file +.java-version + +## VSCode +.vscode \ No newline at end of file From bb73043c10f9c8f8543238fbbc7598a4e367f61f Mon Sep 17 00:00:00 2001 From: Lars Simon Winzer Date: Wed, 4 Mar 2026 11:24:49 +0100 Subject: [PATCH 3/5] Add: Update project name --- settings.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/settings.gradle b/settings.gradle index bebfb1d..52b7690 100644 --- a/settings.gradle +++ b/settings.gradle @@ -1,2 +1,2 @@ -rootProject.name = 'example-project' +rootProject.name = 'casono' From 129acd39d46c746fc6173e906e220ed2cc0d3fd9 Mon Sep 17 00:00:00 2001 From: Lars Simon Winzer Date: Wed, 4 Mar 2026 11:25:22 +0100 Subject: [PATCH 4/5] Add: Update application mainClass for gradle --- build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index dfb8f51..ca3f72c 100644 --- a/build.gradle +++ b/build.gradle @@ -14,7 +14,7 @@ java { } application { - mainClass = 'ch.unibas.dmi.dbis.cs108.example.HelloWorld' + mainClass = 'ch.unibas.dmi.dbis.cs108.casono.Main' } repositories { From bf0dadc97739bf202a22b208e5d7c23858cb228c Mon Sep 17 00:00:00 2001 From: Lars Simon Winzer Date: Wed, 4 Mar 2026 11:30:37 +0100 Subject: [PATCH 5/5] Fix: Typo in ServerApp class --- .../java/ch/unibas/dmi/dbis/cs108/casono/server/ServerApp.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/ch/unibas/dmi/dbis/cs108/casono/server/ServerApp.java b/src/main/java/ch/unibas/dmi/dbis/cs108/casono/server/ServerApp.java index 1004cd7..520dc6b 100644 --- a/src/main/java/ch/unibas/dmi/dbis/cs108/casono/server/ServerApp.java +++ b/src/main/java/ch/unibas/dmi/dbis/cs108/casono/server/ServerApp.java @@ -3,6 +3,6 @@ package ch.unibas.dmi.dbis.cs108.casono.server; public class ServerApp { public static void start(String arg) { int port = Integer.parseInt(arg); - System.out.println("You've selected the server. It will accept connections at port" + port); + System.out.println("You've selected the server. It will accept connections at port " + port); } }