001 package toolbus.environment; 002 003 import java.util.Iterator; 004 import java.util.LinkedList; 005 import java.util.List; 006 007 /** 008 * ListBindings uses a simple LinkedList to implement the Bindings interface. 009 */ 010 class ListBindings implements Bindings{ 011 private final LinkedList<Binding> bindings; 012 013 public ListBindings(){ 014 bindings = new LinkedList<Binding>(); 015 } 016 017 protected ListBindings(ListBindings listBindings){ 018 bindings = new LinkedList<Binding>(); 019 bindings.addAll(listBindings.bindings); 020 } 021 022 public Bindings clone(){ 023 return new ListBindings(this); 024 } 025 026 public Binding get(String key){ 027 Iterator<Binding> bindingsIterator = bindings.iterator(); 028 while(bindingsIterator.hasNext()){ 029 Binding b = bindingsIterator.next(); 030 031 if(b.getName().equals(key)){ 032 return b; 033 } 034 } 035 return null; 036 } 037 038 public int size(){ 039 return bindings.size(); 040 } 041 042 public void put(String key, Binding b){ 043 bindings.addFirst(b); 044 } 045 046 public void remove(String key){ 047 Iterator<Binding> bindingIterator = bindings.iterator(); 048 while(bindingIterator.hasNext()){ 049 Binding b = bindingIterator.next(); 050 if(b.getName().equals(key)){ 051 bindingIterator.remove(); 052 return; 053 } 054 } 055 System.err.println("remove:" + key + " is not present\n" + this); 056 } 057 058 public List<Binding> getBindingsAsList(){ 059 List<Binding> newBindings = new LinkedList<Binding>(); 060 newBindings.addAll(bindings); 061 062 return newBindings; 063 } 064 065 public String toString(){ 066 String res = "{", sep = ""; 067 068 Iterator<Binding> bindingsIterator = bindings.iterator(); 069 while(bindingsIterator.hasNext()){ 070 Binding b = bindingsIterator.next(); 071 072 res += sep + b; 073 sep = ", "; 074 } 075 return res + "}"; 076 } 077 }