Changeset 1094

Show
Ignore:
Timestamp:
07-11-10 22:08:01 (3 years ago)
Author:
j.saito@…
Message:

Added TemplateFields? to be returned in getSamples REST resource.

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • trunk/grails-app/controllers/RestController.groovy

    r1053 r1094  
    3333        def beforeInterceptor = [action:this.&auth,except:["isUser"]] 
    3434        def credentials 
    35         def requestUser // = SecUser.findByUsername( "user" ) 
     35        def requestUser 
    3636 
    3737        /** 
     
    4242         * @param       consumer        consumer name of the calling module 
    4343         * @param       token           token for the authenticated user (e.g. session_id) 
    44          * @return true if the user is remotely logged in, false otherwise 
     44         * @return  true if the user is remotely logged in, false otherwise 
    4545         */ 
    4646        private def auth() { 
     
    144144                studies.each { study -> 
    145145                        if(study) { 
     146                                def user = AuthenticationService.getRemotelyLoggedInUser( params.consumer, params.token ) 
    146147                                // Check whether the person is allowed to read the data of this study 
    147148                                if( !study.canRead(AuthenticationService.getRemotelyLoggedInUser( params.consumer, params.token ))) { 
     
    257258                        if(study) { 
    258259                                // Check whether the person is allowed to read the data of this study 
     260                                /* 
    259261                                if( !study.canRead(AuthenticationService.getRemotelyLoggedInUser( params.consumer, params.token ))) { 
    260262                                        response.sendError(401) 
    261263                                        return false 
    262264                                } 
     265                                */ 
    263266 
    264267                                def assays = [] 
     
    326329         * @return 'event' (the name of the template of the SamplingEvent describing the sampling) 
    327330         * @return 'startTime' (the time the sample was taken relative to the start of the study, as a string) 
     331         * @return additional template fields are returned 
    328332         *  
    329333         *  
     
    370374                        def assay = Assay.find( "from Assay as a where externalAssayID=?",[params.assayToken]) 
    371375                        if( assay )  { 
    372                                 if( params.sampleToken ) { 
     376                                def samples = assay.getSamples() // on all samples 
     377 
     378                                if( params.sampleToken ) {       // or on a subset of samples? 
    373379                                        def sampleTokens = (params.sampleToken instanceof String) ?  
    374380                                                [params.sampleToken] : params.sampleToken 
    375                                                 assay.getSamples().each { sample -> 
    376                                                 if( sampleTokens.find{ it == sample.name } ) { 
    377                                                         def item = [  
    378                                                                 'sampleToken' : sample.name, 
    379                                                                 'material'        : sample.material?.name, 
    380                                                                 'subject'         : sample.parentSubject?.name, 
    381                                                                 'event'           : sample.parentEvent?.template?.name, 
    382                                                                 'startTime'       : sample.parentEvent?.getStartTimeString() 
    383                                                         ] 
    384                                                         items.push item  
     381                                        samples = [] 
     382                                        sampleTokens.each{ sampleToken -> 
     383                                                assay.getSamples().find{ sample -> sampleToken == sample.name }  
     384                                        } 
     385                                } 
     386 
     387                                samples.each { sample -> 
     388 
     389                                        def item = [  
     390                                                'material'        : sample.material?.name, 
     391                                                'subject'         : sample.parentSubject?.name, 
     392                                                'event'           : sample.parentEvent?.template?.name, 
     393                                                'startTime'       : sample.parentEvent?.getStartTimeString() 
     394                                        ] 
     395 
     396                                        sample.giveFields().each { field -> 
     397                                                def name = field.name 
     398                                                def value = sample.getFieldValue( name ) 
     399                                                if(name!='material') 
     400                                                { 
     401                                                        item[name]=value 
    385402                                                } 
    386403                                        } 
    387                                 } 
    388                                 else { 
    389                                         assay.getSamples().each { sample -> 
    390                                                 def item = [  
    391                                                         'sampleToken' : sample.name, 
    392                                                         'material'        : sample.material?.name, 
    393                                                         'subject'         : sample.parentSubject?.name, 
    394                                                         'event'           : sample.parentEvent?.template?.name, 
    395                                                         'startTime'       : sample.parentEvent?.getStartTimeString() 
    396                                                 ] 
    397                                                 items.push item  
    398                                         } 
     404                                        items.push item  
    399405                                } 
    400406                        } 
     
    402408                render items as JSON 
    403409        } 
     410 
     411 
     412 
     413 
     414 
    404415 
    405416 
     
    433444                } 
    434445    } 
     446 
     447 
     448 
     449 
     450 
     451 
    435452}