/*
* Copyright (c) 2014 Red Hat, Inc. and/or its affiliates.
*
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Cheng Fang - Initial API and implementation
*/
package org.jberet.support.io;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlElementWrapper;
import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlProperty;
import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlRootElement;
@JacksonXmlRootElement(localName = "node")
@JsonIgnoreProperties(ignoreUnknown = true)
public class OsmNode {
@JacksonXmlProperty(isAttribute = true)
private String id;
@JacksonXmlProperty(isAttribute = true)
private String version;
@JacksonXmlProperty(isAttribute = true)
private Date timestamp;
@JacksonXmlProperty(isAttribute = true)
private String uid;
@JacksonXmlProperty(isAttribute = true)
private String user;
@JacksonXmlProperty(isAttribute = true)
private String changeset;
@JacksonXmlProperty(isAttribute = true)
private double lat;
@JacksonXmlProperty(isAttribute = true)
private double lon;
@JacksonXmlProperty(localName = "tag")
@JacksonXmlElementWrapper(useWrapping = false, localName = "tag")
private List<Tag> tags = new ArrayList<Tag>();
public String getId() {
return id;
}
public void setId(final String id) {
this.id = id;
}
public String getVersion() {
return version;
}
public void setVersion(final String version) {
this.version = version;
}
public Date getTimestamp() {
return timestamp;
}
public void setTimestamp(final Date timestamp) {
this.timestamp = timestamp;
}
public String getUid() {
return uid;
}
public void setUid(final String uid) {
this.uid = uid;
}
public String getUser() {
return user;
}
public void setUser(final String user) {
this.user = user;
}
public String getChangeset() {
return changeset;
}
public void setChangeset(final String changeset) {
this.changeset = changeset;
}
public double getLat() {
return lat;
}
public void setLat(final double lat) {
this.lat = lat;
}
public double getLon() {
return lon;
}
public void setLon(final double lon) {
this.lon = lon;
}
public List<Tag> getTags() {
return tags;
}
public void addTag(final Tag tag) {
this.tags.add(tag);
}
public void setTags(final List<Tag> tags) {
this.tags = tags;
}
@Override
public boolean equals(final Object o) {
if (this == o) return true;
if (!(o instanceof OsmNode)) return false;
final OsmNode osmNode = (OsmNode) o;
if (id != null ? !id.equals(osmNode.id) : osmNode.id != null) return false;
return true;
}
@Override
public int hashCode() {
return id != null ? id.hashCode() : 0;
}
@Override
public String toString() {
final StringBuilder sb = new StringBuilder("OsmNode{");
sb.append("id='").append(id).append('\'');
sb.append(", version='").append(version).append('\'');
sb.append(", timestamp=").append(timestamp);
sb.append(", uid='").append(uid).append('\'');
sb.append(", user='").append(user).append('\'');
sb.append(", changeset='").append(changeset).append('\'');
sb.append(", lat=").append(lat);
sb.append(", lon=").append(lon);
sb.append(", tags=").append(tags);
sb.append('}');
return sb.toString();
}
@JacksonXmlRootElement(localName = "tag")
public static class Tag {
@JacksonXmlProperty(isAttribute = true)
private String k;
@JacksonXmlProperty(isAttribute = true)
private String v;
public String getK() {
return k;
}
public void setK(final String k) {
this.k = k;
}
public String getV() {
return v;
}
public void setV(final String v) {
this.v = v;
}
@Override
public boolean equals(final Object o) {
if (this == o) return true;
if (!(o instanceof Tag)) return false;
final Tag tag = (Tag) o;
if (!k.equals(tag.k)) return false;
if (!v.equals(tag.v)) return false;
return true;
}
@Override
public int hashCode() {
int result = k.hashCode();
result = 31 * result + v.hashCode();
return result;
}
@Override
public String toString() {
final StringBuilder sb = new StringBuilder("Tag{");
sb.append("k='").append(k).append('\'');
sb.append(", v='").append(v).append('\'');
sb.append('}');
return sb.toString();
}
}
}