LogisticsEvent.java

package com.tradecloud.domain.model.events;

import org.hibernate.annotations.AccessType;

import javax.persistence.Entity;
import javax.persistence.NamedQuery;
import javax.persistence.Table;
import java.util.Date;

/**
 * Encapsulation of logistics events. TODO: remove local LogisticsEventType
 */
@Entity
@Table(name = "logisticsevent")
@AccessType("field")
@NamedQuery(query = " select ce from LogisticsEvent ce where ce.consumerTag = :consumerTag", name = "findAllLogisticEventsForUser")
public class LogisticsEvent extends Event {

    private static final long serialVersionUID = 1L;

    /**
     * The event types on an logistics event..
     */
    public static enum LogisticsEventType {
        REJECT_UNSIGN_OFF, CONFIRM_UNSIGN_OFF, CONSIGNMENT_WITH_ORDERS_AWAITING_LSP_SIGNOFF_CONFIRMATION, CONSIGNMENT_UNSIGNOFF_REQUEST,
        SHIPMENT_UPDATE, SHIPMENT_CREATE, CONFIRMED, CONSIGNMENT_UPDATE, ORDER_BOOKED, ORDER_FREIGHT_RECEIVED, ORDER_REJECTED, ORDER_UNSIGNOFF,
        FREIGHT_DELIVERED, EXPORT_SHIPMENT_IN_TRANSIT, BOOKING_CANCELLED, FREIGHT_RECEIVED_CANCELLED, SUPPLIER_BOOKING_REQUESTED
    }

    /**
     * only used by hibernate.
     *
     * @param confirmed
     * @param string2
     * @param date
     * @param string
     * @param long1
     */
    protected LogisticsEvent() {

    }

    public LogisticsEvent(String reference, Date timestamp, String organisationalUnit,
                          String eventType, String consumerTag) {
        super(reference, timestamp, organisationalUnit, eventType, consumerTag);
    }

    /**
     * Initialising constructor.
     *
     * @param reference          {@link Event#getId()}
     * @param reference          {@link Event#getReference()}
     * @param timestamp          {@link Event#getTimestamp()}
     * @param organisationalUnit {@link Event#getOrganisationalUnit()}
     * @param eventType          {@link Event#getEventType()}
     */
    public LogisticsEvent(final Long id, final String reference, final Date timestamp, final String organisationalUnit,
                          final LogisticsEventType eventType, final String consumerTag) {
        super(id, reference, timestamp, organisationalUnit, eventType.name(), consumerTag);
    }

    @Override
    public Class getInstanceClass() {
        return LogisticsEvent.class;
    }

}