Package com.bytebybyte.google.geocoding.service.standard

Source Code of com.bytebybyte.google.geocoding.service.standard.StandardGeocodingService

package com.bytebybyte.google.geocoding.service.standard;

import java.net.URI;
import java.util.Map;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.client.RestTemplate;
import org.springframework.web.util.UriComponentsBuilder;

import com.bytebybyte.google.geocoding.service.IGeocodeRequest;
import com.bytebybyte.google.geocoding.service.IGeocodingService;
import com.bytebybyte.google.geocoding.service.IResponse;
import com.bytebybyte.google.geocoding.service.IReverseGeocodeRequest;
import com.bytebybyte.google.geocoding.service.response.Response;

public class StandardGeocodingService implements IGeocodingService {

  protected static final Logger logger = LoggerFactory.getLogger(StandardGeocodingService.class);

  protected static final String URL = "https://maps.googleapis.com/maps/api/geocode/{output}";

  protected RestTemplate restTemplate;

  public StandardGeocodingService() {
    this(new RestTemplate());
  }

  public StandardGeocodingService(RestTemplate restTemplate) {
    this.restTemplate = restTemplate;
  }

  @Override
  public IResponse geocode(IGeocodeRequest request) {

    UriComponentsBuilder builder = UriComponentsBuilder.fromHttpUrl(URL);

    for (Map.Entry<String, String> entry : request.getParameters().entrySet())
      builder.queryParam(entry.getKey(), entry.getValue());

    URI uri = builder.buildAndExpand(request.getParameters()).toUri();

    return restTemplate.getForObject(uri, Response.class);
  }

  @Override
  public IResponse reverseGeocode(IReverseGeocodeRequest request) {

    UriComponentsBuilder builder = UriComponentsBuilder.fromHttpUrl(URL);

    for (Map.Entry<String, String> entry : request.getParameters().entrySet())
      builder.queryParam(entry.getKey(), entry.getValue());

    URI uri = builder.buildAndExpand(request.getParameters()).toUri();

    return restTemplate.getForObject(uri, Response.class);
  }
}
TOP

Related Classes of com.bytebybyte.google.geocoding.service.standard.StandardGeocodingService

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.