package jalview.ws2; import java.io.Serializable; import java.net.URI; import java.util.Date; import jalview.util.MathUtils; import static java.lang.String.format; import java.beans.PropertyChangeListener; import java.beans.PropertyChangeSupport; /** * An id handler to the external job running on the server. This is the smallest * job unit which might me a part of a larger multi-stage or parallel task * handled by the WebServiceWorker. Jobs are created by the JalviewWebService on * job submission and are used to identify that job during its lifetime. It can * be serialized and used between application launches. * * @author mmwarowny * */ public final class WSJob implements Serializable { private static final long serialVersionUID = -4600214977954333787L; /* Client-side identifier */ public final long uid = MathUtils.getUID(); private int jobNum = 0; /* Shortened server name e.g. "slivka" or "jabaws" */ private String serviceProvider = ""; /* Name of the service e.g. "ClustalW2" */ private String serviceName = ""; /* Server-side identifier */ private String jobId = ""; private WSJobStatus status = WSJobStatus.UNKNOWN; private String log = ""; private String errorLog = ""; /* Base url of the server associated with the job */ private String hostName = ""; private Date creationTime = new Date(); public PropertyChangeSupport pcs = new PropertyChangeSupport(this); public WSJob() { } public WSJob(String serviceProvider, String serviceName, String hostName) { this.serviceProvider = serviceProvider; this.serviceName = serviceName; this.hostName = hostName; } @Override public String toString() { return format("%s:%s [%s] Created %s", serviceProvider, serviceName, jobId, creationTime); } public int getJobNum() { return jobNum; } public void setJobNum(int jobNum) { this.jobNum = jobNum; } public WSJobStatus getStatus() { return status; } public void setStatus(WSJobStatus status) { var oldStatus = this.status; this.status = status; pcs.firePropertyChange("status", oldStatus, status); } public String getLog() { return log; } public void setLog(String log) { var oldLog = this.log; this.log = log; pcs.firePropertyChange("log", oldLog, log); } public String getErrorLog() { return errorLog; } public void setErrorLog(String log) { String oldErrorLog = this.errorLog; this.errorLog = log; pcs.firePropertyChange("errorLog", oldErrorLog, this.errorLog); } public long getUid() { return uid; } public String getServiceProvider() { return serviceProvider; } public void setServiceProvider(String serviceProvider) { this.serviceProvider = serviceProvider; } public String getServiceName() { return serviceName; } public void setServiceName(String serviceName) { this.serviceName = serviceName; } public String getJobId() { return jobId; } public void setJobId(String jobID) { this.jobId = jobID; } public String getHostName() { return hostName; } public void setHostName(String hostName) { this.hostName = hostName; } public Date getCreationTime() { return creationTime; } public void setCreationTime(Date creationTime) { this.creationTime = creationTime; } public void addPropertyChangeListener(PropertyChangeListener listener) { pcs.addPropertyChangeListener(listener); } public void addPropertyChangeListener(String propertyName, PropertyChangeListener listener) { pcs.addPropertyChangeListener(propertyName, listener); } public void removePropertyChangeListener(PropertyChangeListener listener) { pcs.removePropertyChangeListener(listener); } public void removePropertyChagneListener(String propertyName, PropertyChangeListener listener) { pcs.removePropertyChangeListener(propertyName, listener); } }