Changeset 255

Show
Ignore:
Timestamp:
10-03-10 19:27:57 (4 years ago)
Author:
tabma
Message:

- rewrite of celltype detection

Location:
trunk/grails-app
Files:
5 modified

Legend:

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

    r251 r255  
    9191                case 3 : templatefieldtype = TemplateFieldType.STRING 
    9292                         break 
     93                case 4 : templatefieldtype = TemplateFieldType.STRING 
     94                         break 
    9395                default: break 
    9496            } 
  • trunk/grails-app/domain/dbnp/importer/MappingColumn.groovy

    r251 r255  
    2525 
    2626    String toString() { 
    27         return "Name:" + name + "/Type:" + templatefieldtype + "/Entity:" + entity + "/Property:" + property + "/Celltype:" + celltype + "/Index:" + index + "/Value:" + value 
     27        return "Name:" + name + "/TemplateFieldType:" + templatefieldtype + "/Entity:" + entity + "/Property:" + property + "/Celltype:" + celltype + "/Index:" + index + "/Value:" + value 
    2828    } 
    2929} 
  • trunk/grails-app/services/dbnp/importer/ImporterService.groovy

    r247 r255  
    1919import org.apache.poi.poifs.filesystem.POIFSFileSystem 
    2020import org.apache.poi.ss.usermodel.DataFormatter 
     21import org.apache.poi.hssf.usermodel.HSSFDateUtil 
    2122import dbnp.importer.Column 
     23import dbnp.studycapturing.TemplateFieldType 
    2224 
    2325class ImporterService { 
     
    4850 
    4951 
    50         for (HSSFCell c: sheet.getRow(sheet.getFirstRowNum())) { 
     52        for (HSSFCell c: sheet.getRow(datamatrix_start)) { 
    5153            def datamatrix_celltype = sheet.getRow(datamatrix_start).getCell(c.getColumnIndex()).getCellType() 
     54            def headercell = sheet.getRow(sheet.getFirstRowNum()).getCell(c.getColumnIndex()) 
    5255 
    5356            // Check for every celltype, currently redundant code, but possibly this will be  
    5457            // a piece of custom code for every cell type like specific formatting 
    55              
    56             switch (c.getCellType()) { 
    57                     case HSSFCell.CELL_TYPE_STRING:                      
    58                         header[c.getColumnIndex()] = new dbnp.importer.MappingColumn(name:df.formatCellValue(c), celltype:datamatrix_celltype); 
    59                         break 
    60                     case HSSFCell.CELL_TYPE_NUMERIC: 
    61                         header[c.getColumnIndex()] = new dbnp.importer.MappingColumn(name:df.formatCellValue(c), celltype:datamatrix_celltype); 
    62                         break 
     58                 
     59            switch (datamatrix_celltype) { 
     60                    case HSSFCell.CELL_TYPE_STRING: 
     61                            header[c.getColumnIndex()] = new dbnp.importer.MappingColumn(name:df.formatCellValue(headercell), templatefieldtype:TemplateFieldType.STRING); 
     62                            break 
     63                    case HSSFCell.CELL_TYPE_NUMERIC:                     
     64                            if (HSSFDateUtil.isCellDateFormatted(c)) { 
     65                                println("DATE") 
     66                                header[c.getColumnIndex()] = new dbnp.importer.MappingColumn(name:df.formatCellValue(headercell), templatefieldtype:TemplateFieldType.DATE) 
     67                            } 
     68                            else 
     69                                header[c.getColumnIndex()] = new dbnp.importer.MappingColumn(name:df.formatCellValue(headercell), templatefieldtype:TemplateFieldType.INTEGER); 
     70                            break 
    6371                    case HSSFCell.CELL_TYPE_BLANK: 
    64                         header[c.getColumnIndex()] = new dbnp.importer.MappingColumn(name:df.formatCellValue(c), celltype:datamatrix_celltype); 
    65                         break 
     72                            header[c.getColumnIndex()] = new dbnp.importer.MappingColumn(name:df.formatCellValue(headercell), templatefieldtype:TemplateFieldType.STRING); 
     73                            break 
    6674                    default: 
    67                         header[c.getColumnIndex()] = new dbnp.importer.MappingColumn(name:df.formatCellValue(c), celltype:datamatrix_celltype); 
    68                         break 
     75                            header[c.getColumnIndex()] = new dbnp.importer.MappingColumn(name:df.formatCellValue(headercell), templatefieldtype:TemplateFieldType.STRING); 
     76                            break 
    6977            } 
    7078        } 
     
    126134        } 
    127135 
    128     def importdata = { 
    129          
     136    /** 
     137    * Method to read data from a workbook and to import data into the database 
     138    * by using mapping information 
     139    * 
     140    * 
     141    * @param wb POI horrible spreadsheet formatted workbook object 
     142    * @param mc array of MappingColumns 
     143    * @param sheetindex sheet to use when using multiple sheets 
     144    * @param rowindex first row to start with reading the actual data (NOT the header) 
     145    *  
     146    * @see dbnp.importer.MappingColumn 
     147    */ 
     148    def importdata(HSSFWorkbook wb, int sheetindex, int rowindex, MappingColumn[] mc) { 
     149        def sheet = wb.getSheetAt(sheetindex) 
     150        def rows  = [] 
     151 
     152        (count <= sheet.getLastRowNum()) ? 
     153        (rowindex..count).each { i -> 
     154 
     155            def row = [] 
     156            for (HSSFCell c: sheet.getRow(i)) 
     157                //row.add(c) 
     158                //row.add(df.formatCellValue(c)) 
     159                switch(mc[c.getColumnIndex()].celltype) { 
     160                    case 0  : break 
     161                    default : break 
     162                } 
     163 
     164                rows.add(row) 
     165        } : 0 
    130166    } 
    131167} 
  • trunk/grails-app/taglib/dbnp/importer/ImporterTagLib.groovy

    r251 r255  
    1616package dbnp.importer 
    1717import dbnp.studycapturing.Template 
     18import dbnp.studycapturing.TemplateFieldType 
    1819 
    1920class ImporterTagLib { 
     
    2223                        [type:3, name:"Protocol"], [type:4, name:"Sample"]] 
    2324 
    24     def standardcelltypes = [ 
     25    /*def standardcelltypes = [ 
    2526                         [type:0, name:"Numeric"], [type:1, name:"String"], [type:2, name:"Formula"], 
    2627                         [type:3, name:"Blank"], [type:4, name:"Boolean"], [type:5, name:"Error"], [type:6, name:"Date"], 
    2728                         [type:7, name:"Float"], [type:8, name:"Double"], [type:9, name:"List of items"], [type:10, name:"Ontologyterm"] 
    28                      ] 
     29                     ]*/ 
    2930 
    3031    /** 
     
    6162    } 
    6263 
    63     def createSelect(int selected, String name, ArrayList options, String customvalue) { 
     64    def createSelect(int selected, String name, options, String customvalue) { 
    6465        def res = "<select style=\"font-size:10px\" name=\"${name}\">" 
    6566 
     
    136137        def selected = (attrs['selected']==null) ? -1 : attrs['selected'] 
    137138        def customvalue = (attrs['customvalue']==null) ? "" : attrs['customvalue'] 
    138         out << createSelect(selected, attrs['name'], standardcelltypes, customvalue) 
     139        //out << createSelect(selected, attrs['name'], standardcelltypes, customvalue) 
     140        out << createSelect(selected, attrs['name'], TemplateFieldType.list(), customvalue) 
    139141    } 
    140142} 
  • trunk/grails-app/views/importer/common/_preview.gsp

    r247 r255  
    2828            <g:each var="column" in="${header}"> 
    2929                <td class="header"> 
    30                     <importer:celltypeSelect selected="${column.value.celltype.toInteger()}" name="celltype" customvalue="${column.key.toString()}"/> 
     30                    <importer:celltypeSelect selected="${column.value.templatefieldtype}" name="celltype" customvalue="${column.key.toString()}"/> 
    3131                </td> 
    3232            </g:each>