source: trunk/grails-app/controllers/nl/tno/metagenomics/integration/TrashController.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: 2.6 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                println "Restore To: " + restoreSample
56                println "Original Sample: " + originalSample
57                trashService.restoreSample( restoreSample, originalSample );
58                restoreSample.sample?.delete();
59                restoreSample.delete();
60
61                flash.message = "Given sample has been restored in sample " + originalSample.sample.name
62                redirect( action: "index" );
63        }
64
65        /**
66         * Deletes an assay forever from trash
67         */
68        def deleteAssay = {
69                def entity = Assay.get( params.id as Long );
70                def name
71               
72                if( entity ) {
73                        name = entity.name;
74                       
75                        // Also delete all samples referenced by this assay, since samples in trash
76                        // are only referenced by one assay
77                        entity.assaySamples?.each {
78                                if( it.sample ) 
79                                        it.sample.delete();
80                        }
81                       
82                        entity.delete();
83                        flash.message = "Assay " + name + " has been deleted from trash";
84                } else {
85                        flash.error = "Given error could not be found.";
86                }
87               
88                redirect( action: 'index' );
89        }
90       
91        /**
92         * Deletes a sample forever from trash
93         */
94        def deleteSample = {
95                def entity = AssaySample.get( params.id as Long );
96                def name
97
98                if( entity ) {
99                        name = entity.sample.name;
100                        entity.sample.delete();
101                        entity.delete();
102                        flash.message = "Sample " + name + " has been deleted from trash";
103                } else {
104                        flash.error = "Given sample could not be found.";
105                }
106                redirect( action: 'index' );
107        }
108}
Note: See TracBrowser for help on using the repository browser.