提交 b627c8f5 编写于 作者: S Serge Rider

#7501 Task configuration loading error handle improve

上级 1ce76b91
package org.jkiss.dbeaver.ext.mysql.tasks;
import org.jkiss.code.NotNull;
import org.jkiss.dbeaver.DBException;
import org.jkiss.dbeaver.Log;
import org.jkiss.dbeaver.ext.mysql.MySQLConstants;
import org.jkiss.dbeaver.ext.mysql.model.MySQLTableBase;
......@@ -30,9 +31,10 @@ public class MySQLDatabaseExportHandler extends MySQLNativeToolHandler<MySQLExpo
}
@Override
protected MySQLExportSettings createTaskSettings(DBRRunnableContext context, DBTTask task) {
protected MySQLExportSettings createTaskSettings(DBRRunnableContext context, DBTTask task) throws DBException {
MySQLExportSettings settings = new MySQLExportSettings();
settings.loadSettings(context, new TaskPreferenceStore(task));
return settings;
}
......
......@@ -183,7 +183,7 @@ public class MySQLExportSettings extends AbstractImportExportSettings<DBSObject>
}
@Override
public void loadSettings(DBRRunnableContext runnableContext, DBPPreferenceStore store) {
public void loadSettings(DBRRunnableContext runnableContext, DBPPreferenceStore store) throws DBException {
super.loadSettings(runnableContext, store);
noCreateStatements = CommonUtils.getBoolean(store.getString("MySQL.export.noCreateStatements"), false);
addDropStatements = CommonUtils.getBoolean(store.getString("MySQL.export.addDropStatements"), true);
......
package org.jkiss.dbeaver.ext.mysql.tasks;
import org.jkiss.dbeaver.DBException;
import org.jkiss.dbeaver.Log;
import org.jkiss.dbeaver.ext.mysql.MySQLConstants;
import org.jkiss.dbeaver.ext.mysql.model.MySQLCatalog;
......@@ -22,11 +23,12 @@ public class MySQLScriptExecuteHandler extends MySQLNativeToolHandler<MySQLScrip
}
@Override
protected MySQLScriptExecuteSettings createTaskSettings(DBRRunnableContext context, DBTTask task) {
protected MySQLScriptExecuteSettings createTaskSettings(DBRRunnableContext context, DBTTask task) throws DBException {
MySQLScriptExecuteSettings settings = new MySQLScriptExecuteSettings();
boolean isImport = task.getType().getId().equals(MySQLTasks.TASK_DATABASE_RESTORE);
settings.setImport(isImport);
settings.loadSettings(context, new TaskPreferenceStore(task));
return settings;
}
......
package org.jkiss.dbeaver.ext.oracle.tasks;
import org.jkiss.dbeaver.DBException;
import org.jkiss.dbeaver.Log;
import org.jkiss.dbeaver.ext.oracle.model.OracleConstants;
import org.jkiss.dbeaver.ext.oracle.model.OracleDataSource;
......@@ -28,9 +29,10 @@ public class OracleScriptExecuteHandler extends AbstractNativeToolHandler<Oracle
}
@Override
protected OracleScriptExecuteSettings createTaskSettings(DBRRunnableContext context, DBTTask task) {
protected OracleScriptExecuteSettings createTaskSettings(DBRRunnableContext context, DBTTask task) throws DBException {
OracleScriptExecuteSettings settings = new OracleScriptExecuteSettings();
settings.loadSettings(context, new TaskPreferenceStore(task));
return settings;
}
......
......@@ -17,6 +17,7 @@
*/
package org.jkiss.dbeaver.ext.oracle.tasks;
import org.jkiss.dbeaver.DBException;
import org.jkiss.dbeaver.Log;
import org.jkiss.dbeaver.ext.oracle.oci.OCIUtils;
import org.jkiss.dbeaver.model.connection.DBPNativeClientLocation;
......@@ -35,7 +36,7 @@ public class OracleScriptExecuteSettings extends AbstractScriptExecuteSettings<D
}
@Override
public void loadSettings(DBRRunnableContext runnableContext, DBPPreferenceStore store) {
public void loadSettings(DBRRunnableContext runnableContext, DBPPreferenceStore store) throws DBException {
super.loadSettings(runnableContext, store);
}
......
......@@ -17,6 +17,7 @@
*/
package org.jkiss.dbeaver.ext.postgresql.tasks;
import org.jkiss.dbeaver.DBException;
import org.jkiss.dbeaver.model.preferences.DBPPreferenceStore;
import org.jkiss.dbeaver.model.runtime.DBRRunnableContext;
import org.jkiss.dbeaver.model.struct.DBSObject;
......@@ -58,7 +59,7 @@ public class PostgreBackupRestoreSettings extends AbstractImportExportSettings<D
}
@Override
public void loadSettings(DBRRunnableContext runnableContext, DBPPreferenceStore store) {
public void loadSettings(DBRRunnableContext runnableContext, DBPPreferenceStore store) throws DBException {
super.loadSettings(runnableContext, store);
this.format = CommonUtils.valueOf(ExportFormat.class, store.getString("pg.format"), ExportFormat.CUSTOM);
......
package org.jkiss.dbeaver.ext.postgresql.tasks;
import org.jkiss.dbeaver.DBException;
import org.jkiss.dbeaver.Log;
import org.jkiss.dbeaver.ext.postgresql.model.PostgreSchema;
import org.jkiss.dbeaver.ext.postgresql.model.PostgreTableBase;
......@@ -28,9 +29,10 @@ public class PostgreDatabaseBackupHandler extends PostgreNativeToolHandler<Postg
}
@Override
protected PostgreDatabaseBackupSettings createTaskSettings(DBRRunnableContext context, DBTTask task) {
protected PostgreDatabaseBackupSettings createTaskSettings(DBRRunnableContext context, DBTTask task) throws DBException {
PostgreDatabaseBackupSettings settings = new PostgreDatabaseBackupSettings();
settings.loadSettings(context, new TaskPreferenceStore(task));
return settings;
}
......
......@@ -145,7 +145,7 @@ public class PostgreDatabaseBackupSettings extends PostgreBackupRestoreSettings
}
@Override
public void loadSettings(DBRRunnableContext runnableContext, DBPPreferenceStore store) {
public void loadSettings(DBRRunnableContext runnableContext, DBPPreferenceStore store) throws DBException {
super.loadSettings(runnableContext, store);
compression = store.getString("pg.export.compression");
......
package org.jkiss.dbeaver.ext.postgresql.tasks;
import org.jkiss.dbeaver.DBException;
import org.jkiss.dbeaver.Log;
import org.jkiss.dbeaver.model.runtime.DBRProgressMonitor;
import org.jkiss.dbeaver.model.runtime.DBRRunnableContext;
......@@ -22,9 +23,10 @@ public class PostgreDatabaseRestoreHandler extends PostgreNativeToolHandler<Post
}
@Override
protected PostgreDatabaseRestoreSettings createTaskSettings(DBRRunnableContext context, DBTTask task) {
protected PostgreDatabaseRestoreSettings createTaskSettings(DBRRunnableContext context, DBTTask task) throws DBException {
PostgreDatabaseRestoreSettings settings = new PostgreDatabaseRestoreSettings();
settings.loadSettings(context, new TaskPreferenceStore(task));
return settings;
}
......
......@@ -61,7 +61,7 @@ public class PostgreDatabaseRestoreSettings extends PostgreBackupRestoreSettings
}
@Override
public void loadSettings(DBRRunnableContext runnableContext, DBPPreferenceStore store) {
public void loadSettings(DBRRunnableContext runnableContext, DBPPreferenceStore store) throws DBException {
super.loadSettings(runnableContext, store);
inputFile = store.getString("pg.restore.inputFile");
......
package org.jkiss.dbeaver.ext.postgresql.tasks;
import org.jkiss.dbeaver.DBException;
import org.jkiss.dbeaver.Log;
import org.jkiss.dbeaver.ext.postgresql.model.PostgreDatabase;
import org.jkiss.dbeaver.model.runtime.DBRProgressMonitor;
......@@ -23,9 +24,10 @@ public class PostgreScriptExecuteHandler extends PostgreNativeToolHandler<Postgr
}
@Override
protected PostgreScriptExecuteSettings createTaskSettings(DBRRunnableContext context, DBTTask task) {
protected PostgreScriptExecuteSettings createTaskSettings(DBRRunnableContext context, DBTTask task) throws DBException {
PostgreScriptExecuteSettings settings = new PostgreScriptExecuteSettings();
settings.loadSettings(context, new TaskPreferenceStore(task));
return settings;
}
......
......@@ -44,7 +44,7 @@ public class PostgreScriptExecuteSettings extends AbstractScriptExecuteSettings<
}
@Override
public void loadSettings(DBRRunnableContext runnableContext, DBPPreferenceStore store) {
public void loadSettings(DBRRunnableContext runnableContext, DBPPreferenceStore store) throws DBException {
super.loadSettings(runnableContext, store);
String databaseId = store.getString("pg.script.database");
......
......@@ -110,7 +110,6 @@ public class TaskRunJob extends AbstractJob implements DBRRunnableContext {
task.addNewRun(taskRun);
}
} catch (Throwable e) {
taskLog.error("Error running task", e);
return GeneralUtils.makeExceptionStatus(e);
}
return Status.OK_STATUS;
......
......@@ -125,7 +125,11 @@ public abstract class AbstractToolWizard<SETTINGS extends AbstractNativeToolSett
@Override
public void createPageControls(Composite pageContainer) {
settings.loadSettings(UIUtils.getDefaultRunnableContext(), getPreferenceStore());
try {
settings.loadSettings(UIUtils.getDefaultRunnableContext(), getPreferenceStore());
} catch (DBException e) {
DBWorkbench.getPlatformUI().showError("Settings load", "Error loading wizard settings", e);
}
super.createPageControls(pageContainer);
......
......@@ -17,6 +17,7 @@
*/
package org.jkiss.dbeaver.tasks.nativetool;
import org.jkiss.dbeaver.DBException;
import org.jkiss.dbeaver.model.preferences.DBPPreferenceStore;
import org.jkiss.dbeaver.model.runtime.DBRRunnableContext;
import org.jkiss.dbeaver.model.struct.DBSObject;
......@@ -51,7 +52,7 @@ public abstract class AbstractImportExportSettings<BASE_OBJECT extends DBSObject
}
@Override
public void loadSettings(DBRRunnableContext runnableContext, DBPPreferenceStore store) {
public void loadSettings(DBRRunnableContext runnableContext, DBPPreferenceStore store) throws DBException {
super.loadSettings(runnableContext, store);
this.outputFilePattern = store.getString("export.outputFilePattern");
if (CommonUtils.isEmpty(this.outputFilePattern)) {
......
......@@ -131,7 +131,7 @@ public abstract class AbstractNativeToolHandler<SETTINGS extends AbstractNativeT
return Collections.emptyList();
}
protected abstract SETTINGS createTaskSettings(DBRRunnableContext context, DBTTask task);
protected abstract SETTINGS createTaskSettings(DBRRunnableContext context, DBTTask task) throws DBException;
protected boolean validateTaskParameters(DBTTask task, SETTINGS settings, Log log) {
return true;
......
......@@ -17,6 +17,7 @@
*/
package org.jkiss.dbeaver.tasks.nativetool;
import org.jkiss.dbeaver.DBException;
import org.jkiss.dbeaver.Log;
import org.jkiss.dbeaver.model.connection.DBPNativeClientLocation;
import org.jkiss.dbeaver.model.preferences.DBPPreferenceStore;
......@@ -101,7 +102,7 @@ public abstract class AbstractNativeToolSettings<BASE_OBJECT extends DBSObject>
}
@Override
public void loadSettings(DBRRunnableContext runnableContext, DBPPreferenceStore preferenceStore) {
public void loadSettings(DBRRunnableContext runnableContext, DBPPreferenceStore preferenceStore) throws DBException {
super.loadSettings(runnableContext, preferenceStore);
extraCommandArgs = preferenceStore.getString(PROP_NAME_EXTRA_ARGS);
......@@ -114,7 +115,7 @@ public abstract class AbstractNativeToolSettings<BASE_OBJECT extends DBSObject>
if (!CommonUtils.isEmpty(toolUserName)) toolUserName = encrypter.decrypt(toolUserName);
if (!CommonUtils.isEmpty(toolUserPassword)) toolUserPassword = encrypter.decrypt(toolUserPassword);
} catch (Exception e) {
log.debug(e);
throw new DBException("Error decrypting user credentials", e);
}
}
......
......@@ -17,6 +17,7 @@
*/
package org.jkiss.dbeaver.tasks.nativetool;
import org.jkiss.dbeaver.DBException;
import org.jkiss.dbeaver.model.preferences.DBPPreferenceStore;
import org.jkiss.dbeaver.model.runtime.DBRRunnableContext;
import org.jkiss.dbeaver.model.struct.DBSObject;
......@@ -33,7 +34,7 @@ public class AbstractScriptExecuteSettings<BASE_OBJECT extends DBSObject> extend
}
@Override
public void loadSettings(DBRRunnableContext runnableContext, DBPPreferenceStore preferenceStore) {
public void loadSettings(DBRRunnableContext runnableContext, DBPPreferenceStore preferenceStore) throws DBException {
super.loadSettings(runnableContext, preferenceStore);
inputFile = preferenceStore.getString("inputFile");
......
......@@ -17,6 +17,7 @@
*/
package org.jkiss.dbeaver.tasks.nativetool;
import org.jkiss.dbeaver.DBException;
import org.jkiss.dbeaver.Log;
import org.jkiss.dbeaver.model.DBPDataSourceContainer;
import org.jkiss.dbeaver.model.DBUtils;
......@@ -63,7 +64,7 @@ public abstract class AbstractToolSettings<BASE_OBJECT extends DBSObject> {
}
}
public void loadSettings(DBRRunnableContext runnableContext, DBPPreferenceStore preferenceStore) {
public void loadSettings(DBRRunnableContext runnableContext, DBPPreferenceStore preferenceStore) throws DBException {
if (dataSourceContainer == null && !CommonUtils.isEmpty(databaseObjects)) {
BASE_OBJECT baseObject = databaseObjects.get(0);
dataSourceContainer = baseObject instanceof DBPDataSourceContainer ?
......@@ -94,23 +95,27 @@ public abstract class AbstractToolSettings<BASE_OBJECT extends DBSObject> {
DBPProject finalProject = dataSourceContainer.getProject();
try {
runnableContext.run(true, true, monitor -> {
monitor.beginTask("Load database object list", databaseObjectList.size());
for (String objectId : databaseObjectList) {
monitor.subTask("Load " + objectId);
try {
DBSObject object = DBUtils.findObjectById(monitor, finalProject, objectId);
if (object != null) {
databaseObjects.add((BASE_OBJECT) object);
try {
monitor.beginTask("Load database object list", databaseObjectList.size());
for (String objectId : databaseObjectList) {
monitor.subTask("Load " + objectId);
try {
DBSObject object = DBUtils.findObjectById(monitor, finalProject, objectId);
if (object != null) {
databaseObjects.add((BASE_OBJECT) object);
}
} catch (Throwable e) {
throw new DBException("Can't find database object '" + objectId + "' in project '" + finalProject.getName() + "' for task configuration", e);
}
} catch (Throwable e) {
log.error("Can't find database object '" + objectId + "' in project '" + finalProject.getName() + "' for task configuration");
monitor.worked(1);
}
monitor.worked(1);
monitor.done();
} catch (Exception e) {
throw new InvocationTargetException(e);
}
monitor.done();
});
} catch (InvocationTargetException e) {
log.error("Error loading objects configuration", e);
throw new DBException("Error loading objects configuration", e.getTargetException());
} catch (InterruptedException e) {
// Ignore
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册