View Javadoc

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   * Group entity object
24   * @author Sebastian Roekens
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  }