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

Last change on this file since 540 was 540, checked in by duh, 11 years ago
  • fixed indentation shite!!!
  • samples dev commit
  • Property svn:keywords set to Date Rev Author
File size: 2.8 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: 540 $
8 * $Author: duh $
9 * $Date: 2010-06-08 11:04:08 +0000 (di, 08 jun 2010) $
10 */
11class Study extends TemplateEntity implements Serializable {
12        static searchable = true
13        nimble.User owner
14        String title
15        Date dateCreated
16        Date lastUpdated
17        Date startDate
18    long externalStudyID   // enables referring to studies outside of GSCF, e.g., in the Simple Assay Module
19
20        /**
21         * return the domain fields for this domain class
22         * @return List
23         */
24        static List<TemplateField> giveDomainFields() { return Study.domainFields }
25
26        static final List<TemplateField> domainFields = [
27                new TemplateField(
28                        name: 'title',
29                        type: TemplateFieldType.STRING),
30                new TemplateField(
31                        name: 'startDate',
32                        type: TemplateFieldType.DATE,
33                        comment: 'Fill out the official start date or date of first action')
34        ]
35
36        static hasMany = [
37                editors: nimble.User,
38                readers: nimble.User,
39                subjects: Subject,
40                events: Event,
41                samplingEvents: SamplingEvent,
42                eventGroups: EventGroup,
43                samples: Sample,
44                assays: Assay,
45                persons: StudyPerson,
46                publications: Publication
47        ]
48
49        static constraints = {
50                owner(nullable: true, blank: true)
51                externalStudyID(nullable:true, blank:true) 
52        }
53
54        static mapping = {
55                researchQuestion type: 'text'
56                description type: 'text'
57                autoTimestamp true
58        }
59
60        /**
61         * return the title of this study
62         */
63        def String toString() {
64                return title
65        }
66
67        /**
68         * returns all events and sampling events that do not belong to a group
69         */
70        def Set<Event> getOrphanEvents() {
71                def orphans =   events.findAll { event -> !event.belongsToGroup(eventGroups) } +
72                                                samplingEvents.findAll { event -> !event.belongsToGroup(eventGroups) }
73
74                return orphans
75        }
76
77        /**
78         * Return the unique Subject templates that are used in this study
79         */
80        def Set<Template> giveSubjectTemplates() {
81                TemplateEntity.giveTemplates(subjects)
82        }
83
84        /**
85         * Return the unique Event and SamplingEvent templates that are used in this study
86         */
87        Set<Template> giveAllEventTemplates() {
88                // For some reason, giveAllEventTemplates() + giveAllSamplingEventTemplates()
89                // gives trouble when asking .size() to the result
90                // So we also use giveTemplates here
91                TemplateEntity.giveTemplates(events + samplingEvents)
92        }
93
94        /**
95         * Return the unique Event templates that are used in this study
96         */
97        Set<Template> giveEventTemplates() {
98                TemplateEntity.giveTemplates(events)
99        }
100
101        /**
102         * Return the unique SamplingEvent templates that are used in this study
103         */
104        Set<Template> giveSamplingEventTemplates() {
105                TemplateEntity.giveTemplates(samplingEvents)
106        }
107
108        /**
109         * Returns the unique Sample templates that are used in the study
110         */
111        Set<Template> giveSampleTemplates() {
112                TemplateEntity.giveTemplates(samples)
113        }
114        /**
115         * Returns the template of the study
116         */
117        Template giveStudyTemplate() {
118                return this.template
119        }
120}
Note: See TracBrowser for help on using the repository browser.