ShipmentStateChangeAction.java

package com.tradecloud.domain.model.shipment;

/**
 * List of user state change request actions that are allowed through the state service for Shipment.
 *
 * @author ronan
 */
public enum ShipmentStateChangeAction {
    SHIPMENT_IN_DEPARTED, VERIFY, VERIFY_REVERSAL, SIGNOFF, UNSIGNOFF, COMPLETE, COMPLETE_UI, REOPEN,
    GRN_PARTIALLY_RECEIVE, GRN_FULL_RECEIVE, CARGO_ON_BOARD_VESSEL,
    SHIPMENT_IN_TRANSIT, PENDING_CUSTOMS_CLEARANCE(4), CUSTOMS_SEIZED(1), CUSTOMS_STOPPED(2),
    CUSTOMS_QUERY(3), CUSTOMS_RELEASED(7), ARRIVED_AT_TRANSSHIPMENT_PORT,
    DEPARTED_TRANSSHIPMENT_PORT, VESSEL_ARRIVED_AT_POD, VESSEL_BERTHED, CARGO_ARRIVED, CARGO_DISCHARGED, CARGO_DELIVERED,
    CUSTOMS_CONDITIONAL_RELEASE(5), CUSTOMS_DECLARATION_OUTSTANDING(6), AWAITING_TARIFFING, PREVIOUS_STATE,
    CUSTOMS_OGA_STOPPED, CUSTOMS_OGA_QUERY, CUSTOMS_OGA_RELEASE,
    CUSTOMS_CANCELED, CUSTOMS_EMBARGO_RELEASE;

    //99 not used, ignore
    private int sarsPriority = 99;

    ShipmentStateChangeAction() {
    }

    ShipmentStateChangeAction(int sarsPriority) {
        this.sarsPriority = sarsPriority;
    }

    public int getSarsPriority() {
        return sarsPriority;
    }

    public static ShipmentStateChangeAction fromValue(int v) {
        for (ShipmentStateChangeAction c : ShipmentStateChangeAction.values()) {
            if (c.getSarsPriority() == v && c.getSarsPriority() != 99) {
                return c;
            }
        }
        throw new IllegalArgumentException("" + v);
    }
}