querydsl/querydsl-sql/src/test/java/com/mysema/query/sql/DerbyTest.java
Timo Westkämper b0c3524af8
2009-05-22 12:18:43 +00:00

112 lines
4.0 KiB
Java

/*
* Copyright (c) 2009 Mysema Ltd.
* All rights reserved.
*
*/
package com.mysema.query.sql;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.sql.Statement;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.runner.RunWith;
import com.mysema.query.FilteringTestRunner;
import com.mysema.query.Label;
@RunWith(FilteringTestRunner.class)
@Label("derby")
public class DerbyTest extends SqlQueryTest {
@BeforeClass
public static void setUp() throws Exception{
String sql;
Connection c = getDerbyConnection();
Statement stmt = c.createStatement();
connHolder.set(c);
stmtHolder.set(stmt);
// survey
// stmt.execute("drop table survey if exists");
safeExecute(stmt, "drop table survey");
stmt.execute("create table survey (id int,name varchar(30))");
stmt.execute("insert into survey values (1, 'Hello World')");
// test
// stmt.execute("drop table test if exists");
safeExecute(stmt, "drop table test");
stmt.execute("create table test(name varchar(255))");
sql = "insert into test values(?)";
PreparedStatement pstmt = c.prepareStatement(sql);
for (int i = 0; i < 10000; i++) {
pstmt.setString(1, "name" + i);
pstmt.addBatch();
}
pstmt.executeBatch();
// employee
// stmt.execute("drop table employee if exists");
safeExecute(stmt, "drop table employee");
stmt.execute("create table employee(id int, "
+ "firstname VARCHAR(50), " + "lastname VARCHAR(50), "
+ "salary decimal(10, 2), " + "superior_id int, "
+ "CONSTRAINT PK_employee PRIMARY KEY (id), "
+ "CONSTRAINT FK_superior FOREIGN KEY (superior_id) "
+ "REFERENCES employee(ID))");
addEmployee(1, "Mike", "Smith", 160000, -1);
addEmployee(2, "Mary", "Smith", 140000, -1);
// Employee under Mike
addEmployee(10, "Joe", "Divis", 50000, 1);
addEmployee(11, "Peter", "Mason", 45000, 1);
addEmployee(12, "Steve", "Johnson", 40000, 1);
addEmployee(13, "Jim", "Hood", 35000, 1);
// Employee under Mike
addEmployee(20, "Jennifer", "Divis", 60000, 2);
addEmployee(21, "Helen", "Mason", 50000, 2);
addEmployee(22, "Daisy", "Johnson", 40000, 2);
addEmployee(23, "Barbara", "Hood", 30000, 2);
// date_test and time_test
// stmt.execute("drop table time_test if exists");
// stmt.execute("drop table date_test if exists");
safeExecute(stmt, "drop table time_test");
safeExecute(stmt, "drop table date_test");
stmt.execute("create table time_test(time_test time)");
stmt.execute("create table date_test(date_test date)");
}
private static void safeExecute(Statement stmt, String sql){
try {
stmt.execute(sql);
} catch (SQLException e) {
// do nothing
}
}
@Before
public void setUpForTest(){
dialect = Dialect.forDerby().newLineToSingleSpace();
}
private static void addEmployee(int id, String firstName, String lastName, double salary,
int superiorId) throws Exception {
stmtHolder.get().execute("insert into employee values(" + id + ", '" + firstName
+ "', '" + lastName + "', " + salary + ", "
+ (superiorId <= 0 ? "null" : ("" + superiorId)) + ")");
}
private static Connection getDerbyConnection() throws Exception{
Class.forName("org.apache.derby.jdbc.EmbeddedDriver");
String url = "jdbc:derby:demoDB;create=true";
return DriverManager.getConnection(url, "", "");
}
}