package org.curiosity.concept;
import com.google.common.base.Preconditions;
import java.net.URL;
import java.util.Date;
/**
* An image taken by one of Curiosity's cameras.
*
* @author jherwitz
*/
public class Image {
private final URL imageUrl;
private final Date timestamp;
private final int sol;
private final Camera origin;
public Image(URL imageUrl, Date timestamp, int sol, Camera origin) {
this.imageUrl = Preconditions.checkNotNull(imageUrl);
this.timestamp = Preconditions.checkNotNull(timestamp);
this.sol = sol;
this.origin = Preconditions.checkNotNull(origin);
}
public URL imageUrl() {
return imageUrl;
}
public Date timestamp() {
return timestamp;
}
public Camera origin() {
return origin;
}
public int sol() {
return sol;
}
@Override
public String toString() {
return String.format("Image [url=%s, timestamp=%s, origin=%s]", imageUrl, timestamp, origin);
}
@Override
public boolean equals(Object obj) {
if(this == obj) return true;
if(obj == null) return false;
if(getClass() != obj.getClass()) return false;
Image that = (Image) obj;
if(!imageUrl.toExternalForm().equals(that.imageUrl.toExternalForm())) return false;
if(!timestamp.equals(that.timestamp)) return false;
if(!origin.equals(that.origin)) return false;
return true;
}
@Override
public int hashCode() {
final int prime = 31;
int result = 17;
result = prime * result + imageUrl.toExternalForm().hashCode();
result = prime * result + timestamp.hashCode();
result = prime * result + origin.hashCode();
return result;
}
}