Source code: org/jeteam/bean/project/ProjectBean.java
1 /*
2 * JETeam, Java Enterprise TeamWork
3 *
4 * Distributable under the GPL license.
5 * See terms of licence at http://www.gnu.org
6 *
7 * $Source: /cvsroot/jeteam/jeteam/jeteam-bcx/src/java/org/jeteam/bean/project/ProjectBean.java,v $
8 * $Date: 2003/05/28 22:07:48 $
9 * $Author: draftdog $
10 * $Revision: 1.14 $
11 */
12 package org.jeteam.bean.project;
13
14 import javax.ejb.CreateException;
15 import javax.ejb.EntityBean;
16 import java.util.Collection;
17
18 /**
19 *
20 * <p>
21 * A project is one of the central entities in the system, in fact
22 * everything is built around it.
23 * </p>
24 *
25 * <p>
26 * Users can be assigned to work on a project, this gives them the
27 * right to work on related tasks. However, it is only possible to
28 * assign users that have a valid role. Users that do not have that
29 * role are unable to work on the project.
30 * </p>
31 *
32 * <p>
33 * Users create tasks for a project and can update the current
34 * status of the project, depending on the individual statusses of
35 * the different tasks it is possible to derive a general completion
36 * percentage on the current project status.
37 * </p>
38 *
39 * <p>
40 * The <i> created </i> and <i> deleted </i> attributes indicate
41 * the date of creation and (logical) removal respectively. By
42 * verifying whether the optional <i> deleted </i> attribute is
43 * <b> null </b> one can know if the project is still alive or not,
44 * in case the <i> deleted </i> attribute contains a date this means
45 * the project has been removed and working on it should not be
46 * possible anymore.
47 * </p>
48 *
49 * @ejb.bean
50 * name="Project" type="CMP" cmp-version="2.x"
51 * local-jndi-name="org.jeteam.bean.project/Project/LocalHome"
52 * jndi-name="org.jeteam.bean.project/Project/Home"
53 * view-type="local"
54 * primkey-field="id"
55 * @ejb.interface
56 * generate="local,remote"
57 * remote-class="org.jeteam.bean.project.Project"
58 * local-class="org.jeteam.bean.project.ProjectLocal"
59 * @ejb.home
60 * generate="local"
61 * local-class="org.jeteam.bean.project.ProjectLocalHome"
62 * @ejb.pk
63 * generate="false"
64 * class="java.lang.String"
65 * @ejb.finder
66 * signature="org.jeteam.bean.project.ProjectLocal findByPrimaryKey(java.lang.String pk)"
67 * unchecked="false"
68 * role-name="Project,Project.findByPrimaryKey"
69 * @ejb.finder
70 * signature="java.util.Collection findAll()"
71 * unchecked="false"
72 * role-name="Project,Project.findAll"
73 * @ejb.finder
74 * signature="java.util.Collection findByName(java.lang.String name)"
75 * query="SELECT OBJECT(o) FROM Project o WHERE o.name = ?1"
76 * unchecked="false"
77 * role-name="Project,Project.findByName"
78 * @ejb.finder
79 * signature="java.util.Collection findByCreated(java.util.Date created)"
80 * query="SELECT OBJECT(o) FROM Project o WHERE o.created = ?1"
81 * unchecked="false"
82 * role-name="Project,Project.findByCreated"
83 * @ejb.finder
84 * signature="java.util.Collection findInRangeCreated(java.util.Date low, java.util.Date high)"
85 * query="SELECT OBJECT(o) FROM Project o WHERE ((o.created > ?1) AND (o.created < ?2)) OR (o.created = ?1) OR (o.created = ?2)"
86 * unchecked="false"
87 * role-name="Project,Project.findInRangeByCreated"
88 * @ejb.finder
89 * signature="java.util.Collection findByDeleted(java.util.Date deleted)"
90 * query="SELECT OBJECT(o) FROM Project o WHERE o.deleted = ?1"
91 * unchecked="false"
92 * role-name="Project,Project.findByDeleted"
93 * @ejb.finder
94 * signature="java.util.Collection findInRangeDeleted(java.util.Date low, java.util.Date high)"
95 * query="SELECT OBJECT(o) FROM Project o WHERE ((o.deleted > ?1) AND (o.deleted < ?2)) OR (o.deleted = ?1) OR (o.deleted = ?2)"
96 * unchecked="false"
97 * role-name="Project,Project.findInRangeByDeleted"
98 * @ejb.util
99 * generate="physical"
100 * @ejb.value-object
101 * name="Project" match="*" instantiation="eager"
102 *
103 * @ejb.persistence
104 * table-name="Project"
105 *
106 * @jboss.persistence
107 * create-table="true"
108 * remove-table="false"
109 * tuned-updates="true"
110 * read-only="false"
111 *
112 * @struts.form
113 * name="Edit"
114 * include-all="true"
115 *
116 * element.uuid 127-0-0-1-8a88a9:f38ae934f1:-7f19
117 *
118 *
119 */
120 public abstract class ProjectBean implements EntityBean
121 {
122
123 // --------------- attributes ---------------------
124
125 /**
126 *
127 * @ejb.pk-field
128 * @ejb.persistence
129 * column-name="ID"
130 * jdbc-type="VARCHAR"
131 * sql-type="VARCHAR(255)"
132 *
133 * @ejb.interface-method view-type="local"
134 * @ejb.transaction type="Required"
135 * @ejb.permission
136 * unchecked = "false"
137 * role-name = "InternalUser"
138 */
139 public abstract java.lang.String getId();
140
141 /**
142 * @ejb.interface-method view-type="local"
143 * @ejb.transaction type="Required"
144 * @ejb.permission
145 * unchecked = "false"
146 * role-name = "InternalUser"
147 */
148 public abstract void setId(java.lang.String newValue);
149
150
151 /**
152 *
153 * @ejb.persistence
154 * column-name="NAME"
155 * jdbc-type="VARCHAR"
156 * sql-type="VARCHAR(255)"
157 *
158 * @ejb.interface-method view-type="local"
159 * @ejb.transaction type="Required"
160 * @ejb.permission
161 * unchecked = "false"
162 * role-name = "InternalUser"
163 */
164 public abstract java.lang.String getName();
165
166 /**
167 * @ejb.interface-method view-type="local"
168 * @ejb.transaction type="Required"
169 * @ejb.permission
170 * unchecked = "false"
171 * role-name = "InternalUser"
172 */
173 public abstract void setName(java.lang.String newValue);
174
175
176 /**
177 *
178 * @ejb.persistence
179 * column-name="DESCRIPTION"
180 * jdbc-type="VARCHAR"
181 * sql-type="VARCHAR(255)"
182 *
183 * @ejb.interface-method view-type="local"
184 * @ejb.transaction type="Required"
185 * @ejb.permission
186 * unchecked = "false"
187 * role-name = "InternalUser"
188 */
189 public abstract java.lang.String getDescription();
190
191 /**
192 * @ejb.interface-method view-type="local"
193 * @ejb.transaction type="Required"
194 * @ejb.permission
195 * unchecked = "false"
196 * role-name = "InternalUser"
197 */
198 public abstract void setDescription(java.lang.String newValue);
199
200
201 /**
202 *
203 * @ejb.persistence
204 * column-name="CREATED"
205 * jdbc-type="TIMESTAMP"
206 * sql-type="DATETIME"
207 *
208 * @ejb.interface-method view-type="local"
209 * @ejb.transaction type="Required"
210 * @ejb.permission
211 * unchecked = "false"
212 * role-name = "InternalUser"
213 */
214 public abstract java.util.Date getCreated();
215
216 /**
217 * @ejb.interface-method view-type="local"
218 * @ejb.transaction type="Required"
219 * @ejb.permission
220 * unchecked = "false"
221 * role-name = "InternalUser"
222 */
223 public abstract void setCreated(java.util.Date newValue);
224
225
226 /**
227 *
228 * @ejb.persistence
229 * column-name="DELETED"
230 * jdbc-type="TIMESTAMP"
231 * sql-type="DATETIME"
232 *
233 * @ejb.interface-method view-type="local"
234 * @ejb.transaction type="Required"
235 * @ejb.permission
236 * unchecked = "false"
237 * role-name = "InternalUser"
238 */
239 public abstract java.util.Date getDeleted();
240
241 /**
242 * @ejb.interface-method view-type="local"
243 * @ejb.transaction type="Required"
244 * @ejb.permission
245 * unchecked = "false"
246 * role-name = "InternalUser"
247 */
248 public abstract void setDeleted(java.util.Date newValue);
249
250
251 /**
252 *
253 * @ejb.persistence
254 * column-name="LAST_UPDATED"
255 * jdbc-type="TIMESTAMP"
256 * sql-type="DATETIME"
257 *
258 * @ejb.interface-method view-type="local"
259 * @ejb.transaction type="Required"
260 * @ejb.permission
261 * unchecked = "false"
262 * role-name = "InternalUser"
263 */
264 public abstract java.util.Date getLastUpdated();
265
266 /**
267 * @ejb.interface-method view-type="local"
268 * @ejb.transaction type="Required"
269 * @ejb.permission
270 * unchecked = "false"
271 * role-name = "InternalUser"
272 */
273 public abstract void setLastUpdated(java.util.Date newValue);
274
275
276 // ------------- relations ------------------
277
278 /**
279 *
280 * @ejb.interface-method view-type="local"
281 * @ejb.transaction type="Required"
282 * @ejb.relation
283 * name="projects-users"
284 * role-name="projects"
285 *
286 * @jboss.relation
287 * related-pk-field="id"
288 * fk-column="USERS_FK"
289 * @jboss.relation-table
290 * table-name="PROJECTS_USERS"
291 * @weblogic.relation
292 * join-table-name = "PROJECTS_USERS"
293 * foreign-key-column = "USERS_FK"
294 * @resin-ejb.relation
295 * sql-table = "PROJECTS_USERS"
296 * sql-column = "USERS_FK"
297 * @ejb.permission
298 * unchecked = "false"
299 * role-name = "InternalUser"
300 */
301 public abstract Collection getUsers();
302
303 /**
304 * @ejb.interface-method view-type="local"
305 * @ejb.transaction type="Required"
306 * @ejb.permission
307 * unchecked = "false"
308 * role-name = "InternalUser"
309 */
310 public abstract void setUsers(Collection users);
311
312
313 /**
314 *
315 * @ejb.interface-method view-type="local"
316 * @ejb.transaction type="Required"
317 * @ejb.relation
318 * name="project-tasks"
319 * role-name="project"
320 *
321 * @jboss.target-relation
322 * related-pk-field="id"
323 * fk-column="PROJECT_FK"
324 * @ejb.permission
325 * unchecked = "false"
326 * role-name = "InternalUser"
327 */
328 public abstract Collection getTasks();
329
330 /**
331 * @ejb.interface-method view-type="local"
332 * @ejb.transaction type="Required"
333 * @ejb.permission
334 * unchecked = "false"
335 * role-name = "InternalUser"
336 */
337 public abstract void setTasks(Collection tasks);
338
339
340 /**
341 *
342 * @ejb.interface-method view-type="local"
343 * @ejb.transaction type="Required"
344 * @ejb.relation
345 * name="projects-roles"
346 * role-name="projects"
347 *
348 * @jboss.relation
349 * related-pk-field="id"
350 * fk-column="ROLES_FK"
351 * @jboss.relation-table
352 * table-name="PROJECTS_ROLES"
353 * @weblogic.relation
354 * join-table-name = "PROJECTS_ROLES"
355 * foreign-key-column = "ROLES_FK"
356 * @resin-ejb.relation
357 * sql-table = "PROJECTS_ROLES"
358 * sql-column = "ROLES_FK"
359 * @ejb.permission
360 * unchecked = "false"
361 * role-name = "InternalUser"
362 */
363 public abstract Collection getRoles();
364
365 /**
366 * @ejb.interface-method view-type="local"
367 * @ejb.transaction type="Required"
368 * @ejb.permission
369 * unchecked = "false"
370 * role-name = "InternalUser"
371 */
372 public abstract void setRoles(Collection roles);
373
374
375 /**
376 *
377 * @ejb.interface-method view-type="local"
378 * @ejb.transaction type="Required"
379 * @ejb.relation
380 * name="projects-status"
381 * role-name="projects"
382 * target-multiple="yes"
383 * target-ejb="Status"
384 * target-role-name="status"
385 *
386 * @jboss.relation related-pk-field="id"
387 * fk-column="STATUS_FK"
388 * @ejb.permission
389 * unchecked = "false"
390 * role-name = "InternalUser"
391 */
392 public abstract org.jeteam.bean.config.StatusLocal getStatus();
393
394 /**
395 * @ejb.interface-method view-type="local"
396 * @ejb.transaction type="Required"
397 * @ejb.permission
398 * unchecked = "false"
399 * role-name = "InternalUser"
400 */
401 public abstract void setStatus(org.jeteam.bean.config.StatusLocal status);
402
403
404
405 // --------------- getter/setter for value objects ------------
406
407 /**
408 * @ejb.interface-method view-type="local"
409 * @ejb.transaction type="Required"
410 * @ejb.permission
411 * unchecked = "false"
412 * role-name = "InternalUser"
413 */
414
415 public org.jeteam.bean.project.ProjectData getProjectData()
416 {
417 org.jeteam.bean.project.ProjectData result = new org.jeteam.bean.project.ProjectData(getId(), getName(), getDescription(), getCreated(), getDeleted(), getLastUpdated());
418 return result;
419 }
420
421 /**
422 * @ejb.interface-method view-type="local"
423 * @ejb.transaction type="Required"
424 * @ejb.permission
425 * unchecked = "false"
426 * role-name = "InternalUser"
427 */
428 public void setProjectData(org.jeteam.bean.project.ProjectData value)
429 {
430 setName(value.getName());
431 setDescription(value.getDescription());
432 setCreated(value.getCreated());
433 setDeleted(value.getDeleted());
434 setLastUpdated(value.getLastUpdated());
435 }
436
437 // ---------------- business methods ----------------------
438
439
440 // ---------------- create methods with separate attributes --------------------
441
442 /**
443 * @ejb.create-method
444 * @ejb.transaction type="Required"
445 * @ejb.permission
446 * unchecked = "false"
447 * role-name = "InternalUser"
448 */
449 public java.lang.String ejbCreate(java.lang.String name, java.lang.String description, java.util.Date created, java.util.Date deleted, java.util.Date lastUpdated)
450 throws CreateException
451 {
452 setName(name);
453 setDescription(description);
454 setCreated(created);
455 setDeleted(deleted);
456 setLastUpdated(lastUpdated);
457
458 String primaryKey = ProjectUtil.generateGUID(this);
459 setId(primaryKey);
460 return null; // should not return primaryKey for CMP: see EJB spec,
461 // chapter 10.5.2 "Bean Provider’s entity bean instance’s view"
462 }
463
464 public void ejbPostCreate(java.lang.String name, java.lang.String description, java.util.Date created, java.util.Date deleted, java.util.Date lastUpdated)
465 throws CreateException
466 {
467 }
468
469 // ---------------- create methods using value object --------------------
470
471 /**
472 * @ejb.create-method
473 * @ejb.transaction type="Required"
474 * @ejb.permission
475 * unchecked = "false"
476 * role-name = "InternalUser"
477 */
478 public java.lang.String ejbCreate(org.jeteam.bean.project.ProjectData data)
479 throws CreateException
480 {
481 setName(data.getName());
482 setDescription(data.getDescription());
483 setCreated(data.getCreated());
484 setDeleted(data.getDeleted());
485 setLastUpdated(data.getLastUpdated());
486
487 String primaryKey = ProjectUtil.generateGUID(this);
488 setId(primaryKey);
489 return null; // should not return primaryKey for CMP: see EJB spec,
490 // chapter 10.5.2 "Bean Provider’s entity bean instance’s view"
491 }
492
493 public void ejbPostCreate(org.jeteam.bean.project.ProjectData data)
494 throws CreateException
495 {
496 }
497
498 // ------------------------- remove method -------------------------------
499
500 /**
501 * @ejb.transaction type="Required"
502 * @ejb.permission
503 * unchecked = "false"
504 * role-name = "InternalUser"
505 */
506 public void ejbRemove() throws javax.ejb.RemoveException
507 {
508 }
509
510 }