Ignore:
Timestamp:
Feb 10, 2011, 5:03:02 PM (9 years ago)
Author:
robert@…
Message:

Improved user interface and implemented basic export functionality

Location:
trunk/grails-app/controllers/nl/tno/metagenomics
Files:
1 added
5 edited

Legend:

Unmodified
Added
Removed
  • trunk/grails-app/controllers/nl/tno/metagenomics/AssayController.groovy

    r12 r13  
    1111        def excelService
    1212        def sampleExcelService
     13        def fastaService
    1314
    1415        def index = {
     
    326327        }
    327328       
    328 
     329        /**
     330         * Exports data about one or more assays in fasta format
     331         */
     332        def exportAsFasta = {
     333                def tokens = params.list( 'tokens' );
     334                def ids = params.list( 'ids' );
     335                def name;
     336               
     337                ids = ids.findAll { it.isLong() }.collect { Long.parseLong( it ) }
     338               
     339                if( !tokens && !ids ) {
     340                        def message = "No assay tokens or ids given"
     341                        response.setStatus( 400, message)
     342                        render message;
     343                        return;
     344                }
     345                               
     346                def assaySamples = [];
     347               
     348                // Determine which assaySamples to export
     349                def assay;
     350                tokens.each { token ->
     351                        assay = Assay.findByAssayToken( token );
     352                        if( assay )
     353                                assaySamples += assay.assaySamples
     354                }
     355                ids.each { id ->
     356                        assay = Assay.get( id );
     357                        if( assay )
     358                                assaySamples += assay.assaySamples
     359                }
     360
     361                if( ( ids.size() + tokens.size() ) == 1 && assay )
     362                        name = "Assay_" + assay?.name?.replace( ' ', '_' );
     363                else
     364                        name = "assays";
     365                       
     366                // Export the sequences and quality scores
     367                response.setHeader "Content-disposition", "attachment; filename=" + name.trim() + ".zip"
     368                try {
     369                        fastaService.export( assaySamples.unique(), response.getOutputStream(), name );
     370                        response.outputStream.flush();
     371                } catch( Exception e ) {
     372                        log.error( "Exception occurred during export of sequences. Probably the user has cancelled the download." );
     373                }
     374        }
    329375}
  • trunk/grails-app/controllers/nl/tno/metagenomics/RunController.groovy

    r12 r13  
    99        def synchronizationService
    1010        def sampleExcelService
     11        def fastaService
    1112
    1213        def index = {
     
    2526                // Make sure the newest data is available
    2627                synchronizationService.sessionToken = session.sessionToken
    27                 synchronizationService.synchronizeStudies();
     28                synchronizationService.user = session.user
     29                try {
     30                        synchronizationService.synchronizeStudies();
     31                } catch( Exception e ) {
     32                        log.error "Exception occurred during synchronization in " + params.controller + ": " + e.getMessage()
     33                        redirect( url: synchronizationService.gscfService.urlAuthRemote(params, session.sessionToken) )
     34                }
    2835
    2936                // Determine runs not used in this assay
     
    445452        }
    446453
     454        /**
     455         * Exports data about one or more runs in fasta format
     456         */
     457        def exportAsFasta = {
     458                def ids = params.list( 'ids' );
     459
     460                ids = ids.findAll { it.isLong() }.collect { Long.parseLong( it ) }
     461
     462                if( !ids ) {
     463                        def message = "No run ids given"
     464                        response.setStatus( 400, message)
     465                        render message;
     466                        return;
     467                }
     468
     469                def assaySamples = [];
     470                def name
     471
     472                if( ids.size() == 1 )
     473                        name = "Run_" + Run.get( ids[ 0 ] )?.name?.replace( ' ', '_' );
     474                else
     475                        name = "runs";
     476
     477                // Determine which assaySamples to export
     478                ids.each { id ->
     479                        def run = Run.get( id );
     480                        if( run )
     481                                assaySamples += run.assaySamples
     482                }
     483
     484                // Export the sequences and quality scores
     485                response.setHeader "Content-disposition", "attachment; filename=${name}.zip"
     486                try {
     487                        fastaService.export( assaySamples.unique(), response.getOutputStream(), name );
     488                        response.outputStream.flush();
     489                } catch( Exception e ) {
     490                        log.error( "Exception occurred during export of sequences. Probably the user has cancelled the download." );
     491                }
     492        }
     493
    447494
    448495        /**
  • trunk/grails-app/controllers/nl/tno/metagenomics/StudyController.groovy

    r12 r13  
    2020                        lastSynchronized: synchronizationService.lastFullSynchronization ]
    2121        }
     22       
     23        def exportAsExcel = {
     24                render "To be implemented"
     25        }
    2226
    2327}
  • trunk/grails-app/controllers/nl/tno/metagenomics/integration/ActionController.groovy

    r12 r13  
    33
    44class ActionController {
    5         def fastaService
    6        
    7         /**
    8          * Exports data in fasta format
    9          */
    10         def fasta = {
    11                 def entity = params.entity;
    12                 def tokens = params.tokens;
    13                
    14                 if( !tokens ) {
    15                         def message = "No entity tokens given"
    16                         response.setStatus( 400, message)
    17                         render message;
    18                         return;
    19                 }
    20                
    21                 if( tokens instanceof String )
    22                         tokens = [tokens]
    23                
    24                 def assaySamples = [];
    25                 def name = "testfile";
    26                
    27                 switch( params.entity ) {
    28                         case "Study":
    29                                 // Determine which assaySamples to export
    30                                 tokens.each { token ->
    31                                         def study = Study.findByStudyToken( token );
    32                                         if( study )
    33                                                 assaySamples += study.assay*.assaySamples.flatten()
    34                                 }
    35                                 break;
    36                         case "Assay":
    37                                 // Determine which assaySamples to export
    38                                 tokens.each { token ->
    39                                         def assay = Assay.findByAssayToken( token );
    40                                         if( assay )
    41                                                 assaySamples += assay.assaySamples
    42                                 }
    43                                 break;
    44                         case "Sample":
    45                                 // Determine which assaySamples to export
    46                                 tokens.each { token ->
    47                                         def sample = Sample.findBySampleToken( token );
    48                                         if( sample )
    49                                                 assaySamples += sample.assaySamples
    50                                 }
    51                                 break;
    52                         default:
    53                                 def message = "Specified entity can't be handled by this module."
    54                                 response.setStatus( 400, message)
    55                                 render message;
    56                                 return;
    57                 }
    58                
    59                 // Export the sequences and quality scores
    60                 response.setHeader "Content-disposition", "attachment; filename=${name}.zip"
    61                 fastaService.export( assaySamples.unique(), response.getOutputStream(), name );
    62                 response.outputStream.flush();
    63         }
     5
    646}
  • trunk/grails-app/controllers/nl/tno/metagenomics/integration/RestController.groovy

    r12 r13  
    373373                        switch( entity ) {
    374374                                case "Study":
    375                                         actions[ entity ] = [ [ name: "excel", description: "Export as excel" ] ]
     375                                        actions[ entity ] = [ [ name: "excel", description: "Export as excel", url: createLink( controller: "study", action: "exportAsExcel", absolute: true ) ] ]
    376376                                        break;
    377377                                case "Assay":
    378                                         actions[ entity ] = [ [ name: "fasta", description: "Export as fasta" ] ]
     378                                        actions[ entity ] = [ [ name: "fasta", description: "Export as fasta", url: createLink( controller: "assay", action: "exportAsFasta", absolute: true ) ] ]
    379379                                        break;
    380380                                case "Sample":
    381                                         actions[ entity ] = [ [ name: "fasta", description: "Export as fasta" ] ]
     381                                        actions[ entity ] = [ [ name: "fasta", description: "Export as fasta", url: createLink( controller: "sample", action: "exportAsFasta", absolute: true ) ] ]
    382382                                        break;
    383383                                default:
Note: See TracChangeset for help on using the changeset viewer.