From 1c61ac62fd0a0a4640de1fc9cded850eca38aed8 Mon Sep 17 00:00:00 2001 From: Rik Veenboer Date: Fri, 4 Feb 2011 21:23:01 +0000 Subject: [PATCH] Omslachtigheid van actions en type in event omgeschreven naar action enum met parameter voor type. Type hernoemd naar target, dat dekt de lading beter. Mogelijkheid om ook device als target te gebruiken? En op die manier feedback versturen? Het event is nu bedoeld om events van services naar de devices te versturen. --- java/src/Test.java | 6 ---- java/src/pm/Main.java | 34 +++++++++++-------- java/src/pm/Target.java | 20 +++++++++++ java/src/pm/action/Action.java | 10 ++++++ java/src/pm/application/Application.java | 19 ++--------- .../voorbeeld/Voorbeeld.java | 2 +- java/src/pm/device/Device.java | 17 ++++++---- java/src/pm/device/example/Example.java | 13 ++++--- java/src/pm/event/Event.java | 6 ++-- java/src/pm/event/Target.java | 5 +++ java/src/pm/event/Type.java | 5 --- 11 files changed, 77 insertions(+), 60 deletions(-) delete mode 100644 java/src/Test.java create mode 100644 java/src/pm/Target.java rename java/src/pm/{applicatie => application}/voorbeeld/Voorbeeld.java (85%) create mode 100644 java/src/pm/event/Target.java delete mode 100644 java/src/pm/event/Type.java diff --git a/java/src/Test.java b/java/src/Test.java deleted file mode 100644 index b49e629..0000000 --- a/java/src/Test.java +++ /dev/null @@ -1,6 +0,0 @@ -public class Test { - public static void main(String[] args) { - System.out.println("Testen...!"); - System.out.println("Nog meer testen...."); - } -} diff --git a/java/src/pm/Main.java b/java/src/pm/Main.java index 3bdb493..d23046b 100644 --- a/java/src/pm/Main.java +++ b/java/src/pm/Main.java @@ -5,29 +5,29 @@ import java.util.Queue; import java.util.concurrent.ConcurrentLinkedQueue; import pm.action.Action; -import pm.applicatie.voorbeeld.Voorbeeld; import pm.application.Application; +import pm.application.voorbeeld.Voorbeeld; import pm.device.Device; import pm.device.example.Example; -import pm.event.Event; import pm.exception.ActionException; import pm.exception.ActionNotImplementedException; import pm.exception.EventException; -public class Main extends Application { +public class Main extends Target { protected static final int SLEEP = 100; ArrayList applicationList; ArrayList deviceList; - Queue eventQueue; + Queue actionQueue; boolean run; Application currentApplication; public Main() { applicationList = new ArrayList(); + applicationList.iterator(); deviceList = new ArrayList(); - eventQueue = new ConcurrentLinkedQueue(); + actionQueue = new ConcurrentLinkedQueue(); } public void addApplication(Application application) { @@ -47,7 +47,9 @@ public class Main extends Application { } public void start() throws Exception { - addDevice(new Example(eventQueue)); + Device device = new Example(actionQueue); + addDevice(device); + device.initialise(); Application application = new Voorbeeld(); addApplication(application); currentApplication = application; @@ -57,27 +59,29 @@ public class Main extends Application { public void run() throws ActionException, EventException { run = true; while (run) { - if (eventQueue.isEmpty()) { + if (actionQueue.isEmpty()) { try { Thread.sleep(SLEEP); } catch (InterruptedException e) {} } else { - Event event = eventQueue.poll(); - Action action = event.getAction(); - switch (event.getType()) { + Action action = actionQueue.poll(); + Target target; + switch (action.getTarget()) { case MAIN: + target = this; invoke(action); break; case APPLICATION: - try { - currentApplication.invoke(action); - } catch (ActionNotImplementedException e) { - // Todo: log.write(...) - } + target = currentApplication; break; default: throw new EventException("Unknown event type"); } + try { + target.invoke(action); + } catch (ActionNotImplementedException e) { + // Todo: log.write(...) + } } } } diff --git a/java/src/pm/Target.java b/java/src/pm/Target.java new file mode 100644 index 0000000..79bb507 --- /dev/null +++ b/java/src/pm/Target.java @@ -0,0 +1,20 @@ +package pm; + +import java.lang.reflect.InvocationTargetException; + +import pm.action.Action; +import pm.exception.ActionException; +import pm.exception.ActionInvokeException; + +public abstract class Target { + public void invoke(Action action) throws ActionException { + try { + action.getMethod(this).invoke(this); + return; + } catch (IllegalArgumentException e) { + } catch (IllegalAccessException e) { + } catch (InvocationTargetException e) {} + throw new ActionInvokeException(); + // Todo: informatie doorgeven over wat er precies is foutgegaan + } +} diff --git a/java/src/pm/action/Action.java b/java/src/pm/action/Action.java index edfebf7..9e5f92a 100644 --- a/java/src/pm/action/Action.java +++ b/java/src/pm/action/Action.java @@ -2,6 +2,7 @@ package pm.action; import java.lang.reflect.Method; +import pm.event.Target; import pm.exception.ActionNotImplementedException; public enum Action { @@ -10,11 +11,20 @@ public enum Action { EXIT ("exit"); protected String action; + protected Target target; Action(String action) { this.action = action; } + public void setTarget(Target target) { + this.target = target; + } + + public Target getTarget() { + return target; + } + public Method getMethod(Object object) throws ActionNotImplementedException { try { return object.getClass().getMethod(action); diff --git a/java/src/pm/application/Application.java b/java/src/pm/application/Application.java index f9a9040..0e79fbf 100644 --- a/java/src/pm/application/Application.java +++ b/java/src/pm/application/Application.java @@ -1,20 +1,5 @@ package pm.application; -import java.lang.reflect.InvocationTargetException; +import pm.Target; -import pm.action.Action; -import pm.exception.ActionException; -import pm.exception.ActionInvokeException; - -public abstract class Application { - public void invoke(Action action) throws ActionException { - try { - action.getMethod(this).invoke(this); - return; - } catch (IllegalArgumentException e) { - } catch (IllegalAccessException e) { - } catch (InvocationTargetException e) {} - throw new ActionInvokeException(); - // Todo: informatie doorgeven over wat er precies is foutgegaan - } -} +public abstract class Application extends Target {} \ No newline at end of file diff --git a/java/src/pm/applicatie/voorbeeld/Voorbeeld.java b/java/src/pm/application/voorbeeld/Voorbeeld.java similarity index 85% rename from java/src/pm/applicatie/voorbeeld/Voorbeeld.java rename to java/src/pm/application/voorbeeld/Voorbeeld.java index 2cf5ca0..0f1df59 100644 --- a/java/src/pm/applicatie/voorbeeld/Voorbeeld.java +++ b/java/src/pm/application/voorbeeld/Voorbeeld.java @@ -1,4 +1,4 @@ -package pm.applicatie.voorbeeld; +package pm.application.voorbeeld; import pm.application.Application; diff --git a/java/src/pm/device/Device.java b/java/src/pm/device/Device.java index 1e3bcbb..5366987 100644 --- a/java/src/pm/device/Device.java +++ b/java/src/pm/device/Device.java @@ -2,16 +2,21 @@ package pm.device; import java.util.Queue; -import pm.event.Event; +import pm.action.Action; +import pm.event.Target; public abstract class Device { - protected Queue eventQueue; + protected Queue actionQueue; - protected Device(Queue eventQueue) { - this.eventQueue = eventQueue; - initialise(); + public Device(Queue actionQueue) { + this.actionQueue = actionQueue; } - public void initialise() {} + public void addAction(Action action, Target target) { + action.setTarget(target); + actionQueue.add(action); + } + + public abstract void initialise(); } diff --git a/java/src/pm/device/example/Example.java b/java/src/pm/device/example/Example.java index 146e67a..bed1358 100644 --- a/java/src/pm/device/example/Example.java +++ b/java/src/pm/device/example/Example.java @@ -4,17 +4,16 @@ import java.util.Queue; import pm.action.Action; import pm.device.Device; -import pm.event.Event; -import pm.event.Type; +import pm.event.Target; public class Example extends Device { - public Example(Queue eventQueue) { - super(eventQueue); + public Example(Queue actionQueue) { + super(actionQueue); } public void initialise() { - eventQueue.add(new Event(Type.APPLICATION, Action.START)); - eventQueue.add(new Event(Type.APPLICATION, Action.TEST)); - eventQueue.add(new Event(Type.MAIN, Action.EXIT)); + addAction(Action.START, Target.APPLICATION); + addAction(Action.TEST, Target.APPLICATION); + addAction(Action.EXIT, Target.MAIN); } } diff --git a/java/src/pm/event/Event.java b/java/src/pm/event/Event.java index f79b438..d14373d 100644 --- a/java/src/pm/event/Event.java +++ b/java/src/pm/event/Event.java @@ -3,15 +3,15 @@ package pm.event; import pm.action.Action; public class Event { - protected Type type; + protected Target type; protected Action action; - public Event(Type type, Action action) { + public Event(Target type, Action action) { this.type = type; this.action = action; } - public Type getType() { + public Target getType() { return type; } diff --git a/java/src/pm/event/Target.java b/java/src/pm/event/Target.java new file mode 100644 index 0000000..2c892cf --- /dev/null +++ b/java/src/pm/event/Target.java @@ -0,0 +1,5 @@ +package pm.event; + +public enum Target { + MAIN, DEVICE, APPLICATION; +} diff --git a/java/src/pm/event/Type.java b/java/src/pm/event/Type.java deleted file mode 100644 index ceb118a..0000000 --- a/java/src/pm/event/Type.java +++ /dev/null @@ -1,5 +0,0 @@ -package pm.event; - -public enum Type { - MAIN, APPLICATION; -}