package org.wikipedia.analytics;
import android.support.annotation.NonNull;
import org.json.JSONObject;
import org.wikipedia.WikipediaApp;
import org.wikipedia.search.SearchInvokeSource;
public class SearchFunnel extends Funnel {
/**
* Please email someone in Discovery (Search Team's Product Manager or a Data Analyst)
* if you change the schema name or version.
*/
private static final String SCHEMA_NAME = "MobileWikiAppSearch";
private static final int REVISION = 15729321;
private SearchInvokeSource source;
public SearchFunnel(WikipediaApp app, SearchInvokeSource source) {
super(app, SCHEMA_NAME, REVISION, Funnel.SAMPLE_LOG_100);
this.source = source;
}
public void searchStart() {
log(
"action", "start"
);
}
public void searchCancel() {
log(
"action", "cancel"
);
}
public void searchClick(int position) {
log(
"action", "click",
"position", position
);
}
public void searchDidYouMean() {
log(
"action", "didyoumean"
);
}
public void searchResults(boolean fullText, int numResults, int delayMillis) {
log(
"action", "results",
"typeOfSearch", fullText ? "full" : "prefix",
"numberOfResults", numResults,
"timeToDisplayResults", delayMillis
);
}
public void searchError(boolean fullText, int delayMillis) {
log(
"action", "error",
"typeOfSearch", fullText ? "full" : "prefix",
"timeToDisplayResults", delayMillis
);
}
@Override
protected JSONObject preprocessData(@NonNull JSONObject eventData) {
preprocessData(eventData, "source", source.code());
return super.preprocessData(eventData);
}
@NonNull
@Override
protected String getSessionTokenField() {
return "searchSessionToken";
}
}