AuditEntry.java
package com.tradecloud.domain.autoemail;
import com.tradecloud.common.base.PersistenceBase;
import com.tradecloud.domain.event.AuditEntryEvent;
import com.tradecloud.domain.event.Event;
import com.tradecloud.domain.helper.ReportFormat;
import com.tradecloud.domain.party.Employee;
import com.tradecloud.domain.state.Stateful;
import org.hibernate.annotations.Fetch;
import org.hibernate.annotations.FetchMode;
import org.hibernate.annotations.ForeignKey;
import javax.persistence.*;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlRootElement;
import java.util.ArrayList;
import java.util.List;
@Access(AccessType.FIELD)
@XmlAccessorType(XmlAccessType.FIELD)
@XmlRootElement(name = "Group")
@Entity
@Table(name = "autoemailauditentry")
public class AuditEntry extends PersistenceBase implements Stateful<AuditEntryState, AuditEntryEvent> {
private static final long serialVersionUID = 1L;
private String summary;
private String description;
@Enumerated(value = EnumType.STRING)
private EmailEventType emailTaskEventType;
private Long sourceEntityID;
@Enumerated(value = EnumType.STRING)
private Report report;
@Enumerated(value = EnumType.STRING)
private ReportFormat reportFormat;
private boolean perBuyer;
@ManyToOne
@ForeignKey(name = "fk_buyer")
private Employee buyer;
private boolean includeEventTriggeringUser;
private String emailFrom;
private String emailTo;
private String emailSubject;
private String emailBody;
@ManyToOne(fetch = FetchType.EAGER)
private Task task;
@Enumerated(value = EnumType.STRING)
private AuditEntryState state = AuditEntryState.PROCESSING;
@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.EAGER)
@Fetch(value = FetchMode.SUBSELECT)
@OrderBy("createDateTime")
private List<AuditEntryEvent> events = new ArrayList<AuditEntryEvent>();
public AuditEntry(Task task, Employee buyer) {
this.task = task;
this.emailTaskEventType = task.getEmailTaskEventType();
this.report = task.getReport();
this.reportFormat = task.getReportFormat();
this.perBuyer = task.isPerBuyer();
this.includeEventTriggeringUser = task.isIncludeEventTriggeringUser();
this.buyer = buyer;
}
protected AuditEntry() {
}
public String getSummary() {
return summary;
}
public void setSummary(String summary) {
this.summary = summary;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
public EmailEventType getEmailTaskEventType() {
return emailTaskEventType;
}
public EmailEventType getEventType() {
return emailTaskEventType;
}
public void setEmailTaskEventType(EmailEventType emailTaskEventType) {
this.emailTaskEventType = emailTaskEventType;
}
public Report getReport() {
return report;
}
public void setReport(Report report) {
this.report = report;
}
public ReportFormat getReportFormat() {
return reportFormat;
}
public void setReportFormat(ReportFormat reportFormat) {
this.reportFormat = reportFormat;
}
public boolean isPerBuyer() {
return perBuyer;
}
public void setPerBuyer(boolean perBuyer) {
this.perBuyer = perBuyer;
}
public String getEmailFrom() {
return emailFrom;
}
public void setEmailFrom(String emailFrom) {
this.emailFrom = emailFrom;
}
public String getEmailTo() {
return emailTo;
}
public void setEmailTo(String emailTo) {
this.emailTo = emailTo;
}
public String getEmailSubject() {
return emailSubject;
}
public void setEmailSubject(String emailSubject) {
this.emailSubject = emailSubject;
}
public String getEmailBody() {
return emailBody;
}
public void setEmailBody(String emailBody) {
this.emailBody = emailBody;
}
public Task getTask() {
return task;
}
public void setTask(Task task) {
this.task = task;
}
public boolean isIncludeEventTriggeringUser() {
return includeEventTriggeringUser;
}
public void setIncludeEventTriggeringUser(boolean includeEventTriggeringUser) {
this.includeEventTriggeringUser = includeEventTriggeringUser;
}
public AuditEntryState getState() {
return state;
}
@Override
public void setState(AuditEntryState state) {
this.state = state;
}
@Override
public AuditEntryEvent getLastEvent() {
return Event.getLastEvent(events);
}
@Override
public List<AuditEntryEvent> getEvents() {
return events;
}
@Override
public boolean inNonEditableState() {
return false;
}
public Long getSourceEntityID() {
return sourceEntityID;
}
public void setSourceEntityID(Long sourceEntityID) {
this.sourceEntityID = sourceEntityID;
}
public Employee getBuyer() {
return buyer;
}
public void setBuyer(Employee buyer) {
this.buyer = buyer;
}
}