ReferenceValueDto.java

package com.tradecloud.dto.base;

import lombok.Getter;
import lombok.Setter;
import org.apache.commons.lang.builder.EqualsBuilder;
import org.apache.commons.lang.builder.HashCodeBuilder;

import java.io.Serializable;
import java.math.BigDecimal;

/**
 * This data transfer object is intended for use as a single result from a database (JPA, Hibernate) query as an alternative to loading a complete
 * entity into memory and into the persistence context (session).
 *
 * It should only be used by entities that have both a Reference and a Value.
 */
@Getter
@Setter
public class ReferenceValueDto implements Serializable {

    private static final long serialVersionUID = 1L;

    private String parentReference;
    private String reference;
    private BigDecimal value;
    private BigDecimal invoiceValue;
    private BigDecimal packingListValue;
    private String supplierItemReference;
    private String originalItemId;
    private String organisationalUnit;
    private Integer lineNumber;

    public ReferenceValueDto() {
    }

    public ReferenceValueDto(String reference, BigDecimal value) {
        this(reference, value, "parentRef");
    }

    public ReferenceValueDto(String reference, BigDecimal value, String parentReference) {
        this.reference = reference;
        this.value = value;
        this.parentReference = parentReference;
    }

    @Override
    public boolean equals(Object obj) {
        if (obj == null) {
            return false;
        }
        if (obj == this) {
            return true;
        }
        if (!(obj instanceof ReferenceValueDto)) {
            return false;
        }
        ReferenceValueDto other = (ReferenceValueDto) obj;
        return new EqualsBuilder().append(parentReference, other.getParentReference())
                .append(reference, other.reference).isEquals();
    }

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

}