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

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

Implemented importing of classifications

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