PackingListOrderBulkUpload.java

package com.tradecloud.domain.container;

import com.tradecloud.common.base.PersistenceBase;
import org.apache.commons.lang.builder.EqualsBuilder;
import org.apache.commons.lang.builder.HashCodeBuilder;
import org.hibernate.annotations.Fetch;
import org.hibernate.annotations.FetchMode;
import org.hibernate.annotations.ForeignKey;
import org.hibernate.annotations.NaturalId;

import javax.persistence.*;
import java.math.BigDecimal;
import java.util.LinkedHashSet;
import java.util.Set;

@Entity
@Table(name = "packinglistorderbulkupload")
@Access(AccessType.FIELD)
/*@NamedQueries({
    @NamedQuery(name = "packingListOrder.findByIdWithItems", query = "from PackingListOrder plo left join fetch plo.items where plo.id=:id"),
    @NamedQuery(name = "packingListOrder.findOrdersByReference", query = "from PackingListOrder plo where plo.orderReference = :orderReference"),
    @NamedQuery(name = "packingListOrder.findOrdersByPackingListContainer", query = "from PackingListOrder plo " +
                "where packingListContainerBulkUpload.id = :packingListContainerId"),
    @NamedQuery(name = "packingListOrder.findByOrderAndPackingListContainer",
                query = "from PackingListOrder where packingListContainerBulkUpload.id = :packingListContainerId and orderReference = "
                        + "(select orderReference from Order where id = :orderId)") })*/
public class PackingListOrderBulkUpload extends PersistenceBase {

    private static final long serialVersionUID = 1L;

    private BigDecimal noOfCartons;

    private String orderReference;

    private String shippingReference;

    /**
     * The bidirectional link back to the parent {@link PackingListContainer}.
     */
    @NaturalId
    @ManyToOne(optional = false)
    @ForeignKey(name = "fk_packinglistcontainerbulkupload")
    private PackingListContainerBulkUpload packingListContainerBulkUpload;

    @ForeignKey(name = "fk_packinglistorderbulkupload")
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "packingListOrderBulkUpload", orphanRemoval = true, fetch = FetchType.LAZY)
    @Fetch(FetchMode.SUBSELECT)
    @OrderBy("addedToOrderDate")
    private Set<PackingListItemBulkUpload> items = new LinkedHashSet<PackingListItemBulkUpload>();

    public PackingListOrderBulkUpload() {
    }

    public void addItem(PackingListItemBulkUpload item) {
        item.setPackingListOrder(this);
        items.add(item);
    }

    public String getOrderReference() {
        return orderReference;
    }

    public void setOrderReference(String orderReference) {
        this.orderReference = orderReference;
    }

    public PackingListContainerBulkUpload getPackingListContainerBulkUpload() {
        return packingListContainerBulkUpload;
    }

    public void setPackingListContainerBulkUpload(PackingListContainerBulkUpload packingListContainerBulkUpload) {
        this.packingListContainerBulkUpload = packingListContainerBulkUpload;
    }

    public Set<PackingListItemBulkUpload> getItems() {
        return items;
    }

    public void setItems(Set<PackingListItemBulkUpload> items) {
        this.items = items;
    }

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

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

    public Long getKey() {
        return (long) hashCode();
    }

    public String getShippingReference() {
        return shippingReference;
    }

    public void setShippingReference(String shippingReference) {
        this.shippingReference = shippingReference;
    }

    public BigDecimal getNoOfCartons() {
        return noOfCartons;
    }

    public void setNoOfCartons(BigDecimal noOfCartons) {
        this.noOfCartons = noOfCartons;
    }
}