// License: GPL. For details, see Readme.txt file.
package org.openstreetmap.gui.jmapviewer;
import java.awt.geom.Point2D;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.util.Objects;
import org.openstreetmap.gui.jmapviewer.interfaces.ICoordinate;
/**
* This class encapsulates a Point2D.Double and provide access
* via <tt>lat</tt> and <tt>lon</tt>.
*
* @author Jan Peter Stotz
*
*/
public class Coordinate implements ICoordinate {
private transient Point2D.Double data;
public Coordinate(double lat, double lon) {
data = new Point2D.Double(lon, lat);
}
@Override
public double getLat() {
return data.y;
}
@Override
public void setLat(double lat) {
data.y = lat;
}
@Override
public double getLon() {
return data.x;
}
@Override
public void setLon(double lon) {
data.x = lon;
}
private void writeObject(ObjectOutputStream out) throws IOException {
out.writeObject(data.x);
out.writeObject(data.y);
}
private void readObject(ObjectInputStream in) throws IOException, ClassNotFoundException {
data = new Point2D.Double();
data.x = (Double) in.readObject();
data.y = (Double) in.readObject();
}
@Override
public String toString() {
return "Coordinate[" + data.y + ", " + data.x + ']';
}
@Override
public int hashCode() {
int hash = 3;
hash = 61 * hash + Objects.hashCode(this.data);
return hash;
}
@Override
public boolean equals(Object obj) {
if (obj == null) {
return false;
}
if (getClass() != obj.getClass()) {
return false;
}
final Coordinate other = (Coordinate) obj;
if (!Objects.equals(this.data, other.data)) {
return false;
}
return true;
}
}