package se.kodapan.osm.domain; import java.io.Serializable; import java.util.ArrayList; import java.util.List; /** * @author kalle * @since 2013-05-01 15:42 */ public class Node extends OsmObject implements Serializable { private static final long serialVersionUID = 1l; @Override public <R> R accept(OsmObjectVisitor<R> visitor) { return visitor.visit(this); } public Node() { } public Node(double latitude, double longitude) { this.latitude = latitude; this.longitude= longitude; } public Node(Long id, double latitude, double longitude) { this.latitude = latitude; this.longitude = longitude; setId(id); } public Node(double latitude, double longitude, String... tags) { this((Long)null, latitude, longitude, tags); } public Node(Long id, double latitude, double longitude, String... tags) { this.latitude = latitude; this.longitude = longitude; setId(id); for (int i=0; i<tags.length; i+=2) { setTag(tags[i], tags[i+1]); } } private double latitude; private double longitude; private List<Way> waysMemberships; public void addWayMembership(Way way) { if (waysMemberships == null) { waysMemberships = new ArrayList<Way>(5); } else { // don't add membership to the same way twice // this happens for instance when this is the start and stop in a polygon. for (Way wayMembership : waysMemberships) { if (way.equals(wayMembership)) { return; } } } waysMemberships.add(way); } public List<Way> getWaysMemberships() { return waysMemberships; } public void setWaysMemberships(List<Way> waysMemberships) { this.waysMemberships = waysMemberships; } public double getLatitude() { return latitude; } public void setLatitude(double latitude) { this.latitude = latitude; } public double getLongitude() { return longitude; } public void setLongitude(double longitude) { this.longitude = longitude; } public double getY() { return getLatitude(); } public void setY(double latitude) { setLatitude(latitude); } public double getX() { return getLongitude(); } public void setX(double longitude) { setLongitude(longitude); } @Override public String toString() { return "Node{" + super.toString() + "latitude=" + latitude + ", longitude=" + longitude + ", waysMemberships.size=" + (waysMemberships == null ? "null" : waysMemberships.size()) + '}'; } }