Search in sources :

Example 1 with GeocoderRequest

use of com.google.code.geocoder.model.GeocoderRequest 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);
            }
        }
    }
}
Also used : GeocodeResponse(com.google.code.geocoder.model.GeocodeResponse) LatLng(com.google.code.geocoder.model.LatLng) GeocoderRequest(com.google.code.geocoder.model.GeocoderRequest)

Example 2 with GeocoderRequest

use of com.google.code.geocoder.model.GeocoderRequest 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());
    }
}
Also used : GeocoderRequestBuilder(com.google.code.geocoder.GeocoderRequestBuilder) TemporaryGeocoderException(org.opennms.features.geocoder.TemporaryGeocoderException) GeocodeResponse(com.google.code.geocoder.model.GeocodeResponse) IOException(java.io.IOException) GeocoderException(org.opennms.features.geocoder.GeocoderException) TemporaryGeocoderException(org.opennms.features.geocoder.TemporaryGeocoderException) GeocoderRequest(com.google.code.geocoder.model.GeocoderRequest)

Example 3 with GeocoderRequest

use of com.google.code.geocoder.model.GeocoderRequest 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);
}
Also used : GeocodeResponse(com.google.code.geocoder.model.GeocodeResponse) LatLng(com.google.code.geocoder.model.LatLng) Geocoder(com.google.code.geocoder.Geocoder) GeocoderRequest(com.google.code.geocoder.model.GeocoderRequest) Test(org.junit.Test)

Aggregations

GeocodeResponse (com.google.code.geocoder.model.GeocodeResponse)3 GeocoderRequest (com.google.code.geocoder.model.GeocoderRequest)3 LatLng (com.google.code.geocoder.model.LatLng)2 Geocoder (com.google.code.geocoder.Geocoder)1 GeocoderRequestBuilder (com.google.code.geocoder.GeocoderRequestBuilder)1 IOException (java.io.IOException)1 Test (org.junit.Test)1 GeocoderException (org.opennms.features.geocoder.GeocoderException)1 TemporaryGeocoderException (org.opennms.features.geocoder.TemporaryGeocoderException)1