diff options
author | The Android Open Source Project <initial-contribution@android.com> | 2009-03-03 19:31:44 -0800 |
---|---|---|
committer | The Android Open Source Project <initial-contribution@android.com> | 2009-03-03 19:31:44 -0800 |
commit | 9066cfe9886ac131c34d59ed0e2d287b0e3c0087 (patch) | |
tree | d88beb88001f2482911e3d28e43833b50e4b4e97 /core/java/android/content/SyncResult.java | |
parent | d83a98f4ce9cfa908f5c54bbd70f03eec07e7553 (diff) | |
download | frameworks_base-9066cfe9886ac131c34d59ed0e2d287b0e3c0087.zip frameworks_base-9066cfe9886ac131c34d59ed0e2d287b0e3c0087.tar.gz frameworks_base-9066cfe9886ac131c34d59ed0e2d287b0e3c0087.tar.bz2 |
auto import from //depot/cupcake/@135843
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(); + } +} |