LetterOfCreditShippingInfo.java

package com.tradecloud.domain.letterofcredit;

import com.tradecloud.common.base.PersistenceBase;
import com.tradecloud.domain.common.Incoterm;
import com.tradecloud.domain.party.ServiceProvider;
import com.tradecloud.domain.place.NamedPlace;
import com.tradecloud.domain.place.PlaceOfDischarge;
import com.tradecloud.domain.place.PlaceOfLoading;
import org.hibernate.annotations.ForeignKey;

import javax.persistence.*;
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.io.Serializable;
import java.util.Date;

/**
 * https://connect.devstream.net/display/Dev/Create+Letter+of+Credit.
 */
@Entity
@Table(name = "letterofcreditshippinginfo")
@Access(AccessType.FIELD)
@XmlAccessorType(XmlAccessType.FIELD)
@XmlRootElement(name = "ShippingInfo")
public class LetterOfCreditShippingInfo extends PersistenceBase implements Serializable {

    @ManyToOne
    @ForeignKey(name = "fk_freightforwarder")
    private ServiceProvider freightForwarder;

    @NotNull(message = "Incoterm is required")
    @ManyToOne(optional = false)
    @ForeignKey(name = "fk_incoterm")
    private Incoterm incoterm;

    @NotNull(message = "Named Place is required")
    @ManyToOne(optional = false)
    @ForeignKey(name = "fk_namedplace")
    private NamedPlace namedPlace;

    @NotNull(message = "Place of Loading is required")
    @ManyToOne(optional = false)
    @ForeignKey(name = "fk_placeofloading")
    private PlaceOfLoading placeOfLoading;

    @NotNull
    @ManyToOne(optional = false)
    @ForeignKey(name = "fk_placeofdischarge")
    private PlaceOfDischarge placeOfDischarge;

    @NotNull
    @Temporal(TemporalType.TIMESTAMP)
    @XmlAttribute
    private Date earliestShipmentDate;

    @NotNull
    @Temporal(TemporalType.TIMESTAMP)
    @XmlAttribute
    private Date latestShipmentDate;

    private boolean allowPartShipment;

    private boolean allowTransShipment;

    public ServiceProvider getFreightForwarder() {
        return freightForwarder;
    }

    public void setFreightForwarder(ServiceProvider freightForwarder) {
        this.freightForwarder = freightForwarder;
    }

    public NamedPlace getNamedPlace() {
        return namedPlace;
    }

    public void setNamedPlace(NamedPlace namedPlace) {
        this.namedPlace = namedPlace;
    }

    public PlaceOfLoading getPlaceOfLoading() {
        return placeOfLoading;
    }

    public void setPlaceOfLoading(PlaceOfLoading placeOfLoading) {
        this.placeOfLoading = placeOfLoading;
    }

    public PlaceOfDischarge getPlaceOfDischarge() {
        return placeOfDischarge;
    }

    public void setPlaceOfDischarge(PlaceOfDischarge placeOfDischarge) {
        this.placeOfDischarge = placeOfDischarge;
    }

    public Incoterm getIncoterm() {
        return incoterm;
    }

    public void setIncoterm(Incoterm incoterm) {
        this.incoterm = incoterm;
    }

    public Date getEarliestShipmentDate() {
        return earliestShipmentDate;
    }

    public void setEarliestShipmentDate(Date earliestShipmentDate) {
        this.earliestShipmentDate = earliestShipmentDate;
    }

    public Date getLatestShipmentDate() {
        return latestShipmentDate;
    }

    public void setLatestShipmentDate(Date latestShipmentDate) {
        this.latestShipmentDate = latestShipmentDate;
    }

    public boolean getAllowPartShipment() {
        return allowPartShipment;
    }

    public void setAllowPartShipment(boolean allowPartShipment) {
        this.allowPartShipment = allowPartShipment;
    }

    public boolean getAllowTransShipment() {
        return allowTransShipment;
    }

    public void setAllowTransShipment(boolean allowTransShipment) {
        this.allowTransShipment = allowTransShipment;
    }
}