/*************************************************** * * cismet GmbH, Saarbruecken, Germany * * ... and it just works. * ****************************************************/ package Sirius.server; import Sirius.server.property.Createable; import org.apache.log4j.Logger; import java.util.Enumeration; import java.util.Hashtable; import java.util.StringTokenizer; /** * DOCUMENT ME! * * @version $Revision$, $Date$ */ public class ServerType implements Comparable, Createable { //~ Static fields/initializers --------------------------------------------- // Konstantendeklaration /** * Konstante, die den ServerTyp NOT_PREDEFINED f\u00FCr Servertypen welche nicht in den folgenden Konstanten * vorgesehen sind.* */ public static final int NOT_PREDEFINED = 0; /** * Konstante, die den ServerTyp LocalServer repraesentiert. Wird benoetigt bei * {@link #registerServer(int, String, String) registerServer}, * {@link #unregisterServer(int, String, String) unregisterServer}, {@link #getServerIP(int,String) getServerIP } * {@link #getServerIPs(int) getServerIPs }* */ public static final int LOCALSERVER = 1; /** * Konstante, die den ServerTyp CallServer repraesentiert. Wird benoetigt bei * {@link #registerServer(int, String, String) registerServer}, * {@link #unregisterServer(int , String , String) unregisterServer}, * {@link #getServerIP(int, String) getServerIP } {@link #getServerIPs(int) getServerIPs }* */ public static final int CALLSERVER = 2; /** * Konstante, die den ServerTyp ProtocolServer repraesentiert. Wird benoetigt bei * {@link #registerServer(int, String, String) registerServer}, * {@link #unregisterServer(int , String, String) unregisterServer}, * {@link #getServerIP(int, String) getServerIP } {@link #getServerIPs(int) getServerIPs }* */ public static final int PROTOCOLSERVER = 3; /** * Konstante, die den ServerTyp ProtocolServer repraesentiert. Wird benoetigt bei * {@link #registerServer(int, String, String) registerServer}, * {@link #unregisterServer(int , String, String) unregisterServer}, * {@link #getServerIP(int, String) getServerIP } {@link #getServerIPs(int) getServerIPs }* */ public static final int USERSERVER = 4; /** * Konstante, die den ServerTyp ModelServer repraesentiert. Wird benoetigt bei * {@link #registerServer(int, String, String) registerServer}, * {@link #unregisterServer(int , String, String) unregisterServer}, * {@link #getServerIP(int, String) getServerIP } {@link #getServerIPs(int) getServerIPs }* */ public static final int MODELSERVER = 6; /** * Konstante, die den ServerTyp ModelServer repraesentiert. Wird benoetigt bei * {@link #registerServer(int, String, String) registerServer}, * {@link #unregisterServer(int , String, String) unregisterServer}, * {@link #getServerIP(int, String) getServerIP } {@link #getServerIPs(int) getServerIPs }* */ public static final int IRSEARCHSERVER = 7; protected static final Hashtable typeStrings = new Hashtable(10); private static final transient Logger LOG = Logger.getLogger(ServerType.class); //~ Instance fields -------------------------------------------------------- protected int id; protected String name; //~ Constructors ----------------------------------------------------------- /** * Creates a new ServerType object. * * @param name DOCUMENT ME! * @param id DOCUMENT ME! */ public ServerType(final String name, final int id) { typeStrings.put(new Integer(NOT_PREDEFINED), "unknown"); // NOI18N typeStrings.put(new Integer(LOCALSERVER), "localServer"); // NOI18N typeStrings.put(new Integer(CALLSERVER), "callServer"); // NOI18N typeStrings.put(new Integer(USERSERVER), "userServer"); // NOI18N this.name = name; this.id = id; } //~ Methods ---------------------------------------------------------------- /** * DOCUMENT ME! * * @param type DOCUMENT ME! * * @return DOCUMENT ME! */ public static String getBindString(final int type) { // FIXME: nasty // debug to make shure Class is loaded xxx new ServerType("", 1); // NOI18N final Object o = typeStrings.get(new Integer(type)); // logger.debug("type :"+type +" "+ o); return o.toString(); } /** * DOCUMENT ME! * * @param o DOCUMENT ME! * * @return DOCUMENT ME! */ @Override public int compareTo(final Object o) { return ((ServerType)o).id - id; } /** * DOCUMENT ME! * * @return DOCUMENT ME! */ public static int[] getAllServerTypes() { final Enumeration enu = typeStrings.keys(); final int[] result = new int[typeStrings.size()]; int i = 0; while (enu.hasMoreElements()) { result[i] = ((Integer)enu.nextElement()).intValue(); i++; // assert i<size() } return result; } /** * DOCUMENT ME! * * @param id DOCUMENT ME! * @param name DOCUMENT ME! * * @return DOCUMENT ME! */ public static boolean addType(final int id, final String name) { final Integer ID = new Integer(id); if (!typeStrings.contains(ID)) { typeStrings.put(ID, name); return true; } else { return false; } } @Override public java.lang.Object createObject(final String constructorArgs, final String delimiter) { final String[] args = tokenizeString(constructorArgs, delimiter); if (args.length == 2) { return new ServerType(args[0], new Integer(args[1]).intValue()); } else { LOG.error("<LS> ERROR Warning :: creatObject falsche Anzahl ConstructorParameter " + args.length); // NOI18N return null; } } /** * DOCUMENT ME! * * @param s DOCUMENT ME! * @param delimiter DOCUMENT ME! * * @return DOCUMENT ME! */ private static String[] tokenizeString(final String s, final String delimiter) { final StringTokenizer tokenizer = new StringTokenizer(s, delimiter); final String[] stringArray = new String[tokenizer.countTokens()]; int i = 0; while (tokenizer.hasMoreTokens()) { stringArray[i++] = tokenizer.nextToken(); } return stringArray; } }