1 package de.campussource.cse.cdmm.domain;
2
3 import java.util.List;
4
5 import javax.persistence.CascadeType;
6 import javax.persistence.Entity;
7 import javax.persistence.Inheritance;
8 import javax.persistence.InheritanceType;
9 import javax.persistence.ManyToMany;
10 import javax.persistence.Table;
11 import javax.xml.bind.annotation.XmlElement;
12 import javax.xml.bind.annotation.XmlElementWrapper;
13 import javax.xml.bind.annotation.XmlIDREF;
14 import javax.xml.bind.annotation.XmlRootElement;
15 import javax.xml.bind.annotation.XmlType;
16
17 import org.apache.commons.lang.builder.ToStringBuilder;
18 import org.apache.commons.lang.builder.ToStringStyle;
19
20 import de.campussource.cse.cdmm.Constants;
21
22
23
24
25
26
27 @Entity(name=Constants.GROUP)
28 @Table(name = Constants.TABLENAME_GROUP)
29 @Inheritance(strategy=InheritanceType.JOINED)
30 @XmlRootElement(namespace=Constants.NAMESPACE_DATATYPES)
31 @XmlType(name=Constants.GROUP_TYPE, propOrder={Constants.MEMBERS}, namespace=Constants.NAMESPACE_DATATYPES)
32 public class Group extends Account{
33
34 @ManyToMany(mappedBy=Constants.GROUPS, cascade={CascadeType.PERSIST, CascadeType.MERGE, CascadeType.REFRESH})
35 private List<Account> members;
36
37 public Group(){
38 }
39
40 public Group(Long id){
41 setId(id);
42 }
43
44 @Override
45 public boolean equals(Object obj) {
46 if (this == obj) {
47 return true;
48 }
49 if (!(obj instanceof Group)) {
50 return false;
51 }
52 if (this.getId() == null) {
53 return false;
54 } else {
55 return this.getId().equals(((Group) obj).getId());
56 }
57 }
58
59 @Override
60 public int hashCode() {
61 if (this.getId() == null) {
62 return super.hashCode();
63 } else {
64 return this.getId().hashCode();
65 }
66 }
67
68 @Override
69 public String toString() {
70 return new ToStringBuilder(this, ToStringStyle.DEFAULT_STYLE).append(this.getId()).toString();
71 }
72
73 public void setMembers(List<Account> members) {
74 this.members = members;
75 }
76
77 @XmlElementWrapper(name=Constants.MEMBERS)
78 @XmlElement(name=Constants.MEMBER)
79 @XmlIDREF
80 public List<Account> getMembers() {
81 return members;
82 }
83 }