001    package hep.aida.ref.sql;
002    
003    /** <code>Pair</code> is a pair of objects. 
004      * <p><font color="#880088">
005      * <pre>
006      * $Log: Pair.java,v $
007      * Revision 1.7  2007/05/23 16:38:44  hrivnac
008      * logical connections for Plotter; better UML
009      *
010      * Revision 1.6  2006/04/22 12:34:17  hrivnac
011      * Web Service included
012      *
013      * Revision 1.5  2004/05/22 15:12:59  hrivnac
014      * class id reformated
015      *
016      * Revision 1.4  2004/04/14 13:39:46  hrivnac
017      * 1.5 warnings fixed
018      *
019      * Revision 1.3  2004/02/10 14:50:58  hrivnac
020      * JavaDoc tags completed
021      *../../SQLTuple/src/hep/aida/ref/sql/Utilities
022      * Revision 1.2  2004/02/09 15:29:39  hrivnac
023      * better hashcode
024      *
025      * Revision 1.1  2004/02/04 13:30:39  hrivnac
026      * - improvement of Enums internal mapping
027      * - general cleaning
028      *
029      * </pre>
030      * </font></p>
031      * @opt attributes
032      * @opt operations
033      * @opt types
034      * @opt visibility
035      * @version $Id: Pair.java,v 1.7 2007/05/23 16:38:44 hrivnac Exp $
036      * @author <a href="mailto:Julius.Hrivnac@cern.ch">J.Hrivnac</a> */
037    public class Pair<A, B> {
038    
039      public A first;
040    
041      public B second;
042    
043      /** Create a pair of Objects of types A and B.
044        * @param a The first Object.
045        * @param b The second Objec. */
046      public Pair(A a, B b) {
047        first  = a;
048        second = b;
049        }
050    
051      public boolean equals(Object o) {
052        return o instanceof Pair &&
053               first.equals(((Pair)o).first) &&
054               second.equals(((Pair)o).second) &&
055               hashCode() == o.hashCode();
056        }
057    
058      public int hashCode() {
059        return 31 * first.hashCode() + second.hashCode();
060        }
061    
062      public String toString() {
063        return "Pair<" + first.getClass().getName() + ", " + second.getClass().getName() + ">" +
064               " = {"  + first.toString()           + ", " + second.toString()           + "}";
065        }
066    
067      }