package gueei.binding;
import java.util.HashMap;
import java.util.Hashtable;
import java.util.Map.Entry;
public class BindingMap{
private HashMap<String, NameEntry> mEntries = new HashMap<String, NameEntry>();
public String put(String key, String value) {
mEntries.put(key, new NameEntry(value));
return null;
}
public boolean containsKey(String key){
if (!mEntries.containsKey(key)) return false;
return !mEntries.get(key).handled;
}
public String get(String key){
return get(key, false);
}
public String get(String key, boolean inclHandled){
NameEntry entry = mEntries.get(key);
if (entry==null) return null;
return !entry.handled || inclHandled ? entry.name : null;
}
public String[] getAllKeys(){
int len = mEntries.size();
String[] result = new String[len];
int i=0;
for(String s: mEntries.keySet()){
result[i] = s;
i ++;
}
return result;
}
public String[] getAllEntries(){
int len = mEntries.size();
String[] result = new String[len];
int i=0;
for(NameEntry e : mEntries.values())
{
result[i] = e.name;
i ++;
}
return result;
}
public boolean isEmpty(){
return mEntries.isEmpty();
}
public void setAsHandled(String key){
NameEntry entry = mEntries.get(key);
if (entry==null) return;
entry.handled = true;
}
private class NameEntry{
public NameEntry(String name){
this.name = name;
}
public String name;
public boolean handled = false;
@Override
public String toString(){
return name + "_handled=" + handled;
}
}
public Hashtable<String,String> getMapTable(){
Hashtable<String,String> table = new Hashtable<String,String>();
for(Entry<String,NameEntry> ne: mEntries.entrySet()){
table.put(ne.getKey(), ne.getValue().name);
}
return table;
}
}