summaryrefslogtreecommitdiffstats
path: root/core/java/android/print/PrinterId.java
diff options
context:
space:
mode:
Diffstat (limited to 'core/java/android/print/PrinterId.java')
-rw-r--r--core/java/android/print/PrinterId.java160
1 files changed, 160 insertions, 0 deletions
diff --git a/core/java/android/print/PrinterId.java b/core/java/android/print/PrinterId.java
new file mode 100644
index 0000000..b853eb0
--- /dev/null
+++ b/core/java/android/print/PrinterId.java
@@ -0,0 +1,160 @@
+/*
+ * Copyright (C) 2013 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.print;
+
+import android.content.ComponentName;
+import android.os.Parcel;
+import android.os.Parcelable;
+
+/**
+ * This class represents the unique id of a printer.
+ */
+public final class PrinterId implements Parcelable {
+
+ private final ComponentName mServiceComponentName;
+
+ private final String mLocalId;
+
+ /**
+ * Creates a new instance.
+ *
+ * @param serviceComponentName The managing print service.
+ * @param localId The unique id within the managing service.
+ *
+ * @hide
+ */
+ public PrinterId(ComponentName serviceComponentName, String localId) {
+ mServiceComponentName = serviceComponentName;
+ mLocalId = localId;
+ }
+
+ private PrinterId(Parcel parcel) {
+ mServiceComponentName = parcel.readParcelable(null);
+ mLocalId = parcel.readString();
+ }
+
+ /**
+ * The id of the print service this printer is managed by.
+ *
+ * @return The print service component name.
+ *
+ * @hide
+ */
+ public ComponentName getServiceComponentName() {
+ return mServiceComponentName;
+ }
+
+ /**
+ * Gets the local id of this printer in the context
+ * of the print service that manages it.
+ *
+ * @return The local id.
+ */
+ public String getLocalId() {
+ return mLocalId;
+ }
+
+ @Override
+ public int describeContents() {
+ return 0;
+ }
+
+ @Override
+ public void writeToParcel(Parcel parcel, int flags) {
+ parcel.writeParcelable(mServiceComponentName, flags);
+ parcel.writeString(mLocalId);
+ }
+
+ @Override
+ public boolean equals(Object object) {
+ if (this == object) {
+ return true;
+ }
+ if (object == null) {
+ return false;
+ }
+ if (getClass() != object.getClass()) {
+ return false;
+ }
+ PrinterId other = (PrinterId) object;
+ if (mServiceComponentName == null) {
+ if (other.mServiceComponentName != null) {
+ return false;
+ }
+ } else if (!mServiceComponentName.equals(other.mServiceComponentName)) {
+ return false;
+ }
+ if (mLocalId != other.mLocalId) {
+ return false;
+ }
+ return true;
+ }
+
+ @Override
+ public int hashCode() {
+ final int prime = 31;
+ int hashCode = 1;
+ hashCode = prime * hashCode + ((mServiceComponentName != null)
+ ? mServiceComponentName.hashCode() : 1);
+ hashCode = prime * hashCode + mLocalId.hashCode();
+ return hashCode;
+ }
+
+ @Override
+ public String toString() {
+ StringBuilder builder = new StringBuilder();
+ builder.append("PrinterId{");
+ builder.append(mServiceComponentName.flattenToString());
+ builder.append(":");
+ builder.append(mLocalId);
+ builder.append('}');
+ return builder.toString();
+ }
+
+ /**
+ * @hide
+ */
+ public String flattenToString() {
+ return mServiceComponentName.flattenToString() + ":" + mLocalId;
+ }
+
+ /**
+ * @hide
+ */
+ public static PrinterId unflattenFromString(String string) {
+ String[] split = string.split(":");
+ if (split.length != 2) {
+ throw new IllegalArgumentException("Not well-formed printer id:" + string);
+ }
+ ComponentName component = ComponentName.unflattenFromString(split[0]);
+ String localId = String.valueOf(split[1]);
+ return new PrinterId(component, localId);
+ }
+
+ public static final Parcelable.Creator<PrinterId> CREATOR =
+ new Creator<PrinterId>() {
+ @Override
+ public PrinterId createFromParcel(Parcel parcel) {
+ return new PrinterId(parcel);
+ }
+
+ @Override
+ public PrinterId[] newArray(int size) {
+ return new PrinterId[size];
+ }
+ };
+}