public int geocode(DataSetDescriptor dsd, String address) {
		NominatimConnector nm = new NominatimConnector("http://nominatim.openstreetmap.org/search.php");
		nm.setFormat("json");
		boolean containColumn = address.contains("{");
		int rowCont = 0;
		if(!containColumn){
			// In order to not contain a column name into the search, the geometry field is the same for all
			nm.setQuery(address);
			String geoColumnAddress = nm.getAddress();
			System.out.println(geoColumnAddress);
			// Update all fields with geoColumnAddress and geoColumnName
			this.updateGeometryColumn(dsd, geoColumnAddress);
		}else{
			// Get the columns from address
			List<String> col = new LinkedList<String>();
			nm.getColumnsToGeom(col, address);
			SqlRowSet columnsMap = this.getColumnsByList(dsd, col);
			while(columnsMap.next()){
				for(String c:col){
					String dir = address;
					String param = columnsMap.getString(c);
					int pk = columnsMap.getInt(dsd.getNamePK());
					dir = dir.replace("{" + c + "}", param);
					nm.setQuery(dir);
					String geoAddress = nm.getAddress();
					if(geoAddress!=null){
						String[] splitGeom = geoAddress.split(",");
						Double lon = Double.valueOf(splitGeom[0]);
						Double lat = Double.valueOf(splitGeom[1]);
						String updateSQL = "UPDATE " + dsd.getTablename() +
								" SET " + dsd.getGeoColumnName() + " = ST_GeomFromEWKT(:geom)" +
								" WHERE " + dsd.getNamePK() + "=:pk";
						Map<String, Object> paramMap = new HashMap<String, Object>();
						paramMap.put("pk", pk);
						paramMap.put("geom", "SRID=4326;POINT("+lon+" "+lat+")");
						this.namedJdbcTemplate.update(updateSQL, paramMap);
					}else{
						rowCont++;
					}
				}
			}
		}
		return rowCont;
	}