ActionLogMessage.java 3.29 KB
package fi.codecrew.moya.model;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.EnumType;
import javax.persistence.Enumerated;
import javax.persistence.JoinColumn;
import javax.persistence.JoinTable;
import javax.persistence.ManyToMany;
import javax.persistence.OneToMany;
import javax.persistence.OrderBy;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;

import org.eclipse.persistence.annotations.PrivateOwned;

import fi.codecrew.moya.enums.ActionLogMessageState;

@Entity
@Table(name = "actionlog_messages")
public class ActionLogMessage extends GenericEntity {
    private static final long serialVersionUID = -2902547412412000488L;

    @Column(name = "time", nullable = false)
    @Temporal(TemporalType.TIMESTAMP)
    private Date time = new Date();
    
    @JoinColumn(name = "user_id")
    private EventUser user;

    @JoinColumn(name = "lan_event_id")
    private LanEvent lanEvent;

    @Column(name = "message", nullable = false)
    private String message;

    @OneToMany(mappedBy = "actionLogMessage", cascade = CascadeType.ALL)
    @PrivateOwned
    @OrderBy("id")
    private List<ActionLogMessageResponse> actionLogMessageResponses = new ArrayList<ActionLogMessageResponse>();

    @ManyToMany()
    @JoinTable(
            name = "actionlog_message_tag_sets",
            joinColumns = {
                    @JoinColumn(name = "actionlog_message_id", referencedColumnName = ActionLogMessage.ID_COLUMN)
            },
            inverseJoinColumns = { 
                    @JoinColumn(name = "actionlog_message_tag_id", referencedColumnName = ActionLogMessageTag.ID_COLUMN)
            }
    )
    private List<ActionLogMessageTag> tags = new ArrayList<ActionLogMessageTag>();
    
    @Column(name = "state", nullable = true)
    @Enumerated(EnumType.STRING)
    private ActionLogMessageState state;

    public LanEvent getLanEvent() {
        return lanEvent;
    }

    public void setLanEvent(LanEvent lanEvent) {
        this.lanEvent = lanEvent;
    }

    public Date getTime() {
        return time;
    }

    public void setTime(Date time) {
        this.time = time;
    }

    public EventUser getUser() {
        return user;
    }

    public void setUser(EventUser user) {
        this.user = user;
    }

    public String getMessage() {
        return message;
    }

    public void setMessage(String message) {
        this.message = message;
    }

    public ActionLogMessageState getState() {
        return state;
    }

    public void setState(ActionLogMessageState state) {
        this.state = state;
    }

    public List<ActionLogMessageResponse> getActionLogMessageResponses() {
        return actionLogMessageResponses;
    }

    public void setActionLogMessageResponses(List<ActionLogMessageResponse> actionLogMessageResponses) {
        this.actionLogMessageResponses = actionLogMessageResponses;
    }

    public List<ActionLogMessageTag> getTags() {
        return tags;
    }
    
    public void setTags(List<ActionLogMessageTag> tags) {
        this.tags = tags;
    }
}