LineItemPromotion.java

package com.tradecloud.domain.item;

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

import javax.persistence.*;
import javax.xml.bind.annotation.*;
import java.math.BigDecimal;
import java.util.Date;

/**
 *
 */
@Entity
@Table(name = "lineitempromotion")
@XmlAccessorType(XmlAccessType.FIELD)
@XmlRootElement(name = "Promotion")
public class LineItemPromotion extends PersistenceBase {

    @XmlAttribute
    @Column(name = "promotionenabled")
    protected boolean enabled;

    @XmlAttribute
    @Column(name = "promotionquantity")
    protected BigDecimal quantity;

    @XmlAttribute
    @Column(name = "promotionname")
    protected String name;

    @XmlAttribute
    @Column(name = "promotionfromdate")
    @Temporal(TemporalType.TIMESTAMP)
    protected Date fromDate;

    @XmlAttribute
    @Column(name = "promotiontodate")
    @Temporal(TemporalType.TIMESTAMP)
    protected Date toDate;

    @OneToOne(fetch = FetchType.LAZY)
    @XmlIDREF
    protected LineItem lineItem;

    public boolean isEnabled() {
        return enabled;
    }

    public void setEnabled(boolean enabled) {
        this.enabled = enabled;
    }

    public BigDecimal getQuantity() {
        return quantity;
    }

    public void setQuantity(BigDecimal quantity) {
        this.quantity = quantity;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Date getFromDate() {
        return fromDate;
    }

    public void setFromDate(Date fromDate) {
        this.fromDate = fromDate;
    }

    public Date getToDate() {
        return toDate;
    }

    public void setToDate(Date toDate) {
        this.toDate = toDate;
    }

    public LineItem getLineItem() {
        return lineItem;
    }

    public void setLineItem(LineItem lineItem) {
        this.lineItem = lineItem;
    }

    @Override
    public LineItemPromotion clone() {
        LineItemPromotion clone = (LineItemPromotion) super.clone();
        clone.setEnabled(enabled);
        clone.setFromDate(fromDate);
        clone.setToDate(toDate);
        clone.setName(name);
        clone.setQuantity(quantity);
        clone.setId(null);
        return clone;
    }

    @Override
    public int hashCode() {
        return new HashCodeBuilder().append(enabled).append(fromDate).append(toDate).append(name).append(quantity).append(lineItem).toHashCode();
    }

    @Override
    public boolean equals(Object obj) {
        if (obj == null) {
            return false;
        }
        if (this == obj) {
            return true;
        }
        LineItemPromotion other = (LineItemPromotion) obj;
        return new EqualsBuilder().append(enabled, other.enabled).append(fromDate, other.fromDate).append(toDate, other.toDate)
                .append(name, other.name).append(quantity, other.quantity).append(lineItem, other.lineItem)
                .isEquals();
    }

    @Override
    public String toString() {
        return new StringBuilder().append(enabled).append(" ").append(fromDate).append(" ").append(toDate).append(" ").append(name).append(" ")
                .append(quantity).append(" ").append(lineItem).toString();
    }
}