//idega 2000 - Tryggvi Larusson /* *Copyright 2000 idega.is All Rights Reserved. */ package com.idega.util.datastructures; import java.util.ArrayList; import java.util.Collection; import java.util.Enumeration; import java.util.Hashtable; import java.util.List; import com.idega.util.ListUtil; import com.idega.util.StringHandler; /** *Class similar to Hashtable but with two keys for each value *@author <a href="mailto:tryggvi@idega.is">Tryggvi Larusson</a> *@version 0.9 */ public class HashtableDoubleKeyed<K, V> { private Hashtable<String, V> table; private HashtableMultivalued<String, Collection<V>, V> tableForKeys; public HashtableDoubleKeyed() { this.table = new Hashtable<String, V>(); this.tableForKeys=new HashtableMultivalued<String, Collection<V>, V>(); } public V put(String key1, String key2, V value){ this.tableForKeys.putValue(key1, value); this.tableForKeys.putValue(key2, value); return this.table.put(StringHandler.concatAlphabetically(key1,key2),value); } public V get(String key1,String key2){ return this.table.get(StringHandler.concatAlphabetically(key1,key2)); } public V remove(String key1, String key2){ return this.table.remove(StringHandler.concatAlphabetically(key1,key2)); } public Enumeration<String> keys(){ return this.table.keys(); } public Enumeration<V> elements(){ return this.table.elements(); } /** * Returns a list of objects put for this key * @param key * @return */ public List<V> get(String key){ Collection<V> values = this.tableForKeys.get(key); return ListUtil.isEmpty(values) ? null : new ArrayList<V>(values); } }