package uk.me.parabola.mkgmap.osmstyle.housenumber;
import uk.me.parabola.imgfmt.app.Coord;
import uk.me.parabola.mkgmap.general.CityInfo;
import uk.me.parabola.mkgmap.general.MapRoad;
import uk.me.parabola.mkgmap.general.ZipCodeInfo;
import uk.me.parabola.mkgmap.reader.osm.Element;
import uk.me.parabola.mkgmap.reader.osm.FakeIdGenerator;
import uk.me.parabola.mkgmap.reader.osm.Node;
import uk.me.parabola.mkgmap.reader.osm.Way;
import uk.me.parabola.util.Locatable;
class HousenumberElem implements Locatable{
protected final Element element;
private int housenumber;
private String sign;
private String place;
private CityInfo cityInfo;
private ZipCodeInfo zipCode;
private String street;
//cache for Way elements to prevent calling Way.getCofG() repeatedly
private Coord location;
public HousenumberElem(Element el, CityInfo ci) {
this.element = el;
this.cityInfo = ci;
}
public HousenumberElem(HousenumberElem he) {
this.element = he.element;
this.housenumber = he.housenumber;
this.sign = he.sign;
this.street = he.street;
this.place = he.place;
this.cityInfo = he.cityInfo;
this.zipCode = he.zipCode;
this.location = he.location;
}
public Element getElement() {
return element;
}
public int getHousenumber() {
return housenumber;
}
public void setHousenumber(int housenumber) {
this.housenumber = housenumber;
}
public String getSign() {
return sign;
}
public void setSign(String sign) {
this.sign = sign;
}
public String getPlace() {
return place;
}
public void setPlace(String place) {
this.place = place;
}
public String getStreet() {
return street;
}
public void setStreet(String street) {
this.street = street;
}
public MapRoad getRoad(){
return null;
}
public CityInfo getCityInfo(){
return cityInfo;
}
public void setZipCode(ZipCodeInfo zip){
zipCode = zip;
}
public ZipCodeInfo getZipCode(){
return zipCode;
}
@Override
public Coord getLocation() {
if (location == null){
if (element instanceof Node)
location = ((Node) element).getLocation();
else
location = ((Way) element).getCofG();
}
return location;
}
@Override
public String toString() {
if (street != null)
return street + " " + sign;
if (place != null)
return place + " " + sign;
return "?" + " " + sign;
}
public String toBrowseURL(){
if (FakeIdGenerator.isFakeId(element.getId())){
return getLocation().toOSMURL();
}
return element.toBrowseURL();
}
}