package com.google.gwt.maps.client.placelib;
/*
* #%L
* GWT Maps API V3 - Core API
* %%
* Copyright (C) 2011 - 2012 GWT Maps API V3
* %%
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
* #L%
*/
import com.google.gwt.core.client.JsArray;
import com.google.gwt.dom.client.Element;
import com.google.gwt.json.client.JSONObject;
import com.google.gwt.maps.client.AbstractMapsGWTTestHelper;
import com.google.gwt.maps.client.LoadApi.LoadLibrary;
import com.google.gwt.maps.client.MapOptions;
import com.google.gwt.maps.client.MapTypeId;
import com.google.gwt.maps.client.MapWidget;
import com.google.gwt.maps.client.base.LatLng;
import com.google.gwt.maps.client.placeslib.PlaceDetailsHandler;
import com.google.gwt.maps.client.placeslib.PlaceDetailsRequest;
import com.google.gwt.maps.client.placeslib.PlaceResult;
import com.google.gwt.maps.client.placeslib.PlaceSearchHandler;
import com.google.gwt.maps.client.placeslib.PlaceSearchPagination;
import com.google.gwt.maps.client.placeslib.PlaceSearchRequest;
import com.google.gwt.maps.client.placeslib.PlaceTextSearchHandler;
import com.google.gwt.maps.client.placeslib.PlacesService;
import com.google.gwt.maps.client.placeslib.PlacesServiceStatus;
import com.google.gwt.maps.client.placeslib.TextSearchRequest;
import com.google.gwt.maps.client.services.GeocoderAddressComponent;
import com.google.gwt.user.client.ui.FlowPanel;
import com.google.gwt.user.client.ui.RootPanel;
public class PlacesServiceGwtTest extends AbstractMapsGWTTestHelper {
/**
* Used for nearby search
*/
private int page;
@Override
public LoadLibrary[] getLibraries() {
return new LoadLibrary[] { LoadLibrary.PLACES };
}
@SuppressWarnings("unused")
public void testUse() {
asyncLibTest(new Runnable() {
@Override
public void run() {
FlowPanel fp = new FlowPanel();
RootPanel.get().add(fp);
MapOptions options = MapOptions.newInstance();
MapWidget mapWidget = new MapWidget(options);
RootPanel.get().add(mapWidget);
mapWidget.setSize("500px", "500px");
PlacesService o = PlacesService.newInstance(mapWidget);
Element htmlDivElement = fp.getElement();
PlacesService o1 = PlacesService.newInstance(htmlDivElement);
finishTest();
}
});
}
/**
* TODO add some more tests
*/
@SuppressWarnings("unused")
public void testDetails1() {
asyncLibTest(new Runnable() {
@Override
public void run() {
FlowPanel fp = new FlowPanel();
RootPanel.get().add(fp);
MapOptions options = MapOptions.newInstance();
MapWidget mapWidget = new MapWidget(options);
RootPanel.get().add(mapWidget);
mapWidget.setSize("500px", "500px");
PlacesService o = PlacesService.newInstance(mapWidget);
String reference = "CnRkAAAAGnBVNFDeQoOQHzgdOpOqJNV7K9-c5IQrWFUYD9TNhUmz5-aHhfqyKH0zmAcUlkqVCrpaKcV8Z"
+ "jGQKzB6GXxtzUYcP-muHafGsmW-1CwjTPBCmK43AZpAwW0FRtQDQADj3H2bzwwHVIXlQAiccm7r4xIQmjt_Oqm2FejWpBxLW"
+ "s3L_RoUbharABi5FMnKnzmRL2TGju6UA4k";
PlaceDetailsRequest request = PlaceDetailsRequest.newInstance();
request.setReference(reference);
o.getDetails(request, new PlaceDetailsHandler() {
@Override
public void onCallback(PlaceResult result, PlacesServiceStatus status) {
System.out.println("status=" + status.toString());
if (status == PlacesServiceStatus.OK) {
System.out.println("OK");
String address = result.getFormatted_Address();
JsArray<GeocoderAddressComponent> addressComp = result.getAddress_Components();
String name = result.getName();
System.out.println("source=" + result.toSource());
assertTrue(true);
} else if (status == PlacesServiceStatus.INVALID_REQUEST) {
System.out.println("INVALID_REQUEST");
fail();
} else if (status == PlacesServiceStatus.OVER_QUERY_LIMIT) {
System.out.println("OVER_QUERY_LIMIT");
fail();
} else if (status == PlacesServiceStatus.REQUEST_DENIED) {
System.out.println("REQUEST_DENIED");
fail();
} else if (status == PlacesServiceStatus.UNKNOWN_ERROR) {
System.out.println("UNKNOWN_ERROR");
fail();
} else if (status == PlacesServiceStatus.ZERO_RESULTS) {
System.out.println("ZERO_RESULTS");
assertTrue(true);
}
finishTest();
}
});
}
});
}
public void testSearch() {
asyncLibTest(new Runnable() {
@Override
public void run() {
FlowPanel fp = new FlowPanel();
RootPanel.get().add(fp);
MapOptions options = MapOptions.newInstance();
MapWidget mapWidget = new MapWidget(options);
RootPanel.get().add(mapWidget);
mapWidget.setSize("500px", "500px");
PlacesService placeService = PlacesService.newInstance(mapWidget);
PlaceSearchRequest request = PlaceSearchRequest.newInstance();
request.setLocation(LatLng.newInstance(47.6107, -122.3348));
request.setRadius(15);
placeService.nearbySearch(request, new PlaceSearchHandler() {
@Override
public void onCallback(JsArray<PlaceResult> results, PlaceSearchPagination pagination,
PlacesServiceStatus status) {
System.out.println("status=" + status.toString());
String s = new JSONObject(results).toString();
System.out.println(s);
if (status == PlacesServiceStatus.OK) {
assertTrue(true);
assertTrue(pagination.hasNextPage());
} else if (status == PlacesServiceStatus.INVALID_REQUEST) {
System.out.println("INVALID_REQUEST");
fail();
} else if (status == PlacesServiceStatus.OVER_QUERY_LIMIT) {
System.out.println("OVER_QUERY_LIMIT");
fail();
} else if (status == PlacesServiceStatus.REQUEST_DENIED) {
System.out.println("REQUEST_DENIED");
fail();
} else if (status == PlacesServiceStatus.UNKNOWN_ERROR) {
System.out.println("UNKNOWN_ERROR");
fail();
} else if (status == PlacesServiceStatus.ZERO_RESULTS) {
System.out.println("ZERO_RESULTS");
assertTrue(true);
}
finishTest();
}
});
}
});
}
public void testGetDetailsPlaceResult() {
asyncLibTest(new Runnable() {
@Override
public void run() {
LatLng center = LatLng.newInstance(47.60346, -122.33571);
MapOptions opts = MapOptions.newInstance();
opts.setZoom(16);
opts.setCenter(center);
opts.setMapTypeId(MapTypeId.HYBRID);
MapWidget mapWidget = new MapWidget(opts);
PlacesService placeService = PlacesService.newInstance(mapWidget);
PlaceDetailsRequest request = PlaceDetailsRequest.newInstance();
request.setReference("CpQBjgAAAFCaT73TRgKBKFaeNsvq-wGNIErZoG1kSxvtgrDH6TDaDNBZsb2PDKKxWqmKHZr8kIo_JIzK8CEFgGb"
+ "Luyt1BsdUR20ZiCg3CAXkkLxh2Q08mAzNN7Ai7WzUixXOHjnbnlm6WV-NpFhbJyTPgsV_2l-AfUlyt_SbleAsUUWtdxJTp0HPHWEnQ"
+ "ZNPvcnmQ-lpRRIQZfKps0iYL5VOEBD5dQDF9xoUGgMSwqd1H9CNcwZsbVo1IY4BU44");
placeService.getDetails(request, new PlaceDetailsHandler() {
public void onCallback(PlaceResult result, PlacesServiceStatus status) {
String s = new JSONObject(result).toString();
System.out.println(s);
String s1 = new JSONObject(result.getOpeningHours()).toString();
System.out.println(s1);
String s2 = new JSONObject(result.getOpeningHours().getPeriods().get(0)).toString();
System.out.println(s2);
String s3 = new JSONObject(result.getOpeningHours().getPeriods().get(0).getOpen()).toString();
System.out.println(s3);
String s4 = new JSONObject(result.getReviews()).toString();
System.out.println(s4);
assertEquals(-480, result.getUtcOffset());
finishTest();
}
});
}
});
}
public void testTextSearch() {
asyncLibTest(new Runnable() {
@Override
public void run() {
LatLng center = LatLng.newInstance(47.60346, -122.33571);
MapOptions opts = MapOptions.newInstance();
opts.setZoom(16);
opts.setCenter(center);
opts.setMapTypeId(MapTypeId.HYBRID);
MapWidget mapWidget = new MapWidget(opts);
TextSearchRequest request = TextSearchRequest.newInstance();
request.setLocation(LatLng.newInstance(47.6107, -122.3348));
request.setRadius(15);
request.setQuery("pike");
PlacesService placeService = PlacesService.newInstance(mapWidget);
placeService.textSearch(request, new PlaceTextSearchHandler() {
public void onCallback(JsArray<PlaceResult> results, PlacesServiceStatus status) {
System.out.println("status=" + status);
String s = new JSONObject(results).toString();
System.out.println(s);
assertEquals(PlacesServiceStatus.OK, status);
assertTrue(results.length() > 0);
finishTest();
}
});
}
});
}
public void testSearchNearBy() {
asyncLibTest(new Runnable() {
@Override
public void run() {
LatLng center = LatLng.newInstance(47.60346, -122.33571);
MapOptions opts = MapOptions.newInstance();
opts.setZoom(16);
opts.setCenter(center);
opts.setMapTypeId(MapTypeId.HYBRID);
MapWidget mapWidget = new MapWidget(opts);
PlaceSearchRequest request = PlaceSearchRequest.newInstance();
request.setLocation(center);
request.setRadius(5000);
request.setTypes("store");
PlacesService placeService = PlacesService.newInstance(mapWidget);
placeService.nearbySearch(request, new PlaceSearchHandler() {
@Override
public void onCallback(JsArray<PlaceResult> results, PlaceSearchPagination pagination,
PlacesServiceStatus status) {
String s = new JSONObject(results).toString();
System.out.println(s);
System.out.println("pagination hasNextPage=" + pagination.hasNextPage());
assertEquals(PlacesServiceStatus.OK, status);
assertTrue(pagination.hasNextPage());
// Since this should use the same callback
if (page == 0) {
page++;
pagination.nextPage();
} else if (page == 1) {
finishTest();
}
}
});
}
});
}
}