package cn.cloudwalk.event.handler; import cn.cloudwalk.cwos.client.event.event.BaseEvent; import cn.cloudwalk.cwos.client.event.event.EventType; import cn.cloudwalk.cwos.client.event.handler.EventListener; import java.util.HashMap; import java.util.List; import java.util.Map; public class EventHandlerMapping { private final Map>>> handlerMap = new HashMap<>(); private final Map>>> customHandlerMap = new HashMap<>(); private final Map, String> listenerClassGroupMap = new HashMap<>(); public void registerHandlers(String groupId, EventType eventType, Map> handlers) { Map>> map = this.handlerMap.get(groupId); if (null == map) { map = new HashMap<>(); map.put(eventType, handlers); this.handlerMap.put(groupId, map); } else { map.put(eventType, handlers); } } public Map> getServiceCodeHandlerListMap(String groupId, Class eventClass) { for (EventType eventType : EventType.values()) { if (eventType.getEventClass().getClass().equals(eventClass)) { return getServiceCodeHandlerListMap(groupId, eventType); } } throw new IllegalArgumentException("没有找到合适的事件类型"); } public Map> getServiceCodeHandlerListMap(String groupId, EventType eventType) { Map>> map = this.handlerMap.get(groupId); if (null != map) { return map.get(eventType); } return null; } public Map> getServiceCodeCustomHandlerListMap(String groupId, String topic) { Map>> map = this.customHandlerMap.get(groupId); if (null != map) { return map.get(topic); } return null; } public void registerCustomHandlers(String groupId, String topic, Map> handlers) { Map>> map = this.customHandlerMap.get(groupId); if (null == map) { map = new HashMap<>(); map.put(topic, handlers); this.customHandlerMap.put(groupId, map); } else { map.put(topic, handlers); } } public Map>>> getHandlerMap() { return this.handlerMap; } public Map>>> getCustomHandlerMap() { return this.customHandlerMap; } public Map, String> getListenerClassGroupMap() { return this.listenerClassGroupMap; } }