blob: b7f2a8520f9cf01688ce4bab90369a188ee06e0a [file] [log] [blame]
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08001/*
2 * Copyright (C) 2007 The Android Open Source Project
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16
17package android.content;
18
19import android.os.Parcelable;
20import android.os.Parcel;
21
22/**
Fred Quintana20c640e2010-04-26 17:38:56 -070023 * Used to record various statistics about the result of a sync operation. The SyncManager
24 * gets access to these via a {@link SyncResult} and uses some of them to determine the
25 * disposition of the sync. See {@link SyncResult} for further dicussion on how the
26 * SyncManager uses these values.
The Android Open Source Project9066cfe2009-03-03 19:31:44 -080027 */
28public class SyncStats implements Parcelable {
Fred Quintana20c640e2010-04-26 17:38:56 -070029 /**
30 * The SyncAdapter was unable to authenticate the {@link android.accounts.Account}
31 * that was specified in the request. The user needs to take some action to resolve
32 * before a future request can expect to succeed. This is considered a hard error.
33 */
The Android Open Source Project9066cfe2009-03-03 19:31:44 -080034 public long numAuthExceptions;
Fred Quintana20c640e2010-04-26 17:38:56 -070035
36 /**
37 * The SyncAdapter had a problem, most likely with the network connectivity or a timeout
38 * while waiting for a network response. The request may succeed if it is tried again
39 * later. This is considered a soft error.
40 */
The Android Open Source Project9066cfe2009-03-03 19:31:44 -080041 public long numIoExceptions;
Fred Quintana20c640e2010-04-26 17:38:56 -070042
43 /**
44 * The SyncAdapter had a problem with the data it received from the server or the storage
45 * later. This problem will likely repeat if the request is tried again. The problem
46 * will need to be cleared up by either the server or the storage layer (likely with help
47 * from the user). If the SyncAdapter cleans up the data itself then it typically won't
48 * increment this value although it may still do so in order to record that it had to
49 * perform some cleanup. E.g., if the SyncAdapter received a bad entry from the server
50 * when processing a feed of entries, it may choose to drop the entry and thus make
51 * progress and still increment this value just so the SyncAdapter can record that an
52 * error occurred. This is considered a hard error.
53 */
The Android Open Source Project9066cfe2009-03-03 19:31:44 -080054 public long numParseExceptions;
Fred Quintana20c640e2010-04-26 17:38:56 -070055
56 /**
57 * The SyncAdapter detected that there was an unrecoverable version conflict when it
58 * attempted to update or delete a version of a resource on the server. This is expected
59 * to clear itself automatically once the new state is retrieved from the server,
60 * though it may remain until the user intervenes manually, perhaps by clearing the
61 * local storage and starting over frmo scratch. This is considered a hard error.
62 */
The Android Open Source Project9066cfe2009-03-03 19:31:44 -080063 public long numConflictDetectedExceptions;
Fred Quintana20c640e2010-04-26 17:38:56 -070064
65 /**
66 * Counter for tracking how many inserts were performed by the sync operation, as defined
67 * by the SyncAdapter.
68 */
The Android Open Source Project9066cfe2009-03-03 19:31:44 -080069 public long numInserts;
Fred Quintana20c640e2010-04-26 17:38:56 -070070
71 /**
72 * Counter for tracking how many updates were performed by the sync operation, as defined
73 * by the SyncAdapter.
74 */
The Android Open Source Project9066cfe2009-03-03 19:31:44 -080075 public long numUpdates;
Fred Quintana20c640e2010-04-26 17:38:56 -070076
77 /**
78 * Counter for tracking how many deletes were performed by the sync operation, as defined
79 * by the SyncAdapter.
80 */
The Android Open Source Project9066cfe2009-03-03 19:31:44 -080081 public long numDeletes;
Fred Quintana20c640e2010-04-26 17:38:56 -070082
83 /**
84 * Counter for tracking how many entries were affected by the sync operation, as defined
85 * by the SyncAdapter.
86 */
The Android Open Source Project9066cfe2009-03-03 19:31:44 -080087 public long numEntries;
Fred Quintana20c640e2010-04-26 17:38:56 -070088
89 /**
90 * Counter for tracking how many entries, either from the server or the local store, were
91 * ignored during the sync operation. This could happen if the SyncAdapter detected some
92 * unparsable data but decided to skip it and move on rather than failing immediately.
93 */
The Android Open Source Project9066cfe2009-03-03 19:31:44 -080094 public long numSkippedEntries;
95
96 public SyncStats() {
97 numAuthExceptions = 0;
98 numIoExceptions = 0;
99 numParseExceptions = 0;
100 numConflictDetectedExceptions = 0;
101 numInserts = 0;
102 numUpdates = 0;
103 numDeletes = 0;
104 numEntries = 0;
105 numSkippedEntries = 0;
106 }
107
108 public SyncStats(Parcel in) {
109 numAuthExceptions = in.readLong();
110 numIoExceptions = in.readLong();
111 numParseExceptions = in.readLong();
112 numConflictDetectedExceptions = in.readLong();
113 numInserts = in.readLong();
114 numUpdates = in.readLong();
115 numDeletes = in.readLong();
116 numEntries = in.readLong();
117 numSkippedEntries = in.readLong();
118 }
119
120 @Override
121 public String toString() {
122 StringBuilder sb = new StringBuilder();
Fred Quintana77709752009-08-20 17:18:58 -0700123 sb.append(" stats [");
124 if (numAuthExceptions > 0) sb.append(" numAuthExceptions: ").append(numAuthExceptions);
125 if (numIoExceptions > 0) sb.append(" numIoExceptions: ").append(numIoExceptions);
126 if (numParseExceptions > 0) sb.append(" numParseExceptions: ").append(numParseExceptions);
127 if (numConflictDetectedExceptions > 0)
128 sb.append(" numConflictDetectedExceptions: ").append(numConflictDetectedExceptions);
129 if (numInserts > 0) sb.append(" numInserts: ").append(numInserts);
130 if (numUpdates > 0) sb.append(" numUpdates: ").append(numUpdates);
131 if (numDeletes > 0) sb.append(" numDeletes: ").append(numDeletes);
132 if (numEntries > 0) sb.append(" numEntries: ").append(numEntries);
133 if (numSkippedEntries > 0) sb.append(" numSkippedEntries: ").append(numSkippedEntries);
134 sb.append("]");
The Android Open Source Project9066cfe2009-03-03 19:31:44 -0800135 return sb.toString();
136 }
137
Fred Quintana20c640e2010-04-26 17:38:56 -0700138 /**
139 * Reset all the counters to 0.
140 */
The Android Open Source Project9066cfe2009-03-03 19:31:44 -0800141 public void clear() {
142 numAuthExceptions = 0;
143 numIoExceptions = 0;
144 numParseExceptions = 0;
145 numConflictDetectedExceptions = 0;
146 numInserts = 0;
147 numUpdates = 0;
148 numDeletes = 0;
149 numEntries = 0;
150 numSkippedEntries = 0;
151 }
152
153 public int describeContents() {
154 return 0;
155 }
156
157 public void writeToParcel(Parcel dest, int flags) {
158 dest.writeLong(numAuthExceptions);
159 dest.writeLong(numIoExceptions);
160 dest.writeLong(numParseExceptions);
161 dest.writeLong(numConflictDetectedExceptions);
162 dest.writeLong(numInserts);
163 dest.writeLong(numUpdates);
164 dest.writeLong(numDeletes);
165 dest.writeLong(numEntries);
166 dest.writeLong(numSkippedEntries);
167 }
168
169 public static final Creator<SyncStats> CREATOR = new Creator<SyncStats>() {
170 public SyncStats createFromParcel(Parcel in) {
171 return new SyncStats(in);
172 }
173
174 public SyncStats[] newArray(int size) {
175 return new SyncStats[size];
176 }
177 };
178}