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 }