package org.korsakow.domain.task; import java.beans.PropertyChangeListener; import java.util.List; import java.util.concurrent.ExecutionException; public interface IWorker { public static final String PROPERTY_STATE = "state"; public static final String PROPERTY_DISPLAY_STRING = "displayString"; public static final String PROPERTY_PROGRESS = "progress"; public static final String PROPERTY_SUB_DISPLAY_STRING = "subDisplayString"; public static final String PROPERTY_SUB_PROGRESS = "subProgress"; void addTask(ITask task); void addTasks(List<ITask> tasks); void waitFor() throws ExecutionException, InterruptedException; void execute(); Throwable getException(); void addPropertyChangeListener(PropertyChangeListener listener); void addPropertyChangeListener(String propertyName, PropertyChangeListener listener); boolean cancel(boolean interrupt); boolean isCancelled(); boolean isDone(); }