01: /*
02: * ============================================================================
03: * GNU Lesser General Public License
04: * ============================================================================
05: *
06: * JasperReports - Free Java report-generating library.
07: * Copyright (C) 2001-2006 JasperSoft Corporation http://www.jaspersoft.com
08: *
09: * This library is free software; you can redistribute it and/or
10: * modify it under the terms of the GNU Lesser General Public
11: * License as published by the Free Software Foundation; either
12: * version 2.1 of the License, or (at your option) any later version.
13: *
14: * This library is distributed in the hope that it will be useful,
15: * but WITHOUT ANY WARRANTY; without even the implied warranty of
16: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
17: * Lesser General Public License for more details.
18: *
19: * You should have received a copy of the GNU Lesser General Public
20: * License along with this library; if not, write to the Free Software
21: * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
22: *
23: * JasperSoft Corporation
24: * 303 Second Street, Suite 450 North
25: * San Francisco, CA 94107
26: * http://www.jaspersoft.com
27: */
28: package net.sf.jasperreports.engine.util;
29:
30: import java.io.Serializable;
31:
32: /**
33: * Utility class used to pair two objects.
34: *
35: * @author Lucian Chirita (lucianc@users.sourceforge.net)
36: * @version $Id: Pair.java 1364 2006-08-31 15:13:20Z lucianc $
37: */
38: public class Pair implements Serializable {
39: private static final long serialVersionUID = 1L;
40:
41: private final Object o1;
42: private final Object o2;
43: private final int hash;
44:
45: /**
46: * Create a pair instance.
47: *
48: * @param o1 the first member of the pair
49: * @param o2 the second member of the pair
50: */
51: public Pair(Object o1, Object o2) {
52: this .o1 = o1;
53: this .o2 = o2;
54: this .hash = computeHash();
55: }
56:
57: private int computeHash() {
58: int hashCode = o1 == null ? 0 : o1.hashCode();
59: hashCode *= 31;
60: hashCode += o2 == null ? 0 : o2.hashCode();
61: return hashCode;
62: }
63:
64: public boolean equals(Object o) {
65: if (o == this ) {
66: return true;
67: }
68:
69: if (o == null || !(o instanceof Pair)) {
70: return false;
71: }
72:
73: Pair p = (Pair) o;
74:
75: return (p.o1 == null ? o1 == null : (o1 != null && p.o1
76: .equals(o1)))
77: && (p.o2 == null ? o2 == null : (o2 != null && p.o2
78: .equals(o2)));
79: }
80:
81: public int hashCode() {
82: return hash;
83: }
84:
85: public String toString() {
86: return "(" + String.valueOf(o1) + ", " + String.valueOf(o2)
87: + ")";
88: }
89:
90: }
|