001// License: GPL. For details, see Readme.txt file. 002package org.openstreetmap.gui.jmapviewer; 003 004import java.awt.geom.Point2D; 005import java.io.IOException; 006import java.io.ObjectInputStream; 007import java.io.ObjectOutputStream; 008import java.io.Serializable; 009import java.util.Objects; 010 011import org.openstreetmap.gui.jmapviewer.interfaces.ICoordinate; 012 013/** 014 * This class encapsulates a Point2D.Double and provide access 015 * via <tt>lat</tt> and <tt>lon</tt>. 016 * 017 * @author Jan Peter Stotz 018 * 019 */ 020public class Coordinate implements Serializable, ICoordinate { 021 private transient Point2D.Double data; 022 023 public Coordinate(double lat, double lon) { 024 data = new Point2D.Double(lon, lat); 025 } 026 027 public double getLat() { 028 return data.y; 029 } 030 031 public void setLat(double lat) { 032 data.y = lat; 033 } 034 035 public double getLon() { 036 return data.x; 037 } 038 039 public void setLon(double lon) { 040 data.x = lon; 041 } 042 043 private void writeObject(ObjectOutputStream out) throws IOException { 044 out.writeObject(data.x); 045 out.writeObject(data.y); 046 } 047 048 private void readObject(ObjectInputStream in) throws IOException, ClassNotFoundException { 049 data = new Point2D.Double(); 050 data.x = (Double) in.readObject(); 051 data.y = (Double) in.readObject(); 052 } 053 054 public String toString() { 055 return "Coordinate[" + data.y + ", " + data.x + "]"; 056 } 057 058 @Override 059 public int hashCode() { 060 int hash = 3; 061 hash = 61 * hash + Objects.hashCode(this.data); 062 return hash; 063 } 064 065 @Override 066 public boolean equals(Object obj) { 067 if (obj == null) { 068 return false; 069 } 070 if (getClass() != obj.getClass()) { 071 return false; 072 } 073 final Coordinate other = (Coordinate) obj; 074 if (!Objects.equals(this.data, other.data)) { 075 return false; 076 } 077 return true; 078 } 079}