JAL-3878 Create pollable task and executor it can be run with.
[jalview.git] / src / jalview / ws2 / WSJob.java
1 package jalview.ws2;
2
3 import java.beans.PropertyChangeListener;
4 import java.beans.PropertyChangeSupport;
5 import java.util.Date;
6
7 import jalview.util.MathUtils;
8
9 public class WSJob
10 {
11   /* Client-side identifier */
12   public final long uid = MathUtils.getUID();
13
14   private int jobNum = 0;
15
16   /* Shortened server name e.g. "slivka" or "jabaws" */
17   private String serviceProvider = "";
18
19   /* Name of the service e.g. "ClustalW2" */
20   private String serviceName = "";
21
22   /* Server-side identifier */
23   private String jobId = "";
24
25   private WSJobStatus status = WSJobStatus.UNKNOWN;
26
27   private String log = "";
28
29   private String errorLog = "";
30
31   /* Base url of the server associated with the job */
32   private String hostName = "";
33
34   private Date creationTime = new Date();
35   
36   private PropertyChangeSupport pcs = new PropertyChangeSupport(this);
37
38   public WSJob()
39   {
40   }
41
42   public WSJob(String serviceProvider, String serviceName, String hostName)
43   {
44     this.serviceProvider = serviceProvider;
45     this.serviceName = serviceName;
46     this.hostName = hostName;
47   }
48
49   @Override
50   public String toString()
51   {
52     return String.format("%s:%s [%s] Created %s", serviceProvider, serviceName,
53             jobId, creationTime);
54   }
55
56   /**
57    * Get the ordinal numer of the job.
58    * 
59    * @return job number
60    */
61   public int getJobNum()
62   {
63     return jobNum;
64   }
65
66   public void setJobNum(int jobNum)
67   {
68     this.jobNum = jobNum;
69   }
70
71   public WSJobStatus getStatus()
72   {
73     return status;
74   }
75
76   public void setStatus(WSJobStatus status)
77   {
78     var oldStatus = this.status;
79     this.status = status;
80     pcs.firePropertyChange("status", oldStatus, status);
81   }
82
83   public String getLog()
84   {
85     return log;
86   }
87
88   public void setLog(String log)
89   {
90     var oldLog = this.log;
91     this.log = log;
92     pcs.firePropertyChange("log", oldLog, log);
93   }
94
95   public String getErrorLog()
96   {
97     return errorLog;
98   }
99
100   public void setErrorLog(String log)
101   {
102     String oldErrorLog = this.errorLog;
103     this.errorLog = log;
104     pcs.firePropertyChange("errorLog", oldErrorLog, this.errorLog);
105   }
106
107   public long getUid()
108   {
109     return uid;
110   }
111
112   public String getServiceProvider()
113   {
114     return serviceProvider;
115   }
116
117   public void setServiceProvider(String serviceProvider)
118   {
119     this.serviceProvider = serviceProvider;
120   }
121
122   public String getServiceName()
123   {
124     return serviceName;
125   }
126
127   public void setServiceName(String serviceName)
128   {
129     this.serviceName = serviceName;
130   }
131
132   public String getJobId()
133   {
134     return jobId;
135   }
136
137   public void setJobId(String jobID)
138   {
139     this.jobId = jobID;
140   }
141
142   public String getHostName()
143   {
144     return hostName;
145   }
146
147   public void setHostName(String hostName)
148   {
149     this.hostName = hostName;
150   }
151
152   public Date getCreationTime()
153   {
154     return creationTime;
155   }
156
157   public void setCreationTime(Date creationTime)
158   {
159     this.creationTime = creationTime;
160   }
161
162   public void addPropertyChangeListener(PropertyChangeListener listener)
163   {
164     pcs.addPropertyChangeListener(listener);
165   }
166
167   public void addPropertyChangeListener(String propertyName,
168           PropertyChangeListener listener)
169   {
170     pcs.addPropertyChangeListener(propertyName, listener);
171   }
172
173   public void removePropertyChangeListener(PropertyChangeListener listener)
174   {
175     pcs.removePropertyChangeListener(listener);
176   }
177
178   public void removePropertyChagneListener(String propertyName,
179           PropertyChangeListener listener)
180   {
181     pcs.removePropertyChangeListener(propertyName, listener);
182   }
183 }