ContainerRate.java

package com.tradecloud.domain.rate;

import com.tradecloud.common.base.PersistenceBase;
import com.tradecloud.domain.common.Currency;
import com.tradecloud.domain.container.ContainerType;
import com.tradecloud.domain.costing.CostGroup;
import com.tradecloud.domain.costing.CostLineTemplate;
import com.tradecloud.domain.model.shipment.ShippingMode;
import com.tradecloud.domain.party.ServiceProvider;
import com.tradecloud.domain.place.Country;
import com.tradecloud.domain.place.FinalDestination;
import com.tradecloud.domain.place.PlaceOfDischarge;
import com.tradecloud.domain.place.PlaceOfLoading;
import lombok.Getter;
import lombok.Setter;
import org.hibernate.annotations.ForeignKey;

import javax.persistence.*;
import javax.validation.constraints.Digits;
import javax.validation.constraints.NotNull;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlRootElement;
import java.math.BigDecimal;
import java.util.Date;

/**
 * Container Rate abstract super class.
 * There are 3 types of container rates 1) Freight 2) Clearing 3) Forwarding Table "public.containerrate" Column |
 * Type | Modifiers -------------------+-----------------------------+----------- id | integer | not null clientid | integer | not null shippingmode |
 * character varying(255) | containertypeid | integer | not null sourceid | integer | sourcetype | integer | not null destinationid | integer |
 * destinationtype | integer | not null serviceproviderid | integer | leadtime | integer | costtype | smallint | not null unit | character
 * varying(255) | not null rate | double precision | not null fromdate | timestamp without time zone | not null todate | timestamp without time zone |
 */
@Entity
@Table(name = "containerrate")
@Access(AccessType.FIELD)
@XmlAccessorType(XmlAccessType.FIELD)
@XmlRootElement(name = "ContainerRate")
@Getter
@Setter
public class ContainerRate extends PersistenceBase {

    private static final long serialVersionUID = 1L;

    @NotNull
    @Enumerated(EnumType.STRING)
    private ShippingMode shippingMode;

    @Enumerated(EnumType.STRING)
    private ShippingMode multiModalShippingMode;

    @ManyToOne
    @ForeignKey(name = "fk_costlinetemplate")
    @NotNull
    private CostLineTemplate costLineTemplate;

    @Enumerated(EnumType.STRING)
    @NotNull
    private CostGroup costGroup;

    @NotNull
    @ManyToOne
    private ContainerType containerType;

    @NotNull
    @ManyToOne
    private Currency currency;
    @NotNull
    @Digits(integer = 8, fraction = 2)
    private BigDecimal rate;
    @NotNull
    private Date fromDate;
    @NotNull
    private Date toDate;

    @ManyToOne
    ServiceProvider clearingAgent;

    @ManyToOne
    PlaceOfDischarge placeOfDischarge;

    @ManyToOne
    FinalDestination finalDestination;

    @ManyToOne
    Country origin;

    @ManyToOne
    ServiceProvider forwardingAgent;

    @ManyToOne
    PlaceOfLoading placeOfLoading;

    @ManyToOne
    private ServiceProvider shippingLine;

    private Integer leadTime;

    public ShippingMode getShippingMode() {
        return shippingMode;
    }

    public void setShippingMode(ShippingMode shippingMode) {
        this.shippingMode = shippingMode;
    }

    public CostLineTemplate getCostLineTemplate() {
        return costLineTemplate;
    }

    public void setCostLineTemplate(CostLineTemplate costLineTemplate) {
        this.costLineTemplate = costLineTemplate;
    }

    public ContainerType getContainerType() {
        return containerType;
    }

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

    public BigDecimal getRate() {
        return rate;
    }

    public void setRate(BigDecimal rate) {
        this.rate = rate;
    }

    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 ServiceProvider getClearingAgent() {
        return clearingAgent;
    }

    public void setClearingAgent(ServiceProvider clearingAgent) {
        this.clearingAgent = clearingAgent;
    }

    public Country getOrigin() {
        return origin;
    }

    public void setOrigin(Country origin) {
        this.origin = origin;
    }

    public ServiceProvider getForwardingAgent() {
        return forwardingAgent;
    }

    public void setForwardingAgent(ServiceProvider forwardingAgent) {
        this.forwardingAgent = forwardingAgent;
    }

    public PlaceOfDischarge getPlaceOfDischarge() {
        return placeOfDischarge;
    }

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

    public FinalDestination getFinalDestination() {
        return finalDestination;
    }

    public void setFinalDestination(FinalDestination finalDestination) {
        this.finalDestination = finalDestination;
    }

    public PlaceOfLoading getPlaceOfLoading() {
        return placeOfLoading;
    }

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

    public ServiceProvider getShippingLine() {
        return shippingLine;
    }

    public void setShippingLine(ServiceProvider shippingLine) {
        this.shippingLine = shippingLine;
    }

    public Integer getLeadTime() {
        return leadTime;
    }

    public void setLeadTime(Integer leadTime) {
        this.leadTime = leadTime;
    }

    public Currency getCurrency() {
        return currency;
    }

    public void setCurrency(Currency currency) {
        this.currency = currency;
    }

    public CostGroup getCostGroup() {
        return costGroup;
    }

    public void setCostGroup(CostGroup costGroup) {
        this.costGroup = costGroup;
    }

}