//Dstl (c) Crown Copyright 2017
package uk.gov.dstl.baleen.resources.gazetteer;
import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
import java.util.Map.Entry;
import org.apache.uima.resource.Resource;
import uk.gov.dstl.baleen.exceptions.BaleenException;
import uk.gov.dstl.baleen.exceptions.InvalidParameterException;
import uk.gov.dstl.baleen.resources.SharedCountryResource;
/**
* Gazetteer implementation of SharedCountryResource which allows gazetteer searching for country names
*
*
*/
public class CountryGazetteer extends AbstractMultiMapGazetteer<String> {
private SharedCountryResource country;
@Override
public void init(Resource connection, Map<String, Object> config) throws BaleenException{
try{
country = (SharedCountryResource) connection;
}catch(ClassCastException cce){
throw new InvalidParameterException("Unable to cast connection parameter to SharedCountryResource", cce);
}
super.init(connection, config);
}
@Override
public void reloadValues() throws BaleenException {
reset();
for(Entry<String, String> countryEntry : country.getCountryNames().entrySet()){
addTerm(countryEntry.getValue(), caseSensitive ? countryEntry.getKey() : countryEntry.getKey().toLowerCase());
}
}
@Override
public Map<String, Object> getAdditionalData(String key) {
String cca3 = getId(caseSensitive ? key : key.toLowerCase());
if(cca3 == null){
return Collections.emptyMap();
}
Map<String, Object> data = new HashMap<>();
data.put("geoJson", country.getGeoJson(cca3));
return data;
}
}