source: trunk/grails-app/domain/dbnp/studycapturing/Event.groovy @ 497

Last change on this file since 497 was 497, checked in by roberth, 12 years ago

Implemented RELTIME parsing and showing in the wizard.
Also made TEXT templatefields to show a textarea

  • Property svn:keywords set to Date Rev Author
File size: 2.0 KB
Line 
1package dbnp.studycapturing
2
3import groovy.time.*
4
5/**
6 * The Event class describes an actual event, as it has happened to a certain subject. Often, the same event occurs
7 * to multiple subjects at the same time. That is why the actual description of the event is factored out into a more
8 * general EventDescription class. Events that also lead to sample(s) should be instantiated as SamplingEvents.
9 *
10 * Revision information:
11 * $Rev: 497 $
12 * $Author: roberth $
13 * $Date: 2010-05-28 14:19:06 +0000 (vr, 28 mei 2010) $
14 */
15class Event extends TemplateEntity implements Serializable {
16        long startTime
17        long endTime
18
19        /**
20         * Constraints
21         */
22        static constraints = {
23                endTime(validator: { fields, obj, errors ->
24                        def error = false
25
26                        // endTime must be >= the startTime
27                        if ( fields && fields.compareTo(obj.startTime) < 0 ) {
28                                error = true
29                                errors.rejectValue(
30                                        'endTime',
31                                        'event.endTime.greaterThanStartTime',
32                                        ['endTime', fields] as Object[],
33                                        'End time should be greater than or equal to the Start Time'
34                                )
35                        }
36
37                        return (!error)
38                })
39        }
40
41        /**
42         * return the domain fields for this domain class
43         * @return List
44         */
45        List<TemplateField> giveDomainFields() { return Event.domainFields }
46        static final List<TemplateField> domainFields = 
47                [
48                        new TemplateField(
49                                name: 'startTime',
50                                type: TemplateFieldType.RELTIME),
51                        new TemplateField(
52                                name: 'endTime',
53                                type: TemplateFieldType.RELTIME)
54                ]
55
56        def getDuration() {
57                return new RelTime(startTime, endTime);
58        }
59
60        /**
61         * get a prettified duration
62         * @return String
63         */
64        static def getPrettyDuration(RelTime duration) {
65            return duration.toPrettyRoundedString();
66        }
67
68        def getPrettyDuration() {
69            getPrettyDuration(getDuration())
70        }
71
72        def getDurationString() {
73            def d = getDuration()
74            return getDuration().toPrettyString();
75        }
76
77        def getShortDuration() {
78            def d = getDuration()
79            return getDuration().toString();
80        }
81
82        def isSamplingEvent() {
83                return (this instanceof SamplingEvent)
84        }
85
86        def String toString() {
87                return fieldExists('Description') ? getFieldValue('Description') : ""
88        }
89}
Note: See TracBrowser for help on using the repository browser.