Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 345ef676 authored by Kurt Partridge's avatar Kurt Partridge
Browse files

[Rlog78a] Annotate logUnits with corrections

If the user makes a correction to a word, this is now explicitly indicated
in the logUnit.

Change-Id: I8638aadd7b8c8e32bbc9c4b020548d786513d887
parent e6a9655a
Loading
Loading
Loading
Loading
+11 −0
Original line number Diff line number Diff line
@@ -60,6 +60,7 @@ import java.util.Map;
    private String mWord;
    private boolean mMayContainDigit;
    private boolean mIsPartOfMegaword;
    private boolean mContainsCorrection;

    public LogUnit() {
        mLogStatementList = new ArrayList<LogStatement>();
@@ -274,6 +275,14 @@ import java.util.Map;
        return mMayContainDigit;
    }

    public void setContainsCorrection() {
        mContainsCorrection = true;
    }

    public boolean containsCorrection() {
        return mContainsCorrection;
    }

    public boolean isEmpty() {
        return mLogStatementList.isEmpty();
    }
@@ -301,6 +310,7 @@ import java.util.Map;
                        true /* isPartOfMegaword */);
                newLogUnit.mWord = null;
                newLogUnit.mMayContainDigit = mMayContainDigit;
                newLogUnit.mContainsCorrection = mContainsCorrection;

                // Purge the logStatements and associated data from this LogUnit.
                laterLogStatements.clear();
@@ -320,6 +330,7 @@ import java.util.Map;
        mTimeList.addAll(logUnit.mTimeList);
        mWord = null;
        mMayContainDigit = mMayContainDigit || logUnit.mMayContainDigit;
        mContainsCorrection = mContainsCorrection || logUnit.mContainsCorrection;
        mIsPartOfMegaword = false;
    }
}
+13 −3
Original line number Diff line number Diff line
@@ -720,6 +720,10 @@ public class ResearchLogger implements SharedPreferences.OnSharedPreferenceChang
        mCurrentLogUnit.setMayContainDigit();
    }

    private void setCurrentLogUnitContainsCorrection() {
        mCurrentLogUnit.setContainsCorrection();
    }

    /* package for test */ void commitCurrentLogUnit() {
        if (DEBUG) {
            Log.d(TAG, "commitCurrentLogUnit" + (mCurrentLogUnit.hasWord() ?
@@ -850,7 +854,7 @@ public class ResearchLogger implements SharedPreferences.OnSharedPreferenceChang
            mCurrentLogUnit.setWord(word);
            final boolean isDictionaryWord = dictionary != null
                    && dictionary.isValidWord(word);
            mStatistics.recordWordEntered(isDictionaryWord);
            mStatistics.recordWordEntered(isDictionaryWord, mCurrentLogUnit.containsCorrection());
        }
        final LogUnit newLogUnit = mCurrentLogUnit.splitByTime(maxTime);
        enqueueCommitText(word, isBatchMode);
@@ -1181,6 +1185,7 @@ public class ResearchLogger implements SharedPreferences.OnSharedPreferenceChang
                scrubDigitsFromString(replacedWord), index,
                suggestion == null ? null : scrubbedWord, Constants.SUGGESTION_STRIP_COORDINATE,
                Constants.SUGGESTION_STRIP_COORDINATE);
        researchLogger.setCurrentLogUnitContainsCorrection();
        researchLogger.commitCurrentLogUnitAsWord(scrubbedWord, Long.MAX_VALUE, isBatchMode);
        researchLogger.mStatistics.recordManualSuggestion(SystemClock.uptimeMillis());
    }
@@ -1340,6 +1345,9 @@ public class ResearchLogger implements SharedPreferences.OnSharedPreferenceChang
        researchLogger.enqueueEvent(logUnit != null ? logUnit : researchLogger.mCurrentLogUnit,
                LOGSTATEMENT_LATINIME_REVERTCOMMIT, committedWord, originallyTypedWord,
                separatorString);
        if (logUnit != null) {
            logUnit.setContainsCorrection();
        }
        researchLogger.mStatistics.recordRevertCommit(SystemClock.uptimeMillis());
        researchLogger.commitCurrentLogUnitAsWord(originallyTypedWord, Long.MAX_VALUE, isBatchMode);
    }
