/*
 * Hibernate, Relational Persistence for Idiomatic Java
 *
 * License: GNU Lesser General Public License (LGPL), version 2.1 or later.
 * See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>.
 */

//$Id$
package org.hibernate.test.annotations.indexcoll;
import javax.persistence.Column;
import javax.persistence.Embeddable;
import javax.persistence.FetchType;


@Embeddable
public class ExchangeRateKey
{

    public ExchangeRateKey() {
        super();
    }

  
    public ExchangeRateKey( long date, Currency currency1, Currency currency2) {
        super();
        this.date = date;
        this.currency1 = currency1;
        this.currency2 = currency2;
    }

    @Column(name="`date`", nullable = false)
    protected long date;
    
    @javax.persistence.ManyToOne(fetch = FetchType.LAZY, optional = false)
    protected Currency currency1;
    
    @javax.persistence.ManyToOne(fetch = FetchType.LAZY, optional = false)
    protected Currency currency2;
    

    @Override
    public boolean equals (Object obj) {
        if (this == obj)  return true;

        if (!(obj instanceof ExchangeRateKey)) return false;

        ExchangeRateKey q = (ExchangeRateKey) obj;
        return q.date == date && q.currency1 == this.currency1 && q.currency2 == this.currency2;

    }



    @Override
    public int hashCode() {
        int hashcode = 0;
        hashcode += date;
        hashcode += (currency1 != null ? currency1.hashCode() : 0);
        hashcode += (currency2 != null ? currency2.hashCode() : 0);
        return hashcode;
    }

}