InternalReference.java

package com.tradecloud.domain.model.fec;

import org.apache.commons.lang.Validate;

import javax.persistence.Column;
import javax.persistence.Embeddable;
import java.io.Serializable;

@Embeddable
public class InternalReference implements Serializable {

    @Column(name = "internal_reference")
    private String reference;

    // For JPA only
    public InternalReference() {

    }

    public static InternalReference valueOf(String reference) {
        // Validate.notNull(reference, "Reference may not be null"); TTM-1259
        Validate.isTrue(reference.length() < 256, " String too Long for an Internal Reference");
        return new InternalReference(reference);
    }

    private InternalReference(String reference) {
        this.reference = reference;
    }

    public String getReference() {
        return reference;
    }

    @Override
    public InternalReference clone() {
        return InternalReference.valueOf(reference);
    }

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

    @Override
    public int hashCode() {
        int hash = 7;
        hash = 29 * hash + (this.reference != null ? this.reference.hashCode() : 0);
        return hash;
    }

}