package org.wikipedia.analytics;
import android.content.Context;
import android.content.pm.PackageManager;
import android.support.annotation.NonNull;
import org.json.JSONObject;
import org.wikipedia.WikipediaApp;
import java.util.concurrent.TimeUnit;
// https://meta.wikimedia.org/wiki/Schema:MobileWikiAppDailyStats
public class DailyStatsFunnel extends Funnel {
private static final String SCHEMA_NAME = "MobileWikiAppDailyStats";
private static final int SCHEMA_REVISION = 12637385;
public DailyStatsFunnel(WikipediaApp app) {
super(app, SCHEMA_NAME, SCHEMA_REVISION, Funnel.SAMPLE_LOG_100);
}
public void log(Context context) {
log(getInstallAgeDays(context));
}
public void log(long appInstallAgeDays) {
log("appInstallAgeDays", appInstallAgeDays);
}
@Override protected void preprocessSessionToken(@NonNull JSONObject eventData) { }
private long getInstallAgeDays(Context context) {
return TimeUnit.MILLISECONDS.toDays(getInstallAge(context));
}
private long getInstallAge(Context context) {
return getAbsoluteTime() - getInstallTime(context);
}
/** @return The absolute time since initial app install in milliseconds. */
private long getInstallTime(Context context) {
try {
return context.getPackageManager()
.getPackageInfo(context.getPackageName(), 0)
.firstInstallTime;
} catch (PackageManager.NameNotFoundException e) {
throw new RuntimeException(e);
}
}
private long getAbsoluteTime() {
return System.currentTimeMillis();
}
}