source: trunk/grails-app/controllers/nl/tno/metagenomics/SampleController.groovy @ 13

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

Improved user interface and implemented basic export functionality

File size: 1.1 KB
Line 
1package nl.tno.metagenomics
2
3import org.codehaus.groovy.grails.commons.ConfigurationHolder
4
5class SampleController {
6        def fastaService
7
8        def index = {
9                redirect( controller: 'study' );
10        }
11       
12        /**
13         * Exports data about one or more samples in fasta format
14         */
15        def exportAsFasta = {
16                def tokens = params.list( 'tokens' );
17                def ids = params.list( 'ids' );
18               
19                ids = ids.findAll { it.isLong() }.collect { Long.parseLong( it ) }
20               
21                if( !tokens && !ids ) {
22                        def message = "No sample tokens or ids given"
23                        response.setStatus( 400, message)
24                        render message;
25                        return;
26                }
27               
28                def assaySamples = [];
29                def name = "samples";
30               
31                // Determine which assaySamples to export
32                tokens.each { token ->
33                        def sample = Sample.findBySampleToken( token );
34                        if( sample )
35                                assaySamples += sample.assaySamples
36                }
37                ids.each { id ->
38                        def sample = Sample.get( id );
39                        if( sample )
40                                assaySamples += sample.assaySamples
41                }
42               
43                // Export the sequences and quality scores
44                response.setHeader "Content-disposition", "attachment; filename=${name}.zip"
45                fastaService.export( assaySamples.unique(), response.getOutputStream(), name );
46                response.outputStream.flush();
47        }
48}
Note: See TracBrowser for help on using the repository browser.