@@ -1500,6 +1508,7 @@ public class ResearchLogger implements SharedPreferences.OnSharedPreferenceChang
        final ResearchLogger researchLogger = getInstance();
        final String scrubbedWord = scrubDigitsFromString(committedWord);
        researchLogger.enqueueEvent(LOGSTATEMENT_COMMIT_PARTIAL_TEXT);
        researchLogger.mStatistics.recordAutoCorrection(SystemClock.uptimeMillis());
        researchLogger.commitCurrentLogUnitAsWord(scrubbedWord, lastTimestampOfWordData,
                isBatchMode);
    }
@@ -1740,7 +1749,7 @@ public class ResearchLogger implements SharedPreferences.OnSharedPreferenceChang
                    "averageTimeDuringRepeatedDelete", "averageTimeAfterDelete",
                    "dictionaryWordCount", "splitWordsCount", "gestureInputCount",
                    "gestureCharsCount", "gesturesDeletedCount", "manualSuggestionsCount",
                    "revertCommitsCount");
                    "revertCommitsCount", "correctedWordsCount", "autoCorrectionsCount");
    private static void logStatistics() {
        final ResearchLogger researchLogger = getInstance();
        final Statistics statistics = researchLogger.mStatistics;
@@ -1754,6 +1763,7 @@ public class ResearchLogger implements SharedPreferences.OnSharedPreferenceChang
                statistics.mDictionaryWordCount, statistics.mSplitWordsCount,
                statistics.mGesturesInputCount, statistics.mGesturesCharsCount,
                statistics.mGesturesDeletedCount, statistics.mManualSuggestionsCount,
                statistics.mRevertCommitsCount);
                statistics.mRevertCommitsCount, statistics.mCorrectedWordsCount,
                statistics.mAutoCorrectionsCount);
    }
}
+17 −1
Original line number Diff line number Diff line
@@ -25,6 +25,7 @@ public class Statistics {
    private static final String TAG = Statistics.class.getSimpleName();
    private static final boolean DEBUG = false && ProductionFlag.IS_EXPERIMENTAL_DEBUG;

    // TODO: Cleanup comments to only including those giving meaningful information.
    // Number of characters entered during a typing session
    int mCharCount;
    // Number of letter characters entered during a typing session
@@ -41,6 +42,8 @@ public class Statistics {
    int mDictionaryWordCount;
    // Number of words split and spaces automatically entered.
    int mSplitWordsCount;
    // Number of words entered during a session.
    int mCorrectedWordsCount;
    // Number of gestures that were input.
    int mGesturesInputCount;
    // Number of gestures that were deleted.
@@ -49,6 +52,8 @@ public class Statistics {
    int mGesturesCharsCount;
    // Number of manual suggestions chosen.
    int mManualSuggestionsCount;
    // Number of times that autocorrection was invoked.
    int mAutoCorrectionsCount;
    // Number of times a commit was reverted in this session.
    int mRevertCommitsCount;
    // Whether the text field was empty upon editing
@@ -113,10 +118,12 @@ public class Statistics {
        mWordCount = 0;
        mDictionaryWordCount = 0;
        mSplitWordsCount = 0;
        mCorrectedWordsCount = 0;
        mGesturesInputCount = 0;
        mGesturesDeletedCount = 0;
        mManualSuggestionsCount = 0;
        mRevertCommitsCount = 0;
        mAutoCorrectionsCount = 0;
        mIsEmptyUponStarting = true;
        mIsEmptinessStateKnown = false;
        mKeyCounter.reset();
@@ -152,11 +159,15 @@ public class Statistics {
        }
    }

    public void recordWordEntered(final boolean isDictionaryWord) {
    public void recordWordEntered(final boolean isDictionaryWord,
            final boolean containsCorrection) {
        mWordCount++;
        if (isDictionaryWord) {
            mDictionaryWordCount++;
        }
        if (containsCorrection) {
            mCorrectedWordsCount++;
        }
    }

    public void recordSplitWords() {
@@ -184,6 +195,11 @@ public class Statistics {
        recordUserAction(time, false /* isDeletion */);
    }

    public void recordAutoCorrection(final long time) {
        mAutoCorrectionsCount++;
        recordUserAction(time, false /* isDeletion */);
    }

    public void recordRevertCommit(final long time) {
        mRevertCommitsCount++;
        recordUserAction(time, true /* isDeletion */);