Changeset 268


Ignore:
Timestamp:
Mar 15, 2010, 7:16:02 PM (7 years ago)
Author:
tabma
Message:
  • identifier column added
Location:
trunk/grails-app
Files:
3 edited

Legend:

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

    r256 r268  
    5757        session.header = header
    5858        session.importtemplate_id = params.template_id
     59        session.workbook = wb
    5960
    6061        render (view:"step1", model:[header:header, datamatrix:datamatrix])
     
    145146        }
    146147       
    147         for (e in session.header) {
     148        /*for (e in session.header) {
    148149            println e
    149         }
     150        }*/
     151
     152        //import workbook
     153        ImporterService.importdata(session.importtemplate_id, session.workbook, 0, 0, session.header)
     154        //println session.header.dump()
     155
    150156        render ("properties saved")
    151157    }
  • trunk/grails-app/services/dbnp/importer/ImporterService.groovy

    r259 r268  
    2121import org.apache.poi.hssf.usermodel.HSSFDateUtil
    2222import dbnp.studycapturing.TemplateFieldType
     23import dbnp.studycapturing.Template
    2324import dbnp.studycapturing.Study
    2425import dbnp.studycapturing.Subject
     
    4445    /**
    4546     * @param wb high level representation of the workbook
    46      * @return header representation as a MappingColumn array
     47     * @return header representation as a MappingColumn hashmap
    4748     */
    4849    def getHeader(HSSFWorkbook wb, int sheetindex){
     
    6869                    case HSSFCell.CELL_TYPE_NUMERIC:                   
    6970                            if (HSSFDateUtil.isCellDateFormatted(c)) {
    70                                 println("DATE")
    7171                                header[c.getColumnIndex()] = new dbnp.importer.MappingColumn(name:df.formatCellValue(headercell), templatefieldtype:TemplateFieldType.DATE)
    7272                            }
     
    146146    * by using mapping information
    147147    *
     148    * @param template_id template identifier to use fields from
    148149    * @param wb POI horrible spreadsheet formatted workbook object
    149     * @param mc array of MappingColumns
     150    * @param mcmap linked hashmap (preserved order) of MappingColumns
    150151    * @param sheetindex sheet to use when using multiple sheets
    151152    * @param rowindex first row to start with reading the actual data (NOT the header)
     
    153154    * @see dbnp.importer.MappingColumn
    154155    */
    155     def importdata(HSSFWorkbook wb, int sheetindex, int rowindex, MappingColumn[] mcarray) {
     156    def importdata(template_id, HSSFWorkbook wb, int sheetindex, int rowindex, mcmap) {
    156157        def sheet = wb.getSheetAt(sheetindex)
    157158        def rows  = []
     
    163164
    164165            // get the value of the cells in the row
    165             for (HSSFCell c: sheet.getRow(i))           
    166                 mc = mcarray[c.getColumnIndex()]               
    167                 record.add(createColumn(c, mc))
    168         }
     166            for (HSSFCell cell: sheet.getRow(i)) {
     167                def mc = mcmap[cell.getColumnIndex()]
     168                record.add(createColumn(template_id, cell, mc))
     169            }
     170        }
     171        println record
    169172    }
    170173
     
    172175    * This function creates a column based on the current cell and mapping
    173176    *
     177    * @param template_id template identifier to use fields from
    174178    * @param cell POI cell read from Excel
    175179    * @param mc mapping column
     
    177181    *
    178182    */
    179     def createColumn(HSSFCell cell, MappingColumn mc) {
     183    def createColumn(template_id, HSSFCell cell, MappingColumn mc) {
    180184        def df = new DataFormatter()
    181 
    182         // check the templatefield type of the cell
     185        def template = Template.get(template_id)
     186
     187        // check the templatefield entity of the cell
    183188        switch(mc.entity) {
    184             case Study  :   def st = new Study()
    185                             st.setFieldValue(mc.name, df.formatCellValue(c))
     189            case Study  :   def st = new Study(template:template)
     190                            st.setFieldValue(mc.name, df.formatCellValue(cell))
    186191                            return st
    187192                            break
    188             case Subject:   def su = new Subject()
    189                             su.setFieldValue(mc.name, df.formatCellValue(c))
     193            case Subject:   def su = new Subject(template:template)
     194                            su.setFieldValue(mc.name, df.formatCellValue(cell))
    190195                            return su
    191196                            break
    192             case Event  :   def ev = new Event()
    193                             ev.setFieldValue(mc.name, df.formatCellValue(c))
     197            case Event  :   def ev = new Event(template:template)
     198                            ev.setFieldValue(mc.name, df.formatCellValue(cell))
    194199                            return ev
    195200                            break
    196             case Protocol:  def pr = new Protocol()
    197                             pr.setFieldValue(mc.name, df.formatCellValue(c))
     201            case Protocol:  def pr = new Protocol(template:template)
     202                            pr.setFieldValue(mc.name, df.formatCellValue(cell))
    198203                            return pr
    199204                            break
    200             case Sample :   def sa = new Sample()
    201                             sa.setFieldValue(mc.name, df.formatCellValue(c))
     205            case Sample :   def sa = new Sample(template:template)
     206                            sa.setFieldValue(mc.name, df.formatCellValue(cell))
    202207                            return sa
    203208                            break
    204             case Object :   break
    205            
    206         }
    207 
     209            case Object :   break           
     210        }
    208211    }
    209212}
  • trunk/grails-app/views/importer/common/_properties.gsp

    r247 r268  
    1818              <tr><td colspan="2"><h4>${stdentity.name}</h4></td></tr>
    1919              <tr>
    20                   <td>Columnname:</td><td>Property:</td>
     20                  <td>Identifier:</td>
     21                  <td>Columnname:</td>
     22                  <td>Property:</td>
    2123              </tr>           
    2224                <g:each var="selentity" in="${selectedentities}">
    2325                    <g:if test="${selentity.type.toLong()==stdentity.type}">
    2426                        <tr>
     27                            <td width="12px">
     28                                <g:checkBox name="identifier"/>
     29                            </td>
    2530                            <td class="header" width="200px">
    2631                                <b>${header[selentity.columnindex.toInteger()].name}</b>
Note: See TracChangeset for help on using the changeset viewer.