Transport.java

package com.tradecloud.domain.shipment;

import com.tradecloud.domain.party.Employee;
import com.tradecloud.domain.party.ServiceProvider;
import com.tradecloud.domain.place.PlaceOfDischarge;
import com.tradecloud.domain.place.PlaceOfLoading;
import lombok.Getter;
import lombok.Setter;

import javax.persistence.*;
import java.util.Date;

@Embeddable
@Access(AccessType.FIELD)
@Getter
@Setter
public class Transport {
    //SEA
    private String voyageNumber;
    private String vesselName;
    private String vesselCallSign;
    private Date berthingDateAndTime;
    private String vesselAgent;

    //COMMON
    @ManyToOne
    private ServiceProvider masterCarrier;
    @ManyToOne
    private ServiceProvider carrier;

    @ManyToOne
    private PlaceOfLoading placeOfLoading;
    @ManyToOne
    private PlaceOfDischarge placeOfDischarge;

    private Date estimateDateOfDeparture;
    private Date actualDateOfDeparture;
    private Date estimateArrivalDateAtPOD;
    private Date actualArrivalDateAtPOD;
    private Date shippedOnBoardDate;
    private Date telexReleaseDate;

    //AIR
    private String flightNumber;
    private String airlineName;

    //RAIL

    //COURIER

    //ROAD
    private String vehicleRegistration;
    @OneToOne
    private Employee driver;
    @OneToOne
    private Employee coDriver;
    private String trailerRegistration1;
    private String trailerRegistration2;
    @ManyToOne
    private ServiceProvider transporter;
}