package com.bitmonlab.osiris.imports.map.model.osm;
import java.util.ArrayList;
import java.util.List;
import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlType;
import org.joda.time.DateTime;
@XmlRootElement(name = "node")
@XmlType(propOrder = { "id", "timestamp", "uid", "user", "visible", "version", "changeset", "lat", "lon", "tags" })
public class Node implements Comparable<Node>, Tags{
private String id;
private String visible="true";
private String timestamp=new DateTime().toString();
private String version="1";
private String changeset;
private String user;
private String uid;
private String lat;
private String lon;
private List<Tag> tags;
public Node(){}
public Node(String id){
this.id = id;
}
public String getId() {
return id;
}
@XmlAttribute
public void setId(String id) {
this.id = id;
}
public String getVisible() {
return visible;
}
@XmlAttribute
public void setVisible(String visible) {
this.visible = visible;
}
public String getTimestamp() {
return timestamp;
}
@XmlAttribute
public void setTimestamp(String timestamp) {
this.timestamp = timestamp;
}
public String getVersion() {
return version;
}
@XmlAttribute
public void setVersion(String version) {
this.version = version;
}
public String getChangeset() {
return changeset;
}
@XmlAttribute
public void setChangeset(String changeset) {
this.changeset = changeset;
}
public String getUser() {
return user;
}
@XmlAttribute
public void setUser(String user) {
this.user = user;
}
public String getUid() {
return uid;
}
@XmlAttribute
public void setUid(String uid) {
this.uid = uid;
}
public String getLat() {
return lat;
}
@XmlAttribute
public void setLat(String lat) {
this.lat = lat;
}
public String getLon() {
return lon;
}
@XmlAttribute
public void setLon(String lon) {
this.lon = lon;
}
public List<Tag> getTags() {
return tags;
}
@XmlElement (name="tag")
public void setTags(List<Tag> tags) {
this.tags = tags;
}
public boolean existTag(String eTag){
boolean exists =false;
if(tags!=null){
for(Tag tag : tags){
if(tag.getK().equals(eTag)){
exists = true;
}
}
}
return exists;
}
public List<Double> getNodeCoordinates() {
List<Double> coordinates = new ArrayList<Double>();
coordinates.add(Double.valueOf(this.lon));
coordinates.add(Double.valueOf(this.lat));
return coordinates;
}
@Override
public String toString() {
return "Node [id=" + id + ", visible=" + visible + ", timestamp="
+ timestamp + ", version=" + version + ", changeset="
+ changeset + ", user=" + user + ", uid=" + uid + ", lat="
+ lat + ", lon=" + lon + ", tags=" + tags + "]";
}
public int compareTo(Node o) {
return id.compareTo(o.getId());
}
}