Changeset 2201


Ignore:
Timestamp:
Mar 30, 2012, 6:48:32 PM (10 years ago)
Author:
work@…
Message:
  • implemented getMeasurementDataForAssay api call
Location:
trunk/grails-app
Files:
3 edited

Legend:

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

    r2200 r2201  
    242242    }
    243243
    244     def getAssayData = {
    245         println "api:getAssayData: ${params}"
     244    def getMeasurementDataForAssay = {
     245        println "api:getMeasurementDataForAssay: ${params}"
    246246
    247247        String deviceID     = (params.containsKey('deviceID')) ? params.deviceID : ''
     
    261261            response.sendError(401, 'Unauthorized')
    262262        } else {
    263             // define result
    264             def result = [
    265                 'measurements'  : apiService.getMeasurements(assay, user),
    266                 'data'          : apiService.getMeasurementData(assay, user),
    267                 'metaData'      : apiService.getMeasurementMetaData(assay, user)
    268             ]
    269 
    270             // set output headers
    271             response.status = 200
    272             response.contentType = 'application/json;charset=UTF-8'
    273 
    274             if (params.containsKey('callback')) {
    275                 render "${params.callback}(${result as JSON})"
    276             } else {
    277                 render result as JSON
    278             }
    279         }
    280     }
    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 =
    303263            // define sample measurement data matrix
    304 
    305264            def matrix = [:]
    306             def measurements    = apiService.getMeasurements(assay, user)
    307             def measurementData = apiService.getMeasurementData(assay, user)
     265            def measurementData     = apiService.getMeasurementData(assay, user)
     266            def measurementMetaData = apiService.getMeasurementData(assay, user)
    308267
    309268            // iterate through measurementData and build data matrix
     
    315274            // define result
    316275            def result = [
     276                'count'         : matrix.size(),
     277                'measurements'  : matrix
     278            ]
     279
     280            // set output headers
     281            response.status = 200
     282            response.contentType = 'application/json;charset=UTF-8'
     283
     284            if (params.containsKey('callback')) {
     285                render "${params.callback}(${result as JSON})"
     286            } else {
     287                render result as JSON
     288            }
     289        }
     290    }
     291
     292    // ---- debugging -----
     293
     294    def debugModuleDataForAssay = {
     295        println "api:debugModuleDataForAssay: ${params}"
     296
     297        String deviceID     = (params.containsKey('deviceID')) ? params.deviceID : ''
     298        String validation   = (params.containsKey('validation')) ? params.validation : ''
     299        String assayToken   = (params.containsKey('assayToken')) ? params.assayToken : ''
     300
     301        // fetch user and study
     302        def user    = Token.findByDeviceID(deviceID)?.user
     303        def assay   = Assay.findByAssayUUID(assayToken)
     304
     305        // check
     306        if (!apiService.validateRequest(deviceID,validation)) {
     307            response.sendError(401, 'Unauthorized')
     308        } else if (!assay) {
     309            response.sendError(400, 'No such assay')
     310        } else if (!assay.parent.canRead(user)) {
     311            response.sendError(401, 'Unauthorized')
     312        } else {
     313            // define result
     314            def result = [
    317315                    'measurements'  : apiService.getMeasurements(assay, user),
    318                     'matrix'        : matrix
     316                    'data'          : apiService.getMeasurementData(assay, user),
     317                    'metaData'      : apiService.getMeasurementMetaData(assay, user)
    319318            ]
    320319
  • trunk/grails-app/services/api/ApiService.groovy

    r2200 r2201  
    1818import dbnp.studycapturing.Assay
    1919import dbnp.authentication.SecUser
     20import grails.converters.JSON
    2021
    2122class ApiService implements Serializable {
     
    3334     */
    3435    def validateRequest(String deviceID, String validation) {
    35         return true
    36 
    3736        // disable validation check on development and ci
    3837        if (['development', 'ci'].contains(grails.util.GrailsUtil.environment)) {
     
    117116                user
    118117        );
     118        println json.class
    119119
    120120        return json
     
    140140        def serviceURL = "${assay.module.url}/rest/getMeasurementMetaData"
    141141        def serviceArguments = "assayToken=${assay.assayUUID}"
     142        def json
    142143
    143144        // call module method
    144         def json = moduleCommunicationService.callModuleMethod(
    145                 assay.module.url,
    146                 serviceURL,
    147                 serviceArguments,
    148                 "POST",
    149                 user
    150         );
     145        try {
     146            json = moduleCommunicationService.callModuleMethod(
     147                    assay.module.url,
     148                    serviceURL,
     149                    serviceArguments,
     150                    "POST",
     151                    user
     152            );
     153        } catch (Exception e) {
     154            println e.getMessage()
     155            json = new org.codehaus.groovy.grails.web.json.JSONArray()
     156        }
    151157
    152158        return json
  • trunk/grails-app/views/api/index.gsp

    r2199 r2201  
    6464    <li><a href="#getAssaysForStudy">getAssaysForStudy</a> - fetch all assays in a given study</li>
    6565    <li><a href="#getSamplesForAssay">getSamplesForAssay</a> - fetch all samples in a given assay</li>
    66     <li><a href="#getAssayData">getAssayData</a> - fetch all measurement data for a given assay</li>
     66    <li><a href="#getMeasurementDataForAssay">getMeasurementDataForAssay</a> - fetch all measurement data for a given assay</li>
    6767
    6868<a name="authenticate"></a>
     
    488488</p>
    489489
    490 <a name="getAssayData"></a>
    491 <h1>getAssayData</h1>
    492 <h3>url: <g:createLink controller="api" action="getAssayData" absolute="true" /></h3>
     490<a name="getMeasurementDataForAssay"></a>
     491<h1>getMeasurementDataForAssay</h1>
     492<h3>url: <g:createLink controller="api" action="getMeasurementDataForAssay" absolute="true" /></h3>
    493493<p>
    494494    Returns the measurement data for a particular assay
Note: See TracChangeset for help on using the changeset viewer.