1 package jalview.ws2.helpers;
3 import java.beans.PropertyChangeEvent;
4 import java.beans.PropertyChangeListener;
6 import jalview.ws2.actions.BaseJob;
7 import jalview.ws2.actions.api.JobI;
8 import jalview.ws2.api.JobStatus;
11 * A property change listener to be used by web service tasks that delegates all
12 * sub-job related events from {@link BaseJob} subclasses to
13 * {@link TaskEventSupport}. Tasks can create one instance of this class with
14 * their event handler as a delegate and add it as a property change listener to
15 * each sub-job supporting property change listeners. It ensures that an
16 * appropriate {@code fireSubJob*Changed} method of the delegate object will be
17 * called whenever a {@link PropertyChagneEvent} is emitted by the sub-job.
22 * result type of the task
24 public class DelegateJobEventListener<T> implements PropertyChangeListener
26 private final TaskEventSupport<T> delegate;
28 public DelegateJobEventListener(TaskEventSupport<T> delegate)
30 this.delegate = delegate;
34 public void propertyChange(PropertyChangeEvent evt)
36 switch (evt.getPropertyName())
48 throw new AssertionError(String.format(
49 "illegal property name \"%s\"", evt.getPropertyName()));
53 private void statusChanged(PropertyChangeEvent evt)
55 JobI job = (JobI) evt.getSource();
56 JobStatus status = (JobStatus) evt.getNewValue();
57 delegate.fireSubJobStatusChanged(job, status);
60 private void logChanged(PropertyChangeEvent evt)
62 JobI job = (JobI) evt.getSource();
63 String log = (String) evt.getNewValue();
64 delegate.fireSubJobLogChanged(job, log);
67 private void errorLogChanged(PropertyChangeEvent evt)
69 JobI job = (JobI) evt.getSource();
70 String errorLog = (String) evt.getNewValue();
71 delegate.fireSubJobErrorLogChanged(job, errorLog);