package cz.nalezen.osm.extractor.data;
import java.util.ArrayList;
import java.util.HashSet;
import org.apache.commons.lang.StringUtils;
import com.fasterxml.jackson.annotation.JsonIgnore;
public class City {
public static class AuxiliaryData {
public int minPostcodeMvcr;
public int maxPostcodeMvcr;
}
private String name;
private ArrayList<Address> addresses = new ArrayList<>();
private ArrayList<Street> streets = new ArrayList<>();
private HashSet<Integer> postcodes = new HashSet<>();
private PointWgs84 position;
private AuxiliaryData auxiliaryData;
private District district;
private String uniqueName;
public City() {
}
public City(District district) {
this.district = district;
}
@JsonIgnore
public AuxiliaryData assureAuxiliaryData() {
if (auxiliaryData==null) {
auxiliaryData = new AuxiliaryData();
}
return auxiliaryData;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public ArrayList<Address> getAddresses() {
return addresses;
}
public void setAddresses(ArrayList<Address> addresses) {
this.addresses = addresses;
}
public ArrayList<Street> getStreets() {
return streets;
}
public void setStreets(ArrayList<Street> streets) {
this.streets = streets;
}
public PointWgs84 getPosition() {
return position;
}
public void setPosition(PointWgs84 position) {
this.position = position;
}
public HashSet<Integer> getPostcodes() {
return postcodes;
}
public void setPostcodes(HashSet<Integer> postcodes) {
this.postcodes = postcodes;
}
@JsonIgnore
public Street assureStreet(String streetName) {
String cname = streetName.trim().toLowerCase();
for (Street street : streets) {
if (street.getName().equals(cname)) {
return street;
}
}
Street street = new Street();
street.setName(cname);
streets.add(street);
return street;
}
@JsonIgnore
public Address assureAddress(String mainNr, String auxNr) {
for (Address address : addresses) {
if (mainNr==address.getMainNumber() && auxNr==address.getAuxNumber()) {
return address;
}
}
Address address = new Address();
address.setMainNumber(mainNr);
address.setAuxNumber(auxNr);
addresses.add(address);
return address;
}
@JsonIgnore
public String getUniqeName() {
if (StringUtils.isBlank(uniqueName)) {
throw new RuntimeException("Huh?");
}
return uniqueName;
}
@JsonIgnore
public void setUniqeName(String uniqeName) {
this.uniqueName = uniqeName;
}
public void setDistrict(District district) {
this.district = district;
}
public District getDistrict() {
if (district==null) {
throw new NullPointerException();
}
return district;
}
}