Changeset 145


Ignore:
Timestamp:
Sep 27, 2011, 4:20:01 PM (5 years ago)
Author:
m.s.vanvliet@…
Message:

first step in uploading and working with Feature lists (from Excel)

Location:
trunk
Files:
1 added
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/grails-app/controllers/org/dbxp/metabolomicsModule/measurements/MeasurementPlatformVersionController.groovy

    r100 r145  
    11package org.dbxp.metabolomicsModule.measurements
     2
     3import org.dbxp.matriximporter.MatrixImporter
    24
    35class MeasurementPlatformVersionController {
     
    68       
    79        /*
    8         * Metabolomics MeasurementPlatformVersion page
    9         *
    10         * params.id is required to load the MeasurementPlatformVersion
    11         */
     10         * Metabolomics MeasurementPlatformVersion page
     11         *
     12         * params.id is required to load the MeasurementPlatformVersion
     13         */
    1214   def view = {
    1315                if (!params.id) redirect(url: request.getHeader('Referer')) // id of an MeasurementPlatformVersion must be present
     
    1517                [ measurementPlatformVersion: MeasurementPlatformVersion.get(params.id) ]
    1618   }
     19   
     20   /*
     21    * Upload feature(s) file
     22    */
     23   def featureFile = {
     24               
     25           def uploadedfile = request.getFile('featuresfile')
     26           
     27           if (!uploadedfile.isEmpty() && params.mpv){
     28
     29                        //determine extension of uploaded file
     30                        def filename = uploadedfile.getOriginalFilename().toLowerCase()
     31                        def ext = filename.tokenize(".")[-1]
     32
     33                        // select correct way of processing the file based on extension
     34                        switch (ext) {
     35
     36                                case 'xls'              :       // uploaded xls
     37                                case 'xlsx'             :       // uploaded xlsx
     38                                       
     39                                                                        def mpv = MeasurementPlatformVersion.get(params.mpv as Long)
     40                                                               
     41                                                                        //move file to new location
     42                                                                        def featuresFile = new File("${mpv?.featuresfile}")
     43                                                                        uploadedfile.transferTo(featuresFile)
     44                                                                       
     45                                                                        //read excel
     46                                                                        def inputStream = new FileInputStream(featuresFile)
     47                                                                        def (matrix, parseInfo) = MatrixImporter.instance.importInputStream(inputStream, [:], true)
     48                                                                       
     49                                                                        if (!matrix) {
     50                                                                                throw new RuntimeException("Error parsing file ${featuresFile.fileName}; No features found.")
     51                                                                        }
     52                                                                       
     53                                                                        println matrix.dump()
     54                                                                        println matrix.size()
     55                                                                        println matrix[1]
     56                                                                       
     57                                                                        //clear old features
     58                                                                       
     59                                                                        //insert MeasurementPlatformVersionFeatures entries
     60                                                               
     61                                                                       
     62                                                                        break
     63                                default                 :       //unsupported file!
     64                                        log.error("Unsupported filetype! ${filename}")
     65                        }
     66                }
     67
     68                //return to where you came from...
     69                redirect(url: request.getHeader('Referer'))
     70   }
    1771}
  • trunk/grails-app/domain/org/dbxp/metabolomicsModule/measurements/MeasurementPlatformVersion.groovy

    r95 r145  
    11package org.dbxp.metabolomicsModule.measurements
     2
     3import org.codehaus.groovy.grails.commons.ApplicationHolder
    24
    35class MeasurementPlatformVersion {
     
    2123         * Transients
    2224         **/
    23         static transients = ['features']
     25        static transients = ['features', 'featuresfolder', 'featuresfile']
    2426       
    2527        // fetch features linked to this version
    2628        List getFeatures(){ return MeasurementPlatformVersionFeature.findAllByMeasurementPlatformVersion(this).collect { it.feature } }
    2729       
     30        // returns the folder to store the feature file in
     31        String getFeaturesfolder(){
     32               
     33                //TODO: Make User/Group specific
     34               
     35                def featuresFolder =    "${ApplicationHolder.getApplication().getParentContext().getResource("/").getFile().toString()}/features/" +
     36                                                                ("${this.id}-${this.measurementPlatform.id}-${this.versionNumber}").encodeAsMD5()
     37                // make sure it exists
     38                try {
     39                        new File("${featuresFolder}").mkdirs()
     40                } catch (e) {
     41                        log.error ("Unable to create directory for storing the features! ${e}")
     42                }
     43                return featuresFolder
     44        }
     45       
     46        // returns the path+file of features file
     47        String getFeaturesfile() { return "${this.featuresfolder}/.features" }
    2848}
  • trunk/grails-app/i18n/messages.properties

    r4 r145  
    3838default.edit.label=Edit {0}
    3939
     40#measurement platform
     41mpv.feature.uploadfile.label = feature file
     42mpv.feature.uploadfile.help = upload an Excel (.xls/.xlsx) with features
     43
    4044default.button.create.label=Create
    4145default.button.edit.label=Edit
  • trunk/grails-app/views/measurementPlatformVersion/view.gsp

    r102 r145  
    77               
    88                <h2>${measurementPlatformVersion?.measurementPlatform?.name} (${measurementPlatformVersion?.versionNumber})</h2>       
     9       
     10                <h2>
     11                        <g:if test="${measurementPlatformVersion?.features}">
     12                                Update existing
     13                        </g:if>
     14                        <g:else>
     15                                Upload new
     16                        </g:else>
     17                        Features
     18                </h2>
     19                <g:uploadForm controller="measurementPlatformVersion" action="featureFile" name="featureUpload">
     20                        <input type="hidden" name="mpv" value="${measurementPlatformVersion.id}" />
     21                        <g:message code="mpv.feature.uploadfile.label" /> : <input type="file" name="featuresfile" />
     22                        <g:submitButton name="submit" value="submit" />
     23                </g:uploadForm>                                         
    924               
    10                 <h2>Features</h2>
    11                 <ul>           
    12                         <g:each in="${measurementPlatformVersion?.features}" var="feature">
    13                                 <li>${feature.label}</li>
    14                         </g:each>
    15                 </ul>           
     25                <g:if test="${measurementPlatformVersion?.features}">
     26                        <h2>Features</h2>
     27                        <ul>           
     28                                <g:each in="${measurementPlatformVersion?.features}" var="feature">
     29                                        <li>${feature.label} ${feature.props}</li>
     30                                </g:each>
     31                        </ul>
     32                </g:if>         
    1633        </body>
    1734</html>         
Note: See TracChangeset for help on using the changeset viewer.