package org.hoteia.qalingo.core.web.bean.geoloc.json; import java.io.Serializable; import java.util.Iterator; import java.util.List; import com.fasterxml.jackson.annotation.JsonIgnoreProperties; import com.fasterxml.jackson.annotation.JsonProperty; @JsonIgnoreProperties(ignoreUnknown=true) public class GoogleGeoCodeResult implements Serializable { @JsonProperty("address_components") private List<GoogleGeoCodeAddressComponent> addressComponents; @JsonProperty("formatted_address") private String formattedAddress; @JsonProperty("geometry") private GoogleGeoCodeGeometry geometry; @JsonProperty("types") private List<String> types; public List<GoogleGeoCodeAddressComponent> getAddressComponents() { return addressComponents; } public void setAddressComponents(List<GoogleGeoCodeAddressComponent> addressComponents) { this.addressComponents = addressComponents; } public String getFormattedAddress() { return formattedAddress; } public void setFormattedAddress(String formattedAddress) { this.formattedAddress = formattedAddress; } public GoogleGeoCodeGeometry getGeometry() { return geometry; } public void setGeometry(GoogleGeoCodeGeometry geometry) { this.geometry = geometry; } public List<String> getTypes() { return types; } public void setTypes(List<String> types) { this.types = types; } public String getAddress(){ return getShortValue("street_number") + " " + getLongValue("route"); } public String getPostalCode(){ return getShortValue("postal_code"); } public String getCity(){ return getLongValue("locality"); } public String getCountryCode(){ return getShortValue("country"); } protected String getLongValue(String type){ for (Iterator<GoogleGeoCodeAddressComponent> iterator = addressComponents.iterator(); iterator.hasNext();) { GoogleGeoCodeAddressComponent googleGeoCodeAddressComponent = (GoogleGeoCodeAddressComponent) iterator.next(); if(googleGeoCodeAddressComponent.getTypes().contains(type)){ return googleGeoCodeAddressComponent.getLongName(); } } return null; } protected String getShortValue(String type){ for (Iterator<GoogleGeoCodeAddressComponent> iterator = addressComponents.iterator(); iterator.hasNext();) { GoogleGeoCodeAddressComponent googleGeoCodeAddressComponent = (GoogleGeoCodeAddressComponent) iterator.next(); if(googleGeoCodeAddressComponent.getTypes().contains(type)){ return googleGeoCodeAddressComponent.getShortName(); } } return null; } }