Bank.java
package com.tradecloud.domain.party;
import com.tradecloud.domain.BankTransactionLimit;
import com.tradecloud.domain.party.base.Company;
import org.apache.commons.lang.builder.EqualsBuilder;
import org.apache.commons.lang.builder.HashCodeBuilder;
import javax.persistence.*;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlTransient;
import java.util.HashSet;
import java.util.Set;
@Entity
@Access(AccessType.FIELD)
@XmlAccessorType(XmlAccessType.FIELD)
@XmlRootElement(name = "Bank")
@Table(name = "bank", uniqueConstraints = {@UniqueConstraint(columnNames = {"name"})})
public class Bank extends Company implements Comparable<Bank> {
private static final long serialVersionUID = 1L;
/*
* TODO - Code should be non-null and we should be using the international bank identification codes AFAIK
*/
private String code; // Not really used... EACH bank does have an international bank reference that is unique around the world. Probs a bit
// overkill for our stage and i'm not sure we'd ever need it. They seem to only care about a name for display purposes
private String swiftCode;
private String branchCode;
private BankDetailsSimple bankDetails;
private String customsCode;
@Transient
@XmlTransient
private Set<BankTransactionLimit> buyLimits = new HashSet<BankTransactionLimit>();
@Transient
@XmlTransient
private Set<BankTransactionLimit> sellLimits = new HashSet<BankTransactionLimit>();
@Embedded
private LetterOfCreditDetails lcDetails = new LetterOfCreditDetails();
private boolean letterOfCreditProvider;
public Bank(String name) {
super(name);
}
public Bank() {
}
public String getSwiftCode() {
return swiftCode;
}
public void setSwiftCode(String swiftCode) {
this.swiftCode = swiftCode;
}
public String getBranchCode() {
return branchCode;
}
public void setBranchCode(String branchCode) {
this.branchCode = branchCode;
}
public Set<BankTransactionLimit> getBuyLimits() {
return buyLimits;
}
public void setBuyLimits(Set<BankTransactionLimit> buyLimits) {
this.buyLimits = buyLimits;
}
public Set<BankTransactionLimit> getSellLimits() {
return sellLimits;
}
public void setSellLimits(Set<BankTransactionLimit> sellLimits) {
this.sellLimits = sellLimits;
}
public BankDetailsSimple getBankDetails() {
return bankDetails;
}
public void setBankDetails(BankDetailsSimple bankDetails) {
this.bankDetails = bankDetails;
}
public String getCode() {
return code;
}
public void setCode(String code) {
this.code = code;
}
public LetterOfCreditDetails getLcDetails() {
return lcDetails;
}
public void setLcDetails(LetterOfCreditDetails lcDetails) {
this.lcDetails = lcDetails;
}
@Override
public int compareTo(Bank otherBank) {
return getName().compareTo(otherBank.getName());
}
@Override
public int hashCode() {
return new HashCodeBuilder().appendSuper(super.hashCode()).append(code).append(swiftCode).append(branchCode).toHashCode();
}
@Override
public boolean equals(Object obj) {
if (this == obj) {
return true;
}
if (!(obj instanceof Bank)) {
return false;
}
Bank other = (Bank) obj;
return new EqualsBuilder().appendSuper(super.equals(other)).append(code, other.code).append(swiftCode, other.swiftCode)
.append(branchCode, other.branchCode).isEquals();
}
public boolean isLetterOfCreditProvider() {
return letterOfCreditProvider;
}
public void setLetterOfCreditProvider(boolean letterOfCreditProvider) {
this.letterOfCreditProvider = letterOfCreditProvider;
}
public String getCustomsCode() {
return customsCode;
}
public void setCustomsCode(String customsCode) {
this.customsCode = customsCode;
}
}