Changeset 2049

Show
Ignore:
Timestamp:
06-10-11 13:19:21 (3 years ago)
Author:
s.h.sikkema@…
Message:

enabled collecting module measurements for galaxy integration

Location:
trunk/grails-app
Files:
3 modified

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. \