Ignore:
Timestamp:
Mar 30, 2012, 5:17:57 PM (11 years ago)
Author:
work@…
Message:
  • implemented getAssayData api call
File:
1 edited

Legend:

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

    r2199 r2200  
    1919import dbnp.studycapturing.Study
    2020import dbnp.studycapturing.Assay
    21 import dbnp.authentication.SecUser
    22 import org.dbnp.gdt.TemplateFieldType
    2321
    2422class ApiController {
    2523    def authenticationService
    26     def moduleCommunicationService
    27     def ApiService
     24    def apiService
    2825
    2926        /**
     
    3936
    4037        // see if we already have a token on file for this device id
    41         def token = Token.findByDeviceID(params?.deviceID)
     38        String deviceID = (params.containsKey('deviceID')) ? params.deviceID : ''
     39        def token = Token.findByDeviceID(deviceID)
    4240       
    4341        // generate a new token if we don't have a token on file
     
    281279        }
    282280    }
     281
     282    def getDataForAssay = {
     283        println "api:getDataForAssay: ${params}"
     284
     285        String deviceID     = (params.containsKey('deviceID')) ? params.deviceID : ''
     286        String validation   = (params.containsKey('validation')) ? params.validation : ''
     287        String assayToken   = (params.containsKey('assayToken')) ? params.assayToken : ''
     288
     289        // fetch user and study
     290        def user    = Token.findByDeviceID(deviceID)?.user
     291        def assay   = Assay.findByAssayUUID(assayToken)
     292
     293        // check
     294        if (!apiService.validateRequest(deviceID,validation)) {
     295            response.sendError(401, 'Unauthorized')
     296        } else if (!assay) {
     297            response.sendError(400, 'No such assay')
     298        } else if (!assay.parent.canRead(user)) {
     299            response.sendError(401, 'Unauthorized')
     300        } else {
     301            // fetch data from model
     302//            def measurements =
     303            // define sample measurement data matrix
     304
     305            def matrix = [:]
     306            def measurements    = apiService.getMeasurements(assay, user)
     307            def measurementData = apiService.getMeasurementData(assay, user)
     308
     309            // iterate through measurementData and build data matrix
     310            measurementData.each { data ->
     311                if (!matrix.containsKey(data.sampleToken)) matrix[ data.sampleToken ] = [:]
     312                matrix[ data.sampleToken ][ data.measurementToken ] = data.value
     313            }
     314
     315            // define result
     316            def result = [
     317                    'measurements'  : apiService.getMeasurements(assay, user),
     318                    'matrix'        : matrix
     319            ]
     320
     321            // set output headers
     322            response.status = 200
     323            response.contentType = 'application/json;charset=UTF-8'
     324
     325            if (params.containsKey('callback')) {
     326                render "${params.callback}(${result as JSON})"
     327            } else {
     328                render result as JSON
     329            }
     330        }
     331    }
    283332}
Note: See TracChangeset for help on using the changeset viewer.