1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.jclouds.aws.ec2.domain;
20
21 import static com.google.common.base.Preconditions.checkNotNull;
22
23 import java.util.Date;
24
25 import com.google.common.base.CaseFormat;
26
27
28
29
30
31 public class SpotInstanceRequest implements Comparable<SpotInstanceRequest> {
32 public static Builder builder() {
33 return new Builder();
34 }
35
36 public static class Builder {
37 private String region;
38 private String availabilityZoneGroup;
39 private Date createTime;
40 private String faultCode;
41 private String faultMessage;
42 private String instanceId;
43 private String launchGroup;
44 private LaunchSpecification launchSpecification;
45 private String productDescription;
46 private String id;
47 private float spotPrice;
48 private State state;
49 private Type type;
50 private Date validFrom;
51 private Date validUntil;
52
53 public Builder clear() {
54 this.region = null;
55 this.availabilityZoneGroup = null;
56 this.createTime = null;
57 this.faultCode = null;
58 this.faultMessage = null;
59 this.instanceId = null;
60 this.launchGroup = null;
61 this.launchSpecification = null;
62 this.productDescription = null;
63 this.id = null;
64 this.spotPrice = 0;
65 this.state = null;
66 this.type = null;
67 this.validFrom = null;
68 this.validUntil = null;
69 return this;
70 }
71
72 public Builder region(String region) {
73 this.region = region;
74 return this;
75 }
76
77 public Builder availabilityZoneGroup(String availabilityZoneGroup) {
78 this.availabilityZoneGroup = availabilityZoneGroup;
79 return this;
80 }
81
82 public Builder createTime(Date createTime) {
83 this.createTime = createTime;
84 return this;
85 }
86
87 public Builder faultCode(String faultCode) {
88 this.faultCode = faultCode;
89 return this;
90 }
91
92 public Builder faultMessage(String faultMessage) {
93 this.faultMessage = faultMessage;
94 return this;
95 }
96
97 public Builder instanceId(String instanceId) {
98 this.instanceId = instanceId;
99 return this;
100 }
101
102 public Builder launchGroup(String launchGroup) {
103 this.launchGroup = launchGroup;
104 return this;
105 }
106
107 public Builder launchSpecification(LaunchSpecification launchSpecification) {
108 this.launchSpecification = launchSpecification;
109 return this;
110 }
111
112 public Builder productDescription(String productDescription) {
113 this.productDescription = productDescription;
114 return this;
115 }
116
117 public Builder id(String id) {
118 this.id = id;
119 return this;
120 }
121
122 public Builder spotPrice(float spotPrice) {
123 this.spotPrice = spotPrice;
124 return this;
125 }
126
127 public Builder state(State state) {
128 this.state = state;
129 return this;
130 }
131
132 public Builder type(Type type) {
133 this.type = type;
134 return this;
135 }
136
137 public Builder validFrom(Date validFrom) {
138 this.validFrom = validFrom;
139 return this;
140 }
141
142 public Builder validUntil(Date validUntil) {
143 this.validUntil = validUntil;
144 return this;
145 }
146
147 public SpotInstanceRequest build() {
148 return new SpotInstanceRequest(region, availabilityZoneGroup, createTime, faultCode, faultMessage, instanceId,
149 launchGroup, launchSpecification, productDescription, id, spotPrice, state, type, validFrom, validUntil);
150 }
151 }
152
153 public enum Type {
154 ONE_TIME, PERSISTENT, UNRECOGNIZED;
155
156 public String value() {
157 return (CaseFormat.UPPER_UNDERSCORE.to(CaseFormat.LOWER_HYPHEN, name()));
158 }
159
160 @Override
161 public String toString() {
162 return value();
163 }
164
165 public static Type fromValue(String type) {
166 try {
167 return valueOf(CaseFormat.LOWER_HYPHEN.to(CaseFormat.UPPER_UNDERSCORE, checkNotNull(type, "type")));
168 } catch (IllegalArgumentException e) {
169 return UNRECOGNIZED;
170 }
171 }
172 }
173
174 public enum State {
175 OPEN, ACTIVE, CANCELLED, CLOSED, UNRECOGNIZED;
176
177 public String value() {
178 return (CaseFormat.UPPER_UNDERSCORE.to(CaseFormat.LOWER_HYPHEN, name()));
179 }
180
181 @Override
182 public String toString() {
183 return value();
184 }
185
186 public static State fromValue(String state) {
187 try {
188 return valueOf(CaseFormat.LOWER_HYPHEN.to(CaseFormat.UPPER_UNDERSCORE, checkNotNull(state, "type")));
189 } catch (IllegalArgumentException e) {
190 return UNRECOGNIZED;
191 }
192 }
193 }
194
195 private final String region;
196 private final String availabilityZoneGroup;
197 private final Date createTime;
198 private final String faultCode;
199 private final String faultMessage;
200 private final String instanceId;
201 private final String launchGroup;
202 private final LaunchSpecification launchSpecification;
203 private final String productDescription;
204 private final String id;
205 private final float spotPrice;
206 private final State state;
207 private final Type type;
208 private final Date validFrom;
209 private final Date validUntil;
210
211 public SpotInstanceRequest(String region, String availabilityZoneGroup, Date createTime, String faultCode,
212 String faultMessage, String instanceId, String launchGroup, LaunchSpecification launchSpecification,
213 String productDescription, String id, float spotPrice, State state, Type type, Date validFrom, Date validUntil) {
214 this.region = checkNotNull(region, "region");
215 this.availabilityZoneGroup = availabilityZoneGroup;
216 this.createTime = createTime;
217 this.faultCode = faultCode;
218 this.faultMessage = faultMessage;
219 this.instanceId = instanceId;
220 this.launchGroup = launchGroup;
221 this.launchSpecification = launchSpecification;
222 this.productDescription = productDescription;
223 this.id = checkNotNull(id, "id");
224 this.spotPrice = spotPrice;
225 this.state = checkNotNull(state, "state");
226 this.type = checkNotNull(type, "type");
227 this.validFrom = validFrom;
228 this.validUntil = validUntil;
229 }
230
231
232
233
234 public String getRegion() {
235 return region;
236 }
237
238 public String getAvailabilityZoneGroup() {
239 return availabilityZoneGroup;
240 }
241
242 public Date getCreateTime() {
243 return createTime;
244 }
245
246 public String getFaultCode() {
247 return faultCode;
248 }
249
250 public String getFaultMessage() {
251 return faultMessage;
252 }
253
254 public String getInstanceId() {
255 return instanceId;
256 }
257
258 public String getLaunchGroup() {
259 return launchGroup;
260 }
261
262 public LaunchSpecification getLaunchSpecification() {
263 return launchSpecification;
264 }
265
266 public String getProductDescription() {
267 return productDescription;
268 }
269
270 public String getId() {
271 return id;
272 }
273
274 public float getSpotPrice() {
275 return spotPrice;
276 }
277
278 public State getState() {
279 return state;
280 }
281
282 public Type getType() {
283 return type;
284 }
285
286 public Date getValidFrom() {
287 return validFrom;
288 }
289
290 public Date getValidUntil() {
291 return validUntil;
292 }
293
294 @Override
295 public int hashCode() {
296 final int prime = 31;
297 int result = 1;
298 result = prime * result + ((availabilityZoneGroup == null) ? 0 : availabilityZoneGroup.hashCode());
299 result = prime * result + ((createTime == null) ? 0 : createTime.hashCode());
300 result = prime * result + ((faultCode == null) ? 0 : faultCode.hashCode());
301 result = prime * result + ((faultMessage == null) ? 0 : faultMessage.hashCode());
302 result = prime * result + ((id == null) ? 0 : id.hashCode());
303 result = prime * result + ((instanceId == null) ? 0 : instanceId.hashCode());
304 result = prime * result + ((launchGroup == null) ? 0 : launchGroup.hashCode());
305 result = prime * result + ((launchSpecification == null) ? 0 : launchSpecification.hashCode());
306 result = prime * result + ((productDescription == null) ? 0 : productDescription.hashCode());
307 result = prime * result + ((region == null) ? 0 : region.hashCode());
308 result = prime * result + Float.floatToIntBits(spotPrice);
309 result = prime * result + ((type == null) ? 0 : type.hashCode());
310 result = prime * result + ((validFrom == null) ? 0 : validFrom.hashCode());
311 result = prime * result + ((validUntil == null) ? 0 : validUntil.hashCode());
312 return result;
313 }
314
315 @Override
316 public boolean equals(Object obj) {
317 if (this == obj)
318 return true;
319 if (obj == null)
320 return false;
321 if (getClass() != obj.getClass())
322 return false;
323 SpotInstanceRequest other = (SpotInstanceRequest) obj;
324 if (availabilityZoneGroup == null) {
325 if (other.availabilityZoneGroup != null)
326 return false;
327 } else if (!availabilityZoneGroup.equals(other.availabilityZoneGroup))
328 return false;
329 if (createTime == null) {
330 if (other.createTime != null)
331 return false;
332 } else if (!createTime.equals(other.createTime))
333 return false;
334 if (faultCode == null) {
335 if (other.faultCode != null)
336 return false;
337 } else if (!faultCode.equals(other.faultCode))
338 return false;
339 if (faultMessage == null) {
340 if (other.faultMessage != null)
341 return false;
342 } else if (!faultMessage.equals(other.faultMessage))
343 return false;
344 if (id == null) {
345 if (other.id != null)
346 return false;
347 } else if (!id.equals(other.id))
348 return false;
349 if (instanceId == null) {
350 if (other.instanceId != null)
351 return false;
352 } else if (!instanceId.equals(other.instanceId))
353 return false;
354 if (launchGroup == null) {
355 if (other.launchGroup != null)
356 return false;
357 } else if (!launchGroup.equals(other.launchGroup))
358 return false;
359 if (launchSpecification == null) {
360 if (other.launchSpecification != null)
361 return false;
362 } else if (!launchSpecification.equals(other.launchSpecification))
363 return false;
364 if (productDescription == null) {
365 if (other.productDescription != null)
366 return false;
367 } else if (!productDescription.equals(other.productDescription))
368 return false;
369 if (region == null) {
370 if (other.region != null)
371 return false;
372 } else if (!region.equals(other.region))
373 return false;
374 if (Float.floatToIntBits(spotPrice) != Float.floatToIntBits(other.spotPrice))
375 return false;
376 if (type != other.type)
377 return false;
378 if (validFrom == null) {
379 if (other.validFrom != null)
380 return false;
381 } else if (!validFrom.equals(other.validFrom))
382 return false;
383 if (validUntil == null) {
384 if (other.validUntil != null)
385 return false;
386 } else if (!validUntil.equals(other.validUntil))
387 return false;
388 return true;
389 }
390
391 @Override
392 public String toString() {
393 return "[region=" + region + ", id=" + id + ", spotPrice=" + spotPrice + ", state=" + state
394 + ", availabilityZoneGroup=" + availabilityZoneGroup + ", createTime=" + createTime + ", faultCode="
395 + faultCode + ", type=" + type + ", instanceId=" + instanceId + ", launchGroup=" + launchGroup
396 + ", launchSpecification=" + launchSpecification + ", productDescription=" + productDescription
397 + ", validFrom=" + validFrom + ", validUntil=" + validUntil + "]";
398 }
399
400 @Override
401 public int compareTo(SpotInstanceRequest arg0) {
402 return createTime.compareTo(arg0.createTime);
403 }
404
405 }