ActivityLog.java

package com.tradecloud.domain.event;

import com.tradecloud.domain.party.ServiceProvider;

import javax.persistence.*;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;

@Entity
@Table(name = "activitylogs")
@Access(AccessType.FIELD)
@XmlAccessorType(XmlAccessType.FIELD)
public class ActivityLog extends Event implements EnumTypedEvent<ActivityLogType> {

    /**
     * UID.
     */
    private static final long serialVersionUID = 1L;

    /**
     * Event type.
     */
    @Enumerated(EnumType.STRING)
    private ActivityLogType eventType;

    private String orderReference;
    private String orderNumber;
    private String consignmentNumber;
    @OneToOne(cascade = CascadeType.ALL, fetch = FetchType.LAZY)
    private ActivitySnapshot snapshot;

    public ActivityLog() {

    }

    public ActivityLog(ActivityLogType eventTypeParam, String username, String orderReference, String orderNumber, String consignmentNumber) {
        super(username);
        this.orderReference = orderReference;
        this.orderNumber = orderNumber;
        this.consignmentNumber = consignmentNumber;
        this.eventType = eventTypeParam;
    }

    public ActivityLog(String username, ActivityLogType eventType, ServiceProvider freightForwarder) {
        super(username);
        this.eventType = eventType;
    }

    @Override
    public ActivityLogType getEventType() {
        return eventType;
    }

    @Override
    public void setEventType(ActivityLogType eventTypeParam) {
        this.eventType = eventTypeParam;
    }

    public String getOrderReference() {
        return orderReference;
    }

    public void setOrderReference(String orderReference) {
        this.orderReference = orderReference;
    }

    public ActivitySnapshot getSnapshot() {
        return snapshot;
    }

    public void setSnapshot(ActivitySnapshot snapshot) {
        this.snapshot = snapshot;
    }

    @Override
    public int hashCode() {
        final int prime = 31;
        int result = super.hashCode();
        result = prime * result + ((eventType == null) ? 0 : eventType.hashCode());
        return result;
    }

    @Override
    public boolean equals(Object obj) {
        if (this == obj)
            return true;
        if (!super.equals(obj))
            return false;
        if (getClass() != obj.getClass())
            return false;
        ActivityLog other = (ActivityLog) obj;
        return eventType == other.eventType;
    }

    public String getOrderNumber() {
        return orderNumber;
    }

    public void setOrderNumber(String orderNumber) {
        this.orderNumber = orderNumber;
    }

    public String getConsignmentNumber() {
        return consignmentNumber;
    }

    public void setConsignmentNumber(String consignmentNumber) {
        this.consignmentNumber = consignmentNumber;
    }
}