CostingEvent.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;

/**
 * Events around costing.
 */
@Entity
@Table(name = "costingevent")
@AccessType("field")
@NamedQuery(query = "select ce from CostingEvent ce where ce.consumerTag = :consumerTag", name = "findAllCostingEventsForUser")
public class CostingEvent extends Event {

    /**
     * Default serial version uid.
     */
    private static final long serialVersionUID = 1L;

    /**
     * Costing event types.
     */
    public static enum CostingEventType {
        FINALIZED, UNFINALIZED, ACTUAL_COSTING_SIGN_OFF, ACTUAL_COSTING_UNSIGN_OFF, CLC_COSTING_SIGN_OFF,
        ORDER_ACTUAL_COSTING_RECEIPT, ORDER_ACTUAL_COSTING_RECEIPT_UNSIGNOFF;
    }

    /**
     * Only used by hibernate.
     */
    protected CostingEvent() {
    }

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

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

    public CostingEvent(final Long id, final String reference, final Date timestamp, String organisationalUnit, final CostingEventType eventType,
                        final String consumerTag) {
        super(id, reference, timestamp, organisationalUnit, eventType.name(), consumerTag);
    }

    public boolean isEventType(CostingEventType costingEventType) {
        return CostingEventType.valueOf(getEventType()).equals(costingEventType);
    }

    public boolean isActualCostingSignOff() {
        return CostingEventType.valueOf(getEventType()).equals(CostingEventType.ACTUAL_COSTING_SIGN_OFF);
    }

    public boolean isActualCostingUnSignOff() {
        return CostingEventType.valueOf(getEventType()).equals(CostingEventType.ACTUAL_COSTING_UNSIGN_OFF);
    }
}