AuditEvent.java

package com.tradecloud.domain.model.audit;

import com.tradecloud.common.base.PersistenceBase;
import com.tradecloud.domain.helper.XMLHelper;
import org.hibernate.annotations.Type;
import org.joda.time.LocalDateTime;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Table;

@Entity
@Table(name = "audit_event")
public class AuditEvent extends PersistenceBase {

    /**
     * DEAL.
     */
    public static final String DEAL = "DEAL";
    /**
     * FEC.
     */
    public static final String FEC = "FEC";
    /**
     * FEC Request.
     */
    public static final String FECREQUEST = "FECREQUEST";

    @Column(name = "audit_reference")
    private String auditReference;

    private String event;

    @Column(name = "name")
    private String user;

    @Column(name = "date_time")
    @Type(type = "org.jadira.usertype.dateandtime.joda.PersistentLocalDateTime")
    private LocalDateTime dateTime;

    private String type;

    public AuditEvent(String auditReference, String event, String user, LocalDateTime dateTime, String type) {
        this.setAuditReference(auditReference);
        this.event = event;
        this.user = user;
        this.dateTime = dateTime;
        this.type = type;
    }

    public String getEvent() {
        return event;
    }

    public String getUser() {
        return user;
    }

    public LocalDateTime getDateTime() {
        return dateTime;
    }

    @Override
    public int hashCode() {
        final int prime = 31;
        int result = 1;
        result = prime * result + ((auditReference == null) ? 0 : auditReference.hashCode());
        result = prime * result + ((dateTime == null) ? 0 : dateTime.hashCode());
        result = prime * result + ((event == null) ? 0 : event.hashCode());
        result = prime * result + ((type == null) ? 0 : type.hashCode());
        result = prime * result + ((user == null) ? 0 : user.hashCode());
        return result;
    }

    @Override
    public boolean equals(Object obj) {
        if (this == obj)
            return true;
        if (obj == null)
            return false;
        if (getClass() != obj.getClass())
            return false;
        AuditEvent other = (AuditEvent) obj;
        if (auditReference == null) {
            if (other.auditReference != null)
                return false;
        } else if (!auditReference.equals(other.auditReference))
            return false;
        if (dateTime == null) {
            if (other.dateTime != null)
                return false;
        } else if (!dateTime.equals(other.dateTime))
            return false;
        if (event == null) {
            if (other.event != null)
                return false;
        } else if (!event.equals(other.event))
            return false;
        if (type != other.type)
            return false;
        if (user == null) {
            if (other.user != null)
                return false;
        } else if (!user.equals(other.user))
            return false;
        return true;
    }

    public String getStateAsXML() {
        StringBuilder builder = new StringBuilder();
        builder.append("<auditEvent>");
        builder.append("<auditReference>").append((getAuditReference() == null) ? "" : XMLHelper.encodeToXMLString(getAuditReference()))
                .append("</auditReference>");
        builder.append("<event>").append((event == null) ? "" : XMLHelper.encodeToXMLString(event)).append("</event>");
        builder.append("<user>").append((user == null) ? "" : XMLHelper.encodeToXMLString(user)).append("</user>");
        builder.append("<dateTime>").append(XMLHelper.getFullDateTimeXML(dateTime)).append("</dateTime>");

        builder.append("</auditEvent>");

        return builder.toString();
    }

    /**
     * for hibernate use.
     */
    public AuditEvent() {
    }

    public String getAuditReference() {
        return auditReference;
    }

    public void setAuditReference(String auditReference) {
        this.auditReference = auditReference;
    }
}