updated version, event system reworked

This commit is contained in:
MrBesen 2019-05-19 16:01:46 +02:00
parent da3b3ecf63
commit 5f8dc8875d
Signed by: MrBesen
GPG Key ID: 596B2350DCD67504
4 changed files with 26 additions and 25 deletions

View File

@ -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>

View File

@ -1,6 +0,0 @@
package de.mrbesen.telegram.event;
public interface EventListener<T extends Event> {
public void handleEvent(T event);
}

View File

@ -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;

View File

@ -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) {