BankReference.java
package com.tradecloud.domain.model.fec;
import org.apache.commons.lang.Validate;
import org.apache.commons.lang.builder.EqualsBuilder;
import org.apache.commons.lang3.builder.HashCodeBuilder;
import javax.persistence.Column;
import javax.persistence.Embeddable;
import java.io.Serializable;
@Embeddable
public class BankReference implements Serializable {
@Column(name = "bank_reference")
private String reference;
// For JPA only
public BankReference() {
}
public BankReference(String reference) {
this.reference = reference;
}
public static BankReference valueOf(String reference) {
Validate.notEmpty(reference, "Reference may not be null or empty");
Validate.isTrue(reference.length() < 80, "String too Long for a Bank Reference");
return new BankReference(reference);
}
public String getReference() {
return reference;
}
@Override
public BankReference clone() {
return BankReference.valueOf(reference);
}
@Override
public boolean equals(Object o) {
if (this == o)
return true;
if (!(o instanceof BankReference))
return false;
BankReference that = (BankReference) o;
return new EqualsBuilder().append(reference, that.getReference()).isEquals();
}
@Override
public int hashCode() {
return new HashCodeBuilder().append(reference).toHashCode();
}
@Override
public String toString() {
return reference;
}
}