From 2183c591bfbcf56252980ee24c449d80301cbda7 Mon Sep 17 00:00:00 2001 From: Lars Simon Winzer Date: Wed, 4 Mar 2026 11:23:39 +0100 Subject: [PATCH] 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); + } +}