source: trunk/grails-app/domain/nl/tno/metagenomics/Assay.groovy @ 7

Last change on this file since 7 was 7, checked in by robert@…, 9 years ago
  • Created tests for the synchronization and trash
  • Improved synchronizationservice and trash
  • Put authorization checks in several pages
File size: 1.6 KB
Line 
1package nl.tno.metagenomics
2
3/**
4 * Minimal representation of an assay. The studyToken is the link with an assay object in GSCF.
5 *
6 * @see GscfService.getAssay
7 */
8class Assay {
9        String assayToken
10        String name
11       
12        static belongsTo = [ study: Study ]
13        static hasMany   = [ assaySamples: AssaySample, runs: Run ]
14        static mapping = {
15                columns {
16                        assayToken index:'assaytoken_idx'
17                }
18                assaySamples cascade: "all-delete-orphan"
19        }
20       
21        static constraints = {
22                assayToken(unique:true)
23        }
24       
25        /**
26         * Removes all assay samples from this assay
27         */
28        public void removeAssaySamples() {
29                if( assaySamples == null ) 
30                        return
31                       
32                def assaySamples = assaySamples.toArray();
33                def numAssaySamples = assaySamples.size();
34                for( int i = numAssaySamples - 1; i >= 0; i-- ) {
35                        def existingSample = assaySamples[i];
36                       
37                        // Delete the sample and also the association
38                        existingSample.delete()
39                        removeFromAssaySamples( existingSample );
40                }
41        }
42       
43        /**
44         * Returns the total number of sequences found in this assay. It is computed
45         * as the sum of the number of sequences of all samples
46         * @return
47         */
48        public int numSequences() {
49                if( !assaySamples )
50                        return 0
51               
52                int numSequences = 0;
53                assaySamples.each { numSequences += it.numSequences() } 
54
55                return numSequences; 
56        }
57
58        /**
59         * Returns the total number of files in the system, belonging to this assay.
60         * It is computed as the sum of the number of files of all samples
61         * @return
62         */
63        public int numFiles() {
64                if( !assaySamples )
65                        return 0
66               
67                int numFiles = 0;
68                assaySamples.each { numFiles += it.numFiles() }
69               
70                return numFiles; 
71        }       
72}
Note: See TracBrowser for help on using the repository browser.