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