Changeset 1328


Ignore:
Timestamp:
Jan 4, 2011, 11:13:45 AM (6 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 edited

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}
Note: See TracChangeset for help on using the changeset viewer.