Changeset 273


Ignore:
Timestamp:
Mar 16, 2010, 3:36:14 PM (7 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 edited

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}
Note: See TracChangeset for help on using the changeset viewer.