summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorSam Anthony <sam@samanthony.xyz>2024-12-02 17:12:19 -0500
committerSam Anthony <sam@samanthony.xyz>2024-12-02 17:12:19 -0500
commit92c8eae71fd662c2b7e76b17309c1b2f91c38d41 (patch)
treeb896163a97319e10bbe8e18302f06138ab3bd91e /src
parentdfac8009ea2eaae89b64d40caa513c54f3c03181 (diff)
downloadsoen423-92c8eae71fd662c2b7e76b17309c1b2f91c38d41.zip
client cli
Diffstat (limited to 'src')
-rw-r--r--src/main/java/derms/client/CLI.java86
-rw-r--r--src/main/java/derms/client/ResponderClient.java27
-rw-r--r--src/main/java/derms/client/ResponderClientCLI.java53
3 files changed, 141 insertions, 25 deletions
diff --git a/src/main/java/derms/client/CLI.java b/src/main/java/derms/client/CLI.java
new file mode 100644
index 0000000..05f4e35
--- /dev/null
+++ b/src/main/java/derms/client/CLI.java
@@ -0,0 +1,86 @@
+package derms.client;
+
+import java.util.*;
+
+abstract class CLI implements Runnable {
+ protected Map<String, Command> commands = new HashMap<String, Command>();
+ protected List<Description> cmdDescriptions = new ArrayList<Description>();
+ protected List<Description> argDescriptions = new ArrayList<Description>();
+
+ protected CLI() {
+ commands.put("quit", new Quit());
+ cmdDescriptions.add(new Description("quit", "Exit the program"));
+
+ commands.put("help", new Help());
+ cmdDescriptions.add(new Description("help", "List commands"));
+ }
+
+ @Override
+ public void run() {
+ Scanner scanner = new Scanner(System.in);
+ System.out.println("Type 'help' for a list of commands.");
+ for (;;) {
+ System.out.print("Command: ");
+ String input = scanner.nextLine();
+ String[] fields = input.split(" ");
+ if (fields.length < 1 || fields[0] == "") {
+ continue;
+ }
+ Command cmd = commands.get(fields[0]);
+ if (cmd == null) {
+ System.out.println("Invalid command '"+fields[0]+"'");
+ System.out.println("Type 'help' for a list of commands.");
+ continue;
+ }
+ String[] args = null;
+ if (fields.length < 2) {
+ args = new String[0];
+ } else {
+ args = Arrays.copyOfRange(fields, 1, fields.length);
+ }
+ cmd.exec(args);
+ }
+ }
+
+ protected interface Command {
+ public void exec(String[] args);
+ }
+
+ protected class Quit implements Command {
+ @Override
+ public void exec(String[] args) {
+ System.out.println("Shutting down...");
+ System.exit(1);
+ }
+ }
+
+ protected class Help implements Command {
+ @Override
+ public void exec(String[] args) {
+ System.out.println("\nCommands:");
+ for (Description d : cmdDescriptions) {
+ System.out.println(d);
+ }
+ System.out.println("\nArguments:");
+ for (Description d : argDescriptions) {
+ System.out.println(d);
+ }
+ System.out.println();
+ }
+ }
+
+ protected class Description {
+ String object; /// The thing being described
+ String description;
+
+ protected Description(String object, String description) {
+ this.object = object;
+ this.description = description;
+ }
+
+ @Override
+ public String toString() {
+ return object+"\n\t"+description;
+ }
+ }
+}
diff --git a/src/main/java/derms/client/ResponderClient.java b/src/main/java/derms/client/ResponderClient.java
index af5dc3d..2c9cb1f 100644
--- a/src/main/java/derms/client/ResponderClient.java
+++ b/src/main/java/derms/client/ResponderClient.java
@@ -2,34 +2,11 @@ package derms.client;
import java.net.MalformedURLException;
-public class ResponderClient extends Client {
- public static final String usage = "Usage: java derms.client.ResponderClienet <FE host>";
-
- public ResponderClient(String FEhost) throws MalformedURLException {
+class ResponderClient extends Client {
+ ResponderClient(String FEhost) throws MalformedURLException {
super(FEhost);
}
- public static void main(String[] args) {
- if (args.length < 1) {
- System.err.println("Missing argument 'FE host'");
- System.exit(1);
- }
-
- String FEhost = args[0];
-
- ResponderClient client = null;
- try {
- client = new ResponderClient(FEhost);
- } catch (MalformedURLException e) {
- System.err.println(e.getMessage());
- System.exit(1);
- }
-
- System.out.println("Adding resource...");
- String response = client.addResource("MTL1234", "AMBULANCE", 100);
- System.out.println("Response: " + response);
- }
-
public String addResource(String resourceID, String resourceName, int duration) {
return server.addResource(resourceID, resourceName, duration);
}
diff --git a/src/main/java/derms/client/ResponderClientCLI.java b/src/main/java/derms/client/ResponderClientCLI.java
new file mode 100644
index 0000000..3b41bf9
--- /dev/null
+++ b/src/main/java/derms/client/ResponderClientCLI.java
@@ -0,0 +1,53 @@
+package derms.client;
+
+import java.net.MalformedURLException;
+
+public class ResponderClientCLI extends CLI {
+ public static final String usage = "Usage: java derms.client.ResponderClientCLI <FE host>";
+
+ private final ResponderClient client;
+
+ private ResponderClientCLI(String FEhost) throws MalformedURLException {
+ client = new ResponderClient(FEhost);
+
+ commands.put("add", new Add());
+ cmdDescriptions.add(new Description(
+ "add <resource ID> <resource type> <duration>",
+ "Add ad resource to the server"));
+ }
+
+ public static void main(String[] args) {
+ if (args.length < 1) {
+ System.err.println("Missing argument 'FE host'");
+ System.exit(1);
+ }
+
+ String FEhost = args[0];
+
+ try {
+ (new ResponderClientCLI(FEhost)).run();
+ } catch (MalformedURLException e) {
+ e.printStackTrace();
+ }
+ }
+
+ private class Add implements Command {
+ @Override
+ public void exec(String[] args) {
+ if (args.length < 3) {
+ System.out.println("invalid arguments for 'add'");
+ } else {
+ add(args[0], args[1], args[2]);
+ }
+ }
+
+ private void add(String resourceID, String resourceName, String durationStr) {
+ int duration = Integer.parseInt(durationStr);
+ if (duration < 0) {
+ throw new NumberFormatException("duration less than 0");
+ }
+ String response = client.addResource(resourceID, resourceName, duration);
+ System.out.println(response);
+ }
+ }
+}