package org.wikipedia.analytics; import org.wikipedia.history.HistoryEntry; import org.wikipedia.util.MathUtil; public class SessionData { private final MathUtil.Averaged<Long> leadLatency = new MathUtil.Averaged<>(); private final MathUtil.Averaged<Long> restLatency = new MathUtil.Averaged<>(); private long startTime; private long lastTouchTime; private int pagesFromSearch; private int pagesFromRandom; private int pagesFromLangLink; private int pagesFromInternal; private int pagesFromExternal; private int pagesFromHistory; private int pagesFromSaved; private int pagesFromReadingList; private int pagesFromNearby; private int pagesFromDisambig; private int pagesFromBack; public void addPageViewed(HistoryEntry entry) { switch (entry.getSource()) { case HistoryEntry.SOURCE_SEARCH: pagesFromSearch++; break; case HistoryEntry.SOURCE_RANDOM: pagesFromRandom++; break; case HistoryEntry.SOURCE_LANGUAGE_LINK: pagesFromLangLink++; break; case HistoryEntry.SOURCE_EXTERNAL_LINK: pagesFromExternal++; break; case HistoryEntry.SOURCE_HISTORY: pagesFromHistory++; break; case HistoryEntry.SOURCE_SAVED_PAGE: pagesFromSaved++; break; case HistoryEntry.SOURCE_READING_LIST: pagesFromReadingList++; break; case HistoryEntry.SOURCE_NEARBY: pagesFromNearby++; break; case HistoryEntry.SOURCE_DISAMBIG: pagesFromDisambig++; break; default: pagesFromInternal++; } } public long getStartTime() { return startTime; } public void setStartTime(long startTime) { this.startTime = startTime; } public long getLastTouchTime() { return lastTouchTime; } public void setLastTouchTime(long lastTouchTime) { this.lastTouchTime = lastTouchTime; } public long getLeadLatency() { return (long) leadLatency.getAverage(); } public void addLeadLatency(long leadLatency) { this.leadLatency.addSample(leadLatency); } public long getRestLatency() { return (long) restLatency.getAverage(); } public void addRestLatency(long restLatency) { this.restLatency.addSample(restLatency); } public int getPagesFromSearch() { return pagesFromSearch; } public int getPagesFromRandom() { return pagesFromRandom; } public int getPagesFromLangLink() { return pagesFromLangLink; } public int getPagesFromInternal() { return pagesFromInternal; } public int getPagesFromExternal() { return pagesFromExternal; } public int getPagesFromHistory() { return pagesFromHistory; } public int getPagesFromSaved() { return pagesFromSaved; } public int getPagesFromReadingList() { return pagesFromReadingList; } public int getPagesFromNearby() { return pagesFromNearby; } public int getPagesFromDisambig() { return pagesFromDisambig; } public int getPagesFromBack() { return pagesFromBack; } public void addPageFromBack() { this.pagesFromBack++; } public int getTotalPages() { return pagesFromSearch + pagesFromRandom + pagesFromLangLink + pagesFromInternal + pagesFromExternal + pagesFromHistory + pagesFromSaved + pagesFromReadingList + pagesFromNearby + pagesFromDisambig; } }