PackingListContainerBulkUpload.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 javax.persistence.*;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;

@Entity
@Table(name = "PackingListContainerBulkUpload")
@Access(AccessType.FIELD)
/*@NamedQueries({ @NamedQuery(name = "packingListContainer.findByPackingListAndReference",
        query = "from PackingListContainer plc where plc.packingList = :packingList and plc.reference = :reference order by created desc") })*/
public class PackingListContainerBulkUpload extends PersistenceBase {

    private static final long serialVersionUID = 1L;

    private BigDecimal noOfCartons;

    private Long packingList_id;

    private String reference;

    private String containerType;

    @ForeignKey(name = "fk_packinglistcontainerbulkupload")
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "packingListContainerBulkUpload", orphanRemoval = true, fetch = FetchType.LAZY)
    @Fetch(FetchMode.SUBSELECT)
    @OrderBy("id, created")
    private List<PackingListOrderBulkUpload> orders = new ArrayList<PackingListOrderBulkUpload>();

    @Transient
    private Map<Long, PackingListTotals> packingListTotals;

    @Transient
    private Long shipmentId;

    public String getReference() {
        return reference;
    }

    public void setReference(String reference) {
        this.reference = reference;
    }

    public List<PackingListOrderBulkUpload> getOrders() {
        return orders;
    }

    public void setOrders(List<PackingListOrderBulkUpload> orders) {
        this.orders = orders;
    }

    public void addOrder(PackingListOrderBulkUpload order) {
        //order.setPackingListContainerBulkUpload(this);
        orders.add(order);
    }

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

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

    public void setPackingListTotals(Map<Long, PackingListTotals> packingListTotals) {
        this.packingListTotals = packingListTotals;
    }

    public Map<Long, PackingListTotals> getPackingListTotals() {
        return packingListTotals;
    }

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

    public boolean isPacked() {
        if (orders != null) {
            return !orders.isEmpty();
        }

        return false;
    }

    public Long getShipmentId() {
        return shipmentId;
    }

    public void setShipmentId(Long shipmentId) {
        this.shipmentId = shipmentId;
    }

    public BigDecimal getNoOfCartons() {
        return noOfCartons;
    }

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

    public Long getPackingList_id() {
        return packingList_id;
    }

    public void setPackingList_id(Long packingList_id) {
        this.packingList_id = packingList_id;
    }

    public String getContainerType() {
        return containerType;
    }

    public void setContainerType(String containerType) {
        this.containerType = containerType;
    }
}