source: trunk/grails-app/domain/nl/tno/massSequencing/Study.groovy @ 53

Last change on this file since 53 was 53, checked in by robert@…, 8 years ago

Implemented export possibility and bugfixes

File size: 2.2 KB
Line 
1import java.io.StringWriter;
2
3package nl.tno.massSequencing
4
5import nl.tno.massSequencing.auth.*;
6
7/**
8 * Minimal representation of a study. The studyToken is the link with a study object in GSCF.
9 *
10 * @see GscfService.getStudy
11 */
12class Study {
13        def gscfService
14       
15        String studyToken
16        String name
17
18        // Set to true only on the specific study object that acts as
19        // a trash can for deleted objects. If objects are deleted in GSCF but still
20        // contain data in this module, they will be moved to the trashcan.
21        Boolean trashcan = false 
22       
23        // If a study is set to be dirty, it should be updated
24        // the next time synchronization takes place.
25        Boolean isDirty = true;
26       
27        public String viewUrl() {
28                return gscfService.urlViewStudy( studyToken );
29        }
30       
31        static hasMany = [assays: Assay, samples: Sample, auth: Auth]
32        static mapping = {
33                columns {
34                        studyToken index:'studytoken_idx'
35                }
36                assays cascade: "all-delete-orphan"
37                samples cascade: "all-delete-orphan"
38                auth cascade: "all-delete-orphan"
39                auth lazy: false, batchSize: 10
40        }
41
42        static constraints = {
43                studyToken(unique:true)
44                trashcan(nullable:true)
45                isDirty(nullable:true)
46        }
47       
48        /**
49        * Returns the total number of sequences found in this assay. It is computed
50        * as the sum of the number of sequences of all samples
51        * @return
52        */
53   public int numSequences() {
54           if( !assays )
55                   return 0
56           
57           int numSequences = 0;
58           assays.each { numSequences += it.numSequences() }
59
60           return numSequences;
61   }
62       
63        public boolean equals( Object o ) {
64                if( o == null )
65                        return false
66               
67                if( o instanceof Study ) {
68                        return (o.id != null && this.id != null && o.id == this.id);
69                } else {
70                        return false
71                }
72        }
73
74        public boolean canRead( User user ) {
75                Auth authorization = auth.find { it.user.equals( user ) }
76               
77                if( !authorization ) 
78                        return false
79               
80                return authorization.canRead
81        }
82       
83        public boolean canWrite( User user ) {
84                Auth authorization = auth.find { it.user.equals( user ) }
85               
86                if( !authorization ) 
87                        return false
88               
89                return authorization.canWrite
90        }
91
92        public boolean isOwner( User user ) {
93                Auth authorization = auth.find { it.user.equals( user ) }
94               
95                if( !authorization ) 
96                        return false
97               
98                return authorization.isOwner
99        }
100
101}
Note: See TracBrowser for help on using the repository browser.