package events; import java.util.*; import prefs.*; import core.*; import utils.*; public final class VSRegisteredEvents { private static HashMap eventClassnames; private static HashMap eventShortnames; private static HashMap eventNames; private static VSPrefs prefs; public static void init(VSPrefs prefs_) { prefs = prefs_; eventNames = new HashMap(); eventShortnames = new HashMap(); eventClassnames = new HashMap(); registerEvent("events.implementations.ProcessCrashEvent", "Prozessabsturz", null); registerEvent("events.implementations.ProcessRecoverEvent", "Prozesswiederbelebung", null); registerEvent("protocols.implementations.BerkelyTimeProtocol", "Berkeley Algorithmus zur internen Sync.", "Berkeley"); registerEvent("protocols.implementations.BroadcastSturmProtocol", "Broadcaststurm", null); registerEvent("protocols.implementations.DummyProtocol", "Beispiel/Dummy", null); registerEvent("protocols.implementations.ExternalTimeSyncProtocol", "Christians Methode zur externen Sync.", "Christians"); registerEvent("protocols.implementations.InternalTimeSyncProtocol", "Interne Synchronisation", "Interne Sync."); registerEvent("protocols.implementations.PingPongProtocol", "Ping Pong", null); } public static Vector getProtocolNames() { Set set = eventClassnames.keySet(); Vector vector = new Vector(); for (String eventName : set) if (getClassname(eventName).startsWith("protocols")) vector.add(eventName); Collections.sort(vector); return vector; } public static Vector getProtocolClassnames() { Set set = eventNames.keySet(); Vector vector = new Vector(); for (String eventClassname : set) if (eventClassname.startsWith("protocols")) vector.add(eventClassname); Collections.sort(vector); return vector; } public static Vector getNonProtocolNames() { Set set = eventClassnames.keySet(); Vector vector = new Vector(); for (String eventName : set) if (getClassname(eventName).startsWith("events")) vector.add(eventName); Collections.sort(vector); return vector; } public static Vector getNonProtocolClassnames() { Set set = eventNames.keySet(); Vector vector = new Vector(); for (String eventClassname : set) if (eventClassname.startsWith("events")) vector.add(eventClassname); Collections.sort(vector); return vector; } public static String getClassname(String eventName) { return eventClassnames.get(eventName); } public static String getName(String eventClassname) { return eventNames.get(eventClassname); } public static String getShortname(String eventClassname) { return eventShortnames.get(eventClassname); } public static VSEvent createEventInstanceByClassname(String eventClassname, VSProcess process) { final Object protocolObj = new VSClassLoader().newInstance(eventClassname); if (protocolObj instanceof VSEvent) { VSEvent event = (VSEvent) protocolObj; event.init(process); return event; } return null; } public static VSEvent createEventInstanceByName(String eventName, VSProcess process) { return createEventInstanceByClassname(eventClassnames.get(eventName), process); } private static void registerEvent(String eventClassname, String eventName, String eventShortname) { if (eventShortname == null) eventShortname = eventName; //System.out.println(eventClassname); eventNames.put(eventClassname, eventName); eventShortnames.put(eventClassname, eventShortname); eventClassnames.put(eventName, eventClassname); } }