source: trunk/grails-app/controllers/nl/tno/massSequencing/FastaController.groovy @ 63

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

Improved querying (#40)

  • Removed continuous synchronization while importing data
  • Added action buttons to search result screen
  • Implemented authorization checks while searching
File size: 2.3 KB
Line 
1package nl.tno.massSequencing
2
3import org.codehaus.groovy.grails.commons.ConfigurationHolder
4import org.hibernate.SessionFactory
5import grails.converters.*;
6
7class FastaController {
8        def fileService
9        def fastaService
10        def sessionFactory
11       
12        def deleteData = { 
13                // load study with id specified by param.id
14                def sequenceData
15               
16                try {
17                        sequenceData = SequenceData.get(params.id as Long)
18                } catch( Exception e ) {}
19
20                if (!sequenceData) {
21                        flash.error = "No sequencedata found with id: $params.id"
22                        redirect( controller: 'study' )
23                        return
24                }
25
26                def entityId
27                def entityType
28               
29                switch( params.entityType ) {
30                        case "run":
31                                entityId = sequenceData.sample.run?.id;
32                                entityType = "run"
33                                break;
34                        case "assay":
35                        default:
36                                entityType = "assay";
37                                entityId = sequenceData.sample.assay.id;
38                                break;
39                }
40                 
41                def numFiles = sequenceData.numFiles();
42                def sample = sequenceData.sample;
43                 
44                // Set flushmode to auto, since otherwise the sequencedata will
45                // not be removed
46                sessionFactory.getCurrentSession().setFlushMode( org.hibernate.FlushMode.AUTO );
47               
48                sample.removeFromSequenceData( sequenceData );
49                sequenceData.delete(flush:true);
50                sample.resetStats();
51                sample.save();
52               
53                // Recalculate the number of sequences for this sample
54                AssaySample.recalculateNumSequences( sample );
55               
56                flash.message = numFiles + " file" + (numFiles != 1 ? "s have" : " has" ) + " been deleted from this sample"
57
58                redirect( controller: entityType, action: 'show', id: entityId )
59        }
60       
61        protected Assay getAssay(def assayId) {
62                // load assay with id specified by param.id
63                def assay
64                try {
65                        assay = Assay.get(assayId as Long)
66                } catch( Exception e ) {
67                        flash.error = "Incorrect id given: " + assayId
68                        return null
69                }
70
71                if (!assay) {
72                        flash.error = "No assay found with id: " + assayId
73                        return null
74                }
75               
76                if (!assay.study.canRead( session.user ) ) {
77                        flash.error = "You don't have the right authorizaton to access assay " + assay.name
78                        return null
79                }
80               
81                return assay
82        }
83       
84        protected Run getRun(def runId) {
85                // load run with id specified by param.id
86                def run
87                try {
88                        run = Run.get(runId as Long)
89                } catch( Exception e ) {
90                        flash.error = "Incorrect id given: " + runId
91                        return null
92                }
93
94                if (!run) {
95                        flash.error = "No run found with id: " + runId
96                        return null
97                }
98
99                return run
100        }
101}
Note: See TracBrowser for help on using the repository browser.