Action verwerk systeem grotendeels herschreven met als doelen:
- duplicate code vermijden (Main en Application extenden de ActionListener) - naamgeving duidelijker maken (oude ActionListener heet nu ActionProvider) - omslachtige gedoe met via reflectie opvragen van methode fixen (switch statements) - mogelijkheid tot langere dan instantane actions (ActionListener zijn threads) Het is noodzakelijk om het volgende op orde te brengen: - omslachtige target systeem - statussen en logs om debuggen en controle eenvoudig te maken - mogelijkheid tot repeterende acties
This commit is contained in:
@@ -1,11 +1,5 @@
|
||||
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 {
|
||||
@@ -21,7 +15,7 @@ public enum Action {
|
||||
REWIND ("rewind"),
|
||||
MUTE ("mute"),
|
||||
VOLUME_UP ("volumeUp"),
|
||||
VULUME_DOWN ("volumeDown");
|
||||
VOLUME_DOWN ("volumeDown");
|
||||
|
||||
|
||||
protected String action;
|
||||
@@ -42,27 +36,4 @@ public enum Action {
|
||||
}
|
||||
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) {
|
||||
e.printStackTrace();
|
||||
} catch (IllegalAccessException e) {
|
||||
e.printStackTrace();
|
||||
} catch (InvocationTargetException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
throw new InvokeActionException();
|
||||
// Todo: informatie doorgeven over wat er precies is foutgegaan
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user