/*
This file belongs to the Servoy development and deployment environment, Copyright (C) 1997-2010 Servoy BV
This program is free software; you can redistribute it and/or modify it under
the terms of the GNU Affero General Public License as published by the Free
Software Foundation; either version 3 of the License, or (at your option) any
later version.
This program is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License along
with this program; if not, see http://www.gnu.org/licenses or write to the Free
Software Foundation,Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
*/
package com.servoy.j2db.util;
import java.io.Serializable;
import com.servoy.j2db.server.annotations.TerracottaInstrumentedClass;
@TerracottaInstrumentedClass
public class Pair<L, R> implements Comparable<Pair<L, R>>, Serializable
{
private L left;
private R right;
public Pair(L left, R right)
{
this.left = left;
this.right = right;
}
/**
* Returns the left.
*
* @return Object
*/
public L getLeft()
{
return left;
}
/**
* Returns the right.
*
* @return Object
*/
public R getRight()
{
return right;
}
/**
* Sets the left.
*
* @param left The left to set
*/
public void setLeft(L left)
{
this.left = left;
}
/**
* Sets the right.
*
* @param right The right to set
*/
public void setRight(R right)
{
this.right = right;
}
@Override
public boolean equals(Object other)
{
if (other != null && other instanceof Pair)
{
Pair< ? , ? > otherPair = (Pair< ? , ? >)other;
return (left == otherPair.left || (left != null && left.equals(otherPair.left))) &&
(right == otherPair.right || (right != null && right.equals(otherPair.right)));
}
return false;
}
@Override
public int hashCode()
{
return 0x96ab4911 ^ (left == null ? 0 : left.hashCode()) ^ (right == null ? 0 : right.hashCode());
}
public int compareTo(Pair<L, R> pair)
{
int i = ((Comparable<L>)left).compareTo(pair.left);
if (i != 0) return i;
return ((Comparable<R>)right).compareTo(pair.right);
}
@Override
public String toString()
{
StringBuffer buffer = new StringBuffer();
buffer.append('[');
buffer.append(left);
buffer.append(", "); //$NON-NLS-1$
buffer.append(right);
buffer.append(']');
return buffer.toString();
}
}