Group.java
package com.tradecloud.domain.autoemail;
import com.tradecloud.common.base.PersistenceBase;
import com.tradecloud.domain.model.organisationalunit.OrganisationalUnit;
import com.tradecloud.domain.party.Employee;
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.HashSet;
import java.util.List;
import java.util.Set;
@Access(AccessType.FIELD)
@XmlAccessorType(XmlAccessType.FIELD)
@XmlRootElement(name = "Group")
@Entity
@Table(name = "autoemailgroup")
public class Group extends PersistenceBase implements Comparable<Group> {
private static final long serialVersionUID = 1L;
private String name;
@ManyToOne
@ForeignKey(name = "fk_buyer")
private Employee buyer;
@ManyToOne
@ForeignKey(name = "fk_organisationalunit")
private OrganisationalUnit organisationalUnit;
@ElementCollection(fetch = FetchType.EAGER)
@CollectionTable(name = "autoemailgroup_emailaddresses", joinColumns = {@JoinColumn(name = "autoemailgroup_id", unique = false)})
@Column(name = "emailAddress")
@ForeignKey(name = "fk_autoemailgroup")
@Fetch(value = FetchMode.SUBSELECT)
private Set<String> emailAddresses = new HashSet<String>();
public Group() {
}
public Group(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Set<String> getEmailAddresses() {
return emailAddresses;
}
public void setEmailAddresses(Set<String> emailAddresses) {
this.emailAddresses = emailAddresses;
}
public List<String> getEmailAddressesAsList() {
return new ArrayList<String>(emailAddresses);
}
@Override
public int compareTo(Group o) {
return getName().compareToIgnoreCase(o.getName());
}
@Override
public String toString() {
return name;
}
public Employee getBuyer() {
return buyer;
}
public void setBuyer(Employee buyer) {
this.buyer = buyer;
}
public OrganisationalUnit getOrganisationalUnit() {
return organisationalUnit;
}
public void setOrganisationalUnit(OrganisationalUnit organisationalUnit) {
this.organisationalUnit = organisationalUnit;
}
}