package com.o3dr.services.android.lib.drone.mission.item.spatial;
import android.os.Parcel;
import com.o3dr.services.android.lib.coordinate.LatLongAlt;
import com.o3dr.services.android.lib.drone.mission.item.MissionItem;
import com.o3dr.services.android.lib.drone.mission.MissionItemType;
/**
* Created by fhuya on 11/6/14.
*/
public abstract class BaseSpatialItem extends MissionItem implements MissionItem.SpatialItem, android.os.Parcelable {
private LatLongAlt coordinate;
protected BaseSpatialItem(MissionItemType type) {
this(type, null);
}
protected BaseSpatialItem(MissionItemType type, LatLongAlt coordinate){
super(type);
this.coordinate = coordinate;
}
protected BaseSpatialItem(BaseSpatialItem copy){
this(copy.getType(), copy.coordinate == null ? null : new LatLongAlt(copy.coordinate));
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (!(o instanceof BaseSpatialItem)) return false;
if (!super.equals(o)) return false;
BaseSpatialItem that = (BaseSpatialItem) o;
return !(coordinate != null ? !coordinate.equals(that.coordinate) : that.coordinate != null);
}
@Override
public int hashCode() {
int result = super.hashCode();
result = 31 * result + (coordinate != null ? coordinate.hashCode() : 0);
return result;
}
@Override
public String toString() {
return "BaseSpatialItem{" +
"coordinate=" + coordinate +
'}';
}
@Override
public LatLongAlt getCoordinate() {
return coordinate;
}
@Override
public void setCoordinate(LatLongAlt coordinate) {
this.coordinate = coordinate;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
super.writeToParcel(dest, flags);
dest.writeParcelable(this.coordinate, flags);
}
protected BaseSpatialItem(Parcel in) {
super(in);
this.coordinate = in.readParcelable(LatLongAlt.class.getClassLoader());
}
}