/*
* Copyright (C) 2015 Gerd Petermann
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 3 or
* version 2 as published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details.
*/
package uk.me.parabola.mkgmap.general;
import uk.me.parabola.imgfmt.app.lbl.City;
public class CityInfo implements Comparable<CityInfo> {
private static final String UNKNOWN = "?";
private final String city,region,country;
private City imgCity;
public CityInfo (String city, String region, String country){
this.city = (city != null) ? city: UNKNOWN;
this.region = (region != null) ? region : UNKNOWN;
this.country = (country != null) ? country : UNKNOWN;
}
public String getCity() {
if (city == UNKNOWN)
return null;
return city;
}
public String getRegion() {
if (region == UNKNOWN)
return null;
return region;
}
public String getCountry() {
if (country == UNKNOWN)
return null;
return country;
}
public City getImgCity() {
return imgCity;
}
public void setImgCity(City imgCity) {
this.imgCity = imgCity;
}
public boolean isEmpty(){
return city == UNKNOWN && region == UNKNOWN && country == UNKNOWN;
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((city == null) ? 0 : city.hashCode());
result = prime * result + ((country == null) ? 0 : country.hashCode());
result = prime * result + ((region == null) ? 0 : region.hashCode());
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (!(obj instanceof CityInfo))
return false;
CityInfo other = (CityInfo) obj;
if (city == null) {
if (other.city != null)
return false;
} else if (!city.equals(other.city))
return false;
if (country == null) {
if (other.country != null)
return false;
} else if (!country.equals(other.country))
return false;
if (region == null) {
if (other.region != null)
return false;
} else if (!region.equals(other.region))
return false;
return true;
}
@Override
public int compareTo(CityInfo o) {
if (this == o)
return 0;
int d = city.compareTo(o.city);
if (d != 0)
return d;
d = region.compareTo(o.region);
if (d != 0)
return d;
return country.compareTo(o.country);
}
@Override
public String toString() {
return city + "/" + region + " in " + country;
}
}