summaryrefslogtreecommitdiff
path: root/sources/events/VSRegisteredEvents.java
diff options
context:
space:
mode:
Diffstat (limited to 'sources/events/VSRegisteredEvents.java')
-rw-r--r--sources/events/VSRegisteredEvents.java409
1 files changed, 0 insertions, 409 deletions
diff --git a/sources/events/VSRegisteredEvents.java b/sources/events/VSRegisteredEvents.java
deleted file mode 100644
index 9d022d9..0000000
--- a/sources/events/VSRegisteredEvents.java
+++ /dev/null
@@ -1,409 +0,0 @@
-/*
- * Copyright (c) 2008 Paul C. Buetow, vs@dev.buetow.org
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- *
- * All icons of the icons/ folder are under a Creative Commons
- * Attribution-Noncommercial-Share Alike License a CC-by-nc-sa.
- *
- * The icon's homepage is http://code.google.com/p/ultimate-gnome/
- */
-
-package events;
-
-import java.util.*;
-
-import prefs.*;
-import core.*;
-import utils.*;
-
-/**
- * The class VSRegisteredEvents. This class is responsible to manage all
- * events. It manages the event classnames, the event shortnames and the event
- * names. It also checks if a protocol (which is an event as well) has
- * variables which are editable through the GUI of the simulator.
- *
- * @author Paul C. Buetow
- */
-public final class VSRegisteredEvents {
- /** The serial version uid */
- private static final long serialVersionUID = 1L;
-
- /** The event classnames by eventnames. */
- private static HashMap<String,String> eventClassnamesByNames =
- new HashMap<String,String>();
-
- /** The event shortnames by classnames. */
- private static HashMap<String,String> eventShortnamesByClassnames =
- new HashMap<String,String>();
-
- /** The event names by classnames. */
- private static HashMap<String,String> eventNamesByClassnames =
- new HashMap<String,String>();
-
- /** The event classnames by shortnames. */
- private static HashMap<String,String> eventClassnamesByShortnames =
- new HashMap<String,String>();
-
- /** The editable protocols classnames. */
- private static ArrayList<String> editableProtocolsClassnames =
- new ArrayList<String>();
-
- private static HashMap<String,ArrayList<String>> clientVariables =
- new HashMap<String,ArrayList<String>>();
-
- private static HashMap<String,ArrayList<String>> serverVariables =
- new HashMap<String,ArrayList<String>>();
-
- private static HashMap<String,Boolean> isOnServerStartProtocol =
- new HashMap<String,Boolean>();
-
- /** The prefs. */
- private static VSPrefs prefs;
-
- /**
- * Registers available events.
- *
- * @param prefs_ the prefs_
- */
- public static void init(VSPrefs prefs_) {
- prefs = prefs_;
-
- /*
- registerEvent("events.implementations.VSProcessCrashEvent",
- "Prozessabsturz");
- registerEvent("events.implementations.VSProcessRecoverEvent",
- "Prozesswiederbelebung");
- registerEvent("protocols.implementations.VSBasicMulticastProtocol",
- "Basic Multicast", "Basic Multicast");
- registerEvent("protocols.implementations.VSBerkelyTimeProtocol",
- "Berkeley Algorithmus zur internen Sync.", "Berkeley");
- registerEvent("protocols.implementations.VSBroadcastProtocol",
- "Broadcast");
- registerEvent("protocols.implementations.VSDummyProtocol",
- "Beispiel/Dummy");
- registerEvent("protocols.implementations.VSExternalTimeSyncProtocol",
- "Christians Methode zur externen Sync.", "Christians");
- registerEvent("protocols.implementations.VSInternalTimeSyncProtocol",
- "Interne Synchronisation", "Interne Sync.");
- registerEvent("protocols.implementations.VSOnePhaseCommitProtocol",
- "Ein-Phasen Commit", "1-Phasen Commit");
- registerEvent("protocols.implementations.VSPingPongProtocol",
- "Ping Pong");
- registerEvent("protocols.implementations.VSReliableMulticastProtocol",
- "Reliable Multicast", "Reliable Multicast");
- registerEvent("protocols.implementations.VSTwoPhaseCommitProtocol",
- "Zwei-Phasen Commit", "2-Phasen Commit");
- */
-
- /* Using the NEW way. The old way above (specifying protocol names
- in this file still works as well */
-
- registerEvent("events.implementations.VSProcessCrashEvent");
- registerEvent("events.implementations.VSProcessRecoverEvent");
- registerEvent("protocols.implementations.VSBasicMulticastProtocol");
- registerEvent("protocols.implementations.VSBerkelyTimeProtocol");
- registerEvent("protocols.implementations.VSBroadcastProtocol");
- registerEvent("protocols.implementations.VSDummyProtocol");
- registerEvent("protocols.implementations.VSExternalTimeSyncProtocol");
- registerEvent("protocols.implementations.VSInternalTimeSyncProtocol");
- registerEvent("protocols.implementations.VSOnePhaseCommitProtocol");
- registerEvent("protocols.implementations.VSPingPongProtocol");
- registerEvent("protocols.implementations.VSReliableMulticastProtocol");
- registerEvent("protocols.implementations.VSTwoPhaseCommitProtocol");
-
- /* Make dummy objects of each protocol, to see if they contain VSPrefs
- values to edit */
- Vector<String> protocolClassnames = getProtocolClassnames();
- VSClassLoader classLoader = new VSClassLoader();
-
- for (String protocolClassname : protocolClassnames) {
- Object serverObject = classLoader.newInstance(protocolClassname);
- Object clientObject = classLoader.newInstance(protocolClassname);
-
- if (clientObject instanceof protocols.VSAbstractProtocol &&
- serverObject instanceof protocols.VSAbstractProtocol) {
-
- protocols.VSAbstractProtocol serverProtocol =
- (protocols.VSAbstractProtocol) serverObject;
- protocols.VSAbstractProtocol clientProtocol =
- (protocols.VSAbstractProtocol) clientObject;
-
- serverProtocol.onServerInit();
- clientProtocol.onClientInit();
-
- if (!serverProtocol.isEmpty() || !clientProtocol.isEmpty())
- editableProtocolsClassnames.add(protocolClassname);
-
- if (!serverProtocol.isEmpty()) {
- ArrayList<String> variables = new ArrayList<String>();
- variables.addAll(serverProtocol.getAllFullKeys());
- serverVariables.put(protocolClassname, variables);
- }
-
- if (!clientProtocol.isEmpty()) {
- ArrayList<String> variables = new ArrayList<String>();
- variables.addAll(clientProtocol.getAllFullKeys());
- clientVariables.put(protocolClassname, variables);
- }
-
- if (serverProtocol.hasOnServerStart())
- isOnServerStartProtocol.put(protocolClassname,
- new Boolean(true));
- }
- }
- }
-
- /**
- * Gets the editable protocols classnames.
- *
- * @return the editable protocols classnames
- */
- public static ArrayList<String> getEditableProtocolsClassnames() {
- return editableProtocolsClassnames;
- }
-
- /**
- * Gets the protocols server variable names.
- *
- * @return The variable names
- */
- public static ArrayList<String> getProtocolServerVariables(
- String protocolClassname) {
- return serverVariables.get(protocolClassname);
- }
-
- /**
- * Gets the protocols server variable names.
- *
- * @return The variable names
- */
- public static ArrayList<String> getProtocolClientVariables(
- String protocolClassname) {
- return clientVariables.get(protocolClassname);
- }
-
- /**
- * Gets the protocol names.
- *
- * @return the protocol names
- */
- public static Vector<String> getProtocolNames() {
- Set<String> set = eventClassnamesByNames.keySet();
- Vector<String> vector = new Vector<String>();
-
- for (String eventName : set)
- if (getClassnameByEventname(eventName).startsWith(
- "protocols.implementations"))
- vector.add(eventName);
-
- Collections.sort(vector);
-
- return vector;
- }
-
- /**
- * Gets the protocol classnames.
- *
- * @return the protocol classnames
- */
- public static Vector<String> getProtocolClassnames() {
- ArrayList<String> shortnames = new ArrayList<String>();
- shortnames.addAll(eventClassnamesByShortnames.keySet());
- Collections.sort(shortnames);
- Vector<String> vector = new Vector<String>();
-
- for (String eventShortname : shortnames) {
- String eventClassname = getClassnameByShortname(eventShortname);
- if (eventClassname.startsWith("protocols.implementations"))
- vector.add(eventClassname);
- }
-
- return vector;
- }
-
- /**
- * Gets the non protocol names.
- *
- * @return the non protocol names
- */
- public static Vector<String> getNonProtocolNames() {
- Set<String> set = eventClassnamesByNames.keySet();
- Vector<String> vector = new Vector<String>();
-
- for (String eventName : set)
- if (getClassnameByEventname(eventName).startsWith(
- "events.implementations"))
- vector.add(eventName);
-
- Collections.sort(vector);
-
- return vector;
- }
-
- /**
- * Gets the non protocol classnames.
- *
- * @return the non protocol classnames
- */
- public static Vector<String> getNonProtocolClassnames() {
- Set<String> set = eventNamesByClassnames.keySet();
- Vector<String> vector = new Vector<String>();
-
- for (String eventClassname : set)
- if (eventClassname.startsWith("events.implementations"))
- vector.add(eventClassname);
-
- Collections.sort(vector);
-
- return vector;
- }
-
- /**
- * Gets the classname.
- *
- * @param eventName the event name
- *
- * @return the classname
- */
- public static String getClassnameByEventname(String eventName) {
- return eventClassnamesByNames.get(eventName);
- }
-
- /**
- * Gets the name.
- *
- * @param eventClassname the event classname
- *
- * @return the name
- */
- public static String getNameByClassname(String eventClassname) {
- return eventNamesByClassnames.get(eventClassname);
- }
-
- /**
- * Gets the shortname.
- *
- * @param eventClassname the event classname
- *
- * @return the shortname
- */
- public static String getShortnameByClassname(String eventClassname) {
- return eventShortnamesByClassnames.get(eventClassname);
- }
-
- /**
- * Gets the classname.
- *
- * @param eventShortname the event shortname
- *
- * @return the shortname
- */
- public static String getClassnameByShortname(String eventShortname) {
- return eventClassnamesByShortnames.get(eventShortname);
- }
-
- /**
- * Checks if the protocol uses onServerStart or onClientStart
- *
- * @param protocolClassname the protocol's classname
- *
- * @return true if onServerStart, false if onClientStart
- */
- public static boolean isOnServerStartProtocol(String protocolClassname) {
- if (isOnServerStartProtocol.containsKey(protocolClassname)) {
- Boolean bool = isOnServerStartProtocol.get(protocolClassname);
- return bool.booleanValue();
- }
-
- return false;
- }
-
- /**
- * Creates the event instance by classname.
- *
- * @param eventClassname the event classname
- * @param process the process
- *
- * @return An instance of the event classname, if exists. Else null.
- */
- public static VSAbstractEvent createEventInstanceByClassname(
- String eventClassname, VSInternalProcess process) {
- Object protocolObj = new VSClassLoader().newInstance(eventClassname);
-
- if (protocolObj instanceof VSAbstractEvent) {
- VSAbstractEvent event = (VSAbstractEvent) protocolObj;
- event.init(process);
- return event;
- }
-
- return null;
- }
-
- /**
- * Creates the event instance by name.
- *
- * @param eventName the event name
- * @param process the process
- *
- * @return An instance of the event, if exists. Else null.
- */
- public static VSAbstractEvent createEventInstanceByName(String eventName,
- VSInternalProcess process) {
- return createEventInstanceByClassname(
- eventClassnamesByNames.get(eventName), process);
- }
-
- /**
- * Registers an event. Use the language settings of VSPrefs.
- *
- * @param eventClassname the event classname
- */
- private static void registerEvent(String eventClassname) {
- String eventName =
- prefs.getString("lang.en." + eventClassname);
- String eventShortname =
- prefs.getString("lang.en." + eventClassname + ".short");
- registerEvent(eventClassname, eventName, eventShortname);
- }
-
- /**
- * Registers an event.
- *
- * @param eventClassname the event classname
- * @param eventName the event name
- */
- private static void registerEvent(String eventClassname, String eventName) {
- registerEvent(eventClassname, eventName, null);
- }
-
- /**
- * Registers an event.
- *
- * @param eventClassname the event classname
- * @param eventName the event name
- * @param eventShortname the event shortname
- */
- private static void registerEvent(String eventClassname, String eventName,
- String eventShortname) {
- if (eventShortname == null)
- eventShortname = eventName;
-
- eventNamesByClassnames.put(eventClassname, eventName);
- eventShortnamesByClassnames.put(eventClassname, eventShortname);
- eventClassnamesByNames.put(eventName, eventClassname);
- eventClassnamesByShortnames.put(eventShortname, eventClassname);
- }
-}