@Override public DbSchemaBuilder createSchema() { return new DbSchemaBuilder(this); }
@Override public void execute(Connection conn) { JdbcTemplate jt = JuConnUtils.asJdbcTemplate(conn); jt.execute(String.format("CREATE SCHEMA `%s`", builder.getName())); // Create a user as well if specified if (!StringUtils.isEmpty(builder.getUserName())) { jt.execute(String.format("CREATE USER `%s` identified by '%s'", builder.getUserName(), builder.getPassword())); // Grant all permissions for the created Schema to the user jt.execute(String.format("GRANT ALL ON `%s`.* TO `%s`", builder.getName(), builder.getUserName())); } } });
.name(schemaName) .user(userName) // Ignored for DBs that don't have users .password(schemaPassword) .jtaRecoveryGrants(jtaRecoveryGrants) .create();
@Override public void execute(Connection conn) { JdbcTemplate jt = JuConnUtils.asJdbcTemplate(conn); // Create user String tableSpace = "USERS"; XString xs = new XString(); xs.addFormatted("CREATE USER %s IDENTIFIED BY %s", builder.getName(), builder.getPassword()); xs.addFormatted(" DEFAULT TABLESPACE %s", tableSpace); xs.addFormatted(" QUOTA UNLIMITED ON %s", tableSpace); jt.execute(xs.toString()); // Grants if (builder.isDefaultGrants()) { jt.execute(String.format("GRANT CREATE SESSION TO %s", builder.getName())); jt.execute(String.format("GRANT CREATE TABLE TO %s", builder.getName())); jt.execute(String.format("GRANT CREATE VIEW TO %s", builder.getName())); jt.execute(String.format("GRANT CREATE ANY TRIGGER TO %s", builder.getName())); jt.execute(String.format("GRANT CREATE ANY PROCEDURE TO %s", builder.getName())); jt.execute(String.format("GRANT CREATE SEQUENCE TO %s", builder.getName())); jt.execute(String.format("GRANT CREATE SYNONYM TO %s", builder.getName())); } // JTA recovery grants // (see http://docs.codehaus.org/display/BTM/FAQ#FAQ-WhyisOraclethrowingaXAExceptionduringinitializationofmydatasource?) if (builder.isJtaRecoveryGrants()) { jt.execute(String.format("GRANT SELECT ON SYS.DBA_PENDING_TRANSACTIONS TO %s", builder.getName())); jt.execute(String.format("GRANT SELECT ON SYS.PENDING_TRANS$ TO %s", builder.getName())); jt.execute(String.format("GRANT SELECT ON SYS.DBA_2PC_PENDING TO %s", builder.getName())); jt.execute(String.format("GRANT EXECUTE ON SYS.DBMS_SYSTEM TO %s", builder.getName())); } } });
@Override public void createSchema(final DbSchemaBuilder builder) { // Make sure we have all the infos we need from the builder AssertUtil.assertNotEmpty("Schema name is required", builder.getName()); AssertUtil.assertNotEmpty("Schema password is required", builder.getPassword()); this.connUtil.doWork(new DbWork() { @Override public void execute(Connection conn) { JdbcTemplate jt = JuConnUtils.asJdbcTemplate(conn); jt.execute(String.format("CREATE SCHEMA `%s`", builder.getName())); // Create a user as well if specified if (!StringUtils.isEmpty(builder.getUserName())) { jt.execute(String.format("CREATE USER `%s` identified by '%s'", builder.getUserName(), builder.getPassword())); // Grant all permissions for the created Schema to the user jt.execute(String.format("GRANT ALL ON `%s`.* TO `%s`", builder.getName(), builder.getUserName())); } } }); }
@Override public void createSchema(final DbSchemaBuilder builder) { AssertUtil.assertNotEmpty("Schema name is required", builder.getName()); AssertUtil.assertNotEmpty("Schema password is required", builder.getPassword());