package net.sf.jeasyorm; import java.io.BufferedReader; import java.io.File; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; import java.util.ArrayList; import java.util.Collection; import java.util.ResourceBundle; import org.junit.Before; import org.junit.runners.Parameterized.Parameters; public class AbstractEntityManagerTest { private String name; private String url; private String username; private String password; public AbstractEntityManagerTest(String name, String driver, String url, String username, String password) throws ClassNotFoundException { this.name = name; Class.forName(driver); this.url = url; this.username = username; this.password = password; } protected Connection getConnection() throws SQLException { return DriverManager.getConnection(url, username, password); } protected EntityManager getEntityManager(Connection conn) { return EntityManager.getInstance(name, conn); } @Before public void setUp() throws IOException, SQLException { String directory = "tmp/" + name; if (directory != null && !directory.trim().equals("")) { delete(new File(directory)); } Connection conn = getConnection(); InputStream is = this.getClass().getResourceAsStream(name + ".sql"); BufferedReader br = new BufferedReader(new InputStreamReader(is)); Utils.executeScript(conn, br, true); br.close(); conn.close(); } private void delete(File file) { if (file.isDirectory()) { for (File f : file.listFiles()) delete(f); } file.delete(); } @Parameters public static Collection<Object[]> getParameters() { Collection<Object[]> params = new ArrayList<Object[]>(); addParameters(params, "hsqldb", "org.hsqldb.jdbcDriver"); addParameters(params, "h2", "org.h2.Driver"); addParameters(params, "derby", "org.apache.derby.jdbc.EmbeddedDriver"); addParameters(params, "mysql", "com.mysql.jdbc.Driver"); addParameters(params, "postgresql", "org.postgresql.Driver"); addParameters(params, "oracle", "oracle.jdbc.OracleDriver"); return params; } private static void addParameters(Collection<Object[]> params, String name, String driver) { ResourceBundle bundle = ResourceBundle.getBundle("connection"); try { String url = bundle.getString(name + ".url"); String username = bundle.getString(name + ".username"); String password = bundle.getString(name + ".password"); params.add(new Object[] { name, driver, url, username, password }); } catch (Exception e) { // ignore } } }