diff options
Diffstat (limited to 'java/src/com/google/polo/pairing/message/EncodingOption.java')
-rw-r--r-- | java/src/com/google/polo/pairing/message/EncodingOption.java | 108 |
1 files changed, 108 insertions, 0 deletions
diff --git a/java/src/com/google/polo/pairing/message/EncodingOption.java b/java/src/com/google/polo/pairing/message/EncodingOption.java new file mode 100644 index 0000000..fcbce5a --- /dev/null +++ b/java/src/com/google/polo/pairing/message/EncodingOption.java @@ -0,0 +1,108 @@ +/* + * Copyright (C) 2009 Google Inc. All rights reserved. + * + * 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 com.google.polo.pairing.message; + +/** + * Internal representation of a session encoding option. + */ +public class EncodingOption { + + /** + * Representation of a specific encoding type. The numeric values + * should be kept synchronized with the constants defined by + * Options.Encoding.EncodingType in polo.proto. + */ + public enum EncodingType { + ENCODING_UNKNOWN(0), + ENCODING_ALPHANUMERIC(1), + ENCODING_NUMERIC(2), + ENCODING_HEXADECIMAL(3), + ENCODING_QRCODE(4); + + private final int mIntVal; + + private EncodingType(int intVal) { + mIntVal = intVal; + } + + public static EncodingType fromIntVal(int intVal) { + for (EncodingType encType : EncodingType.values()) { + if (encType.getAsInt() == intVal) { + return encType; + } + } + return EncodingType.ENCODING_UNKNOWN; + } + + public int getAsInt() { + return mIntVal; + } + } + + private EncodingType mType; + + private int mSymbolLength; + + public EncodingOption(EncodingType type, int symbolLength) { + mType = type; + mSymbolLength = symbolLength; + } + + @Override + public String toString() { + return mType + ":" + mSymbolLength; + } + + public EncodingType getType() { + return mType; + } + + public int getSymbolLength() { + return mSymbolLength; + } + + @Override + public boolean equals(Object obj) { + if (this == obj) { + return true; + } + + if (!(obj instanceof EncodingOption)) { + return false; + } + + EncodingOption other = (EncodingOption) obj; + if (mType == null) { + if (other.mType != null) { + return false; + } + } else if (!mType.equals(other.mType)) { + return false; + } + + return mSymbolLength == other.mSymbolLength; + } + + @Override + public int hashCode() { + int result = 7; + result = result * 31 + (mType != null ? mType.hashCode() : 0); + result = result * 31 + mSymbolLength; + return result; + } + +} |