Changeset 273

Show
Ignore:
Timestamp:
16-03-10 15:36:14 (4 years ago)
Author:
tabma
Message:

- Excel file is parsed, per row a record is created containing entities with the values (based on the MappingColumn?)
- result is an array containing records

Location:
trunk/grails-app
Files:
3 modified

Legend:

Unmodified
Added
Removed
  • trunk/grails-app/controllers/dbnp/importer/ImporterController.groovy

    r268 r273  
    2929import dbnp.studycapturing.Sample 
    3030import dbnp.studycapturing.TemplateFieldType 
     31import dbnp.studycapturing.TemplateField 
    3132 
    3233class ImporterController { 
     
    143144        columnproperties.each { cp -> 
    144145                def temp = cp.split(":") 
    145                 session.header[temp[0].toInteger()].property = temp[1].toInteger() 
     146                session.header[temp[0].toInteger()].property = TemplateField.get(temp[1].toInteger()) 
    146147        } 
    147148         
  • trunk/grails-app/domain/dbnp/importer/MappingColumn.groovy

    r256 r273  
    11package dbnp.importer 
     2import dbnp.studycapturing.TemplateField 
    23 
    34/** 
     
    56* type: GCSF field type 
    67* entity: GSCF entity class 
    7 * property: GSCF field property 
    8 * celltype: Excel cell type 
     8* property: GSCF template field 
    99* index: column index 
    1010* value: column value (optional, normally only name is used) 
     11* identifier: true if this column is identifying (unique/primary key) 
    1112*/ 
    1213class MappingColumn { 
     
    1516        dbnp.studycapturing.TemplateFieldType templatefieldtype 
    1617        Class entity 
    17         String property  
     18        TemplateField property 
    1819        Integer index 
    1920        String value 
     21        Boolean identifier 
    2022 
    2123    static constraints = { 
     
    2426 
    2527    String toString() { 
    26         return "Name:" + name + "/TemplateFieldType:" + templatefieldtype + "/Entity:" + entity + "/Property:" + property + "/Index:" + index + "/Value:" + value 
     28        return "Name:" + name + "/TemplateFieldType:" + templatefieldtype + "/Entity:" + entity + "/Property:" + property + "/Index:" + index + "/Value:" + value + "/Identifier:" + identifier 
    2729    } 
    2830} 
  • trunk/grails-app/services/dbnp/importer/ImporterService.groovy

    r268 r273  
    155155    */ 
    156156    def importdata(template_id, HSSFWorkbook wb, int sheetindex, int rowindex, mcmap) { 
    157         def sheet = wb.getSheetAt(sheetindex) 
    158         def rows  = [] 
    159         def df = new DataFormatter() 
     157        def sheet = wb.getSheetAt(sheetindex)            
    160158 
    161159        // walk through all rows         
    162160        rowindex..sheet.getLastRowNum().each { i -> 
    163             def record = [:] 
    164  
    165             // get the value of the cells in the row 
    166             for (HSSFCell cell: sheet.getRow(i)) { 
    167                 def mc = mcmap[cell.getColumnIndex()] 
    168                 record.add(createColumn(template_id, cell, mc)) 
    169             } 
    170         } 
    171         println record 
    172     } 
    173  
    174     /** 
    175     * This function creates a column based on the current cell and mapping 
    176     * 
    177     * @param template_id template identifier to use fields from 
    178     * @param cell POI cell read from Excel 
    179     * @param mc mapping column 
    180     * @return entity object 
    181     *  
    182     */ 
    183     def createColumn(template_id, HSSFCell cell, MappingColumn mc) { 
     161            def table = [] 
     162 
     163            table.add(createRecord(template_id, sheet.getRow(i), mcmap)) 
     164        }        
     165    } 
     166    /** 
     167     * This method created a record (array) containing entities with values 
     168     */ 
     169    def createRecord(template_id, HSSFRow excelrow, mcmap) { 
    184170        def df = new DataFormatter() 
    185171        def template = Template.get(template_id) 
    186  
    187         // check the templatefield entity of the cell 
    188         switch(mc.entity) { 
    189             case Study  :   def st = new Study(template:template) 
    190                             st.setFieldValue(mc.name, df.formatCellValue(cell)) 
    191                             return st 
    192                             break 
    193             case Subject:   def su = new Subject(template:template) 
    194                             su.setFieldValue(mc.name, df.formatCellValue(cell)) 
    195                             return su 
    196                             break 
    197             case Event  :   def ev = new Event(template:template) 
    198                             ev.setFieldValue(mc.name, df.formatCellValue(cell)) 
    199                             return ev 
    200                             break 
    201             case Protocol:  def pr = new Protocol(template:template) 
    202                             pr.setFieldValue(mc.name, df.formatCellValue(cell)) 
    203                             return pr 
    204                             break 
    205             case Sample :   def sa = new Sample(template:template) 
    206                             sa.setFieldValue(mc.name, df.formatCellValue(cell)) 
    207                             return sa 
    208                             break 
    209             case Object :   break            
    210         } 
    211     } 
     172        def record = [] 
     173 
     174        def study = new Study(title:"New study", template:template) 
     175        def subject = new Subject(title:"New subject", template:template) 
     176        def event = new Event(title:"New event", template:template) 
     177        def protocol = new Protocol(title:"New protocol", template:template) 
     178        def sample = new Sample(title:"New sample", template:template) 
     179 
     180        record.add(study) 
     181        record.add(subject) 
     182        record.add(event) 
     183        record.add(protocol) 
     184        record.add(sample) 
     185 
     186        for (HSSFCell cell: excelrow) { 
     187            def mc = mcmap[cell.getColumnIndex()] 
     188 
     189            switch(mc.entity) { 
     190                case Study      :   study.setFieldValue(mc.property.name, df.formatCellValue(cell)) 
     191                                    break 
     192                case Subject    :   subject.setFieldValue(mc.property.name, df.formatCellValue(cell)) 
     193                                    break 
     194                case Event      :   event.setFieldValue(mc.property.name, df.formatCellValue(cell)) 
     195                                    break 
     196                case Protocol   :   protocol.setFieldValue(mc.property.name, df.formatCellValue(cell)) 
     197                                    break 
     198                case Sample     :   sample.setFieldValue(mc.property.name, df.formatCellValue(cell)) 
     199                                    break 
     200                case Object     :   // don't import 
     201                                    break 
     202            } // end switch 
     203        } // end for 
     204         
     205        return record 
     206    } 
     207 
    212208}