package net.java.sip.communicator.impl.netaddr; /** * The AddressPreference class is used to assign preference to the various * network addresses on a host. Preferencies are in essence integers that * may vary between MAX_PREF and MIN_PREF, where MIN_PREF indicates low or * inexisting connectivity through the specified address and MAX_PREF - * complete, flowless open internet access (the perfect connection ;-) ) * * @author Emil Ivov */ public class AddressPreference implements Comparable { public static final int MAX_PREF = 100; public static final int MIN_PREF = 0; public static final AddressPreference MAX = new AddressPreference(MAX_PREF); public static final AddressPreference MIN = new AddressPreference(MIN_PREF); /** * The numerical value of this AddressPreference instance. */ private int preference = (MAX_PREF - MIN_PREF)/2; /** * Creates an AddressPreference instance with the specified preference. * @param preference the preference integer corresponding to this * AddressPreference */ AddressPreference(int preference) { this.preference = preference; } /** * Creates an AddressPreference object with a default preference value. */ AddressPreference() { } /** * Sets the preference value of this AddressPreference instance to be * @param preference int */ void setPreference(int preference) { this.preference = preference; } /** * Returns the exact preference value of this AddressPreference instance. * @return the exact preference value (an ineteger between MAX_PREF and * MIN_PREF) representing this AddressPreference instance. */ public int getPreference() { return preference; } /** * Compares this address preference with the specified object for order. * Returns a negative integer, zero, or a positive integer as this * AddressPreference is less than, equal to, or greater than the specified * object.<p> * * @param o the Object to be compared. * @return a negative integer, zero, or a positive integer as this object * is less than, equal to, or greater than the specified object. * * @throws ClassCastException if the specified object's type is not an * instance or a descendant of AddressPreference. */ public int compareTo(Object o) { AddressPreference other = (AddressPreference)o; return this.preference - other.preference; } /** * Returns true if <tt>obj</tt> is the same object as this * AddressPreference or is at least an instance of AddressPreference and * has the same numerical value. In all other cases the method returns * false. * @param obj the object to compare with * @return true if both objects represent the same preference value and * false otherwise. */ public boolean equals(Object obj) { if (! (obj instanceof AddressPreference) || obj == null) return false; if (obj == this || ((AddressPreference)obj).preference == preference ) return true; return false; } public String toString() { return "preference="+getPreference(); } }