updated version, event system reworked
This commit is contained in:
parent
da3b3ecf63
commit
5f8dc8875d
4
pom.xml
4
pom.xml
|
@ -16,6 +16,9 @@
|
|||
<artifactId>maven-compiler-plugin</artifactId>
|
||||
<version>3.5.1</version>
|
||||
<configuration>
|
||||
<excludes>
|
||||
<exclude>de/mrbesen/test/**</exclude>
|
||||
</excludes>
|
||||
<source />
|
||||
<target />
|
||||
</configuration>
|
||||
|
@ -48,4 +51,5 @@
|
|||
<maven.compiler.source>1.8</maven.compiler.source>
|
||||
<maven.compiler.target>1.8</maven.compiler.target>
|
||||
</properties>
|
||||
|
||||
</project>
|
|
@ -1,6 +0,0 @@
|
|||
package de.mrbesen.telegram.event;
|
||||
|
||||
public interface EventListener<T extends Event> {
|
||||
|
||||
public void handleEvent(T event);
|
||||
}
|
|
@ -6,40 +6,44 @@ import java.lang.reflect.Array;
|
|||
import java.lang.reflect.Method;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.function.Consumer;
|
||||
|
||||
public class EventManager {
|
||||
|
||||
private HashMap<Class<? extends Event>, ArrayList<EventListener>> listeners = new HashMap<>();
|
||||
private HashMap<Class<? extends Event>, ArrayList<Consumer>> listeners = new HashMap<>();
|
||||
|
||||
public EventManager() {}
|
||||
|
||||
public void registerEvent(Class<? extends Event> eventtype, EventListener listener) {
|
||||
if (listener == null) {
|
||||
public void registerEvent(Class<? extends Event> eventtype, Consumer handler) {
|
||||
if (handler == null) {
|
||||
throw new NullPointerException();
|
||||
}
|
||||
|
||||
//get list
|
||||
ArrayList<EventListener> list = listeners.get(eventtype);
|
||||
ArrayList<Consumer> list = listeners.get(eventtype);
|
||||
if (list == null) {
|
||||
list = new ArrayList<EventListener>();
|
||||
//create and add list
|
||||
list = new ArrayList<>();
|
||||
listeners.put(eventtype, list);
|
||||
} else if(list.contains(listener)) {
|
||||
} else if(list.contains(handler)) {
|
||||
throw new IllegalArgumentException("listener allready registered");
|
||||
}
|
||||
|
||||
list.add(listener);
|
||||
list.add(handler); // ad to list
|
||||
}
|
||||
|
||||
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();
|
||||
ArrayList<Consumer> listner = listeners.get(e.getClass());
|
||||
if(listner != null) {
|
||||
for (Consumer listn : listner) {
|
||||
try {
|
||||
listn.accept(e);
|
||||
} catch (Throwable t) {
|
||||
System.err.println("Error occurred on Handling Event: " + e.getClass().getSimpleName());
|
||||
t.printStackTrace();
|
||||
}
|
||||
}
|
||||
}
|
||||
return e;
|
||||
|
|
|
@ -3,8 +3,6 @@ package de.mrbesen.test;
|
|||
import java.util.Scanner;
|
||||
|
||||
import de.mrbesen.telegram.TelegramAPI;
|
||||
import de.mrbesen.telegram.event.EventListener;
|
||||
import de.mrbesen.telegram.event.events.UserCallbackEvent;
|
||||
import de.mrbesen.telegram.event.events.UserSendMessageEvent;
|
||||
import de.mrbesen.telegram.objects.TMessage;
|
||||
import de.mrbesen.telegram.objects.TUser.Status;
|
||||
|
@ -13,7 +11,7 @@ import de.mrbesen.test.commands.ReplyKeyboardRemoveTC;
|
|||
import de.mrbesen.test.commands.ReplyKeyboardTestCase;
|
||||
import de.mrbesen.test.commands.SimpleTestCase;
|
||||
|
||||
public class Main implements EventListener<UserSendMessageEvent>, Runnable {
|
||||
public class Main implements Runnable {
|
||||
|
||||
TelegramAPI api;
|
||||
private int action = 0;
|
||||
|
@ -30,10 +28,11 @@ public class Main implements EventListener<UserSendMessageEvent>, Runnable {
|
|||
api.getCommandManager().registerCommand(new InlineKeyboardTC());
|
||||
api.getCommandManager().registerCommand(new ReplyKeyboardTestCase());
|
||||
api.getCommandManager().registerCommand(new ReplyKeyboardRemoveTC());
|
||||
api.getEventManager().registerEvent(UserSendMessageEvent.class, this);
|
||||
api.getEventManager().registerEvent(UserSendMessageEvent.class, this::handleEvent);
|
||||
}
|
||||
|
||||
public void handleEvent(UserSendMessageEvent e) {
|
||||
public void handleEvent(Object event) {
|
||||
UserSendMessageEvent e = (UserSendMessageEvent) event;
|
||||
//api.sendMessage(new MessageBuilder().setText("this is a reply").setReciver(e.getUser().getID()).setSilent(true).setNoWebView(true).build());
|
||||
|
||||
if(oldmsg != null) {
|
||||
|
|
Loading…
Reference in New Issue