Action invoke systeem verbeterd en nette exceptions geintroduceerd.
This commit is contained in:
@@ -4,20 +4,24 @@ import java.util.ArrayList;
|
||||
import java.util.Queue;
|
||||
import java.util.concurrent.ConcurrentLinkedQueue;
|
||||
|
||||
import pm.action.Action;
|
||||
import pm.applicatie.voorbeeld.Voorbeeld;
|
||||
import pm.application.Application;
|
||||
import pm.device.Device;
|
||||
import pm.device.example.Example;
|
||||
import pm.event.Event;
|
||||
import pm.event.ApplicationEvent;
|
||||
import pm.exception.ActionException;
|
||||
import pm.exception.ActionNotImplementedException;
|
||||
import pm.exception.EventException;
|
||||
|
||||
public class Main {
|
||||
public static final int SLEEP = 100;
|
||||
public class Main extends Application {
|
||||
protected static final int SLEEP = 100;
|
||||
|
||||
ArrayList<Application> applicationList;
|
||||
ArrayList<Device> deviceList;
|
||||
Queue<Event> eventQueue;
|
||||
|
||||
boolean run;
|
||||
Application currentApplication;
|
||||
|
||||
public Main() {
|
||||
@@ -42,33 +46,51 @@ public class Main {
|
||||
return deviceList.remove(device);
|
||||
}
|
||||
|
||||
public void start() {
|
||||
public void start() throws Exception {
|
||||
addDevice(new Example(eventQueue));
|
||||
Application application = new Voorbeeld();
|
||||
addApplication(application);
|
||||
currentApplication = application;
|
||||
run();
|
||||
}
|
||||
|
||||
public void run() {
|
||||
while (true) {
|
||||
public void run() throws ActionException, EventException {
|
||||
run = true;
|
||||
while (run) {
|
||||
if (eventQueue.isEmpty()) {
|
||||
try {
|
||||
Thread.sleep(SLEEP);
|
||||
} catch (InterruptedException e) {}
|
||||
} else {
|
||||
Event event = eventQueue.poll();
|
||||
if (event instanceof ApplicationEvent) {
|
||||
try {
|
||||
currentApplication.invoke(event.getAction());
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
Action action = event.getAction();
|
||||
switch (event.getType()) {
|
||||
case MAIN:
|
||||
invoke(action);
|
||||
break;
|
||||
case APPLICATION:
|
||||
try {
|
||||
currentApplication.invoke(action);
|
||||
} catch (ActionNotImplementedException e) {
|
||||
// Todo: log.write(...)
|
||||
}
|
||||
break;
|
||||
default:
|
||||
throw new EventException("Unknown event type");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void exit() {
|
||||
run = false;
|
||||
}
|
||||
|
||||
public static void main(String[] args) {
|
||||
new Main().start();
|
||||
try {
|
||||
new Main().start();
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user