From 2d45de18df35f6d3ba4ca0b86ec1188e49637413 Mon Sep 17 00:00:00 2001 From: Paul Buetow Date: Sun, 18 May 2008 19:29:30 +0000 Subject: The TaskManager works partly. --- sources/events/VSRegisteredEvents.java | 110 +++++++++++++++++++++++++++++++++ 1 file changed, 110 insertions(+) (limited to 'sources/events/VSRegisteredEvents.java') diff --git a/sources/events/VSRegisteredEvents.java b/sources/events/VSRegisteredEvents.java index 38676ca..5f73fea 100644 --- a/sources/events/VSRegisteredEvents.java +++ b/sources/events/VSRegisteredEvents.java @@ -7,4 +7,114 @@ 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("protocols")) + 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("protocols")) + 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) { + return createEventInstanceByName(getName(eventClassname), process); + } + + public static VSEvent createEventInstanceByName(String eventName, VSProcess process) { + final String eventClassname = eventClassnames.get(eventName); + final Object protocolObj = new VSClassLoader().newInstance(eventClassname); + + if (protocolObj instanceof VSEvent) { + VSEvent event = (VSEvent) protocolObj; + event.init(process); + return event; + } + + return null; + } + + private static void registerEvent(String eventClassname, String eventName, String eventShortname) { + if (eventShortname == null) + eventShortname = eventName; + + eventNames.put(eventClassname, eventName); + eventShortnames.put(eventClassname, eventShortname); + eventClassnames.put(eventName, eventClassname); + } } -- cgit v1.2.3