/* ************************************************************************* IT Mill Toolkit Development of Browser User Interfaces Made Easy Copyright (C) 2000-2006 IT Mill Ltd ************************************************************************* This product is distributed under commercial license that can be found from the product package on license/license.txt. Use of this product might require purchasing a commercial license from IT Mill Ltd. For guidelines on usage, see license/licensing-guidelines.html ************************************************************************* For more information, contact: IT Mill Ltd phone: +358 2 4802 7180 Ruukinkatu 2-4 fax: +358 2 4802 7181 20540, Turku email: info@itmill.com Finland company www: www.itmill.com Primary source for information and releases: www.itmill.com ********************************************************************** */ package com.itmill.toolkit.terminal; import java.util.Hashtable; /** Simple two-way map for generating textual keys for objects and * retrieving the objects later with the key. * * @author IT Mill Ltd. * @version @VERSION@ * @since 3.0 */ public class KeyMapper { private int lastKey = 0; private Hashtable objectKeyMap = new Hashtable(); private Hashtable keyObjectMap = new Hashtable(); /** Get key for an object */ public String key(Object o) { if (o == null) return "null"; // If the object is already mapped, use existing key String key = (String) objectKeyMap.get(o); if (key != null) return key; // If the object is not yet mapped, map it key = String.valueOf(++lastKey); objectKeyMap.put(o,key); keyObjectMap.put(key,o); return key; } /** Check if the key belongs to a new id. *
Usage of new id:s are specific to components, but for example Select
* component uses newItemId:s for selection of newly added items in
* allowNewItems
-mode
*/
public boolean isNewIdKey(String key) {
return "NEW".equals(key);
}
/** Retrieve object with the key*/
public Object get(String key) {
return keyObjectMap.get(key);
}
/** Remove object from the mapper. */
public void remove(Object o) {
String key = (String) objectKeyMap.get(o);
if (key != null) {
objectKeyMap.remove(key);
keyObjectMap.remove(o);
}
}
/** Remove all objects from the mapper. */
public void removeAll() {
objectKeyMap.clear();
keyObjectMap.clear();
}
}