package jalview.ws2; import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; import java.util.Objects; import jalview.gui.WebserviceInfo; public class WebServiceInfoUpdater implements PropertyChangeListener { private final WebserviceInfo wsInfo; private String outputHeader = ""; public WebServiceInfoUpdater(WebserviceInfo wsInfo) { this.wsInfo = wsInfo; } public String getOutputHeader() { return outputHeader; } public void setOutputHeader(String header) { this.outputHeader = header; } @Override public void propertyChange(PropertyChangeEvent evt) { switch (evt.getPropertyName()) { case "status": statusChanged(evt); break; case "log": logChanged(evt); break; case "errorLog": errorLogChanged(evt); break; } } private void statusChanged(PropertyChangeEvent evt) { WSJob job = (WSJob) evt.getSource(); WSJobStatus status = (WSJobStatus) evt.getNewValue(); int wsInfoStatus = 0; switch (status) { case READY: case SUBMITTED: case QUEUED: wsInfoStatus = WebserviceInfo.STATE_QUEUING; break; case RUNNING: wsInfoStatus = WebserviceInfo.STATE_RUNNING; break; case FINISHED: wsInfoStatus = WebserviceInfo.STATE_STOPPED_OK; break; case CANCELLED: wsInfoStatus = WebserviceInfo.STATE_CANCELLED_OK; break; case INVALID: case BROKEN: case FAILED: case UNKNOWN: wsInfoStatus = WebserviceInfo.STATE_STOPPED_ERROR; break; case SERVER_ERROR: wsInfoStatus = WebserviceInfo.STATE_STOPPED_SERVERERROR; break; } wsInfo.setStatus(job.getJobNum(), wsInfoStatus); } private void logChanged(PropertyChangeEvent evt) { WSJob job = (WSJob) evt.getSource(); String oldLog = (String) evt.getOldValue(); String newLog = (String) evt.getNewValue(); wsInfo.appendProgressText(job.getJobNum(), newLog.substring(oldLog.length())); } private void errorLogChanged(PropertyChangeEvent evt) { WSJob job = (WSJob) evt.getSource(); String oldLog = (String) evt.getOldValue(); String newLog = (String) evt.getNewValue(); wsInfo.appendProgressText(job.getJobNum(), newLog.substring(oldLog.length())); } }