Task.java
package com.tradecloud.domain.autoemail;
import com.tradecloud.common.base.PersistenceBase;
import com.tradecloud.domain.common.DataPeriodType;
import com.tradecloud.domain.common.DurationType;
import com.tradecloud.domain.costing.clean.CostingSummary;
import com.tradecloud.domain.dms.DocumentType;
import com.tradecloud.domain.export.ExportParty;
import com.tradecloud.domain.helper.ReportFormat;
import com.tradecloud.domain.model.organisationalunit.OrganisationalUnit;
import com.tradecloud.domain.party.ServiceProvider;
import com.tradecloud.domain.party.ServiceProviderType;
import org.hibernate.annotations.ForeignKey;
import javax.persistence.*;
import javax.validation.constraints.NotNull;
import javax.xml.bind.annotation.*;
import java.io.File;
import java.util.*;
@Access(AccessType.FIELD)
@XmlAccessorType(XmlAccessType.FIELD)
@XmlRootElement(name = "Task")
@Entity
@Table(name = "autoemailtask")
public class Task extends PersistenceBase implements Comparable<Task> {
private static final long serialVersionUID = 1L;
@NotNull(message = "Name is required")
private String name;
@NotNull(message = "Event type is required")
@Enumerated(value = EnumType.STRING)
private EmailEventType emailTaskEventType;
private int intervalNumber = 1;
@Enumerated(value = EnumType.STRING)
private DurationType intervalUnit = DurationType.HOURS;
@Enumerated(value = EnumType.STRING)
private Report report;
@Enumerated(value = EnumType.STRING)
private ReportFormat reportFormat;
@ElementCollection
@CollectionTable(name = "autoemailtask_add_reports", joinColumns = @JoinColumn(name = "autoemailtask_id"))
@Column(name = "additionalReportFormat")
@Enumerated(EnumType.STRING)
private List<ReportFormat> additionalReportFormats=new ArrayList<>();
private boolean perBuyer;
private boolean includeEventTriggeringUser;
private transient String dmsReportName;
@ManyToMany(fetch = FetchType.EAGER)
@JoinTable(name = "autoemailtask_autoemailgroup",
joinColumns = {@JoinColumn(name = "autoemailtask_id")},
inverseJoinColumns = {@JoinColumn(name = "autoemailgroup_id")})
@ForeignKey(name = "fk_autoemailgroup_autoemailtask",
inverseName = "fk_autoemailtask_autoemailgroup")
private Set<Group> groups = new HashSet<>();
private String emailSubject;
private String emailBody;
@ManyToOne
@ForeignKey(name = "fk_organisationalunit")
private OrganisationalUnit organisationalUnit;
@ManyToOne
private ExportParty exportParty;
@Temporal(TemporalType.TIMESTAMP)
@Column(nullable = true)
protected Date lastSuccessfullyExecuted;
@ManyToOne(fetch = FetchType.EAGER)
@ForeignKey(name = "fk_serviceProvider")
@XmlAttribute(required = true)
@XmlIDREF
private ServiceProvider serviceProvider;
@Enumerated(value = EnumType.STRING)
private ServiceProviderType serviceProviderType;
@XmlAttribute
private Boolean active = Boolean.TRUE;
@Enumerated(value = EnumType.STRING)
private DataPeriodType dataPeriodType;
@OneToMany(fetch = FetchType.LAZY)
private Set<DocumentType> dmsDocumentTypes=new HashSet<>();
private int dataPeriod = 1;
//temporary keep costing for reuse.Reduce costing loading.
private transient CostingSummary costingSummary;
private transient File[] filesToSend;
private int startAt;
public Set<String> getEmailAddresses() {
Set<String> emailAddresses = new HashSet<>();
for (Group group : groups) {
emailAddresses.addAll(group.getEmailAddresses());
}
return emailAddresses;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
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 Set<Group> getGroups() {
return groups;
}
public void setGroups(Set<Group> groups) {
this.groups = groups;
}
public int getIntervalNumber() {
return intervalNumber;
}
public void setIntervalNumber(int intervalNumber) {
this.intervalNumber = intervalNumber;
}
public DurationType getIntervalUnit() {
return intervalUnit;
}
public void setIntervalUnit(DurationType intervalUnit) {
this.intervalUnit = intervalUnit;
}
public Date getLastSuccessfullyExecuted() {
return lastSuccessfullyExecuted;
}
public void setLastSuccessfullyExecuted(Date lastSuccessfullyExecuted) {
this.lastSuccessfullyExecuted = lastSuccessfullyExecuted;
}
public boolean isPerBuyer() {
return perBuyer;
}
public void setPerBuyer(boolean perBuyer) {
this.perBuyer = perBuyer;
}
@Override
public int compareTo(Task o) {
return getName().compareToIgnoreCase(o.getName());
}
public String getEmailBody() {
return emailBody;
}
public void setEmailBody(String emailBody) {
this.emailBody = emailBody;
}
public String getEmailSubject() {
return emailSubject;
}
public void setEmailSubject(String emailSubject) {
this.emailSubject = emailSubject;
}
public boolean isIncludeEventTriggeringUser() {
return includeEventTriggeringUser;
}
public void setIncludeEventTriggeringUser(boolean includeEventTriggeringUser) {
this.includeEventTriggeringUser = includeEventTriggeringUser;
}
@Override
public Boolean getActive() {
return active;
}
public void setActive(Boolean active) {
this.active = active;
}
public CostingSummary getCostingSummary() {
return costingSummary;
}
public void setCostingSummary(CostingSummary costingSummary) {
this.costingSummary = costingSummary;
}
public ServiceProvider getServiceProvider() {
return serviceProvider;
}
public void setServiceProvider(ServiceProvider serviceProvider) {
this.serviceProvider = serviceProvider;
}
public ServiceProviderType getServiceProviderType() {
return serviceProviderType;
}
public void setServiceProviderType(ServiceProviderType serviceProviderType) {
this.serviceProviderType = serviceProviderType;
}
public DataPeriodType getDataPeriodType() {
return dataPeriodType;
}
public void setDataPeriodType(DataPeriodType dataPeriodType) {
this.dataPeriodType = dataPeriodType;
}
public int getDataPeriod() {
return dataPeriod;
}
public void setDataPeriod(int dataPeriod) {
this.dataPeriod = dataPeriod;
}
public OrganisationalUnit getOrganisationalUnit() {
return organisationalUnit;
}
public void setOrganisationalUnit(OrganisationalUnit organisationalUnit) {
this.organisationalUnit = organisationalUnit;
}
public File[] getFilesToSend() {
return filesToSend;
}
public void setFilesToSend(File[] filesToSend) {
this.filesToSend = filesToSend;
}
public ExportParty getExportParty() {
return exportParty;
}
public void setExportParty(ExportParty exportParty) {
this.exportParty = exportParty;
}
public List<ReportFormat> getAdditionalReportFormats() {
return additionalReportFormats;
}
public void setAdditionalReportFormats(List<ReportFormat> additionalReportFormats) {
this.additionalReportFormats = additionalReportFormats;
}
public List<ReportFormat> getAdditionalReportFormats2() {
return additionalReportFormats != null ? new ArrayList<>(additionalReportFormats) : null;
}
public void setAdditionalReportFormats2(List<ReportFormat> additionalReportFormats) {
this.additionalReportFormats = additionalReportFormats;
}
public Set<DocumentType> getDmsDocumentTypes() {
return dmsDocumentTypes;
}
public void setDmsDocumentTypes(Set<DocumentType> dmsDocumentTypes) {
this.dmsDocumentTypes = dmsDocumentTypes;
}
public int getStartAt() {
return startAt;
}
public void setStartAt(int startAt) {
this.startAt = startAt;
}
public String getDmsReportName() {
return dmsReportName;
}
public void setDmsReportName(String dmsReportName) {
this.dmsReportName = dmsReportName;
}
}