package com.papagiannis.tuberun;
import java.io.Serializable;
import android.location.Location;
public class AbstractLocatable implements Locatable, Serializable {
//TODO: make the above trully abstract
private static final long serialVersionUID = 1L;
public AbstractLocatable(String name) {
this.name = name;
}
public AbstractLocatable(String name, Location location) {
this.name = name;
this.longtitude = (int) (location.getLongitude()*1000000);
this.latitude = (int) (location.getLatitude()*1000000);
}
public AbstractLocatable(String name, int latitude, int longtitude) {
this.name=name;
this.longtitude=longtitude;
this.latitude=latitude;
}
protected String name;
@Override
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
protected int longtitude;
protected int latitude;
public AbstractLocatable setLongtitude(int longtitude) {
this.longtitude = longtitude;
return this;
}
public AbstractLocatable setLongtitude(double longtitude) {
this.longtitude = (int) (longtitude*1000000);
return this;
}
public AbstractLocatable setLatitude(int latitude) {
this.latitude = latitude;
return this;
}
public AbstractLocatable setLatitude(double latitude) {
this.latitude = (int) (latitude*1000000);
return this;
}
@Override
public Location getLocation() {
Location l=new Location("mine");
l.setLongitude(((double)longtitude)/1000000);
l.setLatitude(((double)latitude)/1000000);
return l;
}
@Override
public int getLongtitudeE6() {
return longtitude;
}
@Override
public int getLatitudeE6() {
return latitude;
}
@Override
public float getDistanceTo(Location l) {
return getLocation().distanceTo(l);
}
@Override
public String toString() {
return name + "#" + longtitude+"#"+latitude;
}
public static AbstractLocatable fromString(String station) {
String[] tok=station.split("#");
return new AbstractLocatable(tok[0], Integer.parseInt(tok[2]), Integer.parseInt(tok[1]));
}
}