package cz.nalezen.osm.extractor.data;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.stream.Collectors;
import cz.nalezen.osm.extractor.MapUtils;
public class CzechRepublicAddresses {
private ArrayList<District> districts = new ArrayList<>();
private HashSet<String> missedOsmStreetNames = new HashSet<>();
public ArrayList<District> getDistricts() {
return districts;
}
public void setDistricts(ArrayList<District> districts) {
this.districts = districts;
}
public District assureDistrict(String name) {
String cname = name.trim().toLowerCase();
for (District district : districts) {
if (district.getName().equals(cname)) {
return district;
}
}
District district = new District();
district.setName(cname);
districts.add(district);
return district;
}
public District lookupDistrict(String name) {
String cname = name.toLowerCase().trim();
for (District district : districts) {
if (district.getName().equals(cname)) {
return district;
}
}
return null;
}
public HashSet<String> getMissedOsmStreetNames() {
return missedOsmStreetNames;
}
public void setMissedOsmStreetNames(HashSet<String> missedOsmStreetNames) {
this.missedOsmStreetNames = missedOsmStreetNames;
}
public void updateCityUniqeNames() {
HashMap<String, ArrayList<City>> names = new HashMap<>();
List<District> orderedDistricts = districts.stream().sorted((d1, d2)->d1.getName().compareTo(d2.getName())).collect(Collectors.toList());
districts.forEach(district->{
district.getCities().forEach(city->{
String id = MapUtils.stringToId(city.getName());
names.computeIfAbsent(id, k->new ArrayList<>());
names.get(id).add(city);
});
});
districts.forEach(district->{
district.getCities().forEach(city->{
String id = MapUtils.stringToId(city.getName());
if (names.get(id).size()>1) {
id = id+"-"+orderedDistricts.indexOf(city.getDistrict());
// System.out.println(id);
}
city.setUniqeName(id);
});
});
}
}