BankDetails.java

package com.tradecloud.domain.model.fec;

import com.tradecloud.domain.treasury.TreasuryBank;

import javax.persistence.Column;
import javax.persistence.Embeddable;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlRootElement;
import java.io.Serializable;

@Embeddable
@XmlRootElement(name = "BankDetails")
@XmlAccessorType(XmlAccessType.FIELD)
public class BankDetails implements Serializable {

    @ManyToOne
    @JoinColumn(name = "treasurybank_code")
    private TreasuryBank treasuryBank;

    @Column(name = "bank_details_dealer")
    private String dealer;

    /**
     * for JPA use only.
     */
    public BankDetails() {
    }

    private BankDetails(TreasuryBank treasuryBank, String dealer) {
        this.treasuryBank = treasuryBank;
        this.dealer = dealer;
    }

    public static BankDetails valueOf(TreasuryBank treasuryBank, String dealer) {
        // Bank name and Dealer can be empty when creating blank fecs from deals
        // Validate.notEmpty(name, "Bank Name may not be null or empty");
        // Validate.notEmpty(dealer, "Bank Dealer may not be null or empty");
        return new BankDetails(treasuryBank, dealer);
    }

    public TreasuryBank getTreasuryBank() {
        return treasuryBank;
    }

    public String getDealer() {
        return dealer;
    }

    @Override
    public boolean equals(Object obj) {
        if (obj == null) {
            return false;
        }
        if (getClass() != obj.getClass()) {
            return false;
        }
        final BankDetails other = (BankDetails) obj;
        if ((this.treasuryBank == null) ? (other.treasuryBank != null) : !this.treasuryBank.equals(other.treasuryBank)) {
            return false;
        }
        if ((this.dealer == null) ? (other.dealer != null) : !this.dealer.equals(other.dealer)) {
            return false;
        }
        return true;
    }

    @Override
    public int hashCode() {
        int hash = 5;
        hash = 73 * hash + (this.treasuryBank != null ? this.treasuryBank.hashCode() : 0);
        return hash;
    }

    public void setTreasuryBank(TreasuryBank treasuryBank) {
        this.treasuryBank = treasuryBank;
    }
}