001 /*
002
003 $Id: KeyManager.java,v 1.4 2003/03/31 13:17:41 culdesac Exp $
004
005 */
006
007 package sharpster.common;
008
009 import java.util.Hashtable;
010 import java.util.LinkedList;
011 import java.util.Enumeration;
012 import java.util.ListIterator;
013 import net.jxta.id.*;
014
015 /**
016 * Class responsible for supplying unique keys for all users.
017 */
018
019 public class KeyManager {
020
021 /**
022 * Maps a key to a string.
023 */
024 private Hashtable keyToValueMap;
025
026 /**
027 * Maps a string to a key value.
028 */
029 private Hashtable valueToKeyMap;
030
031 /**
032 * Constructs an instance of the class and initializes the member
033 * attributes.
034 */
035 public KeyManager() {
036 keyToValueMap = new Hashtable();
037 valueToKeyMap = new Hashtable();
038 }
039
040 /**
041 * Adds a key value for the specified user.
042 */
043 public ID add(String str, ID key) {
044 if(valueToKeyMap.containsKey(str)) {
045 return (ID)valueToKeyMap.get(str);
046 }
047
048 if(key == null) {
049 key = IDFactory.newPeerGroupID();
050 }
051
052 valueToKeyMap.put(new String(str), key);
053 keyToValueMap.put(key, new String(str));
054
055 return key;
056 }
057
058 /**
059 * Removes the key value for the specified user.
060 */
061 public void remove(String str) {
062 if(valueToKeyMap.containsKey(str)) {
063 ID key = (ID)valueToKeyMap.remove(str);
064 keyToValueMap.remove(key);
065 }
066 }
067
068 /**
069 * Returns the key value for the specified user.
070 */
071 public ID getKey(String str) {
072 return (ID)valueToKeyMap.get(str);
073 }
074
075 /**
076 * Returns the user for the given key value.
077 */
078 public String getValue(ID key) {
079 return (String)keyToValueMap.get(key);
080 }
081
082 public String[] getAllValues() {
083 try {
084 Enumeration enum = keyToValueMap.elements();
085 String[] list = new String[keyToValueMap.size()];
086 int i=0;
087
088 while(enum.hasMoreElements()) {
089 list[i++] = new String((String)enum.nextElement());
090 }
091
092 return list;
093 }
094 catch(Exception e) {
095 return null;
096 }
097 }
098 }
099
100
101
102