package com.evrythng.thng.resource.model.store.geojson;
import com.evrythng.thng.resource.model.store.LocationHelper;
import com.evrythng.thng.resource.model.store.Traceable;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonProperty;
public abstract class GeoJsonSingleCoordinate extends GeoJson implements Traceable {
private static final long serialVersionUID = -1353734859418227063L;
private GeoJsonLocation coordinates;
protected GeoJsonSingleCoordinate(final GeoJsonType type, final GeoJsonLocation coordinates) {
super(type);
this.coordinates = new GeoJsonLocation();
this.coordinates.setCoordinates(coordinates.getCoordinates());
}
protected GeoJsonSingleCoordinate(final GeoJsonType type, final Double latitude, final Double longitude) {
super(type);
this.coordinates = new GeoJsonLocation(latitude, longitude);
}
@Override
public boolean equals(final Object o) {
if (this == o) {
return true;
}
if (o == null || getClass() != o.getClass()) {
return false;
}
GeoJsonSingleCoordinate that = (GeoJsonSingleCoordinate) o;
return !(coordinates != null ? !coordinates.equals(that.coordinates) : that.coordinates != null);
}
@Override
public int hashCode() {
return coordinates != null ? coordinates.hashCode() : 0;
}
@JsonIgnore
public Traceable getCoordinates() {
return coordinates;
}
@JsonProperty(FIELD_COORDINATES)
public Double[] getCoordinatesArr() {
return coordinates.getCoordinates();
}
@JsonIgnore
@JsonProperty(FIELD_COORDINATES)
public void setCoordinates(final GeoJsonLocation coordinates) {
this.coordinates = coordinates;
}
public void setCoordinatesArr(final Double... coordinates) {
this.coordinates.setCoordinates(coordinates);
}
public void copy(final Traceable obj) {
LocationHelper.copy(obj, this);
}
@Override
@JsonIgnore
public Double getLatitude() {
return coordinates.getLatitude();
}
@Override
public void setLatitude(final Double latitude) {
this.coordinates.setLatitude(latitude);
}
@Override
@JsonIgnore
public Double getLongitude() {
return coordinates.getLongitude();
}
@Override
public void setLongitude(final Double longitude) {
this.coordinates.setLongitude(longitude);
}
}