source: trunk/grails-app/domain/dbnp/studycapturing/Study.groovy @ 396

Last change on this file since 396 was 396, checked in by duh, 11 years ago
  • fixed incomplete implementation of domain fields (getters, setters and constrains logic were all not implemented correctly)
  • refactored wizards pages
  • TODO: constraints on (templated) domain fields are not working anymore, this needs to be implemented properly in TemplateEntity?
  • Property svn:keywords set to Date Author Rev
File size: 2.1 KB
Line 
1package dbnp.studycapturing
2
3/**
4 * Domain class describing the basic entity in the study capture part: the Study class.
5 *
6 * Revision information:
7 * $Rev: 396 $
8 * $Author: duh $
9 * $Date: 2010-05-07 12:24:27 +0000 (vr, 07 mei 2010) $
10 */
11class Study extends TemplateEntity implements Serializable {
12        static searchable = true
13        nimble.User owner
14        Date dateCreated
15        Date lastUpdated
16
17        /**
18         * return the domain fields for this domain class
19         */
20        List<TemplateField> giveDomainFields() {
21                [ new TemplateField( 
22                            name: 'title',
23                            type: TemplateFieldType.STRING),
24                        new TemplateField( 
25                            name: 'startDate', 
26                            type: TemplateFieldType.DATE) ];
27        }
28
29        static hasMany = [
30                editors: nimble.User,
31                readers: nimble.User,
32                subjects: Subject,
33                events: Event,
34                samplingEvents: SamplingEvent,
35                eventGroups: EventGroup,
36                samples: Sample,
37                assays: Assay,
38                persons: StudyPerson,
39                publications: Publication
40        ]
41
42        static constraints = {
43                owner(nullable: true, blank: true)
44                template(nullable: false, blank: false)
45        }
46
47        static mapping = {
48                researchQuestion type: 'text'
49                description type: 'text'
50                autoTimestamp true
51        }
52
53        def String toString() {
54                //return title;
55                def title = this.giveDomainFields().find { it.name == 'title' }
56
57                return title.toString()
58        }
59
60        /**
61         * Return the unique Subject templates that are used in this study
62         */
63        def Set<Template> giveSubjectTemplates() {
64                TemplateEntity.giveTemplates(subjects);
65        }
66
67        /**
68         * Return the unique Event templates that are used in this study
69         */
70        def Set<Template> giveEventTemplates() {
71                TemplateEntity.giveTemplates(events);
72        }
73
74        /**
75         * Return the unique SamplingEvent templates that are used in this study
76         */
77        def Set<Template> giveSamplingEventTemplates() {
78                TemplateEntity.giveTemplates(events);
79        }
80
81        /**
82         * Returns the unique Sample templates that are used in the study
83         */
84        def Template giveSampleTemplates() {
85                TemplateEntity.giveTemplates(samples);
86        }
87        /**
88         * Returns the template of the study
89         */
90        def Template giveStudyTemplate() {
91                return this.template;
92        }
93}
Note: See TracBrowser for help on using the repository browser.