diff options
author | The Android Open Source Project <initial-contribution@android.com> | 2008-10-21 07:00:00 -0700 |
---|---|---|
committer | The Android Open Source Project <initial-contribution@android.com> | 2008-10-21 07:00:00 -0700 |
commit | 54b6cfa9a9e5b861a9930af873580d6dc20f773c (patch) | |
tree | 35051494d2af230dce54d6b31c6af8fc24091316 /core/java/android/content/SyncResult.java | |
download | frameworks_base-54b6cfa9a9e5b861a9930af873580d6dc20f773c.zip frameworks_base-54b6cfa9a9e5b861a9930af873580d6dc20f773c.tar.gz frameworks_base-54b6cfa9a9e5b861a9930af873580d6dc20f773c.tar.bz2 |
Initial Contribution
Diffstat (limited to 'core/java/android/content/SyncResult.java')
-rw-r--r-- | core/java/android/content/SyncResult.java | 178 |
1 files changed, 178 insertions, 0 deletions
diff --git a/core/java/android/content/SyncResult.java b/core/java/android/content/SyncResult.java new file mode 100644 index 0000000..f3260f3 --- /dev/null +++ b/core/java/android/content/SyncResult.java @@ -0,0 +1,178 @@ +package android.content; + +import android.os.Parcel; +import android.os.Parcelable; + +/** + * This class is used to store information about the result of a sync + * + * @hide + */ +public final class SyncResult implements Parcelable { + public final boolean syncAlreadyInProgress; + public boolean tooManyDeletions; + public boolean tooManyRetries; + public boolean databaseError; + public boolean fullSyncRequested; + public boolean partialSyncUnavailable; + public boolean moreRecordsToGet; + public final SyncStats stats; + public static final SyncResult ALREADY_IN_PROGRESS; + + static { + ALREADY_IN_PROGRESS = new SyncResult(true); + } + + public SyncResult() { + this(false); + } + + private SyncResult(boolean syncAlreadyInProgress) { + this.syncAlreadyInProgress = syncAlreadyInProgress; + this.tooManyDeletions = false; + this.tooManyRetries = false; + this.fullSyncRequested = false; + this.partialSyncUnavailable = false; + this.moreRecordsToGet = false; + this.stats = new SyncStats(); + } + + private SyncResult(Parcel parcel) { + syncAlreadyInProgress = parcel.readInt() != 0; + tooManyDeletions = parcel.readInt() != 0; + tooManyRetries = parcel.readInt() != 0; + databaseError = parcel.readInt() != 0; + fullSyncRequested = parcel.readInt() != 0; + partialSyncUnavailable = parcel.readInt() != 0; + moreRecordsToGet = parcel.readInt() != 0; + stats = new SyncStats(parcel); + } + + public boolean hasHardError() { + return stats.numParseExceptions > 0 + || stats.numConflictDetectedExceptions > 0 + || stats.numAuthExceptions > 0 + || tooManyDeletions + || tooManyRetries + || databaseError; + } + + public boolean hasSoftError() { + return syncAlreadyInProgress || stats.numIoExceptions > 0; + } + + public boolean hasError() { + return hasSoftError() || hasHardError(); + } + + public boolean madeSomeProgress() { + return ((stats.numDeletes > 0) && !tooManyDeletions) + || stats.numInserts > 0 + || stats.numUpdates > 0; + } + + public void clear() { + if (syncAlreadyInProgress) { + throw new UnsupportedOperationException( + "you are not allowed to clear the ALREADY_IN_PROGRESS SyncStats"); + } + tooManyDeletions = false; + tooManyRetries = false; + databaseError = false; + fullSyncRequested = false; + partialSyncUnavailable = false; + moreRecordsToGet = false; + stats.clear(); + } + + public static final Creator<SyncResult> CREATOR = new Creator<SyncResult>() { + public SyncResult createFromParcel(Parcel in) { + return new SyncResult(in); + } + + public SyncResult[] newArray(int size) { + return new SyncResult[size]; + } + }; + + public int describeContents() { + return 0; + } + + public void writeToParcel(Parcel parcel, int flags) { + parcel.writeInt(syncAlreadyInProgress ? 1 : 0); + parcel.writeInt(tooManyDeletions ? 1 : 0); + parcel.writeInt(tooManyRetries ? 1 : 0); + parcel.writeInt(databaseError ? 1 : 0); + parcel.writeInt(fullSyncRequested ? 1 : 0); + parcel.writeInt(partialSyncUnavailable ? 1 : 0); + parcel.writeInt(moreRecordsToGet ? 1 : 0); + stats.writeToParcel(parcel, flags); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append(" syncAlreadyInProgress: ").append(syncAlreadyInProgress); + sb.append(" tooManyDeletions: ").append(tooManyDeletions); + sb.append(" tooManyRetries: ").append(tooManyRetries); + sb.append(" databaseError: ").append(databaseError); + sb.append(" fullSyncRequested: ").append(fullSyncRequested); + sb.append(" partialSyncUnavailable: ").append(partialSyncUnavailable); + sb.append(" moreRecordsToGet: ").append(moreRecordsToGet); + sb.append(" stats: ").append(stats); + return sb.toString(); + } + + /** + * Generates a debugging string indicating the status. + * The string consist of a sequence of code letter followed by the count. + * Code letters are f - fullSyncRequested, r - partialSyncUnavailable, + * X - hardError, e - numParseExceptions, c - numConflictDetectedExceptions, + * a - numAuthExceptions, D - tooManyDeletions, R - tooManyRetries, + * b - databaseError, x - softError, l - syncAlreadyInProgress, + * I - numIoExceptions + * @return debugging string. + */ + public String toDebugString() { + StringBuffer sb = new StringBuffer(); + + if (fullSyncRequested) { + sb.append("f1"); + } + if (partialSyncUnavailable) { + sb.append("r1"); + } + if (hasHardError()) { + sb.append("X1"); + } + if (stats.numParseExceptions > 0) { + sb.append("e").append(stats.numParseExceptions); + } + if (stats.numConflictDetectedExceptions > 0) { + sb.append("c").append(stats.numConflictDetectedExceptions); + } + if (stats.numAuthExceptions > 0) { + sb.append("a").append(stats.numAuthExceptions); + } + if (tooManyDeletions) { + sb.append("D1"); + } + if (tooManyRetries) { + sb.append("R1"); + } + if (databaseError) { + sb.append("b1"); + } + if (hasSoftError()) { + sb.append("x1"); + } + if (syncAlreadyInProgress) { + sb.append("l1"); + } + if (stats.numIoExceptions > 0) { + sb.append("I").append(stats.numIoExceptions); + } + return sb.toString(); + } +} |