PeriodicSync.java revision c5d1c6db61f208b206b260f897bb5bbc64be4d97
1c5d1c6db61f208b206b260f897bb5bbc64be4d97Fred Quintana/*
2c5d1c6db61f208b206b260f897bb5bbc64be4d97Fred Quintana * Copyright (C) 2010 The Android Open Source Project
3c5d1c6db61f208b206b260f897bb5bbc64be4d97Fred Quintana *
4c5d1c6db61f208b206b260f897bb5bbc64be4d97Fred Quintana * Licensed under the Apache License, Version 2.0 (the "License");
5c5d1c6db61f208b206b260f897bb5bbc64be4d97Fred Quintana * you may not use this file except in compliance with the License.
6c5d1c6db61f208b206b260f897bb5bbc64be4d97Fred Quintana * You may obtain a copy of the License at
7c5d1c6db61f208b206b260f897bb5bbc64be4d97Fred Quintana *
8c5d1c6db61f208b206b260f897bb5bbc64be4d97Fred Quintana *      http://www.apache.org/licenses/LICENSE-2.0
9c5d1c6db61f208b206b260f897bb5bbc64be4d97Fred Quintana *
10c5d1c6db61f208b206b260f897bb5bbc64be4d97Fred Quintana * Unless required by applicable law or agreed to in writing, software
11c5d1c6db61f208b206b260f897bb5bbc64be4d97Fred Quintana * distributed under the License is distributed on an "AS IS" BASIS,
12c5d1c6db61f208b206b260f897bb5bbc64be4d97Fred Quintana * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13c5d1c6db61f208b206b260f897bb5bbc64be4d97Fred Quintana * See the License for the specific language governing permissions and
14c5d1c6db61f208b206b260f897bb5bbc64be4d97Fred Quintana * limitations under the License.
15c5d1c6db61f208b206b260f897bb5bbc64be4d97Fred Quintana */
16c5d1c6db61f208b206b260f897bb5bbc64be4d97Fred Quintana
17c5d1c6db61f208b206b260f897bb5bbc64be4d97Fred Quintanapackage android.content;
18c5d1c6db61f208b206b260f897bb5bbc64be4d97Fred Quintana
19c5d1c6db61f208b206b260f897bb5bbc64be4d97Fred Quintanaimport android.os.Parcelable;
20c5d1c6db61f208b206b260f897bb5bbc64be4d97Fred Quintanaimport android.os.Bundle;
21c5d1c6db61f208b206b260f897bb5bbc64be4d97Fred Quintanaimport android.os.Parcel;
22c5d1c6db61f208b206b260f897bb5bbc64be4d97Fred Quintanaimport android.accounts.Account;
23c5d1c6db61f208b206b260f897bb5bbc64be4d97Fred Quintana
24c5d1c6db61f208b206b260f897bb5bbc64be4d97Fred Quintana/**
25c5d1c6db61f208b206b260f897bb5bbc64be4d97Fred Quintana * Value type that contains information about a periodic sync. Is parcelable, making it suitable
26c5d1c6db61f208b206b260f897bb5bbc64be4d97Fred Quintana * for passing in an IPC.
27c5d1c6db61f208b206b260f897bb5bbc64be4d97Fred Quintana */
28c5d1c6db61f208b206b260f897bb5bbc64be4d97Fred Quintanapublic class PeriodicSync implements Parcelable {
29c5d1c6db61f208b206b260f897bb5bbc64be4d97Fred Quintana    /** The account to be synced */
30c5d1c6db61f208b206b260f897bb5bbc64be4d97Fred Quintana    public final Account account;
31c5d1c6db61f208b206b260f897bb5bbc64be4d97Fred Quintana    /** The authority of the sync */
32c5d1c6db61f208b206b260f897bb5bbc64be4d97Fred Quintana    public final String authority;
33c5d1c6db61f208b206b260f897bb5bbc64be4d97Fred Quintana    /** Any extras that parameters that are to be passed to the sync adapter. */
34c5d1c6db61f208b206b260f897bb5bbc64be4d97Fred Quintana    public final Bundle extras;
35c5d1c6db61f208b206b260f897bb5bbc64be4d97Fred Quintana    /** How frequently the sync should be scheduled, in seconds. */
36c5d1c6db61f208b206b260f897bb5bbc64be4d97Fred Quintana    public final long period;
37c5d1c6db61f208b206b260f897bb5bbc64be4d97Fred Quintana
38c5d1c6db61f208b206b260f897bb5bbc64be4d97Fred Quintana    /** Creates a new PeriodicSync, copying the Bundle */
39c5d1c6db61f208b206b260f897bb5bbc64be4d97Fred Quintana    public PeriodicSync(Account account, String authority, Bundle extras, long period) {
40c5d1c6db61f208b206b260f897bb5bbc64be4d97Fred Quintana        this.account = account;
41c5d1c6db61f208b206b260f897bb5bbc64be4d97Fred Quintana        this.authority = authority;
42c5d1c6db61f208b206b260f897bb5bbc64be4d97Fred Quintana        this.extras = new Bundle(extras);
43c5d1c6db61f208b206b260f897bb5bbc64be4d97Fred Quintana        this.period = period;
44c5d1c6db61f208b206b260f897bb5bbc64be4d97Fred Quintana    }
45c5d1c6db61f208b206b260f897bb5bbc64be4d97Fred Quintana
46c5d1c6db61f208b206b260f897bb5bbc64be4d97Fred Quintana    public int describeContents() {
47c5d1c6db61f208b206b260f897bb5bbc64be4d97Fred Quintana        return 0;
48c5d1c6db61f208b206b260f897bb5bbc64be4d97Fred Quintana    }
49c5d1c6db61f208b206b260f897bb5bbc64be4d97Fred Quintana
50c5d1c6db61f208b206b260f897bb5bbc64be4d97Fred Quintana    public void writeToParcel(Parcel dest, int flags) {
51c5d1c6db61f208b206b260f897bb5bbc64be4d97Fred Quintana        account.writeToParcel(dest, flags);
52c5d1c6db61f208b206b260f897bb5bbc64be4d97Fred Quintana        dest.writeString(authority);
53c5d1c6db61f208b206b260f897bb5bbc64be4d97Fred Quintana        dest.writeBundle(extras);
54c5d1c6db61f208b206b260f897bb5bbc64be4d97Fred Quintana        dest.writeLong(period);
55c5d1c6db61f208b206b260f897bb5bbc64be4d97Fred Quintana    }
56c5d1c6db61f208b206b260f897bb5bbc64be4d97Fred Quintana
57c5d1c6db61f208b206b260f897bb5bbc64be4d97Fred Quintana    public static final Creator<PeriodicSync> CREATOR = new Creator<PeriodicSync>() {
58c5d1c6db61f208b206b260f897bb5bbc64be4d97Fred Quintana        public PeriodicSync createFromParcel(Parcel source) {
59c5d1c6db61f208b206b260f897bb5bbc64be4d97Fred Quintana            return new PeriodicSync(Account.CREATOR.createFromParcel(source),
60c5d1c6db61f208b206b260f897bb5bbc64be4d97Fred Quintana                    source.readString(), source.readBundle(), source.readLong());
61c5d1c6db61f208b206b260f897bb5bbc64be4d97Fred Quintana        }
62c5d1c6db61f208b206b260f897bb5bbc64be4d97Fred Quintana
63c5d1c6db61f208b206b260f897bb5bbc64be4d97Fred Quintana        public PeriodicSync[] newArray(int size) {
64c5d1c6db61f208b206b260f897bb5bbc64be4d97Fred Quintana            return new PeriodicSync[size];
65c5d1c6db61f208b206b260f897bb5bbc64be4d97Fred Quintana        }
66c5d1c6db61f208b206b260f897bb5bbc64be4d97Fred Quintana    };
67c5d1c6db61f208b206b260f897bb5bbc64be4d97Fred Quintana
68c5d1c6db61f208b206b260f897bb5bbc64be4d97Fred Quintana    public boolean equals(Object o) {
69c5d1c6db61f208b206b260f897bb5bbc64be4d97Fred Quintana        if (o == this) {
70c5d1c6db61f208b206b260f897bb5bbc64be4d97Fred Quintana            return true;
71c5d1c6db61f208b206b260f897bb5bbc64be4d97Fred Quintana        }
72c5d1c6db61f208b206b260f897bb5bbc64be4d97Fred Quintana
73c5d1c6db61f208b206b260f897bb5bbc64be4d97Fred Quintana        if (!(o instanceof PeriodicSync)) {
74c5d1c6db61f208b206b260f897bb5bbc64be4d97Fred Quintana            return false;
75c5d1c6db61f208b206b260f897bb5bbc64be4d97Fred Quintana        }
76c5d1c6db61f208b206b260f897bb5bbc64be4d97Fred Quintana
77c5d1c6db61f208b206b260f897bb5bbc64be4d97Fred Quintana        final PeriodicSync other = (PeriodicSync) o;
78c5d1c6db61f208b206b260f897bb5bbc64be4d97Fred Quintana
79c5d1c6db61f208b206b260f897bb5bbc64be4d97Fred Quintana        return account.equals(other.account)
80c5d1c6db61f208b206b260f897bb5bbc64be4d97Fred Quintana                && authority.equals(other.authority)
81c5d1c6db61f208b206b260f897bb5bbc64be4d97Fred Quintana                && period == other.period
82c5d1c6db61f208b206b260f897bb5bbc64be4d97Fred Quintana                && SyncStorageEngine.equals(extras, other.extras);
83c5d1c6db61f208b206b260f897bb5bbc64be4d97Fred Quintana    }
84c5d1c6db61f208b206b260f897bb5bbc64be4d97Fred Quintana}
85