package org.jabref.shared; import java.sql.SQLException; import java.util.Collection; import java.util.HashSet; import java.util.Set; import org.jabref.shared.exception.InvalidDBMSConnectionPropertiesException; /** * This class provides helping methods for database tests. * Furthermore it determines database systems which are ready to be used for tests. */ public class TestManager { public static Collection<DBMSType> getDBMSTypeTestParameter() { Set<DBMSType> dbmsTypes = new HashSet<>(); for (DBMSType dbmsType : DBMSType.values()) { try { TestConnector.getTestDBMSConnection(dbmsType); dbmsTypes.add(dbmsType); } catch (SQLException | InvalidDBMSConnectionPropertiesException e) { // skip parameter } } return dbmsTypes; } public static void clearTables(DBMSConnection dbmsConnection) throws SQLException { DBMSType dbmsType = dbmsConnection.getProperties().getType(); if (dbmsType == DBMSType.MYSQL) { dbmsConnection.getConnection().createStatement().executeUpdate("DROP TABLE IF EXISTS `FIELD`"); dbmsConnection.getConnection().createStatement().executeUpdate("DROP TABLE IF EXISTS `ENTRY`"); dbmsConnection.getConnection().createStatement().executeUpdate("DROP TABLE IF EXISTS `METADATA`"); } else if (dbmsType == DBMSType.POSTGRESQL) { dbmsConnection.getConnection().createStatement().executeUpdate("DROP TABLE IF EXISTS \"FIELD\""); dbmsConnection.getConnection().createStatement().executeUpdate("DROP TABLE IF EXISTS \"ENTRY\""); dbmsConnection.getConnection().createStatement().executeUpdate("DROP TABLE IF EXISTS \"METADATA\""); } else if (dbmsType == DBMSType.ORACLE) { dbmsConnection.getConnection().createStatement() .executeUpdate("BEGIN\n" + "EXECUTE IMMEDIATE 'DROP TABLE \"FIELD\"';\n" + "EXECUTE IMMEDIATE 'DROP TABLE \"ENTRY\"';\n" + "EXECUTE IMMEDIATE 'DROP TABLE \"METADATA\"';\n" + "EXECUTE IMMEDIATE 'DROP SEQUENCE \"ENTRY_SEQ\"';\n" + "EXCEPTION\n" + "WHEN OTHERS THEN\n" + "IF SQLCODE != -942 THEN\n" + "RAISE;\n" + "END IF;\n" + "END;"); } } }