1
2
3
4
5 package org.directdemocracyportal.democracy.model.core;
6
7 import java.util.HashSet;
8 import java.util.Set;
9
10 import javax.persistence.CascadeType;
11 import javax.persistence.Entity;
12 import javax.persistence.FetchType;
13 import javax.persistence.GeneratedValue;
14 import javax.persistence.GenerationType;
15 import javax.persistence.Id;
16 import javax.persistence.Inheritance;
17 import javax.persistence.InheritanceType;
18 import javax.persistence.ManyToMany;
19 import javax.persistence.OneToMany;
20
21 import org.hibernate.annotations.Cache;
22 import org.hibernate.annotations.CacheConcurrencyStrategy;
23
24
25
26
27 /***
28 * The Class Agent.
29 */
30 @Entity
31 @Inheritance(strategy = InheritanceType.JOINED)
32 @Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE)
33 public abstract class Agent extends BaseEntity
34 {
35
36 /*** The id. */
37 private Long id;
38
39 /*** The name. */
40 private String name;
41
42 /*** The roles. */
43 private Set<Role> roles = new HashSet<Role>();
44
45 /*** The resources. */
46 private Set<Resource> resources = new HashSet<Resource>();
47
48 /***
49 * Instantiates a new agent.
50 */
51 public Agent() {
52 }
53
54 /***
55 * Instantiates a new agent.
56 *
57 * @param name the name
58 */
59 public Agent(String name) {
60 this.name = name;
61 }
62
63
64
65
66
67
68 @Override
69 @Id
70 @GeneratedValue(strategy = GenerationType.AUTO)
71 public Long getId() {
72 return id;
73 }
74
75 /***
76 * Sets the id.
77 *
78 * @param id the new id
79 */
80 public void setId(Long id) {
81 this.id = id;
82 }
83
84 /***
85 * Gets the name.
86 *
87 * @return the name
88 */
89 public String getName() {
90 return name;
91 }
92
93 /***
94 * Sets the name.
95 *
96 * @param name the new name
97 */
98 public void setName(String name) {
99 this.name = name;
100 }
101
102 /***
103 * Gets the roles.
104 *
105 * @return the roles
106 */
107 @ManyToMany(fetch = FetchType.LAZY)
108 public Set<Role> getRoles() {
109 return roles;
110 }
111
112 /***
113 * Sets the roles.
114 *
115 * @param roles the new roles
116 */
117 public void setRoles(Set<Role> roles) {
118 this.roles = roles;
119 }
120
121
122
123
124
125
126 @Override
127 public int hashCode() {
128 final int prime = 31;
129 int result = 1;
130 result = prime * result + ((id == null) ? 0 : id.hashCode());
131 result = prime * result + ((name == null) ? 0 : name.hashCode());
132 return result;
133 }
134
135
136
137
138
139
140 @Override
141 public boolean equals(Object obj) {
142 if (this == obj)
143 return true;
144 if (obj == null)
145 return false;
146 if (getClass() != obj.getClass())
147 return false;
148 final Agent other = (Agent) obj;
149 if (id == null) {
150 if (other.id != null)
151 return false;
152 } else if (!id.equals(other.id))
153 return false;
154 if (name == null) {
155 if (other.name != null)
156 return false;
157 } else if (!name.equals(other.name))
158 return false;
159 return true;
160 }
161
162 /***
163 * Gets the resources.
164 *
165 * @return the resources
166 */
167 @OneToMany(mappedBy = "owner", cascade = CascadeType.ALL, fetch = FetchType.LAZY)
168 public Set<Resource> getResources() {
169 return resources;
170 }
171
172 /***
173 * Sets the resources.
174 *
175 * @param resources the new resources
176 */
177 public void setResources(Set<Resource> resources) {
178 this.resources = resources;
179 }
180 }