1 package db;
2
3 import org.dbunit.dataset.Column;
4 import org.dbunit.dataset.DataSetException;
5 import org.dbunit.dataset.DefaultDataSet;
6 import org.dbunit.dataset.DefaultTable;
7 import org.dbunit.dataset.datatype.DataType;
8
9 import fit.Fixture;
10 import fit.Parse;
11
12 public class Table extends Fixture {
13
14 private String tableName;
15
16 private DefaultTable table;
17
18 private boolean columnBinding = false;
19
20 private int columnSize;
21
22 @Override
23 public void doTable(Parse parse) {
24 super.doTable(parse);
25 DefaultDataSet dataSet = DatabaseContext.getDataSet();
26 dataSet.addTable(table);
27 }
28
29 private void bindColumn(Parse cells) {
30 columnSize = cells.size();
31 Column[] columns = new Column[columnSize];
32 for (int index = 0; index < cells.size(); index++) {
33 Parse cell = cells.at(index);
34 columns[index] = new Column(cell.text(), DataType.UNKNOWN);
35 }
36 table = new DefaultTable(tableName, columns);
37 }
38
39 public void doCells(Parse cells) {
40 if(!columnBinding){
41 if(tableName == null)
42 {
43 tableName = cells.more.text();
44 table = new DefaultTable(tableName);
45 }
46 else
47 {
48 bindColumn(cells);
49 columnBinding = true;
50 }
51 }
52 else{
53 Object[] row = new Object[columnSize];
54 for (int index = 0; index < columnSize; index++) {
55 String text = cells.at(index).text();
56 if(text.equals("[NULL]")){
57 row[index] = null;
58 }
59 else
60 {
61 row[index] = text;
62 }
63 }
64 try {
65 table.addRow(row);
66 } catch (DataSetException e) {
67 exception(cells, e);
68 }
69 }
70 }
71
72 }