Subversion Repositories mkgmap

Rev

Rev 3635 | Blame | Compare with Previous | Last modification | View Log | RSS feed

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();
        }

}