diff options
author | kevin <kevin.li@mapbox.com> | 2019-04-10 11:29:15 +0800 |
---|---|---|
committer | Łukasz Paczos <lukasz.paczos@mapbox.com> | 2019-04-18 16:00:12 +0200 |
commit | ef5b00b8101dae1ded5162dc949a71d0c4d4e2b7 (patch) | |
tree | 5de04576f61b43b6b9f2eb5713f8a90086c440de /platform/android/MapboxGLAndroidSDK | |
parent | 2b576d24f09909c54e3251801ffdb6aca5a7f12d (diff) | |
download | qtlocation-mapboxgl-ef5b00b8101dae1ded5162dc949a71d0c4d4e2b7.tar.gz |
Add hashcode(), equals() and toString() methods to Events class.
Diffstat (limited to 'platform/android/MapboxGLAndroidSDK')
10 files changed, 483 insertions, 56 deletions
diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/module/telemetry/MapClickEvent.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/module/telemetry/MapClickEvent.java index 91e8c0f6f3..e77a9d9e5b 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/module/telemetry/MapClickEvent.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/module/telemetry/MapClickEvent.java @@ -83,6 +83,91 @@ class MapClickEvent extends Event { } @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + + MapClickEvent that = (MapClickEvent) o; + + if (Double.compare(that.latitude, latitude) != 0) { + return false; + } + if (Double.compare(that.longitude, longitude) != 0) { + return false; + } + if (Double.compare(that.zoom, zoom) != 0) { + return false; + } + if (batteryLevel != that.batteryLevel) { + return false; + } + if (pluggedIn != that.pluggedIn) { + return false; + } + if (wifi != that.wifi) { + return false; + } + if (created != null ? !created.equals(that.created) : that.created != null) { + return false; + } + if (gesture != null ? !gesture.equals(that.gesture) : that.gesture != null) { + return false; + } + if (cellularNetworkType != null ? !cellularNetworkType.equals(that.cellularNetworkType) : + that.cellularNetworkType != null) { + return false; + } + if (carrier != null ? !carrier.equals(that.carrier) : that.carrier != null) { + return false; + } + return orientation != null ? orientation.equals(that.orientation) : that.orientation == null; + } + + @Override + public int hashCode() { + int result; + long temp; + result = event.hashCode(); + result = 31 * result + (created != null ? created.hashCode() : 0); + result = 31 * result + (gesture != null ? gesture.hashCode() : 0); + result = 31 * result + (cellularNetworkType != null ? cellularNetworkType.hashCode() : 0); + result = 31 * result + (carrier != null ? carrier.hashCode() : 0); + result = 31 * result + (orientation != null ? orientation.hashCode() : 0); + temp = Double.doubleToLongBits(latitude); + result = 31 * result + (int) (temp ^ (temp >>> 32)); + temp = Double.doubleToLongBits(longitude); + result = 31 * result + (int) (temp ^ (temp >>> 32)); + temp = Double.doubleToLongBits(zoom); + result = 31 * result + (int) (temp ^ (temp >>> 32)); + result = 31 * result + batteryLevel; + result = 31 * result + (pluggedIn ? 1 : 0); + result = 31 * result + (wifi ? 1 : 0); + return result; + } + + @Override + public String toString() { + return "MapClickEvent{" + + "event='" + event + '\'' + + ", created='" + created + '\'' + + ", gesture='" + gesture + '\'' + + ", cellularNetworkType='" + cellularNetworkType + '\'' + + ", carrier='" + carrier + '\'' + + ", orientation='" + orientation + '\'' + + ", latitude=" + latitude + + ", longitude=" + longitude + + ", zoom=" + zoom + + ", batteryLevel=" + batteryLevel + + ", pluggedIn=" + pluggedIn + + ", wifi=" + wifi + + '}'; + } + + @Override public int describeContents() { return 0; } diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/module/telemetry/MapDragendEvent.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/module/telemetry/MapDragendEvent.java index 36c75112f1..0b9646b462 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/module/telemetry/MapDragendEvent.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/module/telemetry/MapDragendEvent.java @@ -76,6 +76,86 @@ class MapDragendEvent extends Event { } @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + + MapDragendEvent that = (MapDragendEvent) o; + + if (batteryLevel != that.batteryLevel) { + return false; + } + if (Double.compare(that.lat, lat) != 0) { + return false; + } + if (Double.compare(that.lng, lng) != 0) { + return false; + } + if (Double.compare(that.zoom, zoom) != 0) { + return false; + } + if (pluggedIn != that.pluggedIn) { + return false; + } + if (wifi != that.wifi) { + return false; + } + if (created != null ? !created.equals(that.created) : that.created != null) { + return false; + } + if (orientation != null ? !orientation.equals(that.orientation) : that.orientation != null) { + return false; + } + if (carrier != null ? !carrier.equals(that.carrier) : that.carrier != null) { + return false; + } + return cellularNetworkType != null ? cellularNetworkType.equals(that.cellularNetworkType) : + that.cellularNetworkType == null; + } + + @Override + public int hashCode() { + int result; + long temp; + result = event.hashCode(); + result = 31 * result + (created != null ? created.hashCode() : 0); + result = 31 * result + (orientation != null ? orientation.hashCode() : 0); + result = 31 * result + (carrier != null ? carrier.hashCode() : 0); + result = 31 * result + (cellularNetworkType != null ? cellularNetworkType.hashCode() : 0); + result = 31 * result + batteryLevel; + temp = Double.doubleToLongBits(lat); + result = 31 * result + (int) (temp ^ (temp >>> 32)); + temp = Double.doubleToLongBits(lng); + result = 31 * result + (int) (temp ^ (temp >>> 32)); + temp = Double.doubleToLongBits(zoom); + result = 31 * result + (int) (temp ^ (temp >>> 32)); + result = 31 * result + (pluggedIn ? 1 : 0); + result = 31 * result + (wifi ? 1 : 0); + return result; + } + + @Override + public String toString() { + return "MapDragendEvent{" + + "event='" + event + '\'' + + ", created='" + created + '\'' + + ", orientation='" + orientation + '\'' + + ", carrier='" + carrier + '\'' + + ", cellularNetworkType='" + cellularNetworkType + '\'' + + ", batteryLevel=" + batteryLevel + + ", lat=" + lat + + ", lng=" + lng + + ", zoom=" + zoom + + ", pluggedIn=" + pluggedIn + + ", wifi=" + wifi + + '}'; + } + + @Override public int describeContents() { return 0; } diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/module/telemetry/MapEventFactory.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/module/telemetry/MapEventFactory.java index e041f2ae31..d5e9e5b491 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/module/telemetry/MapEventFactory.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/module/telemetry/MapEventFactory.java @@ -1,8 +1,11 @@ package com.mapbox.mapboxsdk.module.telemetry; +import android.support.annotation.FloatRange; import android.support.annotation.NonNull; import com.mapbox.android.telemetry.TelemetryUtils; +import com.mapbox.mapboxsdk.constants.MapboxConstants; +import com.mapbox.mapboxsdk.offline.OfflineRegion; class MapEventFactory { @@ -13,7 +16,10 @@ class MapEventFactory { static OfflineDownloadStartEvent buildOfflineDownloadStartEvent(PhoneState phoneState, String shapeForOfflineRegion, - Double minZoom, Double maxZoom, + @FloatRange(from = MapboxConstants.MINIMUM_ZOOM, + to = MapboxConstants.MAXIMUM_ZOOM) Double minZoom, + @FloatRange(from = MapboxConstants.MINIMUM_ZOOM, + to = MapboxConstants.MAXIMUM_ZOOM) Double maxZoom, String styleURL) { OfflineDownloadStartEvent offlineEvent = @@ -24,11 +30,14 @@ class MapEventFactory { static OfflineDownloadEndEvent buildOfflineDownloadCompleteEvent(PhoneState phoneState, String shapeForOfflineRegion, - Double minZoom, Double maxZoom, + @FloatRange(from = MapboxConstants.MINIMUM_ZOOM, + to = MapboxConstants.MAXIMUM_ZOOM) Double minZoom, + @FloatRange(from = MapboxConstants.MINIMUM_ZOOM, + to = MapboxConstants.MAXIMUM_ZOOM) Double maxZoom, String styleURL, Long sizeOfResourcesCompleted, Long numberOfTilesCompleted, - String state) { + @OfflineRegion.DownloadState int state) { OfflineDownloadEndEvent offlineEvent = new OfflineDownloadEndEvent(phoneState, shapeForOfflineRegion, minZoom, maxZoom); diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/module/telemetry/MapLoadEvent.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/module/telemetry/MapLoadEvent.java index e0a7f17e01..61bc87da2b 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/module/telemetry/MapLoadEvent.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/module/telemetry/MapLoadEvent.java @@ -99,6 +99,95 @@ class MapLoadEvent extends Event { } @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + + MapLoadEvent that = (MapLoadEvent) o; + + if (Float.compare(that.resolution, resolution) != 0) { + return false; + } + if (Float.compare(that.accessibilityFontScale, accessibilityFontScale) != 0) { + return false; + } + if (batteryLevel != that.batteryLevel) { + return false; + } + if (pluggedIn != that.pluggedIn) { + return false; + } + if (wifi != that.wifi) { + return false; + } + if (!operatingSystem.equals(that.operatingSystem)) { + return false; + } + if (model != null ? !model.equals(that.model) : that.model != null) { + return false; + } + if (created != null ? !created.equals(that.created) : that.created != null) { + return false; + } + if (userId != null ? !userId.equals(that.userId) : that.userId != null) { + return false; + } + if (carrier != null ? !carrier.equals(that.carrier) : that.carrier != null) { + return false; + } + if (cellularNetworkType != null ? !cellularNetworkType.equals(that.cellularNetworkType) : + that.cellularNetworkType != null) { + return false; + } + return orientation != null ? orientation.equals(that.orientation) : that.orientation == null; + } + + @Override + public int hashCode() { + int result = event.hashCode(); + result = 31 * result + operatingSystem.hashCode(); + result = 31 * result + sdkIdentifier.hashCode(); + result = 31 * result + sdkVersion.hashCode(); + result = 31 * result + (model != null ? model.hashCode() : 0); + result = 31 * result + (created != null ? created.hashCode() : 0); + result = 31 * result + (userId != null ? userId.hashCode() : 0); + result = 31 * result + (carrier != null ? carrier.hashCode() : 0); + result = 31 * result + (cellularNetworkType != null ? cellularNetworkType.hashCode() : 0); + result = 31 * result + (orientation != null ? orientation.hashCode() : 0); + result = 31 * result + (resolution != +0.0f ? Float.floatToIntBits(resolution) : 0); + result = 31 * result + (accessibilityFontScale != +0.0f ? Float.floatToIntBits(accessibilityFontScale) : 0); + result = 31 * result + batteryLevel; + result = 31 * result + (pluggedIn ? 1 : 0); + result = 31 * result + (wifi ? 1 : 0); + return result; + } + + @Override + public String toString() { + return "MapLoadEvent{" + + "event='" + event + '\'' + + ", operatingSystem='" + operatingSystem + '\'' + + ", sdkIdentifier='" + sdkIdentifier + '\'' + + ", sdkVersion='" + sdkVersion + '\'' + + ", model='" + model + '\'' + + ", created='" + created + '\'' + + ", userId='" + userId + '\'' + + ", carrier='" + carrier + '\'' + + ", cellularNetworkType='" + cellularNetworkType + '\'' + + ", orientation='" + orientation + '\'' + + ", resolution=" + resolution + + ", accessibilityFontScale=" + accessibilityFontScale + + ", batteryLevel=" + batteryLevel + + ", pluggedIn=" + pluggedIn + + ", wifi=" + wifi + + '}'; + } + + @Override public int describeContents() { return 0; } diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/module/telemetry/MapState.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/module/telemetry/MapState.java index d44be49224..cb58f8c1a2 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/module/telemetry/MapState.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/module/telemetry/MapState.java @@ -1,12 +1,17 @@ package com.mapbox.mapboxsdk.module.telemetry; +import android.support.annotation.FloatRange; + +import com.mapbox.mapboxsdk.constants.MapboxConstants; + public class MapState { private double latitude; private double longitude; private double zoom; private String gesture; - MapState(double latitude, double longitude, double zoom) { + MapState(double latitude, double longitude, @FloatRange(from = MapboxConstants.MINIMUM_ZOOM, + to = MapboxConstants.MAXIMUM_ZOOM) double zoom) { this.latitude = latitude; this.longitude = longitude; this.zoom = zoom; diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/module/telemetry/OfflineDownloadEndEvent.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/module/telemetry/OfflineDownloadEndEvent.java index cbc79c7b60..e086d760b7 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/module/telemetry/OfflineDownloadEndEvent.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/module/telemetry/OfflineDownloadEndEvent.java @@ -2,8 +2,11 @@ package com.mapbox.mapboxsdk.module.telemetry; import android.annotation.SuppressLint; import android.os.Parcel; +import android.support.annotation.FloatRange; import com.mapbox.android.telemetry.Event; +import com.mapbox.mapboxsdk.constants.MapboxConstants; +import com.mapbox.mapboxsdk.offline.OfflineRegion; /** * Event will be sent while offline download end. @@ -16,33 +19,37 @@ public class OfflineDownloadEndEvent extends Event { private final Double maxZoom; private final String shapeForOfflineRegion; private String styleURL; - private Long sizeOfResourcesCompleted; - private Long numberOfTilesCompleted; - private String state; + private long sizeOfResourcesCompleted; + private long numberOfTilesCompleted; + private int state; + + OfflineDownloadEndEvent(PhoneState phoneState, String shapeForOfflineRegion, + @FloatRange(from = MapboxConstants.MINIMUM_ZOOM, + to = MapboxConstants.MAXIMUM_ZOOM) Double minZoom, + @FloatRange(from = MapboxConstants.MINIMUM_ZOOM, + to = MapboxConstants.MAXIMUM_ZOOM) Double maxZoom) { + this.created = phoneState.getCreated(); + this.shapeForOfflineRegion = shapeForOfflineRegion; + this.minZoom = minZoom; + this.maxZoom = maxZoom; + } void setStyleURL(String styleURL) { this.styleURL = styleURL; } - void setSizeOfResourcesCompleted(Long sizeOfResourcesCompleted) { + void setSizeOfResourcesCompleted(long sizeOfResourcesCompleted) { this.sizeOfResourcesCompleted = sizeOfResourcesCompleted; } - void setNumberOfTilesCompleted(Long numberOfTilesCompleted) { + void setNumberOfTilesCompleted(long numberOfTilesCompleted) { this.numberOfTilesCompleted = numberOfTilesCompleted; } - void setState(String state) { + void setState(@OfflineRegion.DownloadState int state) { this.state = state; } - OfflineDownloadEndEvent(PhoneState phoneState, String shapeForOfflineRegion, Double minZoom, Double maxZoom) { - this.created = phoneState.getCreated(); - this.shapeForOfflineRegion = shapeForOfflineRegion; - this.minZoom = minZoom; - this.maxZoom = maxZoom; - } - String getCreated() { return created; } @@ -63,19 +70,84 @@ public class OfflineDownloadEndEvent extends Event { return styleURL; } - Long getSizeOfResourcesCompleted() { + long getSizeOfResourcesCompleted() { return sizeOfResourcesCompleted; } - Long getNumberOfTilesCompleted() { + long getNumberOfTilesCompleted() { return numberOfTilesCompleted; } - String getState() { + int getState() { return state; } @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + + OfflineDownloadEndEvent that = (OfflineDownloadEndEvent) o; + + if (sizeOfResourcesCompleted != that.sizeOfResourcesCompleted) { + return false; + } + if (numberOfTilesCompleted != that.numberOfTilesCompleted) { + return false; + } + if (state != that.state) { + return false; + } + if (created != null ? !created.equals(that.created) : that.created != null) { + return false; + } + if (minZoom != null ? !minZoom.equals(that.minZoom) : that.minZoom != null) { + return false; + } + if (maxZoom != null ? !maxZoom.equals(that.maxZoom) : that.maxZoom != null) { + return false; + } + if (shapeForOfflineRegion != null ? !shapeForOfflineRegion.equals(that.shapeForOfflineRegion) : + that.shapeForOfflineRegion != null) { + return false; + } + return styleURL != null ? styleURL.equals(that.styleURL) : that.styleURL == null; + } + + @Override + public int hashCode() { + int result = event.hashCode(); + result = 31 * result + (created != null ? created.hashCode() : 0); + result = 31 * result + (minZoom != null ? minZoom.hashCode() : 0); + result = 31 * result + (maxZoom != null ? maxZoom.hashCode() : 0); + result = 31 * result + (shapeForOfflineRegion != null ? shapeForOfflineRegion.hashCode() : 0); + result = 31 * result + (styleURL != null ? styleURL.hashCode() : 0); + result = 31 * result + (int) (sizeOfResourcesCompleted ^ (sizeOfResourcesCompleted >>> 32)); + result = 31 * result + (int) (numberOfTilesCompleted ^ (numberOfTilesCompleted >>> 32)); + result = 31 * result + state; + return result; + } + + @Override + public String toString() { + return "OfflineDownloadEndEvent{" + + "event='" + event + '\'' + + ", created='" + created + '\'' + + ", minZoom=" + minZoom + + ", maxZoom=" + maxZoom + + ", shapeForOfflineRegion='" + shapeForOfflineRegion + '\'' + + ", styleURL='" + styleURL + '\'' + + ", sizeOfResourcesCompleted=" + sizeOfResourcesCompleted + + ", numberOfTilesCompleted=" + numberOfTilesCompleted + + ", state=" + state + + '}'; + } + + @Override public int describeContents() { return 0; } diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/module/telemetry/OfflineDownloadStartEvent.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/module/telemetry/OfflineDownloadStartEvent.java index ab39e2d820..2900557805 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/module/telemetry/OfflineDownloadStartEvent.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/module/telemetry/OfflineDownloadStartEvent.java @@ -2,8 +2,10 @@ package com.mapbox.mapboxsdk.module.telemetry; import android.annotation.SuppressLint; import android.os.Parcel; +import android.support.annotation.FloatRange; import com.mapbox.android.telemetry.Event; +import com.mapbox.mapboxsdk.constants.MapboxConstants; /** * Event will be sent while offline download start. @@ -17,17 +19,21 @@ public class OfflineDownloadStartEvent extends Event { private final String shapeForOfflineRegion; private String styleURL; - void setStyleURL(String styleURL) { - this.styleURL = styleURL; - } - - OfflineDownloadStartEvent(PhoneState phoneState, String shapeForOfflineRegion, Double minZoom, Double maxZoom) { + OfflineDownloadStartEvent(PhoneState phoneState, String shapeForOfflineRegion, + @FloatRange(from = MapboxConstants.MINIMUM_ZOOM, + to = MapboxConstants.MAXIMUM_ZOOM) Double minZoom, + @FloatRange(from = MapboxConstants.MINIMUM_ZOOM, + to = MapboxConstants.MAXIMUM_ZOOM) Double maxZoom) { this.created = phoneState.getCreated(); this.shapeForOfflineRegion = shapeForOfflineRegion; this.minZoom = minZoom; this.maxZoom = maxZoom; } + void setStyleURL(String styleURL) { + this.styleURL = styleURL; + } + String getCreated() { return created; } @@ -49,6 +55,56 @@ public class OfflineDownloadStartEvent extends Event { } @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + + OfflineDownloadStartEvent that = (OfflineDownloadStartEvent) o; + + if (created != null ? !created.equals(that.created) : that.created != null) { + return false; + } + if (minZoom != null ? !minZoom.equals(that.minZoom) : that.minZoom != null) { + return false; + } + if (maxZoom != null ? !maxZoom.equals(that.maxZoom) : that.maxZoom != null) { + return false; + } + if (shapeForOfflineRegion != null ? !shapeForOfflineRegion.equals(that.shapeForOfflineRegion) : + that.shapeForOfflineRegion != null) { + return false; + } + return styleURL != null ? styleURL.equals(that.styleURL) : that.styleURL == null; + } + + @Override + public int hashCode() { + int result = event.hashCode(); + result = 31 * result + (created != null ? created.hashCode() : 0); + result = 31 * result + (minZoom != null ? minZoom.hashCode() : 0); + result = 31 * result + (maxZoom != null ? maxZoom.hashCode() : 0); + result = 31 * result + (shapeForOfflineRegion != null ? shapeForOfflineRegion.hashCode() : 0); + result = 31 * result + (styleURL != null ? styleURL.hashCode() : 0); + return result; + } + + @Override + public String toString() { + return "OfflineDownloadStartEvent{" + + "event='" + event + '\'' + + ", created='" + created + '\'' + + ", minZoom=" + minZoom + + ", maxZoom=" + maxZoom + + ", shapeForOfflineRegion='" + shapeForOfflineRegion + '\'' + + ", styleURL='" + styleURL + '\'' + + '}'; + } + + @Override public int describeContents() { return 0; } diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/module/telemetry/PhoneState.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/module/telemetry/PhoneState.java index 8cd388357b..a7f574bf40 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/module/telemetry/PhoneState.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/module/telemetry/PhoneState.java @@ -4,6 +4,7 @@ import android.content.Context; import android.content.res.Configuration; import android.net.wifi.WifiInfo; import android.net.wifi.WifiManager; +import android.support.annotation.NonNull; import android.telephony.TelephonyManager; import android.text.TextUtils; import android.util.DisplayMetrics; @@ -11,28 +12,15 @@ import android.view.WindowManager; import com.mapbox.android.telemetry.TelemetryUtils; -import java.util.HashMap; -import java.util.Map; - /** * Class that holds kinds of states of the current phone. */ class PhoneState { - static final String LANDSCAPE = "Landscape"; - static final String PORTRAIT = "Portrait"; private static final String NO_CARRIER = "EMPTY_CARRIER"; private static final int NO_NETWORK = -1; - - private static final Map<Integer, String> ORIENTATIONS = new HashMap<Integer, String>() { - { - put(Configuration.ORIENTATION_LANDSCAPE, LANDSCAPE); - put(Configuration.ORIENTATION_PORTRAIT, PORTRAIT); - } - }; - private String created; private String cellularNetworkType; - private String orientation; + private Orientation orientation; private String carrier; private int batteryLevel; private boolean pluggedIn; @@ -44,19 +32,19 @@ class PhoneState { } - PhoneState(Context context) { + PhoneState(@NonNull Context context) { this.created = TelemetryUtils.obtainCurrentDate(); this.batteryLevel = TelemetryUtils.obtainBatteryLevel(context); this.pluggedIn = TelemetryUtils.isPluggedIn(context); this.cellularNetworkType = TelemetryUtils.obtainCellularNetworkType(context); - this.orientation = ORIENTATIONS.get(context.getResources().getConfiguration().orientation); + this.orientation = Orientation.getOrientation(context.getResources().getConfiguration().orientation); this.accessibilityFontScale = context.getResources().getConfiguration().fontScale; this.carrier = obtainCellularCarrier(context); this.resolution = obtainDisplayDensity(context); this.wifi = isConnectedToWifi(context); } - private String obtainCellularCarrier(Context context) { + private String obtainCellularCarrier(@NonNull Context context) { TelephonyManager manager = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE); if (manager == null) { return NO_CARRIER; @@ -68,13 +56,13 @@ class PhoneState { return carrierName; } - private float obtainDisplayDensity(Context context) { + private float obtainDisplayDensity(@NonNull Context context) { DisplayMetrics displayMetrics = new DisplayMetrics(); ((WindowManager) context.getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay().getMetrics(displayMetrics); return displayMetrics.density; } - private boolean isConnectedToWifi(Context context) { + private boolean isConnectedToWifi(@NonNull Context context) { try { WifiManager wifiMgr = (WifiManager) context.getApplicationContext().getSystemService(Context.WIFI_SERVICE); if (wifiMgr == null) { @@ -121,10 +109,10 @@ class PhoneState { } String getOrientation() { - return orientation; + return orientation.getOrientation(); } - void setOrientation(String orientation) { + void setOrientation(Orientation orientation) { this.orientation = orientation; } @@ -159,4 +147,25 @@ class PhoneState { void setResolution(float resolution) { this.resolution = resolution; } + + enum Orientation { + ORIENTATION_PORTRAIT("Portrait"), + ORIENTATION_LANDSCAPE("Landscape"); + private String orientation; + + Orientation(String orientation) { + this.orientation = orientation; + } + + public static Orientation getOrientation(int index) { + if (Configuration.ORIENTATION_PORTRAIT == index) { + return ORIENTATION_PORTRAIT; + } + return ORIENTATION_LANDSCAPE; + } + + public String getOrientation() { + return orientation; + } + } } diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/module/telemetry/TelemetryImpl.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/module/telemetry/TelemetryImpl.java index 5b14fe249a..46a0c47d50 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/module/telemetry/TelemetryImpl.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/module/telemetry/TelemetryImpl.java @@ -2,6 +2,7 @@ package com.mapbox.mapboxsdk.module.telemetry; import android.content.Context; import android.os.Bundle; +import android.support.annotation.FloatRange; import android.support.annotation.NonNull; import android.support.annotation.Nullable; @@ -11,6 +12,7 @@ import com.mapbox.android.telemetry.SessionInterval; import com.mapbox.android.telemetry.TelemetryEnabler; import com.mapbox.mapboxsdk.BuildConfig; import com.mapbox.mapboxsdk.Mapbox; +import com.mapbox.mapboxsdk.constants.MapboxConstants; import com.mapbox.mapboxsdk.maps.TelemetryDefinition; import com.mapbox.mapboxsdk.offline.OfflineRegionDefinition; import com.mapbox.mapboxsdk.offline.OfflineTilePyramidRegionDefinition; @@ -53,7 +55,9 @@ public class TelemetryImpl implements TelemetryDefinition { * @param zoom current zoom of the map */ @Override - public void onGestureInteraction(String eventType, double latitude, double longitude, double zoom) { + public void onGestureInteraction(String eventType, double latitude, double longitude, + @FloatRange(from = MapboxConstants.MINIMUM_ZOOM, + to = MapboxConstants.MAXIMUM_ZOOM) double zoom) { MapState state = new MapState(latitude, longitude, zoom); state.setGesture(eventType); telemetry.push(MapEventFactory.buildMapClickEvent(new PhoneState(appContext), state)); diff --git a/platform/android/MapboxGLAndroidSDK/src/test/java/com/mapbox/mapboxsdk/module/telemetry/MapEventFactoryTest.java b/platform/android/MapboxGLAndroidSDK/src/test/java/com/mapbox/mapboxsdk/module/telemetry/MapEventFactoryTest.java index dfefb92aee..76efa97a31 100644 --- a/platform/android/MapboxGLAndroidSDK/src/test/java/com/mapbox/mapboxsdk/module/telemetry/MapEventFactoryTest.java +++ b/platform/android/MapboxGLAndroidSDK/src/test/java/com/mapbox/mapboxsdk/module/telemetry/MapEventFactoryTest.java @@ -2,8 +2,10 @@ package com.mapbox.mapboxsdk.module.telemetry; import android.os.Build; +import com.google.gson.Gson; import com.mapbox.mapboxsdk.BuildConfig; import com.mapbox.mapboxsdk.constants.TelemetryConstants; +import com.mapbox.mapboxsdk.offline.OfflineRegion; import org.junit.Before; import org.junit.Test; @@ -27,12 +29,13 @@ public class MapEventFactoryTest { private static final Double MIN_ZOOM = 1.0; private static final Double MAX_ZOOM = 10.0; private static final String STYLE_URL = "style url"; - private static final Long SIZE_OF_RESOURCES_COMPLETED = 100L; - private static final Long NUMBER_OF_TILE_COMPLETED = 1000L; - private static final String STATE = "state"; + private static final long SIZE_OF_RESOURCES_COMPLETED = 100L; + private static final long NUMBER_OF_TILE_COMPLETED = 1000L; + private static final int STATE = OfflineRegion.STATE_ACTIVE; - MapState mapState; - PhoneState phoneState; + private MapState mapState; + private PhoneState phoneState; + private Gson gson = new Gson(); @Before public void setUp() { @@ -43,7 +46,7 @@ public class MapEventFactoryTest { phoneState.setCarrier(CARRIER); phoneState.setCellularNetworkType(NETWORK_TYPE); phoneState.setCreated(CREATED); - phoneState.setOrientation(PhoneState.LANDSCAPE); + phoneState.setOrientation(PhoneState.Orientation.ORIENTATION_LANDSCAPE); phoneState.setPluggedIn(PLUGIN); phoneState.setResolution(RESOLUTION); phoneState.setWifi(WIFI); @@ -61,9 +64,12 @@ public class MapEventFactoryTest { assertEquals(NETWORK_TYPE, mapClickEvent.getCellularNetworkType()); assertEquals(CREATED, mapClickEvent.getCreated()); assertEquals(TelemetryConstants.DOUBLE_TAP, mapClickEvent.getGesture()); - assertEquals(PhoneState.LANDSCAPE, mapClickEvent.getOrientation()); + assertEquals("Landscape", mapClickEvent.getOrientation()); assertEquals(PLUGIN, mapClickEvent.isPluggedIn()); assertEquals(WIFI, mapClickEvent.isWifi()); + String json = gson.toJson(mapClickEvent); + MapClickEvent event = gson.fromJson(json, MapClickEvent.class); + assertEquals(mapClickEvent, event); } @Test @@ -76,12 +82,15 @@ public class MapEventFactoryTest { assertEquals(CARRIER, mapLoadEvent.getCarrier()); assertEquals(NETWORK_TYPE, mapLoadEvent.getCellularNetworkType()); assertEquals(CREATED, mapLoadEvent.getCreated()); - assertEquals(PhoneState.LANDSCAPE, mapLoadEvent.getOrientation()); + assertEquals("Landscape", mapLoadEvent.getOrientation()); assertEquals(BuildConfig.MAPBOX_SDK_IDENTIFIER, mapLoadEvent.getSdkIdentifier()); assertEquals(BuildConfig.MAPBOX_SDK_VERSION, mapLoadEvent.getSdkVersion()); assertEquals(PLUGIN, mapLoadEvent.isPluggedIn()); assertEquals(WIFI, mapLoadEvent.isWifi()); assertEquals(FONT_SCALE, mapLoadEvent.getAccessibilityFontScale(), 0); + String json = gson.toJson(mapLoadEvent); + MapLoadEvent event = gson.fromJson(json, MapLoadEvent.class); + assertEquals(mapLoadEvent, event); } @Test @@ -94,9 +103,12 @@ public class MapEventFactoryTest { assertEquals(CARRIER, mapDraggedEvent.getCarrier()); assertEquals(NETWORK_TYPE, mapDraggedEvent.getCellularNetworkType()); assertEquals(CREATED, mapDraggedEvent.getCreated()); - assertEquals(PhoneState.LANDSCAPE, mapDraggedEvent.getOrientation()); + assertEquals("Landscape", mapDraggedEvent.getOrientation()); assertEquals(PLUGIN, mapDraggedEvent.isPluggedIn()); assertEquals(WIFI, mapDraggedEvent.isWifi()); + String json = gson.toJson(mapDraggedEvent); + MapDragendEvent event = gson.fromJson(json, MapDragendEvent.class); + assertEquals(mapDraggedEvent, event); } @Test @@ -111,6 +123,9 @@ public class MapEventFactoryTest { assertEquals(NUMBER_OF_TILE_COMPLETED, offlineDownloadEndEvent.getNumberOfTilesCompleted()); assertEquals(STATE, offlineDownloadEndEvent.getState()); assertEquals(CREATED, offlineDownloadEndEvent.getCreated()); + String json = gson.toJson(offlineDownloadEndEvent); + OfflineDownloadEndEvent event = gson.fromJson(json, OfflineDownloadEndEvent.class); + assertEquals(offlineDownloadEndEvent, event); } @Test @@ -122,5 +137,8 @@ public class MapEventFactoryTest { assertEquals(MAX_ZOOM, offlineDownloadStartEvent.getMaxZoom()); assertEquals(STYLE_URL, offlineDownloadStartEvent.getStyleURL()); assertEquals(CREATED, offlineDownloadStartEvent.getCreated()); + String json = gson.toJson(offlineDownloadStartEvent); + OfflineDownloadStartEvent event = gson.fromJson(json, OfflineDownloadStartEvent.class); + assertEquals(offlineDownloadStartEvent, event); } } |