Condition.java revision 7340fc8665ae3f9f1978f42aa0e5e1da85036158
17340fc8665ae3f9f1978f42aa0e5e1da85036158John Spurlock/**
27340fc8665ae3f9f1978f42aa0e5e1da85036158John Spurlock * Copyright (c) 2014, The Android Open Source Project
37340fc8665ae3f9f1978f42aa0e5e1da85036158John Spurlock *
47340fc8665ae3f9f1978f42aa0e5e1da85036158John Spurlock * Licensed under the Apache License, Version 2.0 (the "License");
57340fc8665ae3f9f1978f42aa0e5e1da85036158John Spurlock * you may not use this file except in compliance with the License.
67340fc8665ae3f9f1978f42aa0e5e1da85036158John Spurlock * You may obtain a copy of the License at
77340fc8665ae3f9f1978f42aa0e5e1da85036158John Spurlock *
87340fc8665ae3f9f1978f42aa0e5e1da85036158John Spurlock *     http://www.apache.org/licenses/LICENSE-2.0
97340fc8665ae3f9f1978f42aa0e5e1da85036158John Spurlock *
107340fc8665ae3f9f1978f42aa0e5e1da85036158John Spurlock * Unless required by applicable law or agreed to in writing, software
117340fc8665ae3f9f1978f42aa0e5e1da85036158John Spurlock * distributed under the License is distributed on an "AS IS" BASIS,
127340fc8665ae3f9f1978f42aa0e5e1da85036158John Spurlock * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
137340fc8665ae3f9f1978f42aa0e5e1da85036158John Spurlock * See the License for the specific language governing permissions and
147340fc8665ae3f9f1978f42aa0e5e1da85036158John Spurlock * limitations under the License.
157340fc8665ae3f9f1978f42aa0e5e1da85036158John Spurlock */
167340fc8665ae3f9f1978f42aa0e5e1da85036158John Spurlock
177340fc8665ae3f9f1978f42aa0e5e1da85036158John Spurlockpackage android.service.notification;
187340fc8665ae3f9f1978f42aa0e5e1da85036158John Spurlock
197340fc8665ae3f9f1978f42aa0e5e1da85036158John Spurlockimport android.net.Uri;
207340fc8665ae3f9f1978f42aa0e5e1da85036158John Spurlockimport android.os.Parcel;
217340fc8665ae3f9f1978f42aa0e5e1da85036158John Spurlockimport android.os.Parcelable;
227340fc8665ae3f9f1978f42aa0e5e1da85036158John Spurlock
237340fc8665ae3f9f1978f42aa0e5e1da85036158John Spurlockimport java.util.Objects;
247340fc8665ae3f9f1978f42aa0e5e1da85036158John Spurlock
257340fc8665ae3f9f1978f42aa0e5e1da85036158John Spurlock/**
267340fc8665ae3f9f1978f42aa0e5e1da85036158John Spurlock * Condition information from condition providers.
277340fc8665ae3f9f1978f42aa0e5e1da85036158John Spurlock *
287340fc8665ae3f9f1978f42aa0e5e1da85036158John Spurlock * @hide
297340fc8665ae3f9f1978f42aa0e5e1da85036158John Spurlock */
307340fc8665ae3f9f1978f42aa0e5e1da85036158John Spurlockpublic class Condition implements Parcelable {
317340fc8665ae3f9f1978f42aa0e5e1da85036158John Spurlock
327340fc8665ae3f9f1978f42aa0e5e1da85036158John Spurlock    public static final int FLAG_RELEVANT_NOW = 1 << 0;
337340fc8665ae3f9f1978f42aa0e5e1da85036158John Spurlock    public static final int FLAG_RELEVANT_ALWAYS = 1 << 1;
347340fc8665ae3f9f1978f42aa0e5e1da85036158John Spurlock
357340fc8665ae3f9f1978f42aa0e5e1da85036158John Spurlock    public final Uri id;
367340fc8665ae3f9f1978f42aa0e5e1da85036158John Spurlock    public String caption;
377340fc8665ae3f9f1978f42aa0e5e1da85036158John Spurlock    public boolean state;
387340fc8665ae3f9f1978f42aa0e5e1da85036158John Spurlock    public int flags;
397340fc8665ae3f9f1978f42aa0e5e1da85036158John Spurlock
407340fc8665ae3f9f1978f42aa0e5e1da85036158John Spurlock
417340fc8665ae3f9f1978f42aa0e5e1da85036158John Spurlock    public Condition(Uri id, String caption, boolean state, int flags) {
427340fc8665ae3f9f1978f42aa0e5e1da85036158John Spurlock        if (id == null) throw new IllegalArgumentException("id is required");
437340fc8665ae3f9f1978f42aa0e5e1da85036158John Spurlock        if (caption == null) throw new IllegalArgumentException("caption is required");
447340fc8665ae3f9f1978f42aa0e5e1da85036158John Spurlock        this.id = id;
457340fc8665ae3f9f1978f42aa0e5e1da85036158John Spurlock        this.caption = caption;
467340fc8665ae3f9f1978f42aa0e5e1da85036158John Spurlock        this.state = state;
477340fc8665ae3f9f1978f42aa0e5e1da85036158John Spurlock        this.flags = flags;
487340fc8665ae3f9f1978f42aa0e5e1da85036158John Spurlock    }
497340fc8665ae3f9f1978f42aa0e5e1da85036158John Spurlock
507340fc8665ae3f9f1978f42aa0e5e1da85036158John Spurlock    private Condition(Parcel source) {
517340fc8665ae3f9f1978f42aa0e5e1da85036158John Spurlock        id = Uri.CREATOR.createFromParcel(source);
527340fc8665ae3f9f1978f42aa0e5e1da85036158John Spurlock        caption = source.readString();
537340fc8665ae3f9f1978f42aa0e5e1da85036158John Spurlock        state = source.readInt() == 1;
547340fc8665ae3f9f1978f42aa0e5e1da85036158John Spurlock        flags = source.readInt();
557340fc8665ae3f9f1978f42aa0e5e1da85036158John Spurlock    }
567340fc8665ae3f9f1978f42aa0e5e1da85036158John Spurlock
577340fc8665ae3f9f1978f42aa0e5e1da85036158John Spurlock    @Override
587340fc8665ae3f9f1978f42aa0e5e1da85036158John Spurlock    public void writeToParcel(Parcel dest, int flags) {
597340fc8665ae3f9f1978f42aa0e5e1da85036158John Spurlock        dest.writeParcelable(id, 0);
607340fc8665ae3f9f1978f42aa0e5e1da85036158John Spurlock        dest.writeString(caption);
617340fc8665ae3f9f1978f42aa0e5e1da85036158John Spurlock        dest.writeInt(state ? 1 : 0);
627340fc8665ae3f9f1978f42aa0e5e1da85036158John Spurlock        dest.writeInt(flags);
637340fc8665ae3f9f1978f42aa0e5e1da85036158John Spurlock    }
647340fc8665ae3f9f1978f42aa0e5e1da85036158John Spurlock
657340fc8665ae3f9f1978f42aa0e5e1da85036158John Spurlock    @Override
667340fc8665ae3f9f1978f42aa0e5e1da85036158John Spurlock    public String toString() {
677340fc8665ae3f9f1978f42aa0e5e1da85036158John Spurlock        return new StringBuilder(Condition.class.getSimpleName()).append('[')
687340fc8665ae3f9f1978f42aa0e5e1da85036158John Spurlock            .append("id=").append(id)
697340fc8665ae3f9f1978f42aa0e5e1da85036158John Spurlock            .append(",caption=").append(caption)
707340fc8665ae3f9f1978f42aa0e5e1da85036158John Spurlock            .append(",state=").append(state)
717340fc8665ae3f9f1978f42aa0e5e1da85036158John Spurlock            .append(",flags=").append(flags)
727340fc8665ae3f9f1978f42aa0e5e1da85036158John Spurlock            .append(']').toString();
737340fc8665ae3f9f1978f42aa0e5e1da85036158John Spurlock    }
747340fc8665ae3f9f1978f42aa0e5e1da85036158John Spurlock
757340fc8665ae3f9f1978f42aa0e5e1da85036158John Spurlock    @Override
767340fc8665ae3f9f1978f42aa0e5e1da85036158John Spurlock    public boolean equals(Object o) {
777340fc8665ae3f9f1978f42aa0e5e1da85036158John Spurlock        if (!(o instanceof Condition)) return false;
787340fc8665ae3f9f1978f42aa0e5e1da85036158John Spurlock        if (o == this) return true;
797340fc8665ae3f9f1978f42aa0e5e1da85036158John Spurlock        final Condition other = (Condition) o;
807340fc8665ae3f9f1978f42aa0e5e1da85036158John Spurlock        return Objects.equals(other.id, id)
817340fc8665ae3f9f1978f42aa0e5e1da85036158John Spurlock                && Objects.equals(other.caption, caption)
827340fc8665ae3f9f1978f42aa0e5e1da85036158John Spurlock                && other.state == state
837340fc8665ae3f9f1978f42aa0e5e1da85036158John Spurlock                && other.flags == flags;
847340fc8665ae3f9f1978f42aa0e5e1da85036158John Spurlock    }
857340fc8665ae3f9f1978f42aa0e5e1da85036158John Spurlock
867340fc8665ae3f9f1978f42aa0e5e1da85036158John Spurlock    @Override
877340fc8665ae3f9f1978f42aa0e5e1da85036158John Spurlock    public int hashCode() {
887340fc8665ae3f9f1978f42aa0e5e1da85036158John Spurlock        return Objects.hash(id, caption, state, flags);
897340fc8665ae3f9f1978f42aa0e5e1da85036158John Spurlock    }
907340fc8665ae3f9f1978f42aa0e5e1da85036158John Spurlock
917340fc8665ae3f9f1978f42aa0e5e1da85036158John Spurlock    @Override
927340fc8665ae3f9f1978f42aa0e5e1da85036158John Spurlock    public int describeContents() {
937340fc8665ae3f9f1978f42aa0e5e1da85036158John Spurlock        return 0;
947340fc8665ae3f9f1978f42aa0e5e1da85036158John Spurlock    }
957340fc8665ae3f9f1978f42aa0e5e1da85036158John Spurlock
967340fc8665ae3f9f1978f42aa0e5e1da85036158John Spurlock    public Condition copy() {
977340fc8665ae3f9f1978f42aa0e5e1da85036158John Spurlock        final Parcel parcel = Parcel.obtain();
987340fc8665ae3f9f1978f42aa0e5e1da85036158John Spurlock        try {
997340fc8665ae3f9f1978f42aa0e5e1da85036158John Spurlock            writeToParcel(parcel, 0);
1007340fc8665ae3f9f1978f42aa0e5e1da85036158John Spurlock            parcel.setDataPosition(0);
1017340fc8665ae3f9f1978f42aa0e5e1da85036158John Spurlock            return new Condition(parcel);
1027340fc8665ae3f9f1978f42aa0e5e1da85036158John Spurlock        } finally {
1037340fc8665ae3f9f1978f42aa0e5e1da85036158John Spurlock            parcel.recycle();
1047340fc8665ae3f9f1978f42aa0e5e1da85036158John Spurlock        }
1057340fc8665ae3f9f1978f42aa0e5e1da85036158John Spurlock    }
1067340fc8665ae3f9f1978f42aa0e5e1da85036158John Spurlock
1077340fc8665ae3f9f1978f42aa0e5e1da85036158John Spurlock    public static final Parcelable.Creator<Condition> CREATOR
1087340fc8665ae3f9f1978f42aa0e5e1da85036158John Spurlock            = new Parcelable.Creator<Condition>() {
1097340fc8665ae3f9f1978f42aa0e5e1da85036158John Spurlock        @Override
1107340fc8665ae3f9f1978f42aa0e5e1da85036158John Spurlock        public Condition createFromParcel(Parcel source) {
1117340fc8665ae3f9f1978f42aa0e5e1da85036158John Spurlock            return new Condition(source);
1127340fc8665ae3f9f1978f42aa0e5e1da85036158John Spurlock        }
1137340fc8665ae3f9f1978f42aa0e5e1da85036158John Spurlock
1147340fc8665ae3f9f1978f42aa0e5e1da85036158John Spurlock        @Override
1157340fc8665ae3f9f1978f42aa0e5e1da85036158John Spurlock        public Condition[] newArray(int size) {
1167340fc8665ae3f9f1978f42aa0e5e1da85036158John Spurlock            return new Condition[size];
1177340fc8665ae3f9f1978f42aa0e5e1da85036158John Spurlock        }
1187340fc8665ae3f9f1978f42aa0e5e1da85036158John Spurlock    };
1197340fc8665ae3f9f1978f42aa0e5e1da85036158John Spurlock}
120