Changeset 297


Ignore:
Timestamp:
Mar 22, 2010, 2:18:30 PM (9 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)
Location:
trunk/grails-app
Files:
3 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}
  • trunk/grails-app/taglib/dbnp/importer/ImporterTagLib.groovy

    r283 r297  
    1717import dbnp.studycapturing.Template
    1818import dbnp.studycapturing.TemplateFieldType
     19import org.apache.poi.hssf.usermodel.HSSFCell
     20import org.apache.poi.ss.usermodel.DataFormatter
    1921
    2022class ImporterTagLib {
     
    160162        out << res
    161163    }
     164
     165    /**
     166    * @param cell HSSFCell variable
     167    * @return good representation of variable (instead of toString())
     168    */
     169    def displayCell = { attrs ->       
     170        def cell = attrs['cell']
     171        def df = new DataFormatter()
     172
     173        switch (cell.getCellType()) {
     174            case HSSFCell.CELL_TYPE_STRING      :   out << cell.getStringCellValue()
     175                                                    break
     176            case HSSFCell.CELL_TYPE_NUMERIC     :   out << df.formatCellValue(cell)
     177                                                    break
     178        }
     179    }
    162180}
  • trunk/grails-app/views/importer/common/_preview.gsp

    r256 r297  
    4545            <tr>
    4646                <td>Value</td>
    47                 <g:each var="column" in="${row}">
     47                <g:each var="cell" in="${row}">
    4848                    <td class="datamatrix">
    49                         <g:if test="${column.toString()==''}">.</g:if>
    50                         <g:else>${column.toString()}</g:else>
     49                        <g:if test="${cell.toString()==''}">.</g:if>
     50                        <g:else><importer:displayCell cell="${cell}"/></g:else>
    5151                    </td>
    5252                </g:each>
Note: See TracChangeset for help on using the changeset viewer.