package me.osm.gazetter.addresses.impl;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;
import me.osm.gazetter.addresses.AddressesUtils;
import me.osm.gazetter.addresses.NamesMatcher;
import org.apache.commons.lang3.StringUtils;
/**
* Default implementation for
* {@link NamesMatcher}
* */
public class NamesMatcherImpl implements NamesMatcher {
@Override
public boolean isPlaceNameMatch(String name, Set<String> names){
return names.contains(name);
}
@Override
public boolean isStreetNameMatch(String street,
Map<String, String> filterNameTags) {
return new HashSet<>(filterNameTags.values()).contains(street);
}
@Override
public boolean isPlaceNameMatch(String name,
Map<String, String> filterNameTags) {
return new HashSet<>(filterNameTags.values()).contains(name);
}
@Override
public boolean doesStreetsMatch(Map<String, String> o1names,
Map<String, String> o2names) {
String name1 = AddressesUtils.foldASCII(StringUtils.stripToEmpty(o1names.get("name")).toLowerCase());
String name2 = AddressesUtils.foldASCII(StringUtils.stripToEmpty(o2names.get("name")).toLowerCase());
return name1.contains(name2) || name2.contains(name1) ||
o2names.values().contains(name1) || o1names.values().contains(name2);
}
}