Example usage for org.hibernate.id.enhanced SequenceStructure sqlDropStrings

List of usage examples for org.hibernate.id.enhanced SequenceStructure sqlDropStrings

Introduction

In this page you can find the example usage for org.hibernate.id.enhanced SequenceStructure sqlDropStrings.

Prototype

@Override
    public String[] sqlDropStrings(Dialect dialect) throws HibernateException 

Source Link

Usage

From source file:com.opengamma.util.db.management.AbstractDbManagement.java

License:Open Source License

@Override
public void dropSchema(String catalog, String schema) {
    // Does not handle triggers or stored procedures yet
    ArrayList<String> script = new ArrayList<String>();

    Connection conn = null;//from   w  ww. j a  v a  2s .  com
    try {
        if (!getCatalogCreationStrategy().catalogExists(catalog)) {
            System.out.println("Catalog " + catalog + " does not exist");
            return; // nothing to drop
        }

        conn = connect(catalog);

        if (schema != null) {
            Statement statement = conn.createStatement();
            Collection<String> schemas = getAllSchemas(catalog, statement);
            statement.close();

            if (!schemas.contains(schema)) {
                System.out.println("Schema " + schema + " does not exist");
                return; // nothing to drop
            }
        }

        setActiveSchema(conn, schema);
        Statement statement = conn.createStatement();

        // Drop constraints SQL
        if (getHibernateDialect().dropConstraints()) {
            for (Pair<String, String> constraint : getAllForeignKeyConstraints(catalog, schema, statement)) {
                String name = constraint.getFirst();
                String table = constraint.getSecond();
                ForeignKey fk = new ForeignKey();
                fk.setName(name);
                fk.setTable(new Table(table));

                String dropConstraintSql = fk.sqlDropString(getHibernateDialect(), null, schema);
                script.add(dropConstraintSql);
            }
        }

        // Drop views SQL
        for (String name : getAllViews(catalog, schema, statement)) {
            Table table = new Table(name);
            String dropViewStr = table.sqlDropString(getHibernateDialect(), null, schema);
            dropViewStr = dropViewStr.replaceAll("drop table", "drop view");
            script.add(dropViewStr);
        }

        // Drop tables SQL
        for (String name : getAllTables(catalog, schema, statement)) {
            Table table = new Table(name);
            String dropTableStr = table.sqlDropString(getHibernateDialect(), null, schema);
            script.add(dropTableStr);
        }

        // Now execute it all
        statement.close();
        statement = conn.createStatement();
        for (String sql : script) {
            //System.out.println("Executing \"" + sql + "\"");
            statement.executeUpdate(sql);
        }

        statement.close();
        statement = conn.createStatement();

        // Drop sequences SQL
        script.clear();
        for (String name : getAllSequences(catalog, schema, statement)) {
            final SequenceStructure sequenceStructure = new SequenceStructure(getHibernateDialect(), name, 0, 1,
                    Long.class);
            String[] dropSequenceStrings = sequenceStructure.sqlDropStrings(getHibernateDialect());
            script.addAll(Arrays.asList(dropSequenceStrings));
        }

        //now execute drop sequence
        statement.close();
        statement = conn.createStatement();
        for (String sql : script) {
            //System.out.println("Executing \"" + sql + "\"");
            statement.executeUpdate(sql);
        }

        statement.close();

    } catch (SQLException e) {
        throw new OpenGammaRuntimeException("Failed to drop schema", e);
    } finally {
        try {
            if (conn != null) {
                conn.close();
            }
        } catch (SQLException e) {
        }
    }
}