private void doCompileObject(DBSchemaObject object, DBContentType contentType, CompileType compileType, boolean silently) {
object.getStatus().set(contentType, DBObjectStatus.COMPILING, true);
Connection connection = null;
DatabaseCompilerManager compilerManager = DatabaseCompilerManager.getInstance(getProject());
ConnectionHandler connectionHandler = object.getConnectionHandler();
try {
connection = connectionHandler.getPoolConnection();
DatabaseMetadataInterface metadataInterface = connectionHandler.getInterfaceProvider().getMetadataInterface();
boolean isDebug = compileType == CompileType.DEBUG;
if (compileType == CompileType.KEEP) {
isDebug = object.getStatus().is(DBObjectStatus.DEBUG);
}
if (contentType == DBContentType.CODE_SPEC || contentType == DBContentType.CODE) {
metadataInterface.compileObject(
object.getSchema().getName(),
object.getName(),
object.getTypeName().toUpperCase(),
isDebug,
connection);
}
else if (contentType == DBContentType.CODE_BODY){
metadataInterface.compileObjectBody(
object.getSchema().getName(),
object.getName(),
object.getTypeName().toUpperCase(),
isDebug,
connection);
} else if (contentType == DBContentType.CODE_SPEC_AND_BODY) {
metadataInterface.compileObject(
object.getSchema().getName(),
object.getName(),
object.getTypeName().toUpperCase(),
isDebug,
connection);
metadataInterface.compileObjectBody(
object.getSchema().getName(),
object.getName(),
object.getTypeName().toUpperCase(),
isDebug,
connection);
}
if (!silently) compilerManager.createCompilerResult(object);
} catch (SQLException e) {
if (!silently) compilerManager.createErrorCompilerResult(object, e);
} finally{
connectionHandler.freePoolConnection(connection);
if (!silently) connectionHandler.getObjectBundle().refreshObjectsStatus();
object.getStatus().set(contentType, DBObjectStatus.COMPILING, false);
}
}