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}