main
 1using System.Collections.Generic;
 2
 3namespace solidware.financials.service.orm
 4{
 5    public class SimpleIdentityMap<TKey, TValue> : IdentityMap<TKey, TValue>
 6    {
 7        readonly IDictionary<TKey, TValue> items_in_map;
 8
 9        public SimpleIdentityMap() : this(new Dictionary<TKey, TValue>())
10        {
11        }
12
13        public SimpleIdentityMap(IDictionary<TKey, TValue> items_in_map)
14        {
15            this.items_in_map = items_in_map;
16        }
17
18        public IEnumerable<TValue> all()
19        {
20            return items_in_map.Values;
21        }
22
23        public void add(TKey key, TValue value)
24        {
25            items_in_map.Add(key, value);
26        }
27
28        public void update_the_item_for(TKey key, TValue new_value)
29        {
30            if (contains_an_item_for(key)) items_in_map[key] = new_value;
31            else add(key, new_value);
32        }
33
34        public bool contains_an_item_for(TKey key)
35        {
36            return items_in_map.ContainsKey(key);
37        }
38
39        public TValue item_that_belongs_to(TKey key)
40        {
41            return contains_an_item_for(key) ? items_in_map[key] : default(TValue);
42        }
43
44        public void evict(TKey key)
45        {
46            if (contains_an_item_for(key)) items_in_map.Remove(key);
47        }
48    }
49}