use of org.jkiss.dbeaver.ext.postgresql.model.PostgreDatabase in project dbeaver by dbeaver.
the class PostgreDatabaseManager method generateAlterActions.
private void generateAlterActions(DBRProgressMonitor monitor, List<DBEPersistAction> actionList, ObjectChangeCommand command) throws DBException {
final PostgreDatabase database = command.getObject();
final String alterPrefix = "ALTER DATABASE " + DBUtils.getQuotedIdentifier(command.getObject()) + " ";
if (command.hasProperty("defaultTablespace")) {
actionList.add(new SQLDatabasePersistAction(alterPrefix + "SET TABLESPACE " + DBUtils.getQuotedIdentifier(database.getDefaultTablespace(monitor))));
}
if (command.hasProperty("defaultEncoding")) {
actionList.add(new SQLDatabasePersistAction(alterPrefix + "SET ENCODING " + DBUtils.getQuotedIdentifier(database.getDefaultEncoding(monitor))));
}
if (command.hasProperty("dBA")) {
actionList.add(new SQLDatabasePersistAction(alterPrefix + "OWNER TO " + DBUtils.getQuotedIdentifier(database.getDBA(monitor))));
}
}
use of org.jkiss.dbeaver.ext.postgresql.model.PostgreDatabase in project dbeaver by dbeaver.
the class PostgreDatabaseManager method addObjectExtraActions.
@Override
protected void addObjectExtraActions(DBRProgressMonitor monitor, DBCExecutionContext executionContext, List<DBEPersistAction> actions, NestedObjectCommand<PostgreDatabase, PropertyHandler> command, Map<String, Object> options) throws DBException {
if (command.hasProperty(DBConstants.PROP_ID_DESCRIPTION)) {
PostgreDatabase database = command.getObject();
actions.add(new SQLDatabasePersistAction("COMMENT ON DATABASE " + DBUtils.getQuotedIdentifier(database) + " IS " + SQLUtils.quoteString(database, CommonUtils.notEmpty(database.getDescription()))));
}
}
use of org.jkiss.dbeaver.ext.postgresql.model.PostgreDatabase in project dbeaver by dbeaver.
the class PostgreDatabaseBackupSettings method loadDatabaseExportInfo.
private PostgreDatabaseBackupInfo loadDatabaseExportInfo(DBRRunnableContext runnableContext, String catalogId, List<String> schemaNames, List<String> tableNames) {
PostgreDatabaseBackupInfo[] exportInfo = new PostgreDatabaseBackupInfo[1];
try {
runnableContext.run(true, true, monitor -> {
try {
PostgreDatabase database = (PostgreDatabase) DBUtils.findObjectById(monitor, getProject(), catalogId);
if (database == null) {
throw new DBException("Database " + catalogId + " not found");
}
List<PostgreSchema> schemas = null;
List<PostgreTableBase> tables = null;
if (!CommonUtils.isEmpty(schemaNames)) {
schemas = new ArrayList<>();
for (String schemaName : schemaNames) {
PostgreSchema schema = database.getSchema(monitor, schemaName);
if (schema != null) {
schemas.add(schema);
} else {
log.debug("Schema '" + schemaName + "' not found in database '" + database.getName() + "'");
}
}
}
if (!CommonUtils.isEmpty(tableNames) && !CommonUtils.isEmpty(schemas)) {
PostgreSchema schema = schemas.get(0);
tables = new ArrayList<>();
for (String tableName : tableNames) {
PostgreTableBase table = schema.getTableCache().getObject(monitor, schema, tableName);
if (table != null) {
tables.add(table);
} else {
log.debug("Table '" + tableName + "' not found in schema '" + schema.getName() + "'");
}
}
}
exportInfo[0] = new PostgreDatabaseBackupInfo(database, schemas, tables);
} catch (Throwable e) {
throw new InvocationTargetException(e);
}
});
} catch (InvocationTargetException e) {
log.error("Error loading objects configuration", e);
} catch (InterruptedException e) {
// Ignore
}
return exportInfo[0];
}
use of org.jkiss.dbeaver.ext.postgresql.model.PostgreDatabase in project dbeaver by dbeaver.
the class PostgreDatabaseBackupSettings method fillExportObjectsFromInput.
public void fillExportObjectsFromInput() {
Map<PostgreDatabase, PostgreDatabaseBackupInfo> objMap = new LinkedHashMap<>();
for (DBSObject object : getDatabaseObjects()) {
PostgreDatabase database = null;
PostgreSchema schema = null;
if (object instanceof PostgreDatabase) {
database = (PostgreDatabase) object;
} else if (object instanceof PostgreSchema) {
database = ((PostgreSchema) object).getDatabase();
schema = (PostgreSchema) object;
} else if (object instanceof PostgreTableBase) {
database = ((PostgreTableBase) object).getDatabase();
schema = ((PostgreTableBase) object).getSchema();
}
if (database == null) {
continue;
}
PostgreDatabaseBackupInfo info = objMap.computeIfAbsent(database, db -> new PostgreDatabaseBackupInfo(db, null, null));
if (schema != null) {
List<PostgreSchema> schemas = info.getSchemas();
if (schemas == null) {
schemas = new ArrayList<>();
info.setSchemas(schemas);
}
if (!schemas.contains(schema)) {
schemas.add(schema);
}
}
if (object instanceof PostgreTableBase) {
List<PostgreTableBase> tables = info.getTables();
if (tables == null) {
tables = new ArrayList<>();
info.setTables(tables);
}
tables.add((PostgreTableBase) object);
}
}
getExportObjects().addAll(objMap.values());
updateDataSourceContainer();
}
use of org.jkiss.dbeaver.ext.postgresql.model.PostgreDatabase in project dbeaver by dbeaver.
the class PostgreDatabaseRestoreSettings method loadSettings.
@Override
public void loadSettings(DBRRunnableContext runnableContext, DBPPreferenceStore store) throws DBException {
super.loadSettings(runnableContext, store);
inputFile = store.getString("pg.restore.inputFile");
cleanFirst = store.getBoolean("pg.restore.cleanFirst");
noOwner = store.getBoolean("pg.restore.noOwner");
if (store instanceof DBPPreferenceMap) {
String catalogId = store.getString("pg.restore.database");
if (!CommonUtils.isEmpty(catalogId)) {
try {
runnableContext.run(true, true, monitor -> {
try {
PostgreDatabase database = (PostgreDatabase) DBUtils.findObjectById(monitor, getProject(), catalogId);
if (database == null) {
throw new DBException("Database " + catalogId + " not found");
}
restoreInfo = new PostgreDatabaseRestoreInfo(database);
} catch (Throwable e) {
throw new InvocationTargetException(e);
}
});
} catch (InvocationTargetException e) {
log.error("Error loading objects configuration", e);
} catch (InterruptedException e) {
// Ignore
}
} else {
for (DBSObject object : getDatabaseObjects()) {
if (object instanceof PostgreDatabase) {
restoreInfo = new PostgreDatabaseRestoreInfo((PostgreDatabase) object);
break;
}
}
}
}
if (restoreInfo == null) {
throw new DBException("Cannot find database for restoring");
}
}
Aggregations