package com.vaadin.v7.data.util.sqlcontainer;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import org.junit.Assert;
import com.vaadin.v7.data.util.sqlcontainer.SQLTestsConstants.DB;
import com.vaadin.v7.data.util.sqlcontainer.connection.JDBCConnectionPool;
public class DataGenerator {
public static void addPeopleToDatabase(JDBCConnectionPool connectionPool)
throws SQLException {
Connection conn = connectionPool.reserveConnection();
Statement statement = conn.createStatement();
try {
statement.execute("drop table PEOPLE");
if (SQLTestsConstants.db == DB.ORACLE) {
statement.execute("drop sequence people_seq");
}
} catch (SQLException e) {
// Will fail if table doesn't exist, which is OK.
conn.rollback();
}
statement.execute(SQLTestsConstants.peopleFirst);
if (SQLTestsConstants.peopleSecond != null) {
statement.execute(SQLTestsConstants.peopleSecond);
}
if (SQLTestsConstants.db == DB.ORACLE) {
statement.execute(SQLTestsConstants.peopleThird);
}
if (SQLTestsConstants.db == DB.MSSQL) {
statement.executeUpdate("insert into people values('Ville', '23')");
statement.executeUpdate("insert into people values('Kalle', '7')");
statement.executeUpdate("insert into people values('Pelle', '18')");
statement.executeUpdate("insert into people values('Börje', '64')");
} else {
statement.executeUpdate(
"insert into people values(default, 'Ville', '23')");
statement.executeUpdate(
"insert into people values(default, 'Kalle', '7')");
statement.executeUpdate(
"insert into people values(default, 'Pelle', '18')");
statement.executeUpdate(
"insert into people values(default, 'Börje', '64')");
}
statement.close();
statement = conn.createStatement();
ResultSet rs = statement.executeQuery("select * from PEOPLE");
Assert.assertTrue(rs.next());
statement.close();
conn.commit();
connectionPool.releaseConnection(conn);
}
public static void addFiveThousandPeople(JDBCConnectionPool connectionPool)
throws SQLException {
Connection conn = connectionPool.reserveConnection();
Statement statement = conn.createStatement();
for (int i = 4; i < 5000; i++) {
if (SQLTestsConstants.db == DB.MSSQL) {
statement.executeUpdate("insert into people values('Person " + i
+ "', '" + i % 99 + "')");
} else {
statement.executeUpdate(
"insert into people values(default, 'Person " + i
+ "', '" + i % 99 + "')");
}
}
statement.close();
conn.commit();
connectionPool.releaseConnection(conn);
}
public static void addVersionedData(JDBCConnectionPool connectionPool)
throws SQLException {
Connection conn = connectionPool.reserveConnection();
Statement statement = conn.createStatement();
try {
statement.execute("DROP TABLE VERSIONED");
if (SQLTestsConstants.db == DB.ORACLE) {
statement.execute("drop sequence versioned_seq");
statement.execute("drop sequence versioned_version");
}
} catch (SQLException e) {
// Will fail if table doesn't exist, which is OK.
conn.rollback();
}
for (String stmtString : SQLTestsConstants.versionStatements) {
statement.execute(stmtString);
}
if (SQLTestsConstants.db == DB.MSSQL) {
statement.executeUpdate(
"insert into VERSIONED values('Junk', default)");
} else {
statement.executeUpdate(
"insert into VERSIONED values(default, 'Junk', default)");
}
statement.close();
statement = conn.createStatement();
ResultSet rs = statement.executeQuery("select * from VERSIONED");
Assert.assertTrue(rs.next());
statement.close();
conn.commit();
connectionPool.releaseConnection(conn);
}
public static void createGarbage(JDBCConnectionPool connectionPool)
throws SQLException {
Connection conn = connectionPool.reserveConnection();
Statement statement = conn.createStatement();
try {
statement.execute("drop table GARBAGE");
if (SQLTestsConstants.db == DB.ORACLE) {
statement.execute("drop sequence garbage_seq");
}
} catch (SQLException e) {
// Will fail if table doesn't exist, which is OK.
conn.rollback();
}
statement.execute(SQLTestsConstants.createGarbage);
if (SQLTestsConstants.db == DB.ORACLE) {
statement.execute(SQLTestsConstants.createGarbageSecond);
statement.execute(SQLTestsConstants.createGarbageThird);
}
conn.commit();
connectionPool.releaseConnection(conn);
}
}