90ee0b7f7d25afc7e73f51391033c448060f9009
[jalview.git] / src / jalview / ws2 / WSJob.java
1 package jalview.ws2;
2
3 import java.io.Serializable;
4 import java.net.URI;
5 import java.util.Date;
6
7 import jalview.util.MathUtils;
8
9 import static java.lang.String.format;
10
11 import java.beans.PropertyChangeListener;
12 import java.beans.PropertyChangeSupport;
13
14 /**
15  * An id handler to the external job running on the server. This is the smallest
16  * job unit which might me a part of a larger multi-stage or parallel task
17  * handled by the WebServiceWorker. Jobs are created by the JalviewWebService on
18  * job submission and are used to identify that job during its lifetime. It can
19  * be serialized and used between application launches.
20  *
21  * @author mmwarowny
22  *
23  */
24 public final class WSJob implements Serializable
25 {
26   private static final long serialVersionUID = -4600214977954333787L;
27
28   /* Client-side identifier */
29   public final long uid = MathUtils.getUID();
30
31   private int jobNum = 0;
32
33   /* Shortened server name e.g. "slivka" or "jabaws" */
34   private String serviceProvider = "";
35
36   /* Name of the service e.g. "ClustalW2" */
37   private String serviceName = "";
38
39   /* Server-side identifier */
40   private String jobID = "";
41
42   private WSJobStatus status = WSJobStatus.UNKNOWN;
43
44   private String log = "";
45
46   private String errorLog = "";
47
48   /* Base url of the server associated with the job */
49   private String hostName = "";
50
51   private Date creationTime = new Date();
52
53   public PropertyChangeSupport pcs = new PropertyChangeSupport(this);
54
55   public WSJob()
56   {
57   }
58
59   public WSJob(String serviceProvider, String serviceName, String jobID,
60           String hostName)
61   {
62     this.serviceProvider = serviceProvider;
63     this.serviceName = serviceName;
64     this.jobID = jobID;
65     this.hostName = hostName;
66   }
67
68   @Override
69   public String toString()
70   {
71     return format("%s:%s [%s] Created %s", serviceProvider, serviceName,
72             jobID, creationTime);
73   }
74
75   public int getJobNum()
76   {
77     return jobNum;
78   }
79
80   public void setJobNum(int jobNum)
81   {
82     this.jobNum = jobNum;
83   }
84
85   public WSJobStatus getStatus()
86   {
87     return status;
88   }
89
90   public void setStatus(WSJobStatus status)
91   {
92     var oldStatus = this.status;
93     this.status = status;
94     pcs.firePropertyChange("status", oldStatus, status);
95   }
96
97   public String getLog()
98   {
99     return log;
100   }
101
102   public void setLog(String log)
103   {
104     var oldLog = this.log;
105     this.log = log;
106     pcs.firePropertyChange("log", oldLog, log);
107   }
108
109   public String getErrorLog()
110   {
111     return errorLog;
112   }
113
114   public void setErrorLog(String log)
115   {
116     String oldErrorLog = this.errorLog;
117     this.errorLog = log;
118     pcs.firePropertyChange("errorLog", oldErrorLog, this.errorLog);
119   }
120
121   public long getUid()
122   {
123     return uid;
124   }
125
126   public String getServiceProvider()
127   {
128     return serviceProvider;
129   }
130
131   public void setServiceProvider(String serviceProvider)
132   {
133     this.serviceProvider = serviceProvider;
134   }
135
136   public String getServiceName()
137   {
138     return serviceName;
139   }
140
141   public void setServiceName(String serviceName)
142   {
143     this.serviceName = serviceName;
144   }
145
146   public String getJobID()
147   {
148     return jobID;
149   }
150
151   public void setJobID(String jobID)
152   {
153     this.jobID = jobID;
154   }
155
156   public String getHostName()
157   {
158     return hostName;
159   }
160
161   public void setHostName(String hostName)
162   {
163     this.hostName = hostName;
164   }
165
166   public Date getCreationTime()
167   {
168     return creationTime;
169   }
170
171   public void setCreationTime(Date creationTime)
172   {
173     this.creationTime = creationTime;
174   }
175
176   public void addPropertyChangeListener(PropertyChangeListener listener)
177   {
178     pcs.addPropertyChangeListener(listener);
179   }
180
181   public void addPropertyChangeListener(String propertyName,
182           PropertyChangeListener listener)
183   {
184     pcs.addPropertyChangeListener(propertyName, listener);
185   }
186
187   public void removePropertyChangeListener(PropertyChangeListener listener)
188   {
189     pcs.removePropertyChangeListener(listener);
190   }
191
192   public void removePropertyChagneListener(String propertyName,
193           PropertyChangeListener listener)
194   {
195     pcs.removePropertyChangeListener(propertyName, listener);
196   }
197
198 }