1   
2   
3   
4   
5   
6   
7   
8   
9   
10  
11  
12  
13  
14  
15  
16  
17  
18  
19  package org.jclouds.compute.domain.internal;
20  
21  import static com.google.common.base.Preconditions.checkNotNull;
22  
23  import org.jclouds.compute.domain.Image;
24  import org.jclouds.compute.domain.Hardware;
25  import org.jclouds.compute.domain.Template;
26  import org.jclouds.compute.options.TemplateOptions;
27  import org.jclouds.domain.Location;
28  
29  
30  
31  
32  
33  public class TemplateImpl implements Template {
34  
35     private final Image image;
36     private final Hardware size;
37     private final Location location;
38     private final TemplateOptions options;
39  
40     public TemplateImpl(Image image, Hardware size, Location location, TemplateOptions options) {
41        this.image = checkNotNull(image, "image");
42        this.size = checkNotNull(size, "size");
43        this.location = checkNotNull(location, "location");
44        this.options = checkNotNull(options, "options");
45     }
46  
47     
48  
49  
50     @Override
51     public Image getImage() {
52        return image;
53     }
54  
55     
56  
57  
58     @Override
59     public Hardware getHardware() {
60        return size;
61     }
62  
63     
64  
65  
66     @Override
67     public Location getLocation() {
68        return location;
69     }
70  
71     
72  
73  
74     @Override
75     public TemplateOptions getOptions() {
76        return options;
77     }
78  
79     @Override
80     public int hashCode() {
81        final int prime = 31;
82        int result = 1;
83        result = prime * result + ((image == null) ? 0 : image.hashCode());
84        result = prime * result + ((location == null) ? 0 : location.hashCode());
85        result = prime * result + ((options == null) ? 0 : options.hashCode());
86        result = prime * result + ((size == null) ? 0 : size.hashCode());
87        return result;
88     }
89  
90     @Override
91     public boolean equals(Object obj) {
92        if (this == obj)
93           return true;
94        if (obj == null)
95           return false;
96        if (getClass() != obj.getClass())
97           return false;
98        TemplateImpl other = (TemplateImpl) obj;
99        if (image == null) {
100          if (other.image != null)
101             return false;
102       } else if (!image.equals(other.image))
103          return false;
104       if (location == null) {
105          if (other.location != null)
106             return false;
107       } else if (!location.equals(other.location))
108          return false;
109       if (options == null) {
110          if (other.options != null)
111             return false;
112       } else if (!options.equals(other.options))
113          return false;
114       if (size == null) {
115          if (other.size != null)
116             return false;
117       } else if (!size.equals(other.size))
118          return false;
119       return true;
120    }
121 
122    @Override
123    public String toString() {
124       return "[location=" + location + ", image=" + image + ", size=" + size + ", options="
125                + options + "]";
126    }
127 
128    
129 
130 
131    @Override
132    protected Object clone() throws CloneNotSupportedException {
133       return new TemplateImpl(image, size, location, options);
134    }
135 
136 }