use of com.google.code.geocoder.model.GeocodeResponse in project opennms by OpenNMS.
the class GoogleGeocoderService method getCoordinates.
@Override
public synchronized Coordinates getCoordinates(final String address) throws GeocoderException {
ensureInitialized();
final GeocoderRequest request = new GeocoderRequestBuilder().setAddress(address).setLanguage("en").getGeocoderRequest();
GeocodeResponse response;
try {
response = m_geocoder.geocode(request);
} catch (IOException e) {
// Makes the assumption that IO related exceptions are temporary, which is suitable for most scenarios
throw new TemporaryGeocoderException("Failed to get coordinates for " + address + " using the Google Geocoder.", e);
}
switch(response.getStatus()) {
case OK:
return new GoogleCoordinates(response.getResults().get(0));
case OVER_QUERY_LIMIT:
throw new TemporaryGeocoderException("Failed to get coordinates for " + address + " using the Google Geocoder. You have exceeded the daily usage limit.");
case ERROR:
case INVALID_REQUEST:
case REQUEST_DENIED:
case UNKNOWN_ERROR:
case ZERO_RESULTS:
default:
throw new GeocoderException("Failed to get coordinates for " + address + " using Google Geocoder. Response was: " + response.getStatus().toString());
}
}
use of com.google.code.geocoder.model.GeocodeResponse in project camel by apache.
the class GeoCoderProducer method process.
public void process(Exchange exchange) throws Exception {
// header take precedence
String address = exchange.getIn().getHeader(GeoCoderConstants.ADDRESS, String.class);
if (address == null) {
address = endpoint.getAddress();
}
String latlng = exchange.getIn().getHeader(GeoCoderConstants.LATLNG, String.class);
if (latlng == null) {
latlng = endpoint.getLatlng();
}
if (latlng != null) {
GeocoderRequest req = new GeocoderRequest();
req.setLanguage(endpoint.getLanguage());
String lat = ObjectHelper.before(latlng, ",");
String lng = ObjectHelper.after(latlng, ",");
req.setLocation(new LatLng(lat, lng));
LOG.debug("Geocode for lat/lng {}", latlng);
GeocodeResponse res = geocoder.geocode(req);
LOG.debug("Geocode response {}", res);
if (res != null) {
extractGeoResult(res, exchange);
}
} else if (address != null) {
// is it current address
if ("current".equals(address)) {
processCurrentLocation(exchange);
} else {
LOG.debug("Geocode for address {}", address);
GeocoderRequest req = new GeocoderRequest(address, endpoint.getLanguage());
GeocodeResponse res = geocoder.geocode(req);
LOG.debug("Geocode response {}", res);
if (res != null) {
extractGeoResult(res, exchange);
}
}
}
}
use of com.google.code.geocoder.model.GeocodeResponse in project wildfly-camel by wildfly-extras.
the class GeocoderIntegrationTest method testGeocoderComponent.
@Test
public void testGeocoderComponent() throws Exception {
HttpClientConfigurer configurer = new GeocoderHttpClientConfigurer();
initialContext.bind("httpClientConfigurer", configurer);
CamelContext camelctx = new DefaultCamelContext();
camelctx.addRoutes(new RouteBuilder() {
@Override
public void configure() throws Exception {
from("direct:start").to("geocoder:address:London, England?httpClientConfigurer=#httpClientConfigurer");
}
});
camelctx.start();
try {
// Geocoder API is sometimes flaky so retry the request if necessary
GeocodeResponse result = null;
int count = 0;
while (count < 5) {
ProducerTemplate template = camelctx.createProducerTemplate();
result = template.requestBody("direct:start", null, GeocodeResponse.class);
Assert.assertNotNull("Geocoder response is null", result);
// Skip further testing if we exceeded the API rate limit
GeocoderStatus status = result.getStatus();
Assume.assumeFalse("Geocoder API rate limit exceeded", status.equals(OVER_QUERY_LIMIT));
if (status.equals(OK)) {
break;
}
Thread.sleep(1000);
count++;
}
List<GeocoderResult> results = result.getResults();
Assert.assertNotNull("Geocoder results is null", result);
Assert.assertEquals("Expected 1 GeocoderResult to be returned", 1, results.size());
LatLng location = results.get(0).getGeometry().getLocation();
Assert.assertEquals("51.5073509", location.getLat().toPlainString());
Assert.assertEquals("-0.1277583", location.getLng().toPlainString());
} finally {
camelctx.stop();
initialContext.unbind("httpClientConfigurer");
}
}
use of com.google.code.geocoder.model.GeocodeResponse in project camel by apache.
the class GeoCoderProxyTest method testGeoCoder.
@Test
public void testGeoCoder() throws Exception {
GeoCoderEndpoint endpoint = context.getEndpoint("geocoder:address:current?headersOnly=true&proxyHost=localhost&proxyPort=3128&proxyAuthMethod=Basic&proxyAuthUsername=proxy&proxyAuthPassword=proxy", GeoCoderEndpoint.class);
Geocoder geocoder = endpoint.createGeocoder();
GeocoderRequest req = new GeocoderRequest();
req.setLocation(new LatLng("45.4643", "9.1895"));
GeocodeResponse res = geocoder.geocode(req);
log.info("Response {} ", res);
}
Aggregations