1 package db;
2
3 import java.sql.Connection;
4 import java.sql.DriverManager;
5 import java.sql.SQLException;
6
7 import org.dbunit.DatabaseUnitException;
8 import org.dbunit.database.DatabaseConnection;
9 import org.dbunit.database.IDatabaseConnection;
10 import org.dbunit.dataset.DefaultDataSet;
11 import org.dbunit.operation.DatabaseOperation;
12
13 import fit.Fixture;
14
15 public class DatabaseContext extends Fixture {
16
17 private IDatabaseConnection databaseConnection;
18
19 private static DefaultDataSet dataSet;
20
21 public DatabaseContext()
22 {
23 dataSet = new DefaultDataSet();
24 }
25
26 public static DefaultDataSet getDataSet() {
27 return dataSet;
28 }
29
30 private static String driverName;
31
32 private static String url;
33
34 private static String user;
35
36 private static String password;
37
38 public void driverName(String name)
39 {
40 this.driverName = name;
41 }
42
43 public void url(String url)
44 {
45 this.url = url;
46 }
47
48 public void user(String user)
49 {
50 this.user = user;
51 }
52
53 public void password(String password)
54 {
55 this.password = password;
56 }
57
58 public static Connection getConnection() throws ClassNotFoundException, SQLException
59 {
60 Class.forName(driverName);
61 Connection conn = DriverManager.getConnection(url, user, password);
62 return conn;
63 }
64
65 public static DatabaseConnection createDatabaseConnection() throws ClassNotFoundException, SQLException
66 {
67 return new DatabaseConnection(getConnection());
68 }
69
70 protected void connect() throws ClassNotFoundException, SQLException
71 {
72 databaseConnection = createDatabaseConnection();
73 }
74
75 public void truncate() throws Exception {
76 connect();
77 DatabaseOperation.TRUNCATE_TABLE.execute(databaseConnection, dataSet);
78 disconnect();
79 }
80
81 protected void disconnect() throws SQLException
82 {
83 databaseConnection.close();
84 }
85
86
87 public void insert() throws DatabaseUnitException, SQLException
88 {
89 DatabaseOperation.INSERT.execute(databaseConnection, dataSet);
90 }
91
92 public void cleanInsert() throws DatabaseUnitException, SQLException, ClassNotFoundException
93 {
94 connect();
95 DatabaseOperation.CLEAN_INSERT.execute(databaseConnection, dataSet);
96 disconnect();
97 }
98
99 public void resetDataSet()
100 {
101 dataSet = new DefaultDataSet();
102 }
103
104 }