package edu.harvard.wcfia.yoshikoder.util; import java.awt.Component; import java.util.logging.Level; import java.util.logging.Logger; /** * @author will */ public abstract class TaskWorker extends SwingWorkerVariant { private static Logger log = Logger.getLogger("edu.harvard.wcfia.yoshikoder.util.TaskWorker"); protected Exception e; public TaskWorker(Component aComponent) { super(aComponent); } protected void doNonUILogic() throws RuntimeException { try { doWork(); } catch (Exception ex){ e = ex; } } protected void doUIUpdateLogic() throws RuntimeException { if (e != null){ log.log(Level.WARNING, "Error thrown on worker thread", e); onError(); } else onSuccess(); } abstract protected void doWork() throws Exception; protected void onSuccess(){} abstract protected void onError(); }