1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 package org.dbunit.dataset;
23
24 import java.util.ArrayList;
25 import java.util.List;
26
27 import org.slf4j.Logger;
28 import org.slf4j.LoggerFactory;
29
30
31
32
33
34
35
36
37 public class DefaultTable extends AbstractTable
38 {
39
40
41
42
43 private static final Logger logger = LoggerFactory.getLogger(DefaultTable.class);
44
45 private final ITableMetaData _metaData;
46 private final List _rowList;
47
48
49
50
51
52 public DefaultTable(ITableMetaData metaData, List list)
53 {
54 _metaData = metaData;
55 _rowList = list;
56 }
57
58
59
60
61 public DefaultTable(String tableName)
62 {
63 _metaData = new DefaultTableMetaData(tableName, new Column[0]);
64 _rowList = new ArrayList();
65 }
66
67
68
69
70
71 public DefaultTable(String tableName, Column[] columns, List list)
72 {
73 _metaData = new DefaultTableMetaData(tableName, columns);
74 _rowList = list;
75 }
76
77
78
79
80 public DefaultTable(String tableName, Column[] columns)
81 {
82 _metaData = new DefaultTableMetaData(tableName, columns);
83 _rowList = new ArrayList();
84 }
85
86 public DefaultTable(ITableMetaData metaData)
87 {
88 _metaData = metaData;
89 _rowList = new ArrayList();
90 }
91
92
93
94
95 public void addRow() throws DataSetException
96 {
97 logger.debug("addRow() - start");
98
99 int columnCount = _metaData.getColumns().length;
100 _rowList.add(new Object[columnCount]);
101 }
102
103
104
105
106
107
108
109 public void addRow(Object[] values) throws DataSetException
110 {
111 logger.debug("addRow(values={}) - start", values);
112
113 _rowList.add(values);
114 }
115
116
117
118
119
120 public void addTableRows(ITable table) throws DataSetException
121 {
122 logger.debug("addTableRows(table={}) - start", table);
123
124 try
125 {
126 Column[] columns = _metaData.getColumns();
127 if (columns.length <= 0)
128 {
129 logger.warn("The table '" + table + "' does not have any columns. Cannot add table rows. This should never happen...");
130 return;
131 }
132
133 for (int i = 0; ; i++)
134 {
135 Object[] rowValues = new Object[columns.length];
136 for (int j = 0; j < columns.length; j++)
137 {
138 Column column = columns[j];
139 rowValues[j] = table.getValue(i, column.getColumnName());
140 }
141 _rowList.add(rowValues);
142 }
143 }
144 catch(RowOutOfBoundsException e)
145 {
146
147
148 }
149 }
150
151
152
153
154
155
156
157
158
159
160
161 public Object setValue(int row, String column, Object value)
162 throws RowOutOfBoundsException, NoSuchColumnException, DataSetException
163 {
164 if(logger.isDebugEnabled())
165 logger.debug("setValue(row={}, column={}, value={}) - start", row, column, value);
166
167 assertValidRowIndex(row);
168
169 Object[] rowValues = (Object[])_rowList.get(row);
170 int columnIndex = getColumnIndex(column);
171 Object oldValue = rowValues[columnIndex];
172 rowValues[columnIndex] = value;
173 return oldValue;
174 }
175
176
177
178
179 public ITableMetaData getTableMetaData()
180 {
181 return _metaData;
182 }
183
184 public int getRowCount()
185 {
186 return _rowList.size();
187 }
188
189 public Object getValue(int row, String column) throws DataSetException
190 {
191 if(logger.isDebugEnabled())
192 logger.debug("getValue(row={}, column={}) - start", Integer.toString(row), column);
193
194 assertValidRowIndex(row);
195
196 Object[] rowValues = (Object[])_rowList.get(row);
197 return rowValues[getColumnIndex(column)];
198 }
199
200 public String toString()
201 {
202 final StringBuilder sb = new StringBuilder();
203 sb.append(getClass().getName()).append("[");
204 sb.append("_metaData=").append(this._metaData == null ? "null" : this._metaData.toString());
205 sb.append(", _rowList.size()=").append(this._rowList == null ? "null" : ""+this._rowList.size());
206 sb.append("]");
207 return sb.toString();
208 }
209 }
210
211
212
213
214