diff options
Diffstat (limited to 'src/com/android/tv/data/ChannelNumber.java')
-rw-r--r-- | src/com/android/tv/data/ChannelNumber.java | 54 |
1 files changed, 35 insertions, 19 deletions
diff --git a/src/com/android/tv/data/ChannelNumber.java b/src/com/android/tv/data/ChannelNumber.java index 29054aa5..afdcc580 100644 --- a/src/com/android/tv/data/ChannelNumber.java +++ b/src/com/android/tv/data/ChannelNumber.java @@ -19,18 +19,18 @@ package com.android.tv.data; import android.support.annotation.NonNull; import android.text.TextUtils; import android.view.KeyEvent; - -import com.android.tv.util.StringUtils; - +import com.android.tv.common.util.StringUtils; +import com.android.tv.data.api.Channel; import java.util.Objects; -/** - * A convenience class to handle channel number. - */ +/** A convenience class to handle channel number. */ public final class ChannelNumber implements Comparable<ChannelNumber> { private static final int[] CHANNEL_DELIMITER_KEYCODES = { - KeyEvent.KEYCODE_MINUS, KeyEvent.KEYCODE_NUMPAD_SUBTRACT, KeyEvent.KEYCODE_PERIOD, - KeyEvent.KEYCODE_NUMPAD_DOT, KeyEvent.KEYCODE_SPACE + KeyEvent.KEYCODE_MINUS, + KeyEvent.KEYCODE_NUMPAD_SUBTRACT, + KeyEvent.KEYCODE_PERIOD, + KeyEvent.KEYCODE_NUMPAD_DOT, + KeyEvent.KEYCODE_SPACE }; /** The major part of the channel number. */ @@ -44,6 +44,23 @@ public final class ChannelNumber implements Comparable<ChannelNumber> { reset(); } + /** + * {@code lhs} and {@code rhs} are equivalent if {@link ChannelNumber#compare(String, String)} + * is 0 or if only one has a delimiter and both {@link ChannelNumber#majorNumber} equals. + */ + public static boolean equivalent(String lhs, String rhs) { + if (compare(lhs, rhs) == 0) { + return true; + } + // Match if only one has delimiter + ChannelNumber lhsNumber = parseChannelNumber(lhs); + ChannelNumber rhsNumber = parseChannelNumber(rhs); + return lhsNumber != null + && rhsNumber != null + && lhsNumber.hasDelimiter != rhsNumber.hasDelimiter + && lhsNumber.majorNumber.equals(rhsNumber.majorNumber); + } + public void reset() { setChannelNumber("", false, ""); } @@ -68,8 +85,7 @@ public final class ChannelNumber implements Comparable<ChannelNumber> { int minor = hasDelimiter ? Integer.parseInt(minorNumber) : 0; int opponentMajor = Integer.parseInt(another.majorNumber); - int opponentMinor = another.hasDelimiter - ? Integer.parseInt(another.minorNumber) : 0; + int opponentMinor = another.hasDelimiter ? Integer.parseInt(another.minorNumber) : 0; if (major == opponentMajor) { return minor - opponentMinor; } @@ -103,10 +119,10 @@ public final class ChannelNumber implements Comparable<ChannelNumber> { /** * Returns the ChannelNumber instance. - * <p> - * Note that all the channel number argument should be normalized by - * {@link Channel#normalizeDisplayNumber}. The channels retrieved from - * {@link ChannelDataManager} are already normalized. + * + * <p>Note that all the channel number argument should be normalized by {@link + * ChannelImpl#normalizeDisplayNumber}. The channels retrieved from {@link ChannelDataManager} + * are already normalized. */ public static ChannelNumber parseChannelNumber(String number) { if (number == null) { @@ -134,10 +150,10 @@ public final class ChannelNumber implements Comparable<ChannelNumber> { /** * Compares the channel numbers. - * <p> - * Note that all the channel number arguments should be normalized by - * {@link Channel#normalizeDisplayNumber}. The channels retrieved from - * {@link ChannelDataManager} are already normalized. + * + * <p>Note that all the channel number arguments should be normalized by {@link + * ChannelImpl#normalizeDisplayNumber}. The channels retrieved from {@link ChannelDataManager} + * are already normalized. */ public static int compare(String lhs, String rhs) { ChannelNumber lhsNumber = parseChannelNumber(lhs); @@ -156,7 +172,7 @@ public final class ChannelNumber implements Comparable<ChannelNumber> { private static boolean isInteger(String string) { try { Integer.parseInt(string); - } catch(NumberFormatException | NullPointerException e) { + } catch (NumberFormatException | NullPointerException e) { return false; } return true; |