package org.drugis.common.threading;
public class ExtendableIterativeTask extends IterativeTask {
private final String d_str;
private final ExtendableIterativeComputation d_computation;
public ExtendableIterativeTask(IterativeComputation computation, String str) {
super(computation, str);
if(computation instanceof ExtendableIterativeComputation) {
d_computation = (ExtendableIterativeComputation) computation;
} else {
throw new IllegalArgumentException("Computation not an instanceof IterativeExtendableComputation");
}
d_str = str;
((IterativeSuspendable)d_suspendable).setListenerManager(d_mgr);
}
public ExtendableIterativeTask(IterativeComputation computation) {
this(computation, computation.toString());
}
public void extend(int iterations) {
d_finished = false;
d_started = false;
int oldIterations = d_computation.getTotalIterations();
d_computation.setTotalIterations(oldIterations + iterations);
d_mgr.fireTaskRestarted();
}
@Override
public String toString() {
return d_str;
}
}