Ignore:
Timestamp:
Mar 22, 2010, 2:18:30 PM (12 years ago)
Author:
tabma
Message:
  • imported data is now being saved in the database (be sure that you choose the correct fieldtypes anywhere/anytime when testing with the Study Excel file)
File:
1 edited

Legend:

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

    r284 r297  
    179179    }
    180180   
     181     /**
     182                     // start transaction
     183                        def transaction = sessionFactory.getCurrentSession().beginTransaction()
     184                              // persist data to the database
     185                                try {
     186                                   // commit transaction
     187                                        println "commit"
     188                                        transaction.commit()
     189                                        success()
     190                                } catch (Exception e) {
     191                                        // rollback
     192                                        // stacktrace in flash scope
     193                                        flash.debug = e.getStackTrace()
     194
     195                                        println "rollback"
     196                                        transaction.rollback()
     197                                        error()
     198                                }
     199      */
     200
    181201    /**
    182202     * @param datamatrix two dimensional array containing entities with values read from Excel file
     
    242262
    243263        for (HSSFCell cell: excelrow) {
    244             def mc = mcmap[cell.getColumnIndex()]           
     264            def mc = mcmap[cell.getColumnIndex()]
     265            def value = formatValue(df.formatCellValue(cell), mc.templatefieldtype)
    245266
    246267            switch(mc.entity) {
    247268                case Study      :   (record.any {it.getClass()==mc.entity}) ? 0 : record.add(study)
    248                                     study.setFieldValue(mc.property.name, df.formatCellValue(cell))
     269                                    study.setFieldValue(mc.property.name, value)
    249270                                    break
    250271                case Subject    :   (record.any {it.getClass()==mc.entity}) ? 0 : record.add(subject)
    251                                     subject.setFieldValue(mc.property.name, df.formatCellValue(cell))
     272                                    subject.setFieldValue(mc.property.name, value)
    252273                                    break
    253274                case Event      :   (record.any {it.getClass()==mc.entity}) ? 0 : record.add(event)
    254                                     event.setFieldValue(mc.property.name, df.formatCellValue(cell))
     275                                    event.setFieldValue(mc.property.name, value)
    255276                                    break
    256277                case Protocol   :   (record.any {it.getClass()==mc.entity}) ? 0 : record.add(protocol)
    257                                     protocol.setFieldValue(mc.property.name, df.formatCellValue(cell))
     278                                    protocol.setFieldValue(mc.property.name, value)
    258279                                    break
    259280                case Sample     :   (record.any {it.getClass()==mc.entity}) ? record.add(sample) : 0
    260                                     sample.setFieldValue(mc.property.name, df.formatCellValue(cell))
     281                                    sample.setFieldValue(mc.property.name, value)
    261282                                    break
    262283                case Object     :   // don't import
     
    267288        return record
    268289    }
     290
     291    /**
     292    * Method to parse a value conform a specific type
     293    * @param value string containing the value
     294    * @return object corresponding to the TemplateFieldType
     295    */
     296    def formatValue(String value, TemplateFieldType type) {
     297        switch (type) {
     298            case TemplateFieldType.STRING       :   return value
     299            case TemplateFieldType.TEXT         :   return value
     300            case TemplateFieldType.INTEGER      :   return Integer.valueOf(value.replaceAll("[^0-9]",""))
     301            case TemplateFieldType.FLOAT        :   return Float.valueOf(value.replace(",","."));
     302            case TemplateFieldType.DOUBLE       :   return Double.valueOf(value.replace(",","."));
     303            case TemplateFieldType.STRINGLIST   :   return value
     304            case TemplateFieldType.ONTOLOGYTERM :   return value
     305            case TemplateFieldType.DATE         :   return value
     306            default                             :   return value
     307        }
     308    }
    269309}
Note: See TracChangeset for help on using the changeset viewer.