Changeset 1469

Show
Ignore:
Timestamp:
01-02-11 17:33:41 (3 years ago)
Author:
t.w.abma@…
Message:

- importer doesn't crash on empty (null) rows in an Excel sheet anymore
- template editor can be opened and the selected form fields will be remembered after a refresh
- fixed Template lookup

Location:
trunk/grails-app
Files:
6 modified

Legend:

Unmodified
Added
Removed
  • trunk/grails-app/conf/Config.groovy

    r1459 r1469  
    7171                'org.hibernate' 
    7272 
     73    error stdout:"StackTrace" 
     74 
    7375        warn 'org.mortbay.log' 
    7476 
  • trunk/grails-app/controllers/dbnp/importer/ImporterController.groovy

    r1461 r1469  
    66import org.codehaus.groovy.grails.plugins.web.taglib.ValidationTagLib 
    77import grails.plugins.springsecurity.Secured 
     8 
     9import org.dbnp.gdt.* 
    810 
    911/** 
     
    109111                                success() 
    110112                        } 
     113 
     114            on("refresh") { 
     115                flash.importer_params = params 
     116                                success() 
     117                        }.to "pageOne" 
     118 
    111119                        on("next") { 
    112120                                flash.wizardErrors = [:] 
     
    341349                        flow.importer_templates = Template.get(flow.importer_template_id) 
    342350                        flow.importer_allfieldtypes = "true" 
    343                         /*else { 
    344                                                         render (template:"common/error", 
    345                                                                 model:[error:"Wrong permissions: you are not allowed to write to the study you selected (${flow.importer_study})."]) 
    346                                                 }*/ 
    347351 
    348352                        return true 
     
    391395                flow.importer_importeddata = table 
    392396                flow.importer_failedcells = failedcells 
     397         
    393398                return true 
    394399        } 
  • trunk/grails-app/services/dbnp/importer/ImporterService.groovy

    r1457 r1469  
    151151 
    152152                        (0..header.size() - 1).each { columnindex -> 
    153                                 def c = sheet.getRow(rowindex).getCell(columnindex, Row.CREATE_NULL_AS_BLANK) 
    154                                 row.add(c) 
     153                if (sheet.getRow(rowindex)) 
     154                    row.add( sheet.getRow(rowindex).getCell(columnindex, Row.CREATE_NULL_AS_BLANK) ) 
    155155                        } 
    156156 
     
    277277                        record.each { entity -> 
    278278                                switch (entity.getClass()) { 
    279                                         case Study: log.info "Persisting Study `" + entity + "`: " 
     279                                        case Study: log.info ".importer wizard, persisting Study `" + entity + "`: " 
    280280                                                entity.owner = authenticationService.getLoggedInUser() 
    281                                                 persistEntity(entity) 
    282                                                 break 
    283                                         case Subject: log.info "Persisting Subject `" + entity + "`: " 
     281                         
     282                        if (study.validate()) { 
     283                            if (!entity.save(flush:true)) { 
     284                                log.error ".importer wizard, study could not be saved: " + entity 
     285                                throw new Exception('.importer wizard, study could not be saved: ' + entity) 
     286                            } 
     287                        } else { 
     288                            log.error ".importer wizard, study could not be validated: " + entity 
     289                            throw new Exception('.importer wizard, study could not be validated: ' + entity) 
     290                        } 
     291 
     292                        break 
     293                                        case Subject: log.info ".importer wizard, persisting Subject `" + entity + "`: " 
    284294 
    285295                                                // is the current entity not already in the database? 
     
    292302 
    293303                                                break 
    294                                         case Event: log.info "Persisting Event `" + entity + "`: " 
     304                                        case Event: log.info ".importer wizard, persisting Event `" + entity + "`: " 
    295305                                                study.addToEvents(entity) 
    296306                                                break 
    297                                         case Sample: log.info "Persisting Sample `" + entity + "`: " 
     307                                        case Sample: log.info ".importer wizard, persisting Sample `" + entity + "`: " 
    298308 
    299309                                                // is this sample validatable (sample name unique for example?) 
     
    301311 
    302312                                                break 
    303                                         case SamplingEvent: log.info "Persisting SamplingEvent `" + entity + "`: " 
     313                                        case SamplingEvent: log.info ".importer wizard, persisting SamplingEvent `" + entity + "`: " 
    304314                                                study.addToSamplingEvents(entity) 
    305315                                                break 
    306                                         default: log.info "Skipping persisting of `" + entity.getclass() + "`" 
     316                                        default: log.info ".importer wizard, skipping persisting of `" + entity.getclass() + "`" 
    307317                                                break 
    308318                                } // end switch 
     
    381391         */ 
    382392        boolean persistEntity(entity) { 
    383                 log.info ".import wizard persisting ${entity}" 
    384  
    385                 try { 
     393                /*log.info ".import wizard persisting ${entity}" 
     394 
     395                try {             
    386396                        entity.save(flush: true) 
    387397                        return true 
     
    393403                } 
    394404 
    395                 return true 
     405                return true*/ 
     406        //println "persistEntity" 
    396407        } 
    397408 
  • trunk/grails-app/taglib/dbnp/importer/ImporterTagLib.groovy

    r1461 r1469  
    1616package dbnp.importer 
    1717import org.dbnp.gdt.* 
     18import org.dbnp.gdt.* 
     19 
    1820import org.apache.poi.ss.usermodel.Cell 
    1921import org.apache.poi.ss.usermodel.DataFormatter 
  • trunk/grails-app/views/importer/pages/_final_page.gsp

    r1430 r1469  
    2020<h1>Final Page</h1> 
    2121<p> 
    22 This concludes the example wizard. You can click <g:link action="index">here</g:link> to restart the wizard. 
     22This concludes the importer wizard. You can click <g:link action="index">here</g:link> to restart the wizard. 
    2323</p> 
    2424 
  • trunk/grails-app/views/importer/pages/_page_one.gsp

    r1461 r1469  
    2323            </td> 
    2424            <td width="100px"> 
    25                 <af:fileFieldElement name="importfile" value=""/> 
     25                <wizard:fileFieldElement name="importfile" value="${importer_params?.importfile}"/> 
    2626            </td> 
    2727        </tr> 
     
    3131            </td> 
    3232            <td width="100px"> 
    33                 <g:select name="sheetindex" from="${1..25}"/> 
     33                <g:select name="sheetindex" from="${1..25}" value="${importer_params?.sheetindex}"/> 
    3434            </td> 
    3535        </tr> 
     
    3939            </td> 
    4040            <td width="100px"> 
    41                 <g:select name="headerrow" from="${1..10}"/> 
     41                <g:select name="headerrow" from="${1..10}" value="${importer_params?.headerrow}"/> 
    4242            </td> 
    4343        </tr> 
     
    4747            </td> 
    4848            <td width="100px"> 
    49                 <g:select name="datamatrix_start" from="${2..10}"/> 
     49                <g:select name="datamatrix_start" from="${2..10}" value="${importer_params?.datamatrix_start}"/> 
    5050            </td> 
    5151        </tr> 
     
    5555            </td> 
    5656            <td> 
    57                 <g:select name="study.id" from="${studies}" optionKey="id"/> 
     57                <g:select name="study.id" from="${studies}" optionKey="id" value="${importer_params?.study?.id}"/> 
    5858            </td> 
    5959        </tr> 
     
    6767                id="entity" 
    6868                from="${GdtService.cachedEntities}" 
     69        value="${importer_params?.entity}" 
    6970                optionValue="${{it.name}}" 
    7071                optionKey="${{it.encoded}}" 
     
    8182            </td> 
    8283            <td> 
    83                 <g:select rel="typetemplate" entity="none" name="template_id" optionKey="id" optionValue="name" from="[]" /> 
     84                <g:select rel="typetemplate" entity="none" name="template_id" optionKey="id" optionValue="name" from="[]" value="${importer_params?.template_id}"/> 
    8485            </td> 
    8586        </tr>