summaryrefslogtreecommitdiff
path: root/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox
diff options
context:
space:
mode:
Diffstat (limited to 'platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox')
-rw-r--r--platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/module/telemetry/MapBaseEvent.java6
-rw-r--r--platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/module/telemetry/MapEventFactory.java10
-rw-r--r--platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/module/telemetry/OfflineDownloadEndEvent.java20
-rw-r--r--platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/module/telemetry/PerformanceEvent.java213
-rw-r--r--platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/module/telemetry/TelemetryImpl.java3
5 files changed, 144 insertions, 108 deletions
diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/module/telemetry/MapBaseEvent.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/module/telemetry/MapBaseEvent.java
index 1324e04d87..130217fea7 100644
--- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/module/telemetry/MapBaseEvent.java
+++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/module/telemetry/MapBaseEvent.java
@@ -9,7 +9,7 @@ import com.mapbox.android.telemetry.Event;
* Base event class for telemetry events.
*/
@SuppressLint("ParcelCreator")
-public abstract class MapBaseEvent extends Event {
+abstract class MapBaseEvent extends Event {
private final String event;
private final String created;
@@ -20,11 +20,11 @@ public abstract class MapBaseEvent extends Event {
abstract String getEventName();
- public String getEvent() {
+ String getEvent() {
return event;
}
- public String getCreated() {
+ String getCreated() {
return created;
}
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 d5e9e5b491..88e41943fa 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,5 +1,6 @@
package com.mapbox.mapboxsdk.module.telemetry;
+import android.os.Bundle;
import android.support.annotation.FloatRange;
import android.support.annotation.NonNull;
@@ -35,8 +36,8 @@ class MapEventFactory {
@FloatRange(from = MapboxConstants.MINIMUM_ZOOM,
to = MapboxConstants.MAXIMUM_ZOOM) Double maxZoom,
String styleURL,
- Long sizeOfResourcesCompleted,
- Long numberOfTilesCompleted,
+ long sizeOfResourcesCompleted,
+ long numberOfTilesCompleted,
@OfflineRegion.DownloadState int state) {
OfflineDownloadEndEvent offlineEvent =
@@ -56,4 +57,9 @@ class MapEventFactory {
return new MapDragendEvent(phoneState, mapState);
}
+ static PerformanceEvent buildPerformanceEvent(@NonNull PhoneState phoneState, @NonNull String sessionId,
+ @NonNull Bundle data) {
+ return new PerformanceEvent(phoneState, sessionId, data);
+ }
+
}
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 cc96052e94..9f1b053a88 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
@@ -16,9 +16,9 @@ public class OfflineDownloadEndEvent extends MapBaseEvent {
private final Double maxZoom;
private final String shapeForOfflineRegion;
private String styleURL;
+ private String state;
private long sizeOfResourcesCompleted;
private long numberOfTilesCompleted;
- private int state;
OfflineDownloadEndEvent(PhoneState phoneState, String shapeForOfflineRegion,
@FloatRange(from = MapboxConstants.MINIMUM_ZOOM,
@@ -72,12 +72,12 @@ public class OfflineDownloadEndEvent extends MapBaseEvent {
this.numberOfTilesCompleted = numberOfTilesCompleted;
}
- int getState() {
+ String getState() {
return state;
}
void setState(@OfflineRegion.DownloadState int state) {
- this.state = state;
+ this.state = String.valueOf(state);
}
@Override
@@ -97,20 +97,20 @@ public class OfflineDownloadEndEvent extends MapBaseEvent {
if (numberOfTilesCompleted != that.numberOfTilesCompleted) {
return false;
}
- if (state != that.state) {
- 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) {
+ if (shapeForOfflineRegion != null ? !shapeForOfflineRegion.equals(that.shapeForOfflineRegion)
+ : that.shapeForOfflineRegion != null) {
+ return false;
+ }
+ if (styleURL != null ? !styleURL.equals(that.styleURL) : that.styleURL != null) {
return false;
}
- return styleURL != null ? styleURL.equals(that.styleURL) : that.styleURL == null;
+ return state != null ? state.equals(that.state) : that.state == null;
}
@Override
@@ -119,9 +119,9 @@ public class OfflineDownloadEndEvent extends MapBaseEvent {
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 + (state != null ? state.hashCode() : 0);
result = 31 * result + (int) (sizeOfResourcesCompleted ^ (sizeOfResourcesCompleted >>> 32));
result = 31 * result + (int) (numberOfTilesCompleted ^ (numberOfTilesCompleted >>> 32));
- result = 31 * result + state;
return result;
}
diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/module/telemetry/PerformanceEvent.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/module/telemetry/PerformanceEvent.java
index 12d1fe46cf..81079c2d97 100644
--- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/module/telemetry/PerformanceEvent.java
+++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/module/telemetry/PerformanceEvent.java
@@ -1,116 +1,71 @@
package com.mapbox.mapboxsdk.module.telemetry;
-import com.google.gson.Gson;
+import android.annotation.SuppressLint;
+import android.os.Bundle;
+import com.google.gson.Gson;
import com.google.gson.JsonObject;
-
import com.google.gson.reflect.TypeToken;
-import com.mapbox.android.telemetry.Event;
-import android.os.Bundle;
-import android.os.Parcel;
-
-
-import java.text.SimpleDateFormat;
import java.util.ArrayList;
-import java.util.Date;
import java.util.List;
-import java.util.Locale;
/**
* Generic Performance Event that can be used for performance measurements.
* Customer measurements can be added to the bundle.
- *
+ * <p>
* Bundle is expected to have following properties:
* "attributes", "counters", and "metadata" with String values.
- *
+ * </p>
+ * <p>
* Attributes: a string representing an array of name/string value pair objects.
* Counters: a string representing an array of name/number value pair objects.
* Metadata is a string representation of a JsonObject with string values.
- *
- * Here is an example of a Performance event bundle data:
- *
+ * </p>
+ * <p>
+ * Here is an example of a Performance event bundle data:
+ * </p>
+ * <p>
* "attributes": [{ "name": "style_id", "value": "mapbox://styles/mapbox/streets-v10"}]
- *
+ * </p>
+ * <p>
* "counters": [{"name": "fps_average", "value": 90.7655486547093},
- * {"name": "fps_deviation", "value": 29.301809631465574}]
+ * {"name": "fps_deviation", "value": 29.301809631465574}]
* “metadata”: {
- * “version”: “9”,
- * “screenSize”: “1080x1794”,
- * “country”: “US”,
- * “device”: “Pixel 2”,
- * “abi”: “arm64-v8a”,
- * “brand”: “google”,
- * “ram”: “3834167296”,
- * “os”: “android”,
- * “gpu”: “Qualcomm, Adreno (TM) 540, OpenGL ES 3.2 V@313.0 (GIT@7bf2852, Ie32bfa6f6f)“,
- * “manufacturer”: “Google”
- * }
+ * “version”: “9”,
+ * “screenSize”: “1080x1794”,
+ * “country”: “US”,
+ * “device”: “Pixel 2”,
+ * “abi”: “arm64-v8a”,
+ * “brand”: “google”,
+ * “ram”: “3834167296”,
+ * “os”: “android”,
+ * “gpu”: “Qualcomm, Adreno (TM) 540, OpenGL ES 3.2 V@313.0 (GIT@7bf2852, Ie32bfa6f6f)“,
+ * “manufacturer”: “Google”
+ * }
+ * </p>
*/
-public class PerformanceEvent extends Event {
-
+@SuppressLint("ParcelCreator")
+class PerformanceEvent extends MapBaseEvent {
private static final String PERFORMANCE_TRACE = "mobile.performance_trace";
-
- private final String event;
-
- private final String created;
-
private final String sessionId;
-
- private final List<Attribute<String>> attributes;
-
- private final List<Attribute<Double>> counters;
-
+ private final List<PerformanceAttribute<String>> attributes;
+ private final List<PerformanceAttribute<Double>> counters;
private final JsonObject metadata;
-
- private static final SimpleDateFormat DATE_FORMAT =
- new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ", Locale.US);
-
- PerformanceEvent(String sessionId, Bundle bundle) {
-
- this.event = PERFORMANCE_TRACE;
- this.created = DATE_FORMAT.format(new Date());
+ PerformanceEvent(PhoneState phoneState, String sessionId, Bundle bundle) {
+ super(phoneState);
this.sessionId = sessionId;
this.attributes = initList(bundle.getString("attributes"),
- new TypeToken<ArrayList<Attribute<String>>>() {});
+ new TypeToken<ArrayList<PerformanceAttribute<String>>>() {
+ });
this.counters = initList(bundle.getString("counters"),
- new TypeToken<ArrayList<Attribute<Double>>>() {});
+ new TypeToken<ArrayList<PerformanceAttribute<Double>>>() {
+ });
this.metadata = initMetaData(bundle.getString("metadata"));
}
- private PerformanceEvent(Parcel in) {
- this.event = in.readString();
- this.created = in.readString();
- this.sessionId = in.readString();
-
- this.attributes = initList(in.readString(), new TypeToken<ArrayList<Attribute<String>>>() {});
- this.counters = initList(in.readString(), new TypeToken<ArrayList<Attribute<Double>>>() {});
- this.metadata = initMetaData(in.readString());
- }
-
- @Override
- public int describeContents() {
- return 0;
- }
-
- @Override
- public void writeToParcel(Parcel parcel, int i) {
- parcel.writeString(event);
- parcel.writeString(created);
- parcel.writeString(sessionId);
-
- Gson gson = new Gson();
-
- parcel.writeString(gson.toJson(attributes));
- parcel.writeString(gson.toJson(counters));
-
- if (metadata != null) {
- parcel.writeString(metadata.toString());
- }
- }
-
- private <T> ArrayList<Attribute<T>> initList(String fromString, TypeToken typeToken) {
+ private <T> ArrayList<PerformanceAttribute<T>> initList(String fromString, TypeToken typeToken) {
if (fromString == null || fromString.isEmpty()) {
return new ArrayList<>();
}
@@ -125,26 +80,100 @@ public class PerformanceEvent extends Event {
}
}
- public static final Creator<PerformanceEvent> CREATOR = new Creator<PerformanceEvent>() {
- @Override
- public PerformanceEvent createFromParcel(Parcel in) {
- return new PerformanceEvent(in);
+ @Override
+ String getEventName() {
+ return PERFORMANCE_TRACE;
+ }
+
+ String getSessionId() {
+ return sessionId;
+ }
+
+ List<PerformanceAttribute<String>> getAttributes() {
+ return attributes;
+ }
+
+ List<PerformanceAttribute<Double>> getCounters() {
+ return counters;
+ }
+
+ JsonObject getMetadata() {
+ return metadata;
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (o == null || getClass() != o.getClass()) {
+ return false;
}
- @Override
- public PerformanceEvent[] newArray(int size) {
- return new PerformanceEvent[size];
+ PerformanceEvent that = (PerformanceEvent) o;
+
+ if (sessionId != null ? !sessionId.equals(that.sessionId) : that.sessionId != null) {
+ return false;
+ }
+ if (attributes != null ? !attributes.equals(that.attributes) : that.attributes != null) {
+ return false;
}
- };
+ if (counters != null ? !counters.equals(that.counters) : that.counters != null) {
+ return false;
+ }
+ return metadata != null ? metadata.equals(that.metadata) : that.metadata == null;
+ }
+ @Override
+ public int hashCode() {
+ int result = sessionId != null ? sessionId.hashCode() : 0;
+ result = 31 * result + (attributes != null ? attributes.hashCode() : 0);
+ result = 31 * result + (counters != null ? counters.hashCode() : 0);
+ result = 31 * result + (metadata != null ? metadata.hashCode() : 0);
+ return result;
+ }
- private class Attribute<T> {
+ @Override
+ public String toString() {
+ return "PerformanceEvent{"
+ + "sessionId='" + sessionId + '\''
+ + ", attributes=" + attributes
+ + ", counters=" + counters
+ + ", metadata=" + metadata
+ + '}';
+ }
+
+ static class PerformanceAttribute<T> {
private final String name;
private final T value;
- Attribute(String name, T value) {
+ PerformanceAttribute(String name, T value) {
this.name = name;
this.value = value;
}
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (o == null || getClass() != o.getClass()) {
+ return false;
+ }
+
+ PerformanceAttribute<?> that = (PerformanceAttribute<?>) o;
+
+ if (name != null ? !name.equals(that.name) : that.name != null) {
+ return false;
+ }
+ return value != null ? value.equals(that.value) : that.value == null;
+ }
+
+ @Override
+ public int hashCode() {
+ int result = name != null ? name.hashCode() : 0;
+ result = 31 * result + (value != null ? value.hashCode() : 0);
+ return result;
+ }
}
}
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 cd44e2591e..2b1dace932 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
@@ -115,6 +115,7 @@ public class TelemetryImpl implements TelemetryDefinition {
if (data == null) {
data = new Bundle();
}
- telemetry.push(new PerformanceEvent(UUID.randomUUID().toString(), data));
+ telemetry.push(MapEventFactory.buildPerformanceEvent(new PhoneState(appContext),
+ UUID.randomUUID().toString(), data));
}
} \ No newline at end of file