From 7a72e3c66c895f68ff631059f7fecd42c339af02 Mon Sep 17 00:00:00 2001 From: Dmitry Donskoy Date: Wed, 4 Jul 2018 13:53:28 +0300 Subject: [android] Added stats for maplayers, refactored traffic state types --- .../maps/maplayer/traffic/TrafficState.java | 153 ++++++++++++++++----- 1 file changed, 120 insertions(+), 33 deletions(-) (limited to 'android/src/com/mapswithme/maps/maplayer/traffic/TrafficState.java') diff --git a/android/src/com/mapswithme/maps/maplayer/traffic/TrafficState.java b/android/src/com/mapswithme/maps/maplayer/traffic/TrafficState.java index 8f24f16d66..c1926b3d07 100644 --- a/android/src/com/mapswithme/maps/maplayer/traffic/TrafficState.java +++ b/android/src/com/mapswithme/maps/maplayer/traffic/TrafficState.java @@ -4,8 +4,11 @@ import android.support.annotation.IntDef; import android.support.annotation.MainThread; import android.support.annotation.NonNull; +import com.mapswithme.util.statistics.Statistics; + import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; +import java.util.List; final class TrafficState { @@ -24,14 +27,16 @@ final class TrafficState // These values should correspond to // TrafficManager::TrafficState enum (from map/traffic_manager.hpp) - static final int DISABLED = 0; - static final int ENABLED = 1; - static final int WAITING_DATA = 2; - static final int OUTDATED = 3; - static final int NO_DATA = 4; - static final int NETWORK_ERROR = 5; - static final int EXPIRED_DATA = 6; - static final int EXPIRED_APP = 7; + private static final int DISABLED = 0; + private static final int ENABLED = 1; + private static final int WAITING_DATA = 2; + private static final int OUTDATED = 3; + private static final int NO_DATA = 4; + private static final int NETWORK_ERROR = 5; + private static final int EXPIRED_DATA = 6; + private static final int EXPIRED_APP = 7; + + private TrafficState() {} @MainThread static native void nativeSetListener(@NonNull StateChangeListener listener); @@ -40,38 +45,120 @@ final class TrafficState static native void nativeDisable(); static native boolean nativeIsEnabled(); - private TrafficState() {} - - static String nameOf(int state) + public enum Type { - switch (state) + DISABLED + { + @Override + protected void onReceivedInternal(@NonNull TrafficManager.TrafficCallback param, + @NonNull Type lastPostedState) + { + param.onDisabled(); + } + }, + ENABLED(Statistics.ParamValue.SUCCESS) + { + @Override + protected void onReceivedInternal(@NonNull TrafficManager.TrafficCallback param, + @NonNull Type lastPostedState) + { + param.onEnabled(); + } + }, + + WAITING_DATA + { + @Override + protected void onReceivedInternal(@NonNull TrafficManager.TrafficCallback param, + @NonNull Type lastPostedState) + { + param.onWaitingData(); + } + }, + OUTDATED + { + @Override + protected void onReceivedInternal(@NonNull TrafficManager.TrafficCallback param, + @NonNull Type lastPostedState) + { + param.onOutdated(); + } + }, + NO_DATA(Statistics.ParamValue.UNAVAILABLE) + { + @Override + protected void onReceivedInternal(@NonNull TrafficManager.TrafficCallback param, + @NonNull Type lastPostedState) + { + param.onNoData(lastPostedState != NO_DATA); + } + }, + NETWORK_ERROR(Statistics.ParamValue.ERROR) + { + @Override + protected void onReceivedInternal(@NonNull TrafficManager.TrafficCallback param, + @NonNull Type lastPostedState) + { + param.onNetworkError(); + } + }, + EXPIRED_DATA + { + @Override + protected void onReceivedInternal(@NonNull TrafficManager.TrafficCallback param, + @NonNull Type lastPostedState) + { + param.onExpiredData(lastPostedState != EXPIRED_DATA); + } + }, + EXPIRED_APP + { + @Override + protected void onReceivedInternal(@NonNull TrafficManager.TrafficCallback param, + @NonNull Type lastPostedState) + { + param.onExpiredApp(lastPostedState != EXPIRED_APP); + } + }; + + @NonNull + private final String mAnalyticsParamName; + + Type() { - case DISABLED: - return "DISABLED"; - - case ENABLED: - return "ENABLED"; - - case WAITING_DATA: - return "WAITING_DATA"; + mAnalyticsParamName = name(); + } - case OUTDATED: - return "OUTDATED"; + Type(@NonNull String analyticsParamName) + { + mAnalyticsParamName = analyticsParamName; + } - case NO_DATA: - return "NO_DATA"; + @NonNull + private String getAnalyticsParamName() + { + return mAnalyticsParamName; + } - case NETWORK_ERROR: - return "NETWORK_ERROR"; + public void onReceived(@NonNull List trafficCallbacks, + @NonNull Type lastPostedState) + { + for (TrafficManager.TrafficCallback callback : trafficCallbacks) + { + onReceivedInternal(callback, lastPostedState); + Statistics.INSTANCE.trackTrafficEvent(getAnalyticsParamName()); + } + } - case EXPIRED_DATA: - return "EXPIRED_DATA"; + protected abstract void onReceivedInternal(@NonNull TrafficManager.TrafficCallback param, + @NonNull Type lastPostedState); + } - case EXPIRED_APP: - return "EXPIRED_APP"; + public static Type getType(int index) + { + if (index < 0 || index >= Type.values().length) + throw new IllegalArgumentException("Not found value for index = " + index); - default: - return "Unknown: " + state; - } + return Type.values()[index]; } } -- cgit v1.2.3