source: trunk/grails-app/controllers/nl/tno/metagenomics/integration/TrashController.groovy @ 12

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

Implemented basic exporting functionality

File size: 2.5 KB
Line 
1package nl.tno.metagenomics.integration
2
3import nl.tno.metagenomics.*;
4
5class TrashController {
6        def trashService
7
8        // Show an overview of data in the trash
9        def index = {
10                // First clean the trash
11                trashService.cleanTrash()
12
13                def trashstudies = Study.findAllByTrashcan( true );
14                def studies = Study.list() - trashstudies
15
16                [studies: studies, trashStudies: trashstudies]
17        }
18
19        def restoreAssay = {
20                def restoreAssay
21                def originalAssay
22               
23                try {
24                        restoreAssay = Assay.get( params.id as long );
25                        originalAssay = Assay.get( params.restoreTo as long );
26                } catch( Exception e ) {
27                        flash.error = "One or both of the given assays could not be found.";
28                        redirect( action: "index" );
29                }
30               
31                // Restore this assay
32                trashService.restoreAssay( restoreAssay, originalAssay );
33               
34                restoreAssay.assaySamples?.each {
35                        if( it.sample )
36                                it.sample.delete();
37                }
38               
39                restoreAssay.delete(flush:true);
40               
41                flash.message = "Given assay has been restored in assay " + originalAssay.name
42                redirect( action: "index" );
43        }
44       
45        def restoreSample = {
46                def restoreSample
47                def originalSample
48                try {
49                        restoreSample = AssaySample.get( params.id as long );
50                        originalSample = AssaySample.get( params.restoreTo as long );
51                } catch( Exception e ) {
52                        flash.error = "One or both of the given samples could not be found.";
53                        redirect( action: "index" );
54                }
55
56                trashService.restoreSample( restoreSample, originalSample );
57                restoreSample.sample?.delete();
58                restoreSample.delete();
59
60                flash.message = "Given sample has been restored in sample " + originalSample.sample.name
61                redirect( action: "index" );
62        }
63
64        /**
65         * Deletes an assay forever from trash
66         */
67        def deleteAssay = {
68                def entity = Assay.get( params.id as Long );
69                def name
70               
71                if( entity ) {
72                        name = entity.name;
73                       
74                        // Also delete all samples referenced by this assay, since samples in trash
75                        // are only referenced by one assay
76                        entity.assaySamples?.each {
77                                if( it.sample ) 
78                                        it.sample.delete();
79                        }
80                       
81                        entity.delete();
82                        flash.message = "Assay " + name + " has been deleted from trash";
83                } else {
84                        flash.error = "Given error could not be found.";
85                }
86               
87                redirect( action: 'index' );
88        }
89       
90        /**
91         * Deletes a sample forever from trash
92         */
93        def deleteSample = {
94                def entity = AssaySample.get( params.id as Long );
95                def name
96
97                if( entity ) {
98                        name = entity.sample.name;
99                        entity.sample.delete();
100                        entity.delete();
101                        flash.message = "Sample " + name + " has been deleted from trash";
102                } else {
103                        flash.error = "Given sample could not be found.";
104                }
105                redirect( action: 'index' );
106        }
107}
Note: See TracBrowser for help on using the repository browser.