Changeset 1328

Show
Ignore:
Timestamp:
04-01-11 11:13:45 (3 years ago)
Author:
robert@…
Message:

Added metagenomics module and improved rest controller to give 404 and 401 errors when appropriate

Location:
trunk/grails-app
Files:
3 modified

Legend:

Unmodified
Added
Removed
  • trunk/grails-app/conf/BootStrapStudies.groovy

    r1245 r1328  
    400400                        url: config.modules.metabolomics.url 
    401401                ).with { if (!validate()) { errors.each { println it} } else save()} 
    402  
     402                 
     403                // Add metabolomics assay reference 
     404                def metagenomicsModule = new AssayModule( 
     405                        name: 'Metagenomics module', 
     406                        platform: 'High throughput sequencing', 
     407                        url: config.modules.metagenomics.url 
     408                ).with { if (!validate()) { errors.each { println it} } else save()} 
     409                 
    403410                def lipidAssayRef = new Assay( 
    404411                        name: 'Lipid profiling', 
     
    452459                ).setFieldValue('Spectrometry technique', 'GC/MS') 
    453460 
     461                 
     462                // Add sequencing (metagenomics) assays 
     463                def sequencingAssay16SRef = new Assay( 
     464                        name            : '16S Sequencing assay', 
     465                        template        : ccAssayTemplate, 
     466                        module          : metagenomicsModule, 
     467                        externalAssayID: 'PPSH-SEQ-16S' 
     468                ) 
     469                 
     470                // Add sequencing (metagenomics) assays 
     471                def sequencingAssay18SRef = new Assay( 
     472                        name            : '18S Sequencing assay', 
     473                        template        : ccAssayTemplate, 
     474                        module          : metagenomicsModule, 
     475                        externalAssayID: 'PPSH-SEQ-18S' 
     476                ) 
     477                 
    454478                humanStudy.samples*.each { 
    455479                        if (it.parentEvent.startTime == 0) { 
     
    460484                                glucoseAssayARef.addToSamples(it) 
    461485                                metAssayRefA.addToSamples(it) 
     486                                sequencingAssay16SRef.addToSamples(it) 
     487                                sequencingAssay18SRef.addToSamples(it) 
    462488                        } 
    463489                } 
    464  
     490                 
     491                humanStudy.addToAssays(sequencingAssay16SRef) 
     492                humanStudy.addToAssays(sequencingAssay18SRef) 
    465493                humanStudy.addToAssays(glucoseAssayARef) 
    466494                humanStudy.addToAssays(glucoseAssayBRef) 
  • trunk/grails-app/conf/Config.groovy

    r1323 r1328  
    5959                                url = "http://localhost:8183/nmcdsp" 
    6060                        } 
     61                        metagenomics { 
     62                                url = "http://localhost:8184/metagenomics" 
     63                        } 
    6164                } 
    6265        } 
     
    7174                                url = "http://ci.metabolomics.nmcdsp.org" 
    7275                        } 
     76                        metagenomics { 
     77                                url = "http://ci.metagenomics.nmcdsp.org" 
     78                        }                        
    7379                } 
    7480        } 
  • trunk/grails-app/controllers/RestController.groovy

    r1222 r1328  
    9595         * @return  JSON object list containing 'studyToken', and 'name' (title) for each study 
    9696         * 
     97         * If one study is requested, a 404 error might occur if the study doesn't exist, and a 401 error if the user is not 
     98         * authorized to access this study. If multiple studies are requrested, non-existing studies or studies for which the  
     99         * user is not authorized are not returned in the list (so the list might be empty). 
    97100         * 
    98101         * Example 1. REST call without studyToken.  
     
    134137                } 
    135138                else if( params.studyToken instanceof String ) { 
    136                         studies.push Study.findByCode( params.studyToken )  
     139                        def study = Study.findByCode( params.studyToken )  
     140                        if( study ) { 
     141                                if( !study.canRead(AuthenticationService.getRemotelyLoggedInUser( params.consumer, params.token )) ) { 
     142                                        response.sendError(401) 
     143                                        return false 
     144                                } 
     145                                 
     146                                studies.push study  
     147                        } else { 
     148                                response.sendError(404) 
     149                                return false 
     150                        } 
     151         
    137152                } 
    138153                else {  
    139154                        params.studyToken.each{ studyToken -> 
    140                                 studies.push Study.findByCode( studyToken ) 
    141                         } 
    142                 } 
     155                                def study = Study.findByCode( studyToken ); 
     156                                if( study ) 
     157                                        studies.push study  
     158                        } 
     159                } 
     160                 
    143161 
    144162                studies.each { study -> 
     
    171189         * Provide a list of all subjects belonging to a study. 
    172190         * 
    173          * If the user is not allowed to read the study contents, a 401 error is given 
     191         * If the user is not allowed to read the study contents, a 401 error is given. If the study doesn't exist, a 404 error is given 
    174192         * 
    175193         * @param       studyToken      String The external study id (code) of the target GSCF Study object 
     
    192210 
    193211                                study.subjects.each { subjects.push it.name } 
     212                        } else { 
     213                                response.sendError(404) 
     214                                return false 
    194215                        } 
    195216                } 
     
    203224         * Provide a list of all assays for a given study. 
    204225         * 
    205          * If the user is not allowed to read the study contents, a 401 error is given 
     226         * If the user is not allowed to read the study contents, a 401 error is given. If the study doesn't exist, a 404 error is given 
    206227         * 
    207228         * @param       studyToken      String The external study id (code) of the target GSCF Study object 
     
    297318                                        } 
    298319                                } 
    299                 } 
     320                } else { 
     321                                response.sendError(404) 
     322                                return false 
     323                        } 
    300324 
    301325                } 
     
    313337         * Provide all samples of a given Assay. The result is an enriched list with additional information for each sample. 
    314338         * 
     339         * If the user is not allowed to read the study contents, a 401 error is given. If the assay doesn't exist, a 404 error is given 
     340         *  
    315341         * @param       assayToken      String (assayToken of some Assay in GSCF) 
    316342         * @param       sampleToken Optional parameter. One or more sampleTokens to specify what sample to give exectly.  
     
    370396 
    371397                        if( assay )  { 
     398                                // Check whether the person is allowed to read the data of this study 
     399                                if( !assay.parent.canRead(AuthenticationService.getRemotelyLoggedInUser( params.consumer, params.token ))) { 
     400                                        response.sendError(401) 
     401                                        return false 
     402                                } 
     403                                 
    372404                                def samples = assay.getSamples() // on all samples 
    373405 
     
    427459                                        items.push item  
    428460                                } 
     461                        } else { 
     462                                // Assay not found 
     463                                response.sendError(404) 
     464                                return false 
    429465                        } 
    430466                } 
     
    468504    } 
    469505 
    470  
    471  
    472  
    473  
    474  
    475506}