Ignore:
Timestamp:
Feb 16, 2011, 2:24:56 PM (11 years ago)
Author:
robert@…
Message:

Implemented improved authorization (#16)
Built in select all checkboxes (#25)

Location:
trunk/grails-app/services/nl/tno/metagenomics
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/grails-app/services/nl/tno/metagenomics/SampleExcelService.groovy

    r13 r14  
    8787                       
    8888                headers.eachWithIndex { header, idx ->
    89                         // Do matching using fuzzy search. The 0.1 treshold makes sure that no match if chosen if
     89                        // Do matching using fuzzy search. The 0.8 treshold makes sure that no match if chosen if
    9090                        // there is actually no match at all.
    91                         bestMatches[idx] = fuzzySearchService.mostSimilar( header, possibleFields, 0.1 );
     91                        if( !header || header.toString().trim() == "" )
     92                                bestMatches[idx] = null
     93                        else
     94                                bestMatches[idx] = fuzzySearchService.mostSimilar( header, possibleFields, 0.8 );
    9295                }
    9396               
     
    119122                def dataMatches = false;
    120123                possibleFields.each { columnName ->
    121                         columns[ columnName ] = matchColumns.findIndexOf { it.value == columnName }
     124                        def foundColumn = matchColumns.find { it.value == columnName };
     125                       
     126                        columns[ columnName ] = ( foundColumn && foundColumn.key.toString().isInteger() ) ? Integer.valueOf( foundColumn.key.toString() ) : -1;
    122127
    123128                        if( columnName != sampleNameName && columns[ columnName ] != -1 )
     
    125130                }
    126131
     132                println columns
     133               
    127134                // A column to match the sample name must be present
    128135                if( columns[ sampleNameName ] == -1 ) {
    129                         // Now delete the file, since we don't need it anymore
    130                         _deleteUploadedFileFromSession()
    131 
    132136                        return [ success: false, message: "There must be a column present in the excel file that matches the sample name. Please try again." ]
    133137                }
     
    135139                // A column with data should also be present
    136140                if( !dataMatches ) {
    137                         // Now delete the file, since we don't need it anymore
    138                         _deleteUploadedFileFromSession()
    139 
    140141                        return [ success: false, message: "There are no data columns present in the excel file. No samples are updated." ]
    141142                }
     
    166167                        String sampleName = rowData[ columns[ sampleNameName ] ] as String
    167168
     169                        // If no sample name is found, the row is either empty or contains no sample name
     170                        if( !sampleName ) {
     171                                failedRows << [ row: rowData, sampleName: "" ];
     172                                continue;
     173                        }
     174                               
    168175                        // Find assay by sample name. Since sample names are unique within an assay (enforced by GSCF),
    169176                        // this will always work when only using one assay. When multiple assays are used, this might pose
    170177                        // a problem
     178                        // TODO: Fix problem with multiple assays
    171179                        AssaySample assaySample = assaySamples.find { it.sample.id == Sample.findByName( sampleName )?.id };
     180                        println "Row: " + i + " - Sample name: " + sampleName + " - " + assaySample
    172181
    173182                        // If no assaysample is found, add this row to the failed-row list
  • trunk/grails-app/services/nl/tno/metagenomics/integration/GscfService.groovy

    r13 r14  
    2424         */
    2525        public String urlAuthRemote( def params, def token ) {
    26                 def redirectURL = "${config.gscf.baseURL}/login/auth_remote?moduleURL=${this.moduleURL()}&consumer=${this.consumerID()}&token=${token}&returnUrl=${config.grails.serverURL}"
    27 
     26                def redirectURL = "${config.gscf.baseURL}/login/auth_remote?moduleURL=${this.moduleURL()}&consumer=${this.consumerID()}&token=${token}&"
     27
     28                def returnUrl = config.grails.serverURL
    2829                if (params.controller != null){
    29                         redirectURL += "/${params.controller}"
     30                        returnUrl += "/${params.controller}"
    3031                        if (params.action != null){
    31                                 redirectURL += "/${params.action}"
     32                                returnUrl += "/${params.action}"
    3233                                if (params.id != null){
    33                                         redirectURL += "/${params.id}"
     34                                        returnUrl += "/${params.id}"
    3435                                }
    3536                        }
    3637                }
    3738
    38                 return redirectURL
     39                // Append other parameters
     40                returnUrl += "?" + params.collect {
     41                        if( it.key != "controller" && it.key != "action" && it.key != "id" )
     42                                return it.key.toString().encodeAsURL() + "=" + it.value.toString().encodeAsURL();
     43                        else
     44                                return ""
     45                }.findAll { it }.join( "&" );
     46               
     47                return redirectURL + "returnUrl=" + returnUrl.encodeAsURL();
    3948        }
    4049
     
    6574         * @return Map
    6675         */
    67         public Map getUser(String sessionToken) {
     76        public Map getUser(String sessionToken) throws Exception {
    6877                def user = [:]
    69                 this.callGSCF(sessionToken, "getUser").each {
    70                         user[ it.key ] = it.value;
    71                 }
    72                 return user
     78                try {
     79                        this.callGSCF(sessionToken, "getUser").each {
     80                                user[ it.key ] = it.value;
     81                        }
     82                        return user
     83                } catch( Exception e ) {
     84                        throw new Exception( "Retrieving user details from GSCF failed", e );
     85                }
    7386        }
    7487
     
    8093         * @return ArrayList
    8194         */
    82         public ArrayList getStudies(String sessionToken) {
     95        public ArrayList getStudies(String sessionToken) throws BadRequestException, NotAuthenticatedException, NotAuthorizedException, ResourceNotFoundException, Exception {
    8396                return this.callGSCF(sessionToken, "getStudies")
    8497        }
     
    92105         * @return ArrayList
    93106         */
    94         public ArrayList getStudies(String sessionToken, ArrayList studyTokens ) {
     107        public ArrayList getStudies(String sessionToken, ArrayList studyTokens ) throws BadRequestException, NotAuthenticatedException, NotAuthorizedException, ResourceNotFoundException, Exception  {
    95108                return this.callGSCF(sessionToken, "getStudies", [ "studyToken": studyTokens ] );
    96109        }
     
    104117         * @return ArrayList
    105118         */
    106         public def getStudy(String sessionToken, String studyToken) throws NotAuthorizedException, ResourceNotFoundException {
     119        public def getStudy(String sessionToken, String studyToken) throws BadRequestException, NotAuthenticatedException, NotAuthorizedException, ResourceNotFoundException, Exception {
    107120                def list
    108121
     
    131144         * @return ArrayList
    132145         */
    133         public ArrayList getAssays(String sessionToken, String studyToken) throws NotAuthorizedException, ResourceNotFoundException {
     146        public ArrayList getAssays(String sessionToken, String studyToken) throws BadRequestException, NotAuthenticatedException, NotAuthorizedException, ResourceNotFoundException, Exception {
    134147                try {
    135148                        return this.callGSCF(sessionToken, "getAssays", ["studyToken": studyToken])
     
    150163         * @return ArrayList
    151164         */     
    152         public def getAssay(String sessionToken, String studyToken, String assayToken ) throws NotAuthorizedException, ResourceNotFoundException {
     165        public def getAssay(String sessionToken, String studyToken, String assayToken )throws BadRequestException, NotAuthenticatedException, NotAuthorizedException, ResourceNotFoundException, Exception {
    153166                def list
    154167                try {
     
    178191         * @return ArrayList
    179192         */
    180         public def getSample(String sessionToken, String assayToken, String sampleToken) throws NotAuthorizedException, ResourceNotFoundException {
     193        public def getSample(String sessionToken, String assayToken, String sampleToken) throws BadRequestException, NotAuthenticatedException, NotAuthorizedException, ResourceNotFoundException, Exception {
    181194                def list
    182195
     
    205218         * @return ArrayList
    206219         */
    207         public ArrayList getSamples(String sessionToken, String assayToken) throws NotAuthorizedException, ResourceNotFoundException {
     220        public ArrayList getSamples(String sessionToken, String assayToken) throws BadRequestException, NotAuthenticatedException, NotAuthorizedException, ResourceNotFoundException, Exception {
    208221                // Samples of a Study limited to a single Assay
    209222                try {
     
    225238         * @return ArrayList
    226239         */
    227         public def getSamples(String sessionToken, List sampleTokens) throws NotAuthorizedException, ResourceNotFoundException {
     240        public def getSamples(String sessionToken, List sampleTokens) throws BadRequestException, NotAuthenticatedException, NotAuthorizedException, ResourceNotFoundException, Exception {
    228241                def list
    229242
     
    249262         * @return ArrayList
    250263         */
    251         public HashMap getAuthorizationLevel(String sessionToken, String studyToken) throws ResourceNotFoundException {
     264        public HashMap getAuthorizationLevel(String sessionToken, String studyToken) throws BadRequestException, NotAuthenticatedException, NotAuthorizedException, ResourceNotFoundException, Exception {
    252265                ArrayList list
    253266
  • trunk/grails-app/services/nl/tno/metagenomics/integration/SynchronizationService.groovy

    r13 r14  
    6767                        }
    6868                }
     69               
     70                // Append other parameters
     71                returnUrl += "?" + params.collect {
     72                        if( it.key != "controller" && it.key != "action" && it.key != "id" )
     73                                return it.key.toString().encodeAsURL() + "=" + it.value.toString().encodeAsURL();
     74                        else
     75                                return ""
     76                }.findAll { it }.join( "&" );
     77               
    6978                if( timeForFullSynchronization() ) {
    7079                        return ConfigurationHolder.config.grails.serverURL + "/synchronize/full?redirect=" + returnUrl.encodeAsURL()
     
    91100         * @return      ArrayList       List of studies or null if the synchronization has failed
    92101         */
    93         public ArrayList<Study> synchronizeStudies() throws NotAuthenticatedException, Exception {
     102        public ArrayList<Study> synchronizeStudies() throws BadRequestException, NotAuthenticatedException, NotAuthorizedException, ResourceNotFoundException, Exception {
    94103                if( !performSynchronization() )
    95104                        return Study.findAllWhereTrashcan(false)
     
    140149                        // synchronizing and return null
    141150                        log.error( "Exception occurred when fetching studies: " + e.getMessage() )
    142                         throw new Exception( "Error while fetching studies", e)
     151                        throw e
    143152                }
    144153
Note: See TracChangeset for help on using the changeset viewer.