diff options
Diffstat (limited to 'src/main/java/derms/client/ResponderClient.java')
| -rw-r--r-- | src/main/java/derms/client/ResponderClient.java | 95 |
1 files changed, 81 insertions, 14 deletions
diff --git a/src/main/java/derms/client/ResponderClient.java b/src/main/java/derms/client/ResponderClient.java index af5dc3d..57bb132 100644 --- a/src/main/java/derms/client/ResponderClient.java +++ b/src/main/java/derms/client/ResponderClient.java @@ -1,36 +1,103 @@ package derms.client; +import derms.frontend.DERMSInterface; + import java.net.MalformedURLException; -public class ResponderClient extends Client { - public static final String usage = "Usage: java derms.client.ResponderClienet <FE host>"; +public class ResponderClient extends CLI { + public static final String usage = "Usage: java derms.client.ResponderClientCLI <FE host>"; + + private final DERMSInterface server; + + private ResponderClient(String FEhost) throws MalformedURLException { + server = Client.connectToServer(FEhost); + + commands.put("add", new Add()); + cmdDescriptions.add(new Description( + "add <resource ID> <resource type> <duration>", + "Add ad resource to the server")); + + commands.put("remove", new Remove()); + cmdDescriptions.add(new Description( + "remove <resource ID> <duration>", + "Decrease the duration of a resource. If duration is negative, the resource is removed entirely.")); - public ResponderClient(String FEhost) throws MalformedURLException { - super(FEhost); + commands.put("list", new List()); + cmdDescriptions.add(new Description( + "list <resource name>", + "List available resources")); } public static void main(String[] args) { if (args.length < 1) { - System.err.println("Missing argument 'FE host'"); + System.err.println(usage); System.exit(1); } String FEhost = args[0]; - ResponderClient client = null; try { - client = new ResponderClient(FEhost); + (new ResponderClient(FEhost)).run(); } catch (MalformedURLException e) { - System.err.println(e.getMessage()); - System.exit(1); + 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]); } - System.out.println("Adding resource..."); - String response = client.addResource("MTL1234", "AMBULANCE", 100); - System.out.println("Response: " + response); + private void add(String resourceID, String resourceName, String durationStr) { + try { + int duration = Integer.parseInt(durationStr); + if (duration < 0) { + throw new NumberFormatException("duration less than 0"); + } + String response = server.addResource(resourceID, resourceName, duration); + System.out.println(response); + } catch (NumberFormatException e) { + System.out.println("invalid duration: " + durationStr); + } + } } - public String addResource(String resourceID, String resourceName, int duration) { - return server.addResource(resourceID, resourceName, duration); + private class Remove implements Command { + @Override + public void exec(String[] args) { + if (args.length < 2) + System.out.println("invalid arguments for 'remove'"); + else + remove(args[0], args[1]); + } + + private void remove(String resourceID, String durationStr) { + try { + int duration = Integer.parseInt(durationStr); + String response = server.removeResource(resourceID, duration); + System.out.println(response); + } catch (NumberFormatException e) { + System.out.println("invalid duration: " + durationStr); + } + } + } + + private class List implements Command { + @Override + public void exec(String[] args) { + if (args.length < 1) + System.out.println("invalid arguments for 'list'"); + else + list(args[0]); + } + + private void list(String resourceName) { + String response = server.listResourceAvailability(resourceName); + System.out.println(response); + } } } |