Changeset 255


Ignore:
Timestamp:
Mar 10, 2010, 7:27:57 PM (7 years ago)
Author:
tabma
Message:
  • rewrite of celltype detection
Location:
trunk/grails-app
Files:
5 edited

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