source: trunk/grails-app/controllers/nl/tno/metagenomics/RunController.groovy @ 4

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

Implemented trash in order to prevent deletion of data

File size: 2.7 KB
Line 
1package nl.tno.metagenomics
2
3import java.util.Date;
4
5import org.codehaus.groovy.grails.commons.ConfigurationHolder
6
7class RunController {
8        def fileService
9       
10        /** 
11         * Shows information about this run in dialog style
12         */
13        def show = {
14                Run run = Run.get( params.id as long );
15                Assay assay = Assay.get( params.assayId as long );
16               
17                if( !run ) {
18                        render "Run not found";
19                        return
20                }
21               
22                if( !assay ) { 
23                        render "Assay not found";
24                        return
25                }
26               
27                [assay: assay, run: run]
28        }
29       
30        /**
31         * Shows a form to edit the specified run in dialog mode
32         */
33        def editForm = {
34                Run run = Run.get( params.id as long );
35                Assay assay = Assay.get( params.assayId as long );
36               
37                if( !run ) {
38                        render "Run not found";
39                        return
40                }
41               
42                if( !assay ) {
43                        render "Assay not found";
44                        return
45                }
46               
47                [assay: assay, run: run]
48        }
49       
50    def create = { 
51                Assay a = Assay.get( params.id as long );
52
53                // Create run based on given parameters
54                Run run = new Run();
55               
56                run.setPropertiesFromForm( params );
57
58                a.addToRuns( run );
59
60                if( !run.save() ) {
61                        flash.message = "Run could not be saved: " + run.getErrors();
62                } else {
63                        flash.message = "Run " + run.name + " has been added to the system."
64                }
65
66                redirect( controller: "assay", action: "show", id: params.id )
67        }
68       
69        def update = {
70                if( !params.assayId ) {
71                        flash.error = "No assay id given"
72                        redirect(controller: 'assay', action: 'errorpage')
73                        return
74                }
75                def assay = Assay.get(params.assayId as Long)
76               
77                // load run with id specified by param.id
78                if (!assay) {
79                        flash.message = "No assay found with id: ${params.assayId}"
80                        redirect(controller: 'assay', 'action': 'errorPage')
81                        return
82                }
83
84
85                def run
86
87                try {
88                        run = Run.get( params.id as Long );
89                } catch( Exception e ) {
90                        throw e
91                        flash.message = "Incorrect run id given: "
92                        redirect(controller: 'assay', action: 'show', id: params.assayId)
93                        return
94                }
95
96                // Set properties to the run
97                params.parameterFile = params.editParameterFile
98                run.setPropertiesFromForm( params );
99
100                if( run.save() ) {
101                        flash.message = "Run succesfully saved";
102                } else {
103                        flash.error = "Run could not be saved: " + run.getErrors();
104                }
105
106                redirect( controller: 'assay', action: 'show', id: params.assayId)
107        }
108       
109        def delete = {
110                Run run = Run.get( params.id as long );
111
112                // Don't remove runs for which data exists
113                if( run.sequenceData?.size() ) {
114                        flash.message = "Run could not be deleted because samples are associated with it.";
115                        redirect( controller: "assay", action: "show", id: params.assayId )
116                }
117               
118                // Remove all associations
119                run.assays.each {
120                        run.removeFromAssays( it );
121                }
122               
123                def name = run.name
124                run.delete();
125                flash.message = "Run " + name + " has been deleted from the system."
126
127                redirect( controller: "assay", action: "show", id: params.assayId )
128               
129        }
130}
Note: See TracBrowser for help on using the repository browser.