/**
 * 
 */
package commons.collections;
import basics.utl.NumUtl;
/**
 * Just a pair that has a value (counter, weight ...).
 * @author ks
 */
public class Pair
{

String term1 = "";
String term2 = "";
double value = 0;

public Pair()
{}

public Pair(String t1, String t2)
{
   this.term1 = t1;
   this.term2 = t2;
}

public Pair(String t1, String t2, double value)
{
   this.term1 = t1;
   this.term2 = t2;
   this.value = value;
}

public String getTerm1 ()
{
   return term1;
}

public String getTerm2 ()
{
   return term2;
}

public double getValue ()
{
   return value;
}

public void setValue (double v)
{
   value = v;
}

public String toString ()
{
   StringBuilder sb = new StringBuilder();
   sb.append(term1);
   sb.append(":");
   sb.append(term2);
   sb.append(":");
   sb.append(value);
   return sb.toString();
}

public String toString (int roundDigits)
{
   StringBuilder sb = new StringBuilder();
   sb.append(term1);
   sb.append(":");
   sb.append(term2);
   sb.append("(");
   sb.append(NumUtl.round(value, roundDigits));
   sb.append(")");
   return sb.toString();
}

public Object clone ()
{
   Pair t = new Pair(this.term1, this.term2);
   t.value = this.value;
   return t;
}

public void setTerm1 (String term1)
{
   this.term1 = term1;
}

public void setTerm2 (String term2)
{
   this.term2 = term2;
}

public boolean equals (Object other)
{
   if (!(other instanceof Pair)) return false;
   Pair o = (Pair) other;
   boolean result = this.term1.equals(o.term1) && this.term2.equals(o.term2);
   // OsUtl.trace(o.toString() + " equals " + toString() + "? " + result);
   return result;
}

public int hashCode ()
{
   return (term1 + term2).hashCode();
}
}