From c4556561c402f8b336ce5389d14d6d3b0b9fc296 Mon Sep 17 00:00:00 2001 From: Ilkka Seppala Date: Sun, 19 Jul 2015 12:44:51 +0300 Subject: [PATCH] #90 Finished the example code --- .../src/main/java/com/iluwatar/App.java | 6 +++- .../com/iluwatar/ApplicationException.java | 8 ++++++ .../main/java/com/iluwatar/ArcherCommand.java | 9 ++++++ .../main/java/com/iluwatar/ArcherView.java | 9 ++++++ .../java/com/iluwatar/CatapultCommand.java | 9 ++++++ .../main/java/com/iluwatar/CatapultView.java | 9 ++++++ .../src/main/java/com/iluwatar/Command.java | 6 ++++ .../java/com/iluwatar/FrontController.java | 28 +++++++++++++++++++ .../java/com/iluwatar/UnknownCommand.java | 9 ++++++ .../src/main/java/com/iluwatar/View.java | 6 ++++ 10 files changed, 98 insertions(+), 1 deletion(-) create mode 100644 front-controller/src/main/java/com/iluwatar/ApplicationException.java create mode 100644 front-controller/src/main/java/com/iluwatar/ArcherCommand.java create mode 100644 front-controller/src/main/java/com/iluwatar/ArcherView.java create mode 100644 front-controller/src/main/java/com/iluwatar/CatapultCommand.java create mode 100644 front-controller/src/main/java/com/iluwatar/CatapultView.java create mode 100644 front-controller/src/main/java/com/iluwatar/Command.java create mode 100644 front-controller/src/main/java/com/iluwatar/FrontController.java create mode 100644 front-controller/src/main/java/com/iluwatar/UnknownCommand.java create mode 100644 front-controller/src/main/java/com/iluwatar/View.java diff --git a/front-controller/src/main/java/com/iluwatar/App.java b/front-controller/src/main/java/com/iluwatar/App.java index b95f9d5b2..91948f24c 100644 --- a/front-controller/src/main/java/com/iluwatar/App.java +++ b/front-controller/src/main/java/com/iluwatar/App.java @@ -1,7 +1,11 @@ package com.iluwatar; public class App { + public static void main(String[] args) { - System.out.println("Hello World!"); + FrontController controller = new FrontController(); + controller.handleRequest("Archer"); + controller.handleRequest("Catapult"); + controller.handleRequest("foobar"); } } diff --git a/front-controller/src/main/java/com/iluwatar/ApplicationException.java b/front-controller/src/main/java/com/iluwatar/ApplicationException.java new file mode 100644 index 000000000..c30c63047 --- /dev/null +++ b/front-controller/src/main/java/com/iluwatar/ApplicationException.java @@ -0,0 +1,8 @@ +package com.iluwatar; + +public class ApplicationException extends RuntimeException { + + public ApplicationException(Throwable cause) { + super(cause); + } +} diff --git a/front-controller/src/main/java/com/iluwatar/ArcherCommand.java b/front-controller/src/main/java/com/iluwatar/ArcherCommand.java new file mode 100644 index 000000000..2cdb74221 --- /dev/null +++ b/front-controller/src/main/java/com/iluwatar/ArcherCommand.java @@ -0,0 +1,9 @@ +package com.iluwatar; + +public class ArcherCommand implements Command { + + @Override + public void process() { + new ArcherView().display(); + } +} diff --git a/front-controller/src/main/java/com/iluwatar/ArcherView.java b/front-controller/src/main/java/com/iluwatar/ArcherView.java new file mode 100644 index 000000000..a8333d160 --- /dev/null +++ b/front-controller/src/main/java/com/iluwatar/ArcherView.java @@ -0,0 +1,9 @@ +package com.iluwatar; + +public class ArcherView implements View { + + @Override + public void display() { + System.out.println("Displaying archers"); + } +} diff --git a/front-controller/src/main/java/com/iluwatar/CatapultCommand.java b/front-controller/src/main/java/com/iluwatar/CatapultCommand.java new file mode 100644 index 000000000..767358dd5 --- /dev/null +++ b/front-controller/src/main/java/com/iluwatar/CatapultCommand.java @@ -0,0 +1,9 @@ +package com.iluwatar; + +public class CatapultCommand implements Command { + + @Override + public void process() { + new CatapultView().display(); + } +} diff --git a/front-controller/src/main/java/com/iluwatar/CatapultView.java b/front-controller/src/main/java/com/iluwatar/CatapultView.java new file mode 100644 index 000000000..131e3a880 --- /dev/null +++ b/front-controller/src/main/java/com/iluwatar/CatapultView.java @@ -0,0 +1,9 @@ +package com.iluwatar; + +public class CatapultView implements View { + + @Override + public void display() { + System.out.println("Displaying catapults"); + } +} diff --git a/front-controller/src/main/java/com/iluwatar/Command.java b/front-controller/src/main/java/com/iluwatar/Command.java new file mode 100644 index 000000000..6e22cd753 --- /dev/null +++ b/front-controller/src/main/java/com/iluwatar/Command.java @@ -0,0 +1,6 @@ +package com.iluwatar; + +public interface Command { + + void process(); +} diff --git a/front-controller/src/main/java/com/iluwatar/FrontController.java b/front-controller/src/main/java/com/iluwatar/FrontController.java new file mode 100644 index 000000000..26001228a --- /dev/null +++ b/front-controller/src/main/java/com/iluwatar/FrontController.java @@ -0,0 +1,28 @@ +package com.iluwatar; + +public class FrontController { + + public void handleRequest(String request) { + Command command = getCommand(request); + command.process(); + } + + private Command getCommand(String request) { + Class commandClass = getCommandClass(request); + try { + return (Command) commandClass.newInstance(); + } catch (Exception e) { + throw new ApplicationException(e); + } + } + + private Class getCommandClass(String request) { + Class result; + try { + result = Class.forName("com.iluwatar." + request + "Command"); + } catch (ClassNotFoundException e) { + result = UnknownCommand.class; + } + return result; + } +} diff --git a/front-controller/src/main/java/com/iluwatar/UnknownCommand.java b/front-controller/src/main/java/com/iluwatar/UnknownCommand.java new file mode 100644 index 000000000..ecdc46e71 --- /dev/null +++ b/front-controller/src/main/java/com/iluwatar/UnknownCommand.java @@ -0,0 +1,9 @@ +package com.iluwatar; + +public class UnknownCommand implements Command { + + @Override + public void process() { + System.out.println("Error 500"); + } +} diff --git a/front-controller/src/main/java/com/iluwatar/View.java b/front-controller/src/main/java/com/iluwatar/View.java new file mode 100644 index 000000000..7ff7a6888 --- /dev/null +++ b/front-controller/src/main/java/com/iluwatar/View.java @@ -0,0 +1,6 @@ +package com.iluwatar; + +public interface View { + + void display(); +}