1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 package org.opencastproject.security.impl.jpa;
22
23 import org.opencastproject.security.api.Organization;
24 import org.opencastproject.util.EqualsUtil;
25
26 import java.util.HashMap;
27 import java.util.Map;
28
29 import javax.persistence.Access;
30 import javax.persistence.AccessType;
31 import javax.persistence.CollectionTable;
32 import javax.persistence.Column;
33 import javax.persistence.ElementCollection;
34 import javax.persistence.Entity;
35 import javax.persistence.Id;
36 import javax.persistence.Index;
37 import javax.persistence.JoinColumn;
38 import javax.persistence.Lob;
39 import javax.persistence.MapKeyColumn;
40 import javax.persistence.NamedQueries;
41 import javax.persistence.NamedQuery;
42 import javax.persistence.Table;
43 import javax.persistence.UniqueConstraint;
44
45
46
47
48 @Entity
49 @Access(AccessType.FIELD)
50 @Table(name = "oc_organization")
51 @NamedQueries({
52 @NamedQuery(
53 name = "Organization.findAll",
54 query = "Select o FROM JpaOrganization o"
55 ),
56 @NamedQuery(
57 name = "Organization.findById",
58 query = "Select o FROM JpaOrganization o where o.id = :id"
59 ),
60 @NamedQuery(
61 name = "Organization.findByHost",
62 query = "Select o FROM JpaOrganization o JOIN o.servers s where key(s) = :serverName AND s = :port"
63 ),
64 @NamedQuery(
65 name = "Organization.getCount",
66 query = "Select COUNT(o) FROM JpaOrganization o"
67 ),
68 })
69 public class JpaOrganization implements Organization {
70
71 @Id
72 @Column(name = "id", length = 128)
73 private String id;
74
75 @Column(name = "name")
76 private String name;
77
78 @ElementCollection
79 @MapKeyColumn(name = "name", nullable = false)
80 @Column(name = "port", nullable = false)
81 @CollectionTable(
82 name = "oc_organization_node",
83 joinColumns = @JoinColumn(name = "organization", nullable = false),
84 indexes = {
85 @Index(name = "IX_oc_organization_node_pk", columnList = ("organization")),
86 @Index(name = "IX_oc_organization_node_name", columnList = ("name")),
87 @Index(name = "IX_oc_organization_node_port", columnList = ("port"))
88 },
89 uniqueConstraints = @UniqueConstraint(columnNames = {"organization", "name", "port"})
90 )
91 private Map<String, Integer> servers;
92
93 @Column(name = "admin_role")
94 private String adminRole;
95
96 @Column(name = "anonymous_role")
97 private String anonymousRole;
98
99 @Lob
100 @ElementCollection
101 @MapKeyColumn(name = "name", nullable = false)
102 @Column(name = "\"value\"", length = 65535)
103 @CollectionTable(
104 name = "oc_organization_property",
105 joinColumns = @JoinColumn(name = "organization", nullable = false)
106 )
107 private Map<String, String> properties;
108
109
110
111
112 public JpaOrganization() {
113 }
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133 public JpaOrganization(
134 String orgId,
135 String name,
136 String serverName,
137 Integer serverPort,
138 String adminRole,
139 String anonymousRole,
140 Map<String, String> properties
141 ) {
142 super();
143 this.id = orgId;
144 this.name = name;
145 this.servers = new HashMap<String, Integer>();
146 this.servers.put(serverName, serverPort);
147 this.adminRole = adminRole;
148 this.anonymousRole = anonymousRole;
149 this.properties = properties;
150 }
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168 public JpaOrganization(
169 String orgId,
170 String name,
171 Map<String, Integer> servers,
172 String adminRole,
173 String anonymousRole,
174 Map<String, String> properties
175 ) {
176 super();
177 this.id = orgId;
178 this.name = name;
179 this.servers = servers;
180 this.adminRole = adminRole;
181 this.anonymousRole = anonymousRole;
182 this.properties = properties;
183 }
184
185
186
187
188 @Override
189 public String getId() {
190 return id;
191 }
192
193
194
195
196 @Override
197 public String getAnonymousRole() {
198 return anonymousRole;
199 }
200
201 public void setAnonymousRole(String anonymousRole) {
202 this.anonymousRole = anonymousRole;
203 }
204
205
206
207
208 @Override
209 public String getAdminRole() {
210 return adminRole;
211 }
212
213 public void setAdminRole(String adminRole) {
214 this.adminRole = adminRole;
215 }
216
217
218
219
220 @Override
221 public String getName() {
222 return name;
223 }
224
225 public void setName(String name) {
226 this.name = name;
227 }
228
229
230
231
232 @Override
233 public Map<String, String> getProperties() {
234 return properties;
235 }
236
237 public void setProperties(Map<String, String> properties) {
238 this.properties = properties;
239 }
240
241
242
243
244 @Override
245 public Map<String, Integer> getServers() {
246 return servers;
247 }
248
249
250
251
252
253
254
255 public void setServers(Map<String, Integer> servers) {
256 this.servers = servers;
257 }
258
259
260
261
262
263
264
265
266
267 public void addServer(String serverName, Integer port) {
268 if (servers == null) {
269 servers = new HashMap<String, Integer>();
270 }
271 servers.put(serverName, port);
272 }
273
274
275
276
277
278
279
280
281
282 public void remove(String serverName, Integer port) {
283 if (port.equals(servers.get(serverName))) {
284 servers.remove(serverName);
285 }
286 }
287
288 @Override
289 public boolean equals(Object obj) {
290 if (!(obj instanceof Organization)) {
291 return false;
292 }
293 return ((Organization) obj).getId().equals(id);
294 }
295
296 @Override
297 public int hashCode() {
298 return EqualsUtil.hash(id);
299 }
300
301 @Override
302 public String toString() {
303 return id;
304 }
305
306 }