public WorkerJob(String name) { super(name); worker = new Worker(name); }
public boolean shouldRun() { return worker.hasWork(); }
public void run(IProgressMonitor monitor) { errors.clear(); SubMonitor pm = SubMonitor.convert(monitor, getTaskName(), 100); try { isWorking = true; while (!work.isEmpty()) { try { performNextTask(pm); checkCancelled(pm); } catch (OperationCanceledException e) { checkCancelled(pm); } catch (InterruptedException e) { checkCancelled(pm); } catch (InvocationTargetException e) { handleError(e.getTargetException());
@Override public void run(IProgressMonitor monitor) { errors.clear(); SubMonitor progress = SubMonitor.convert(monitor, getTaskName(), 100); try { isWorking = true; while (!work.isEmpty()) { try { performNextTask(progress); progress.checkCanceled(); } catch (OperationCanceledException e) { handleError(e.getTargetException());
@Override protected IStatus run(IProgressMonitor monitor) { worker.run(monitor); // reschedule to ensure we don't miss a task IStatus result = getResult(worker); schedule(); return result; }
public boolean hasWork() { return isWorking() || !work.isEmpty(); } }
public void add(IRunnableWithProgress runnable) { worker.add(runnable); schedule(); }
private void performNextTask(SubMonitor pm) throws InvocationTargetException, InterruptedException { synchronized (this) { if (work.isEmpty()) return; currentTask = work.remove(); currentMonitor= subMonitorFor(pm, 10); } currentTask.run(currentMonitor); }
private IStatus getResult(Worker w) { Throwable[] errors = w.getErrors(); if (errors.length == 0) return Status.OK_STATUS; if (errors.length == 1) return new Status(IStatus.ERROR, CompareUIPlugin.PLUGIN_ID, 0, errors[0].getMessage(), errors[0]); List<IStatus> statii = new ArrayList<>(); for (int i = 0; i < errors.length; i++) { Throwable throwable = errors[i]; statii.add(new Status(IStatus.ERROR, CompareUIPlugin.PLUGIN_ID, 0, errors[0].getMessage(), throwable)); } return new MultiStatus(CompareUIPlugin.PLUGIN_ID, 0, statii.toArray(new IStatus[statii.size()]), CompareMessages.WorkerJob_0, null); }
protected IStatus run(IProgressMonitor monitor) { worker.run(monitor); // reschedule to ensure we don't miss a task IStatus result = getResult(worker); schedule(); return result; }
public boolean hasWork() { return isWorking() || !work.isEmpty(); }
public void add(IRunnableWithProgress runnable) { worker.add(runnable); schedule(); }
private void performNextTask(SubMonitor pm) throws InvocationTargetException, InterruptedException { synchronized (this) { if (work.isEmpty()) return; currentTask = work.remove(); } currentMonitor = subMonitorFor(pm, 10); currentTask.run(currentMonitor); }
private IStatus getResult(Worker w) { Throwable[] errors = w.getErrors(); if (errors.length == 0) return Status.OK_STATUS; if (errors.length == 1) return new Status(IStatus.ERROR, CompareUIPlugin.PLUGIN_ID, 0, errors[0].getMessage(), errors[0]); List statii = new ArrayList(); for (int i = 0; i < errors.length; i++) { Throwable throwable = errors[i]; statii.add(new Status(IStatus.ERROR, CompareUIPlugin.PLUGIN_ID, 0, errors[0].getMessage(), throwable)); } return new MultiStatus(CompareUIPlugin.PLUGIN_ID, 0, (IStatus[]) statii.toArray(new IStatus[statii.size()]), CompareMessages.WorkerJob_0, null); }
public WorkerJob(String name) { super(name); worker = new Worker(name); }
@Override public boolean shouldRun() { return worker.hasWork(); }