package dbmigrate.executor; import java.sql.Connection; import java.sql.SQLException; import java.util.ArrayList; import java.util.List; import dbmigrate.model.db.Column; import dbmigrate.model.db.DbConnector; import dbmigrate.model.db.IColumn; import dbmigrate.model.db.Table; import dbmigrate.model.db.TypeEnum; import dbmigrate.model.operation.CreateTableOperationDescriptor; import dbmigrate.model.operation.DropColumnOperationDescriptor; import dbmigrate.model.operation.DropTableOperationDescriptor; import junit.framework.TestCase; public class CreateDropTablePostgres extends TestCase{ private Connection connection = null; private String tableName = "TabelaKamilaIKonrada"; private String columnName = "KolumnaKamilaIKonrada"; @Override public void setUp() { try { connection = DbConnector.instance().getConnection("postgresql", "149.156.205.250:13833", "dbmigrate", "dbmigrate", "dbmigrate"); } catch(Exception exception) { fail(exception.getMessage()); } } public void testAddTable() { Column column = new Column(); column.setName(columnName); column.setType(TypeEnum.INT); Table table = new Table(); table.setName(tableName); List<IColumn> columns = new ArrayList<IColumn>(); columns.add(column); table.setColumns(columns); CreateTableOperationDescriptor cto = new CreateTableOperationDescriptor(); cto.setTable(table); CreateTableExecutor cte = new CreateTableExecutor(null); cte.setConnection(connection); System.out.println("Stworzony SQL:" + cte.createSql(cto)); try { cte.execute(cto); System.out.println("IF EXISTS: " + connection.createStatement().execute(checkIfColumnExist(tableName, columnName))); } catch (Exception e) { e.printStackTrace(); fail(); } finally { DropTableOperationDescriptor descriptor = new DropTableOperationDescriptor(table); try { (new DropTableExecutor(connection)).execute(descriptor); } catch (SQLException e) { e.printStackTrace(); } } } private String checkIfColumnExist(String tableName, String columnName){ return String.format("SELECT attname FROM pg_attribute WHERE attrelid = (SELECT oid FROM pg_class WHERE relname = '%s') AND attname = '%s';", tableName, columnName); } }