MultiModalShipment.java
package com.tradecloud.domain.shipment;
import com.tradecloud.common.base.PersistenceBase;
import com.tradecloud.domain.container.ShipmentContainer;
import com.tradecloud.domain.model.shipment.ShippingMode;
import com.tradecloud.domain.place.City;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import org.hibernate.annotations.Fetch;
import org.hibernate.annotations.FetchMode;
import javax.persistence.*;
import java.util.Date;
import java.util.LinkedHashSet;
import java.util.Set;
@Entity
@Getter
@Setter
@NoArgsConstructor
public class MultiModalShipment extends PersistenceBase {
@ManyToOne
private Shipment shipment;
@OneToMany(cascade = {CascadeType.ALL}, orphanRemoval = true, fetch = FetchType.LAZY)
@Fetch(value = FetchMode.SELECT)
@OrderBy("created")
private Set<ShipmentContainer> containers = new LinkedHashSet<ShipmentContainer>();
@Embedded
private Transport transport = new Transport();
@ManyToOne
private City placeOfReceipt;
@ManyToOne
private City placeOfIssue;
@Enumerated(value = EnumType.STRING)
private ShippingMode shippingMode;
/* @Enumerated(EnumType.ORDINAL)
private Incoterm incoterm;*/
private String reference;
private String houseBillReference; //– rail consignment note same as
private String masterBillReference;
private Date houseBillDate;
private Date masterBillDate;
public Transport getTransport() {
if (transport == null)
transport = new Transport();
return transport;
}
public void addContainer(ShipmentContainer container) {
container.setModalShipment(this);
containers.add(container);
}
public void removeContainer(ShipmentContainer container) {
container.setModalShipment(null);
containers.remove(container);
}
}