Ignore:
Timestamp:
Jun 4, 2010, 4:00:31 PM (11 years ago)
Author:
tabma
Message:
  • rewrote MappingColumn? (and underlying methods) to have a String property instead of TemplateField?
  • improved Excel-column detection to importer service
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/grails-app/services/dbnp/importer/ImporterService.groovy

    r489 r534  
    5656        def header = [:]
    5757        def df = new DataFormatter()
    58         def property = new dbnp.studycapturing.TemplateField()
     58        def property = new String()
    5959
    6060        for (HSSFCell c: sheet.getRow(datamatrix_start)) {
     
    6868            switch (datamatrix_celltype) {
    6969                    case HSSFCell.CELL_TYPE_STRING:
     70                            //parse cell value as double
     71                            def parsable = true
     72                            def templatefieldtype = TemplateFieldType.STRING
     73
     74                            // is this string perhaps a double?
     75                            try {
     76                                formatValue(c.getStringCellValue(), TemplateFieldType.DOUBLE)
     77                            } catch (NumberFormatException nfe) { parsable = false }
     78                            finally {
     79                                if (parsable) templatefieldtype = TemplateFieldType.DOUBLE
     80                            }
     81
    7082                            header[index] = new dbnp.importer.MappingColumn(name:df.formatCellValue(headercell),
    71                                                                             templatefieldtype:TemplateFieldType.STRING,
     83                                                                            templatefieldtype:templatefieldtype,
    7284                                                                            index:index,
    7385                                                                            entity:theEntity,
     
    290302
    291303            switch(mc.entity) {
    292                 case Study      :   (record.any {it.getClass()==mc.entity}) ? 0 : record.add(study)
    293                                     if (mc.identifier) { study.title = value; break }
    294                                     study.setFieldValue(mc.property.name, value)
    295                                     break
    296                 case Subject    :   (record.any {it.getClass()==mc.entity}) ? 0 : record.add(subject)
    297                                     if (mc.identifier) { subject.name = value; break }
    298                                     subject.setFieldValue(mc.property.name, value)                                 
    299                                     break
    300                 case Event      :   (record.any {it.getClass()==mc.entity}) ? 0 : record.add(event)
    301                                     if (mc.identifier) { event.eventdescription = value; break }
    302                                     event.setFieldValue(mc.property.name, value)
    303                                     break
    304                 case Sample     :   (record.any {it.getClass()==mc.entity}) ? 0 : record.add(sample)
    305                                     if (mc.identifier) { sample.name = value; break }
    306                                     sample.setFieldValue(mc.property.name, value)
     304                case Study      :   (record.any {it.getClass()==mc.entity}) ? 0 : record.add(study)                                 
     305                                    study.setFieldValue(mc.property, value)
     306                                    break
     307                case Subject    :   (record.any {it.getClass()==mc.entity}) ? 0 : record.add(subject)                               
     308                                    subject.setFieldValue(mc.property, value)                               
     309                                    break
     310                case Event      :   (record.any {it.getClass()==mc.entity}) ? 0 : record.add(event)                                 
     311                                    event.setFieldValue(mc.property, value)
     312                                    break
     313                case Sample     :   (record.any {it.getClass()==mc.entity}) ? 0 : record.add(sample)                               
     314                                    sample.setFieldValue(mc.property, value)
    307315                                    break
    308316                case Object     :   // don't import
     
    319327    * @return object corresponding to the TemplateFieldType
    320328    */
    321     def formatValue(String value, TemplateFieldType type) {     
    322         switch (type) {
    323             case TemplateFieldType.STRING       :   return value.trim()
    324             case TemplateFieldType.TEXT         :   return value.trim()
    325             case TemplateFieldType.INTEGER      :   return Integer.valueOf(value.replaceAll("[^0-9]",""))
    326             case TemplateFieldType.FLOAT        :   return Float.valueOf(value.replace(",","."));
    327             case TemplateFieldType.DOUBLE       :   return Double.valueOf(value.replace(",","."));
    328             case TemplateFieldType.STRINGLIST   :   return value.trim()
    329             case TemplateFieldType.ONTOLOGYTERM :   return value.trim()
    330             case TemplateFieldType.DATE         :   return value
    331             default                             :   return value
    332         }
     329    def formatValue(String value, TemplateFieldType type) throws NumberFormatException {
     330            switch (type) {
     331                case TemplateFieldType.STRING       :   return value.trim()
     332                case TemplateFieldType.TEXT         :   return value.trim()
     333                case TemplateFieldType.INTEGER      :   return Integer.valueOf(value.replaceAll("[^0-9]",""))
     334                case TemplateFieldType.FLOAT        :   return Float.valueOf(value.replace(",","."));
     335                case TemplateFieldType.DOUBLE       :   return Double.valueOf(value.replace(",","."));
     336                case TemplateFieldType.STRINGLIST   :   return value.trim()
     337                case TemplateFieldType.ONTOLOGYTERM :   return value.trim()
     338                case TemplateFieldType.DATE         :   return value
     339                default                             :   return value
     340            }
    333341    }
    334342}
Note: See TracChangeset for help on using the changeset viewer.