1 package org.dbunit.assertion.comparer.value.builder;
2
3 import java.util.Collections;
4 import java.util.HashMap;
5 import java.util.Map;
6
7 import org.dbunit.assertion.comparer.value.ValueComparer;
8
9
10
11
12
13
14
15
16 public class TableColumnValueComparerMapBuilder
17 {
18 private Map<String, Map<String, ValueComparer>> comparers = new HashMap<>();
19
20
21
22
23
24
25 public TableColumnValueComparerMapBuilder add(
26 final Map<String, Map<String, ValueComparer>> tableColumnValueComparers)
27 {
28 comparers.putAll(tableColumnValueComparers);
29
30 return this;
31 }
32
33
34
35
36
37
38
39 public TableColumnValueComparerMapBuilder add(
40 final TableColumnValueComparerMapBuilder tableColumnValueComparerMapBuilder)
41 {
42 final Map<String, Map<String, ValueComparer>> map =
43 tableColumnValueComparerMapBuilder.build();
44 comparers.putAll(map);
45
46 return this;
47 }
48
49
50
51
52
53
54
55 public TableColumnValueComparerMapBuilder add(final String tableName,
56 final Map<String, ValueComparer> columnValueComparers)
57 {
58 final Map<String, ValueComparer> map = findOrMakeColumnMap(tableName);
59
60 map.putAll(columnValueComparers);
61
62 return this;
63 }
64
65
66
67
68
69
70
71 public TableColumnValueComparerMapBuilder add(final String tableName,
72 final ColumnValueComparerMapBuilder columnValueComparerMapBuilder)
73 {
74 final Map<String, ValueComparer> map = findOrMakeColumnMap(tableName);
75 final Map<String, ValueComparer> columnMap =
76 columnValueComparerMapBuilder.build();
77
78 map.putAll(columnMap);
79
80 return this;
81 }
82
83
84
85
86
87
88 public TableColumnValueComparerMapBuilder add(final String tableName,
89 final String columnName, final ValueComparer valueComparer)
90 {
91 final Map<String, ValueComparer> map = findOrMakeColumnMap(tableName);
92 map.put(columnName, valueComparer);
93
94 return this;
95 }
96
97
98 public Map<String, Map<String, ValueComparer>> build()
99 {
100 return Collections.unmodifiableMap(comparers);
101 }
102
103 protected Map<String, ValueComparer> findOrMakeColumnMap(
104 final String tableName)
105 {
106 Map<String, ValueComparer> map = comparers.get(tableName);
107 if (map == null)
108 {
109 map = makeColumnToValueComparerMap();
110 comparers.put(tableName, map);
111 }
112
113 return map;
114 }
115
116 protected Map<String, ValueComparer> makeColumnToValueComparerMap()
117 {
118 return new HashMap<>();
119 }
120 }