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; -}