From 22c087406b1f14d44d72ef496f25fa7060be246e Mon Sep 17 00:00:00 2001 From: Rik Veenboer Date: Tue, 8 Feb 2011 11:28:24 +0000 Subject: [PATCH] Actions en targets netter gemaakt. --- java/src/pm/Action.java | 53 +++++++++++++++++++ java/src/pm/Main.java | 26 +++++---- java/src/pm/Target.java | 21 ++------ java/src/pm/action/Actions.java | 35 ------------ java/src/pm/action/Targets.java | 5 -- java/src/pm/application/Application.java | 4 +- java/src/pm/device/Device.java | 22 +++----- java/src/pm/device/example/ExampleDevice.java | 4 +- .../javainput/extreme3d/Extreme3DDevice.java | 10 ++-- .../action/TargetNotSetException.java | 7 +++ java/src/pm/listener/ActionListener.java | 17 ++++++ .../pm/{macro => listener}/MacroListener.java | 28 ++++------ 12 files changed, 116 insertions(+), 116 deletions(-) create mode 100644 java/src/pm/Action.java delete mode 100644 java/src/pm/action/Actions.java delete mode 100644 java/src/pm/action/Targets.java create mode 100644 java/src/pm/exception/action/TargetNotSetException.java create mode 100644 java/src/pm/listener/ActionListener.java rename java/src/pm/{macro => listener}/MacroListener.java (55%) diff --git a/java/src/pm/Action.java b/java/src/pm/Action.java new file mode 100644 index 0000000..bc5bcbc --- /dev/null +++ b/java/src/pm/Action.java @@ -0,0 +1,53 @@ +package pm; + +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Method; + +import pm.exception.ActionException; +import pm.exception.action.InvokeActionException; +import pm.exception.action.NotImplementedActionException; +import pm.exception.action.TargetNotSetException; + +public enum Action { + START ("start"), + TEST ("test"), + EXIT ("exit"); + + protected String action; + protected Target target; + + Action(String action) { + this.action = action; + } + + public Action setTarget(Target target) { + this.target = target; + return this; + } + + public Target getTarget() throws TargetNotSetException { + if (target == null) { + throw new TargetNotSetException(); + } + return target; + } + + public Method getMethod(Object object) throws NotImplementedActionException { + try { + return object.getClass().getMethod(action); + } catch (SecurityException e) { + } catch (NoSuchMethodException e) {} + throw new NotImplementedActionException(); + } + + public void invoke(Object object) throws ActionException { + try { + getMethod(object).invoke(object); + return; + } catch (IllegalArgumentException e) { + } catch (IllegalAccessException e) { + } catch (InvocationTargetException e) {} + throw new InvokeActionException(); + // Todo: informatie doorgeven over wat er precies is foutgegaan + } +} diff --git a/java/src/pm/Main.java b/java/src/pm/Main.java index 461e214..099db23 100644 --- a/java/src/pm/Main.java +++ b/java/src/pm/Main.java @@ -4,7 +4,6 @@ import java.util.ArrayList; import java.util.Queue; import java.util.concurrent.ConcurrentLinkedQueue; -import pm.action.Actions; import pm.application.Application; import pm.application.voorbeeld.VoorbeeldApplication; import pm.device.Device; @@ -12,14 +11,14 @@ import pm.device.javainput.extreme3d.Extreme3DDevice; import pm.exception.ActionException; import pm.exception.action.NotImplementedActionException; import pm.exception.action.UnknownTargetException; -import pm.macro.MacroListener; +import pm.listener.ActionListener; -public class Main extends Target { +public class Main { protected static final int SLEEP = 100; ArrayList applicationList; ArrayList deviceList; - Queue actionQueue; + Queue actionQueue; boolean run; Application currentApplication; @@ -28,10 +27,9 @@ public class Main extends Target { applicationList = new ArrayList(); //applicationList.iterator(); deviceList = new ArrayList(); - actionQueue = new ConcurrentLinkedQueue(); - //JavaInputService.initialize(); - Device.initialise(actionQueue); - MacroListener.initialise(actionQueue); + actionQueue = new ConcurrentLinkedQueue(); + + ActionListener.initialise(actionQueue); } public void addApplication(Application application) { @@ -62,7 +60,7 @@ public class Main extends Target { for (Device device : deviceList) { device.start(); } - + run(); } @@ -75,20 +73,20 @@ public class Main extends Target { Thread.sleep(SLEEP); } catch (InterruptedException e) {} } else { - Actions action = actionQueue.poll(); - Target target; + Action action = actionQueue.poll(); + Object object; switch (action.getTarget()) { case MAIN: - target = this; + object = this; break; case APPLICATION: - target = currentApplication; + object = currentApplication; break; default: throw new UnknownTargetException(); } try { - target.invoke(action); + action.invoke(object); } catch (NotImplementedActionException e) { // Todo: log.write(...) } diff --git a/java/src/pm/Target.java b/java/src/pm/Target.java index 357e494..8083b88 100644 --- a/java/src/pm/Target.java +++ b/java/src/pm/Target.java @@ -1,20 +1,5 @@ package pm; -import java.lang.reflect.InvocationTargetException; - -import pm.action.Actions; -import pm.exception.ActionException; -import pm.exception.action.InvokeActionException; - -public abstract class Target { - public void invoke(Actions action) throws ActionException { - try { - action.getMethod(this).invoke(this); - return; - } catch (IllegalArgumentException e) { - } catch (IllegalAccessException e) { - } catch (InvocationTargetException e) {} - throw new InvokeActionException(); - // Todo: informatie doorgeven over wat er precies is foutgegaan - } -} +public enum Target { + MAIN, DEVICE, APPLICATION; +} \ No newline at end of file diff --git a/java/src/pm/action/Actions.java b/java/src/pm/action/Actions.java deleted file mode 100644 index 8982a79..0000000 --- a/java/src/pm/action/Actions.java +++ /dev/null @@ -1,35 +0,0 @@ -package pm.action; - -import java.lang.reflect.Method; - -import pm.exception.action.NotImplementedActionException; - -public enum Actions { - START ("start"), - TEST ("test"), - EXIT ("exit"); - - protected String action; - protected Targets target; - - Actions(String action) { - this.action = action; - } - - public void setTarget(Targets target) { - this.target = target; - } - - public Targets getTarget() { - // Todo: controle op target echt geset? - return target; - } - - public Method getMethod(Object object) throws NotImplementedActionException { - try { - return object.getClass().getMethod(action); - } catch (SecurityException e) { - } catch (NoSuchMethodException e) {} - throw new NotImplementedActionException(); - } -} diff --git a/java/src/pm/action/Targets.java b/java/src/pm/action/Targets.java deleted file mode 100644 index 2fd2090..0000000 --- a/java/src/pm/action/Targets.java +++ /dev/null @@ -1,5 +0,0 @@ -package pm.action; - -public enum Targets { - MAIN, DEVICE, APPLICATION; -} \ No newline at end of file diff --git a/java/src/pm/application/Application.java b/java/src/pm/application/Application.java index 0e79fbf..15ee313 100644 --- a/java/src/pm/application/Application.java +++ b/java/src/pm/application/Application.java @@ -1,5 +1,3 @@ package pm.application; -import pm.Target; - -public abstract class Application extends Target {} \ No newline at end of file +public abstract class Application {} \ No newline at end of file diff --git a/java/src/pm/device/Device.java b/java/src/pm/device/Device.java index 61c38eb..86cb959 100644 --- a/java/src/pm/device/Device.java +++ b/java/src/pm/device/Device.java @@ -1,27 +1,19 @@ package pm.device; -import java.util.Queue; +import pm.Action; +import pm.Macro; +import pm.listener.ActionListener; +import pm.listener.MacroListener; -import pm.action.Actions; -import pm.action.Targets; -import pm.macro.MacroListener; - -public abstract class Device { - protected static Queue actionQueue; +public abstract class Device extends ActionListener { protected MacroListener macroListener; public Device() { macroListener = new MacroListener(); - macroListener.start(); } - public void addAction(Actions action, Targets target) { - action.setTarget(target); - actionQueue.add(action); - } - - public static void initialise(Queue actionQueue) { - Device.actionQueue = actionQueue; + public void add(Macro macro, Action action) { + macroListener.add(macro, action); } public void start() {} diff --git a/java/src/pm/device/example/ExampleDevice.java b/java/src/pm/device/example/ExampleDevice.java index 3fb3e2e..1b9b699 100644 --- a/java/src/pm/device/example/ExampleDevice.java +++ b/java/src/pm/device/example/ExampleDevice.java @@ -1,7 +1,7 @@ package pm.device.example; -import pm.action.Actions; -import pm.action.Targets; +import pm.Action; +import pm.Target; import pm.device.Device; public class ExampleDevice extends Device { diff --git a/java/src/pm/device/javainput/extreme3d/Extreme3DDevice.java b/java/src/pm/device/javainput/extreme3d/Extreme3DDevice.java index b61ab89..81f277b 100644 --- a/java/src/pm/device/javainput/extreme3d/Extreme3DDevice.java +++ b/java/src/pm/device/javainput/extreme3d/Extreme3DDevice.java @@ -1,8 +1,8 @@ package pm.device.javainput.extreme3d; +import pm.Action; import pm.Macro; -import pm.action.Actions; -import pm.action.Targets; +import pm.Target; import pm.device.javainput.JavaInputDevice; import pm.exception.DeviceException; import pm.exception.MacroException; @@ -11,7 +11,6 @@ import pm.macro.event.Press; import pm.macro.event.Release; public class Extreme3DDevice extends JavaInputDevice { - protected static final String NAME = "Logitech Extreme 3D"; public Extreme3DDevice() throws DeviceException { @@ -21,14 +20,13 @@ public class Extreme3DDevice extends JavaInputDevice { public void start() { super.start(); try { - macroListener.add( + add( new Macro( new Hold(Extreme3DButton.ONE), new Press(Extreme3DButton.TWO), new Press(Extreme3DButton.ELEVEN), new Release(Extreme3DButton.ONE)), - Actions.EXIT, - Targets.MAIN); + Action.EXIT.setTarget(Target.MAIN)); } catch (MacroException e) { e.printStackTrace(); } diff --git a/java/src/pm/exception/action/TargetNotSetException.java b/java/src/pm/exception/action/TargetNotSetException.java new file mode 100644 index 0000000..93dc81a --- /dev/null +++ b/java/src/pm/exception/action/TargetNotSetException.java @@ -0,0 +1,7 @@ +package pm.exception.action; + +import pm.exception.ActionException; + +public class TargetNotSetException extends ActionException { + protected static final long serialVersionUID = 1L; +} diff --git a/java/src/pm/listener/ActionListener.java b/java/src/pm/listener/ActionListener.java new file mode 100644 index 0000000..3ad4507 --- /dev/null +++ b/java/src/pm/listener/ActionListener.java @@ -0,0 +1,17 @@ +package pm.listener; + +import java.util.Queue; + +import pm.Action; + +public class ActionListener { + protected static Queue actionQueue; + + public static void initialise(Queue actionQueue) { + ActionListener.actionQueue = actionQueue; + } + + public void add(Action action) { + actionQueue.add(action); + } +} diff --git a/java/src/pm/macro/MacroListener.java b/java/src/pm/listener/MacroListener.java similarity index 55% rename from java/src/pm/macro/MacroListener.java rename to java/src/pm/listener/MacroListener.java index 65ba30e..4e8ad86 100644 --- a/java/src/pm/macro/MacroListener.java +++ b/java/src/pm/listener/MacroListener.java @@ -1,29 +1,25 @@ -package pm.macro; +package pm.listener; import java.util.ArrayList; import java.util.HashMap; -import java.util.Queue; +import pm.Action; import pm.Macro; +import pm.macro.Active; +import pm.macro.Event; -import pm.action.Actions; -import pm.action.Targets; - -public class MacroListener extends Thread { - protected static Queue actionQueue; - +public class MacroListener extends ActionListener { public ArrayList macroList; - public HashMap actionMap; + public HashMap actionMap; public ArrayList activeList; - + public MacroListener() { macroList = new ArrayList(); - actionMap = new HashMap(); + actionMap = new HashMap(); activeList = new ArrayList(); } - public void add(Macro macro, Actions action, Targets target) { - action.setTarget(target); // Todo: target en action duidelijker integreren / hernoemen. + public void add(Macro macro, Action action) { macroList.add(macro); actionMap.put(macro, action); } @@ -36,7 +32,7 @@ public class MacroListener extends Thread { for (Active active : activeList) { if (active.next(event)) { if (active.last()) { - actionQueue.add(actionMap.get(active.getMacro())); // Todo: dit indirect doen? + add(actionMap.get(active.getMacro())); removeList.add(active); } } else { @@ -47,8 +43,4 @@ public class MacroListener extends Thread { activeList.remove(active); } } - - public static void initialise(Queue actionQueue) { - MacroListener.actionQueue = actionQueue; - } }