Ignore:
Timestamp:
Jun 17, 2011, 1:54:56 PM (8 years ago)
Author:
robert@…
Message:
  • Installed templates (in order to extend session lifetime to 2 hours)
  • Implemented background worker to do work outside the HTTP request
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/grails-app/controllers/nl/tno/massSequencing/SampleController.groovy

    r55 r70  
    1414
    1515        /**
    16         * Exports data about one or more studies in fasta format
    17         */
    18    def exportAsFasta = {
    19            def assaySamples = getAssaySamples( params );
    20            def name
     16         * Exports data about one or more studies in fasta format
     17         */
     18        def exportAsFasta = {
     19                def assaySamples = getAssaySamples( params );
     20                def name
    2121
    22            if( assaySamples == null ) {
    23                    return
    24            } else if( assaySamples*.sample.unique().size() == 1 ) {
    25                    name = "Sample_" + assaySamples[0].sample.name?.replace( ' ', '_' );
    26            } else {
    27                    name = "samples";
    28            }
     22                if( assaySamples == null ) {
     23                        return
     24                } else if( assaySamples*.sample.unique().size() == 1 ) {
     25                        name = "Sample_" + assaySamples[0].sample.name?.replace( ' ', '_' );
     26                } else {
     27                        name = "samples";
     28                }
    2929
    30            // Export the sequences and quality scores
    31            response.setHeader "Content-disposition", "attachment; filename=" + name.trim() + ".zip"
    32            try {
    33                    fastaService.export( assaySamples.unique(), response.getOutputStream() );
    34                    response.outputStream.flush();
    35            } catch( Exception e ) {
    36                    log.error( "Exception occurred during export of sequences. Probably the user has cancelled the download." );
     30                // Start the export in the background
     31                def returnUrl = params.url ? params.url.toString() : createLink( controller: "run" ).toString()
     32                def finishUrl = createLink( controller: "assaySample", action: 'downloadFasta', params: [ processId: '%s' ] ).toString();
     33                def url = fastaService.startExportProcess( assaySamples, session, name, returnUrl, finishUrl )
     34               
     35                // Show a waiting screen
     36                redirect( url: url );
     37        }
     38
     39        /**
     40         * Export metadata of one or more studies in excel format
     41         */
     42        def exportMetaData = {
     43                def assaySamples = getAssaySamples( params );
     44                def name
     45
     46                if( assaySamples == null ) {
     47                        return
     48                } else if( assaySamples*.sample.unique().size() == 1 ) {
     49                        name = "Sample_" + assaySamples[0].sample.name?.replace( ' ', '_' );
     50                } else {
     51                        name = "samples";
     52                }
     53
     54                // Export the metadata
     55                response.setHeader "Content-disposition", "attachment; filename=${name}.xls"
     56                try {
     57                        // The export functionality needs a assaySample-tag list, but it
     58                        // should be empty when only exporting metadata
     59                        def tags = [];
     60                        assaySamples.unique().each { assaySample ->
     61                                tags << [assaySampleId: assaySample.id, sampleName: assaySample.sample.name, assayName: assaySample.assay.name, studyName: assaySample.assay.study.name, tag: "-"]
     62                        }
     63
     64                        sampleExcelService.sessionToken = session.sessionToken
     65
     66                        sampleExcelService.exportExcelSampleData( assaySamples.unique(), tags, response.getOutputStream() );
     67                        response.outputStream.flush();
     68                } catch( Exception e ) {
     69                        log.error( "Exception occurred during export of metadata. Probably the user has cancelled the download." );
    3770                        e.printStackTrace();
    38            }
    39    }
     71                }
     72        }
    4073
    41    /**
    42         * Export metadata of one or more studies in excel format
    43         */
    44    def exportMetaData = {
    45            def assaySamples = getAssaySamples( params );
    46            def name
    4774
    48            if( assaySamples == null ) {
    49                    return
    50            } else if( assaySamples*.sample.unique().size() == 1 ) {
    51                    name = "Sample_" + assaySamples[0].sample.name?.replace( ' ', '_' );
    52            } else {
    53                    name = "samples";
    54            }
    5575
    56            // Export the metadata
    57            response.setHeader "Content-disposition", "attachment; filename=${name}.xls"
    58            try {
    59                    // The export functionality needs a assaySample-tag list, but it
    60                    // should be empty when only exporting metadata
    61                    def tags = [];
    62                    assaySamples.unique().each { assaySample ->
    63                            tags << [assaySampleId: assaySample.id, sampleName: assaySample.sample.name, assayName: assaySample.assay.name, studyName: assaySample.assay.study.name, tag: "-"]
    64                    }
    65                    sampleExcelService.exportExcelSampleData( assaySamples.unique(), tags, response.getOutputStream() );
    66                    response.outputStream.flush();
    67            } catch( Exception e ) {
    68                    log.error( "Exception occurred during export of metadata. Probably the user has cancelled the download." );
    69                    e.printStackTrace();
    70            }
    71    }
    72                
    73        
    74        
    75                
     76
    7677        /**
    7778         * Parse the given parameters and try to extract assaysamples using ids and tokens of samples
     
    115116        }
    116117
    117        
     118
    118119}
Note: See TracChangeset for help on using the changeset viewer.