From 3370dc82370f5397bafdaeba395e3dfc8b8adf3a Mon Sep 17 00:00:00 2001 From: Kurt Partridge Date: Fri, 10 Aug 2012 01:54:06 -0700 Subject: [Rlog2] ResearchLogging fix multi-space logging multi-space logging should look like single-space logging, missing a few minor log statements (SuggestionUpdates, SetComposingText) multi-project commit with I2af842348c2f2b8f7271ac5b63def245e83df24d Change-Id: Icd3187c0d0377255f82787afffea657c14345803 --- .../com/android/inputmethod/research/LogUnit.java | 72 ++++++++++++++-------- 1 file changed, 46 insertions(+), 26 deletions(-) (limited to 'java/src/com/android/inputmethod/research/LogUnit.java') diff --git a/java/src/com/android/inputmethod/research/LogUnit.java b/java/src/com/android/inputmethod/research/LogUnit.java index 0aec80a40..3e542a43f 100644 --- a/java/src/com/android/inputmethod/research/LogUnit.java +++ b/java/src/com/android/inputmethod/research/LogUnit.java @@ -16,8 +16,9 @@ package com.android.inputmethod.research; -import com.android.inputmethod.latin.CollectionUtils; +import com.android.inputmethod.research.ResearchLogger.LogStatement; +import java.util.ArrayList; import java.util.List; /** @@ -35,48 +36,54 @@ import java.util.List; * been published recently, or whether the LogUnit contains numbers, etc. */ /* package */ class LogUnit { - private final List mKeysList; - private final List mValuesList; + private final ArrayList mLogStatementList; + private final ArrayList mValuesList; // Assume that mTimeList is sorted in increasing order. Do not insert null values into // mTimeList. - private final List mTimeList; - private final List mIsPotentiallyPrivate; + private final ArrayList mTimeList; private String mWord; private boolean mMayContainDigit; + private boolean mIsPartOfMegaword; public LogUnit() { - mKeysList = CollectionUtils.newArrayList(); - mValuesList = CollectionUtils.newArrayList(); - mTimeList = CollectionUtils.newArrayList(); - mIsPotentiallyPrivate = CollectionUtils.newArrayList(); + mLogStatementList = new ArrayList(); + mValuesList = new ArrayList(); + mTimeList = new ArrayList(); + mIsPartOfMegaword = false; } - private LogUnit(final List keysList, final List valuesList, - final List timeList, final List isPotentiallyPrivate) { - mKeysList = keysList; + private LogUnit(final ArrayList logStatementList, + final ArrayList valuesList, + final ArrayList timeList, + final boolean isPartOfMegaword) { + mLogStatementList = logStatementList; mValuesList = valuesList; mTimeList = timeList; - mIsPotentiallyPrivate = isPotentiallyPrivate; + mIsPartOfMegaword = isPartOfMegaword; } /** * Adds a new log statement. The time parameter in successive calls to this method must be * monotonically increasing, or splitByTime() will not work. */ - public void addLogStatement(final String[] keys, final Object[] values, - final long time, final boolean isPotentiallyPrivate) { - mKeysList.add(keys); + public void addLogStatement(final LogStatement logStatement, final Object[] values, + final long time) { + mLogStatementList.add(logStatement); mValuesList.add(values); mTimeList.add(time); - mIsPotentiallyPrivate.add(isPotentiallyPrivate); } public void publishTo(final ResearchLog researchLog, final boolean isIncludingPrivateData) { - final int size = mKeysList.size(); + final int size = mLogStatementList.size(); for (int i = 0; i < size; i++) { - if (!mIsPotentiallyPrivate.get(i) || isIncludingPrivateData) { - researchLog.outputEvent(mKeysList.get(i), mValuesList.get(i), mTimeList.get(i)); + final LogStatement logStatement = mLogStatementList.get(i); + if (!isIncludingPrivateData && logStatement.mIsPotentiallyPrivate) { + continue; } + if (mIsPartOfMegaword && logStatement.mIsPotentiallyRevealing) { + continue; + } + researchLog.outputEvent(mLogStatementList.get(i), mValuesList.get(i), mTimeList.get(i)); } } @@ -101,7 +108,7 @@ import java.util.List; } public boolean isEmpty() { - return mKeysList.isEmpty(); + return mLogStatementList.isEmpty(); } /** @@ -112,14 +119,27 @@ import java.util.List; // Assume that mTimeList is in sorted order. final int length = mTimeList.size(); for (int index = 0; index < length; index++) { - if (mTimeList.get(index) >= maxTime) { + if (mTimeList.get(index) > maxTime) { + final List laterLogStatements = + mLogStatementList.subList(index, length); + final List laterValues = mValuesList.subList(index, length); + final List laterTimes = mTimeList.subList(index, length); + + // Create the LogUnit containing the later logStatements and associated data. final LogUnit newLogUnit = new LogUnit( - mKeysList.subList(index, length), - mValuesList.subList(index, length), - mTimeList.subList(index, length), - mIsPotentiallyPrivate.subList(index, length)); + new ArrayList(laterLogStatements), + new ArrayList(laterValues), + new ArrayList(laterTimes), + true /* isPartOfMegaword */); newLogUnit.mWord = null; newLogUnit.mMayContainDigit = mMayContainDigit; + + // Purge the logStatements and associated data from this LogUnit. + laterLogStatements.clear(); + laterValues.clear(); + laterTimes.clear(); + mIsPartOfMegaword = true; + return newLogUnit; } } -- cgit v1.2.3-83-g751a