TelegramAPI/src/main/java/de/mrbesen/telegram/event/EventManager.java

48 lines
1.2 KiB
Java

package de.mrbesen.telegram.event;
import de.mrbesen.telegram.TelegramAPI;
import java.lang.reflect.Array;
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.HashMap;
public class EventManager {
private HashMap<Class<? extends Event>, ArrayList<EventListener>> listeners = new HashMap<>();
public EventManager() {}
public void registerEvent(Class<? extends Event> eventtype, EventListener listener) {
if (listener == null) {
throw new NullPointerException();
}
//get list
ArrayList<EventListener> list = listeners.get(eventtype);
if (list == null) {
list = new ArrayList<EventListener>();
listeners.put(eventtype, list);
} else if(list.contains(listener)) {
throw new IllegalArgumentException("listener allready registered");
}
list.add(listener);
}
public Event callEvent(Event e) {
if(e == null)
throw new NullPointerException("event is not allowed to be null!");
ArrayList<EventListener> listner = listeners.get(e.getClass());
for(EventListener listn : listner) {
try {
listn.handleEvent(e);
} catch(Throwable t) {
System.err.println("Error occurred on Handling Event: " + e.getClass().getSimpleName());
t.printStackTrace();
}
}
return e;
}
}