Changeset 2049


Ignore:
Timestamp:
Oct 6, 2011, 1:19:21 PM (5 years ago)
Author:
s.h.sikkema@…
Message:

enabled collecting module measurements for galaxy integration

Location:
trunk/grails-app
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/grails-app/controllers/dbnp/studycapturing/AssayController.groovy

    r2030 r2049  
    140140
    141141                                // obtain fields for each category
    142                                 flow.fieldMap = assayService.collectAssayTemplateFields(flow.assay)
    143 
    144                                 flash.errorMessage = flow.fieldMap.remove('ModuleError')
     142                                flow.fieldMap = assayService.collectAssayTemplateFields(flow.assay, null)
     143
     144                                flash.errorMessage = flow.fieldMap.remove('Module Error')
    145145                                flow.measurementTokens = flow.fieldMap.remove('Module Measurement Data')
    146146                        }.to "selectFields"
     
    179179                                def assayData           = assayService.collectAssayData(flow.assay, fieldMapSelection, measurementTokens)
    180180
    181                                 flash.errorMessage      = assayData.remove('ModuleError')
     181                                flash.errorMessage      = assayData.remove('Module Error')
    182182
    183183                                flow.rowData            = assayService.convertColumnToRowStructure(assayData)
     
    275275                // Check accessibility
    276276                def consumer = "galaxy";
    277                 def user = authenticationService.getRemotelyLoggedInUser( consumer, params.sessionToken );
    278                 if( !user ) {
     277                def remoteUser = authenticationService.getRemotelyLoggedInUser( consumer, params.sessionToken );
     278                if( !remoteUser ) {
    279279                        response.status = 401;
    280280                        render "You must be logged in";
    281281                        return
    282282                }
    283                
    284                 // Invalidate session token
    285                 authenticationService.logOffRemotely( consumer, params.sessionToken );
    286                
     283
    287284                // retrieve assay
    288285                def assay = Assay.findByAssayUUID( params.assayToken );
     
    295292               
    296293                // Return assay data
    297                 def fieldMap = assayService.collectAssayTemplateFields( assay )
     294                def fieldMap = assayService.collectAssayTemplateFields( assay, null, remoteUser )
     295
    298296                def measurementTokens = fieldMap.remove('Module Measurement Data');
    299                 def assayData = assayService.collectAssayData(assay, fieldMap, measurementTokens)
    300                 def rowData            = assayService.convertColumnToRowStructure(assayData)
     297                def assayData = assayService.collectAssayData(assay, fieldMap, measurementTokens, null, remoteUser)
     298
     299                def rowData   = assayService.convertColumnToRowStructure(assayData)
     300
     301                // Invalidate session token
     302                authenticationService.logOffRemotely( consumer, params.sessionToken );
    301303                               
    302304                def outputDelimiter = '\t'
     
    399401                        assays.each { assay ->
    400402                                // Determine which fields should be exported for this assay
    401                                 def fieldMap = assayService.collectAssayTemplateFields(assay)
     403                                def fieldMap = assayService.collectAssayTemplateFields(assay, null)
    402404                                def measurementTokens = fieldMap.remove('Module Measurement Data')
    403405
     
    441443                        assays.each { assay ->
    442444                                // Determine which fields should be exported for this assay
    443                                 def fieldMap = assayService.collectAssayTemplateFields(assay)
     445                                def fieldMap = assayService.collectAssayTemplateFields(assay, null)
    444446                                def measurementTokens = fieldMap.remove('Module Measurement Data')
    445447
     
    507509                               
    508510                                // Determine which fields should be exported for this assay
    509                                 def fieldMap = assayService.collectAssayTemplateFields(assay)
     511                                def fieldMap = assayService.collectAssayTemplateFields(assay, null)
    510512                                def measurementTokens = fieldMap.remove('Module Measurement Data')
    511513                               
     
    617619                return samples.unique();
    618620        }
    619 
    620621       
    621622        def errorPage = {
  • trunk/grails-app/services/dbnp/modules/ModuleCommunicationService.groovy

    r1991 r2049  
    1818import javax.servlet.http.HttpServletResponse
    1919import org.codehaus.groovy.grails.commons.ConfigurationHolder
    20 import org.hibernate.*;
     20import org.hibernate.*
     21import dbnp.authentication.SecUser;
    2122
    2223class ModuleCommunicationService implements Serializable {
     
    105106        * @return                       JSON    JSON object of the parsed text
    106107        */
    107         def callModuleMethod( String consumer, String restUrl, String args = null, String requestMethod = "GET" ) {
    108                 if (!authenticationService.isLoggedIn()) {
     108        def callModuleMethod( String consumer, String restUrl, String args = null, String requestMethod = "GET", SecUser remoteUser = null) {
     109                if (!remoteUser && !authenticationService.isLoggedIn()) {
    109110                        // should not happen because we can only get here when a user is
    110111                        // logged in...
     
    124125
    125126                // put the session token to work
    126                 authenticationService.logInRemotely( consumer, sessionToken, authenticationService.getLoggedInUser() )
    127                
     127                authenticationService.logInRemotely( consumer, sessionToken, remoteUser ?: authenticationService.getLoggedInUser())
     128
    128129                // Append the sessionToken to the parameters
    129130                if( !args ) {
  • trunk/grails-app/services/dbnp/studycapturing/AssayService.groovy

    r1969 r2049  
    1919import org.dbnp.gdt.RelTime
    2020import org.dbnp.gdt.TemplateFieldType
    21 import java.text.DecimalFormat
    2221import java.text.NumberFormat
    23 import org.dbnp.gdt.Template
    24 import org.dbnp.gdt.TemplateField
     22import dbnp.authentication.SecUser
    2523
    2624class AssayService {
     
    3937         *  values
    4038         */
    41         def collectAssayTemplateFields(assay, samples = null) throws Exception {
     39        def collectAssayTemplateFields(assay, samples, SecUser remoteUser = null) throws Exception {
    4240
    4341                def getUsedTemplateFields = { templateEntities ->
     
    5452
    5553                try {
    56                         moduleMeasurements = requestModuleMeasurementNames(assay)
     54                        moduleMeasurements = requestModuleMeasurementNames(assay, remoteUser)
    5755                } catch (e) {
    5856                        moduleError = e.message
     
    6765                                        'Event Group' :             [[name: 'name', comment: 'Name of Event Group', displayName: 'name']],
    6866                                        'Module Measurement Data':  moduleMeasurements,
    69                                         'ModuleError':              moduleError
     67                                        'Module Error':             moduleError
    7068                                ]
    7169
     
    8785         * @return                              The assay data structure as described above.
    8886         */
    89         def collectAssayData(assay, fieldMap, measurementTokens, samples = null) throws Exception {
     87        def collectAssayData(assay, fieldMap, measurementTokens, samples = null, SecUser remoteUser = null) throws Exception {
    9088
    9189                def collectFieldValuesForTemplateEntities = { headerFields, templateEntities ->
     
    197195
    198196                        try {
    199                                 moduleMeasurementData = requestModuleMeasurements(assay, measurementTokens, samples)
     197                                moduleMeasurementData = requestModuleMeasurements(assay, measurementTokens, samples, remoteUser)
    200198                        } catch (e) {
    201199                                moduleMeasurementData = ['error' : ['Module error, module not available or unknown assay'] * samples.size() ]
     
    205203                }
    206204
    207                 [       'Subject Data' :            getFieldValues(samples, fieldMap['Subject Data'], 'parentSubject'),
    208                                         'Sampling Event Data' :     getFieldValues(samples, fieldMap['Sampling Event Data'], 'parentEvent'),
    209                                         'Sample Data' :             getFieldValues(samples, fieldMap['Sample Data']),
    210                                         'Event Group' :             eventFieldMap,
    211                                         'Module Measurement Data' : moduleMeasurementData,
    212                                         'ModuleError' :             moduleError
    213                                 ]
     205                [   'Subject Data' :            getFieldValues(samples, fieldMap['Subject Data'], 'parentSubject'),
     206                        'Sampling Event Data' :     getFieldValues(samples, fieldMap['Sampling Event Data'], 'parentEvent'),
     207                        'Sample Data' :             getFieldValues(samples, fieldMap['Sample Data']),
     208                        'Event Group' :             eventFieldMap,
     209                        'Module Measurement Data' : moduleMeasurementData,
     210                        'Module Error' :            moduleError
     211                ]
    214212        }
    215213
     
    269267         * @return
    270268         */
    271         def requestModuleMeasurementNames(assay) {
     269        def requestModuleMeasurementNames(assay, SecUser remoteUser = null) {
    272270
    273271                def moduleUrl = assay.module.url
     
    278276
    279277                try {
    280                         jsonArray = moduleCommunicationService.callModuleMethod(moduleUrl, path, query, "POST")
     278                        jsonArray = moduleCommunicationService.callModuleMethod(moduleUrl, path, query, "POST", remoteUser)
    281279                } catch (e) {
    282280                        throw new Exception("An error occured while trying to get the measurement tokens from the $assay.module.name. \
     
    303301         * @return
    304302         */
    305         def requestModuleMeasurements(assay, inputMeasurementTokens, samples) {
     303        def requestModuleMeasurements(assay, inputMeasurementTokens, samples, SecUser remoteUser = null) {
    306304
    307305                def moduleUrl = assay.module.url
     
    320318
    321319                try {
    322                         (sampleTokens, measurementTokens, moduleData) = moduleCommunicationService.callModuleMethod(moduleUrl, path, query, "POST")
     320                        (sampleTokens, measurementTokens, moduleData) = moduleCommunicationService.callModuleMethod(moduleUrl, path, query, "POST", remoteUser)
    323321                } catch (e) {
    324322                        throw new Exception("An error occured while trying to get the measurement data from the $assay.module.name. \
Note: See TracChangeset for help on using the changeset viewer.