Changeset 48


Ignore:
Timestamp:
Apr 7, 2011, 3:58:41 PM (8 years ago)
Author:
robert@…
Message:

Improved getMeasurements and getMeasurementData methods

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/grails-app/controllers/nl/tno/massSequencing/integration/RestController.groovy

    r46 r48  
    44import nl.tno.massSequencing.*
    55
    6 import org.apache.catalina.connector.Response;
    76import org.codehaus.groovy.grails.commons.ConfigurationHolder
    87
     
    413412        /****************************************************************/
    414413        private getMeasurementTypes() {
    415                 return [ "# sequences" ]
     414                return [
     415                        "# sequences": null, "# qual scores": null,
     416                        "forward oligo number":         "fwOligo",
     417                        "forward mid name":             "fwMidName",
     418                        "forward total sequence":       "fwTotalSeq",
     419                        "forward mid sequence":         "fwMidSeq",
     420                        "forward primer sequence":      "fwMidSeq",
     421                        "reverse oligo number":         "revOligo",
     422                        "reverse mid name":             "revMidName",
     423                        "reverse total sequence":       "revTotalSeq",
     424                        "reverse mid sequence":         "revMidSeq",
     425                        "reverse primer sequence":      "revMidSeq"
     426                ]
    416427        }
    417428
     
    439450                        return false
    440451                }
    441 
    442                 render getMeasurementTypes() as JSON
     452               
     453                println "getMeasurements: " + getMeasurementTypes().keySet().asList()
     454                render getMeasurementTypes().keySet().asList() as JSON
    443455        }
    444456
     
    465477                def assayToken = params.assayToken
    466478                def measurementTokens = params.measurementToken
    467 
     479               
    468480                if( !checkAssayToken( assayToken ) ) {
    469481                        response.sendError(404)
     
    472484
    473485                // For now, we don't have any metadata about the measurements
    474                 def measurements = getMeasurementTypes();
     486                def measurements = getMeasurementTypes().keySet().asList();
    475487                def measurementMetadata = [ ]
    476488
     489                // If no measurementTokens are given, all measurements are returned
     490                if( !measurementTokens )
     491                        measurementTokens = measurements
     492               
    477493                measurementTokens.each { token ->
    478494                        if( measurements.contains( token ) )
     
    600616                }
    601617
     618                // Check which measurement tokens are asked for
    602619                if( !measurementTokens ) {
    603620                        measurementTokens = []
    604                 }
    605                 else if( measurementTokens.class == java.lang.String ) {
     621                } else if( measurementTokens.class == java.lang.String ) {
    606622                        measurementTokens = [ measurementTokens ]
    607                 }
    608 
     623                } else if( measurementTokens.class == java.lang.String[] ) {
     624                        measurementTokens = measurementTokens.toList();
     625                }
     626
     627                // Check which sample tokens are asked for
    609628                if( !sampleTokens ) {
    610629                        sampleTokens = []
    611                 }
    612                 else if( sampleTokens.class == java.lang.String ) {
     630                } else if( sampleTokens.class == java.lang.String ) {
    613631                        sampleTokens = [ sampleTokens ]
     632                } else if( sampleTokens.class == java.lang.String[] ) {
     633                        sampleTokens = sampleTokens.toList();
    614634                }
    615635
     
    624644
    625645                                // Check if this measurement should be returned
    626                                 if( ( measurementTokens.isEmpty() || measurementTokens.contains( type ) ) &&
    627                                 ( sampleTokens.isEmpty()      || sampleTokens.contains( sample ) ) ) {
    628                                         results.push( [ 'sampleToken': sample, 'measurementToken': type, 'value': assaySample[ type ] ] )
     646                                if(
     647                                        ( measurementTokens.size() == 0 || measurementTokens.contains( type.key ) ) &&
     648                                        ( sampleTokens.size() == 0      || sampleTokens.contains( sample ) ) ) {
     649                                       
     650                                        def value
     651                                        if( type.value == null ) {
     652                                                switch( type.key ) {
     653                                                        case "# sequences":
     654                                                                value = assaySample.numSequences(); break;
     655                                                        case "# qual scores":
     656                                                                value = assaySample.numQualScores(); break;
     657                                                }
     658                                        } else {
     659                                                value = assaySample[ type.value ];
     660                                        }
     661                                       
     662                                        results.push( [ 'sampleToken': sample, 'measurementToken': type.key, 'value': value ] )
    629663                                }
    630664                        }
Note: See TracChangeset for help on using the changeset viewer.