ToleranceRange.java

package com.tradecloud.domain.costing;

import com.tradecloud.common.base.PersistenceBase;
import org.apache.commons.lang.builder.EqualsBuilder;
import org.apache.commons.lang.builder.HashCodeBuilder;

import javax.persistence.Access;
import javax.persistence.AccessType;
import javax.persistence.MappedSuperclass;
import javax.validation.constraints.NotNull;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlRootElement;
import java.math.BigDecimal;

/**
 * Abstract entity that holds an upper and lower tolerance values.
 * Subclasses will usually add a specific field (or fields) to state what these tolerances apply to.
 */
@MappedSuperclass
@Access(AccessType.FIELD)
@XmlAccessorType(XmlAccessType.FIELD)
@XmlRootElement(name = "CostGroupTolerance")
public abstract class ToleranceRange extends PersistenceBase {

    private static final long serialVersionUID = 1L;

    @XmlAttribute
    @NotNull
    private BigDecimal lowerTolerance;

    @XmlAttribute
    @NotNull
    private BigDecimal upperTolerance;

    public BigDecimal getLowerTolerance() {
        return lowerTolerance;
    }

    public void setLowerTolerance(BigDecimal lowerTolerance) {
        this.lowerTolerance = lowerTolerance;
    }

    public BigDecimal getUpperTolerance() {
        return upperTolerance;
    }

    public void setUpperTolerance(BigDecimal upperTolerance) {
        this.upperTolerance = upperTolerance;
    }

    @Override
    public int hashCode() {
        return new HashCodeBuilder().append(lowerTolerance).append(upperTolerance).toHashCode();
    }

    @Override
    public boolean equals(Object obj) {
        if (this == obj) {
            return true;
        }
        if (!(obj instanceof ToleranceRange)) {
            return false;
        }
        ToleranceRange other = (ToleranceRange) obj;
        return new EqualsBuilder().append(lowerTolerance, other.lowerTolerance).append(upperTolerance, other.upperTolerance).isEquals();
    }

}