diff --git a/plugins/org.jkiss.dbeaver.model/src/org/jkiss/dbeaver/model/task/DBTTaskManager.java b/plugins/org.jkiss.dbeaver.model/src/org/jkiss/dbeaver/model/task/DBTTaskManager.java index 0f3aa19e2394e7138009d4c3e7a2e49660a35c64..49192a3e8a9b411375fbaf3f0b1af844e23cf5a3 100644 --- a/plugins/org.jkiss.dbeaver.model/src/org/jkiss/dbeaver/model/task/DBTTaskManager.java +++ b/plugins/org.jkiss.dbeaver.model/src/org/jkiss/dbeaver/model/task/DBTTaskManager.java @@ -68,7 +68,7 @@ public interface DBTTaskManager { void updateTaskConfiguration(@NotNull DBTTask task) throws DBException; - void deleteTaskConfiguration(@NotNull DBTTask task); + void deleteTaskConfiguration(@NotNull DBTTask task) throws DBException; @NotNull File getStatisticsFolder(); diff --git a/plugins/org.jkiss.dbeaver.registry/src/org/jkiss/dbeaver/registry/task/TaskManagerImpl.java b/plugins/org.jkiss.dbeaver.registry/src/org/jkiss/dbeaver/registry/task/TaskManagerImpl.java index 68c8d2fde708c6f05963f4c80c7fbb74142d22ab..e20aaac5a91bc483ac07c3e9b8404ff432fd656c 100644 --- a/plugins/org.jkiss.dbeaver.registry/src/org/jkiss/dbeaver/registry/task/TaskManagerImpl.java +++ b/plugins/org.jkiss.dbeaver.registry/src/org/jkiss/dbeaver/registry/task/TaskManagerImpl.java @@ -186,7 +186,14 @@ public class TaskManagerImpl implements DBTTaskManager { } @Override - public void deleteTaskConfiguration(@NotNull DBTTask task) { + public void deleteTaskConfiguration(@NotNull DBTTask task) throws DBException { + DBTScheduler scheduler = TaskRegistry.getInstance().getActiveSchedulerInstance(); + if (scheduler != null) { + DBTTaskScheduleInfo info = scheduler.getScheduledTaskInfo(task); + if (info != null) { + scheduler.removeTaskSchedule(task, info); + } + } synchronized (tasks) { tasks.remove(task); } diff --git a/plugins/org.jkiss.dbeaver.tasks.ui/src/org/jkiss/dbeaver/tasks/ui/internal/TaskUIMessages.java b/plugins/org.jkiss.dbeaver.tasks.ui/src/org/jkiss/dbeaver/tasks/ui/internal/TaskUIMessages.java index 1f8d0bacacd085c20a73da174c3d4577e68c8cb1..802f5069041c36293411aa600d19e63f1ab496d0 100644 --- a/plugins/org.jkiss.dbeaver.tasks.ui/src/org/jkiss/dbeaver/tasks/ui/internal/TaskUIMessages.java +++ b/plugins/org.jkiss.dbeaver.tasks.ui/src/org/jkiss/dbeaver/tasks/ui/internal/TaskUIMessages.java @@ -110,6 +110,8 @@ public class TaskUIMessages extends NLS { public static String task_handler_delete_confirm_question_delete_task; public static String task_handler_delete_confirm_title_delete_tasks; public static String task_handler_delete_confirm_question_delete_tasks; + public static String task_handler_delete_error_deleting_task_from_scheduler_title; + public static String task_handler_delete_error_deleting_task_from_scheduler_message; public static String task_configuration_wizard_page_task_error_message_enter_task_name; public static String task_configuration_wizard_page_task_already_exists; diff --git a/plugins/org.jkiss.dbeaver.tasks.ui/src/org/jkiss/dbeaver/tasks/ui/internal/TaskUIMessages.properties b/plugins/org.jkiss.dbeaver.tasks.ui/src/org/jkiss/dbeaver/tasks/ui/internal/TaskUIMessages.properties index c17550391d728467b5f7a9da158cfa449cd54a47..a2f3eba8114ae365aeec57ed7adfd2d78e4626fa 100644 --- a/plugins/org.jkiss.dbeaver.tasks.ui/src/org/jkiss/dbeaver/tasks/ui/internal/TaskUIMessages.properties +++ b/plugins/org.jkiss.dbeaver.tasks.ui/src/org/jkiss/dbeaver/tasks/ui/internal/TaskUIMessages.properties @@ -86,6 +86,8 @@ task_handler_delete_confirm_title_delete_task = Delete task task_handler_delete_confirm_question_delete_task = Are you sure you want to delete task "{0}"? task_handler_delete_confirm_title_delete_tasks = Delete tasks task_handler_delete_confirm_question_delete_tasks = Are you sure you want to delete {0} tasks? +task_handler_delete_error_deleting_task_from_scheduler_title = Task deletion error +task_handler_delete_error_deleting_task_from_scheduler_message = Unable to delete task {0} from scheduler. The task won't be deleted from the project. task_configuration_wizard_page_task_error_message_enter_task_name = Enter task name (unique) task_configuration_wizard_page_task_already_exists = Task "{0}" already exists in project "{1}" task_configuration_wizard_page_task_enter_type = Enter task type diff --git a/plugins/org.jkiss.dbeaver.tasks.ui/src/org/jkiss/dbeaver/tasks/ui/view/TaskHandlerDelete.java b/plugins/org.jkiss.dbeaver.tasks.ui/src/org/jkiss/dbeaver/tasks/ui/view/TaskHandlerDelete.java index b057bb9219dcbead37937667f498d6bb43a828ab..07badd6bf938288b19d2a6feb1033559680ffb02 100644 --- a/plugins/org.jkiss.dbeaver.tasks.ui/src/org/jkiss/dbeaver/tasks/ui/view/TaskHandlerDelete.java +++ b/plugins/org.jkiss.dbeaver.tasks.ui/src/org/jkiss/dbeaver/tasks/ui/view/TaskHandlerDelete.java @@ -23,7 +23,9 @@ import org.eclipse.jface.viewers.ISelection; import org.eclipse.jface.viewers.IStructuredSelection; import org.eclipse.osgi.util.NLS; import org.eclipse.ui.handlers.HandlerUtil; +import org.jkiss.dbeaver.DBException; import org.jkiss.dbeaver.model.task.DBTTask; +import org.jkiss.dbeaver.runtime.DBWorkbench; import org.jkiss.dbeaver.tasks.ui.internal.TaskUIMessages; import org.jkiss.dbeaver.ui.UIUtils; @@ -59,7 +61,15 @@ public class TaskHandlerDelete extends AbstractHandler { } } for (DBTTask task : tasksToDelete) { - task.getProject().getTaskManager().deleteTaskConfiguration(task); + try { + task.getProject().getTaskManager().deleteTaskConfiguration(task); + } catch (DBException e) { + DBWorkbench.getPlatformUI().showError( + TaskUIMessages.task_handler_delete_error_deleting_task_from_scheduler_title, + NLS.bind(TaskUIMessages.task_handler_delete_error_deleting_task_from_scheduler_message, task.getId()), + e + ); + } } }