@Override
public void execute(Connection conn) {
JdbcTemplate jt = JuConnUtils.asJdbcTemplate(conn);
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());
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()));
}
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()));
}
}
});