Show
Ignore:
Timestamp:
16-02-11 14:22:09 (3 years ago)
Author:
t.w.abma@…
Message:

- Importermappings can now be fully retrieved and stored in step 2 of the Importer Wizard

Files:
1 modified

Legend:

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

    r1525 r1527  
    351351                        flow.importer_datamatrix_start = params.datamatrix_start.toInteger() - 1 // 0 == first row 
    352352                        flow.importer_headerrow = params.headerrow.toInteger() 
    353             flow.importer_entityclass = entityClass.getClass() 
     353            flow.importer_entityclass = entityClass 
    354354 
    355355                        // Get the header from the Excel file using the arguments given in the first step of the wizard 
     
    372372                } 
    373373 
     374 
    374375        log.error ".importer wizard not all fields are filled in" 
    375376        this.appendErrorMap(['error': "Not all fields are filled in, please fill in or select all fields"], flash.wizardErrors) 
     
    386387    boolean propertiesLoadImportMappingPage(flow, flash, params) { 
    387388        def im = ImportMapping.get(params.importmapping_id.toInteger()) 
    388  
    389         flow.importer_header.each { 
    390             println "original=" + it.dump() 
    391         } 
     389        im.refresh() 
    392390 
    393391        im.mappingcolumns.each { mappingcolumn -> 
    394             flow.importer_header[mappingcolumn.index.toInteger()] = mappingcolumn 
    395             println "adjusted=" + mappingcolumn.dump() 
     392            def mc = new MappingColumn() 
     393            mc.properties = mappingcolumn.properties 
     394 
     395            flow.importer_header[mappingcolumn.index.toInteger()] = mc          
    396396        } 
    397397    } 
     
    418418                        // Create an actual class instance of the selected entity with the selected template 
    419419                        // This should be inside the closure because in some cases in the advanced importer, the fields can have different target entities                       
    420                         def entityClass = GdtService.getInstanceByEntityName(flow.importer_header[columnindex.toInteger()].entity.getName()) 
    421             def entityObj = entityClass.newInstance(template:template) 
     420                        //def entityClass = GdtService.getInstanceByEntityName(flow.importer_header[columnindex.toInteger()].entity.getName())             
     421            def entityObj = flow.importer_entityclass.newInstance(template:template) 
    422422 
    423423            def dontimport = (property == "dontimport") ? true : false 
     
    432432                                        property:property, 
    433433                                        index:columnindex, 
    434                                         entity:flow.importer_header[columnindex.toInteger()].entity, 
     434                                        entityclass:flow.importer_entityclass, 
    435435                                        templatefieldtype:entityObj.giveFieldType(property), 
    436436                                        dontimport: dontimport, 
     
    439439            // Save mappingcolumn 
    440440            if (mc.validate()) { 
    441                 im.addToMappingcolumns(mc) 
     441                im.addToMappingcolumns(mc)                 
    442442            } 
    443443            else { 
     
    449449            // Save importmapping 
    450450            if (im.validate()) { 
    451                 im.save(flush:true) 
     451                im.save(flush:true)                 
    452452            } 
    453453            else { 
     
    488488                        // Create an actual class instance of the selected entity with the selected template 
    489489                        // This should be inside the closure because in some cases in the advanced importer, the fields can have different target entities 
    490                         def entityClass = Class.forName(flow.importer_header[columnindex.toInteger()].entity.getName(), true, this.getClass().getClassLoader()) 
     490                        def entityClass = Class.forName(flow.importer_header[columnindex.toInteger()].entityclass.getName(), true, this.getClass().getClassLoader()) 
    491491                        def entityObj = entityClass.newInstance(template: template) 
    492492 
     
    707707                return errors 
    708708        } 
     709 
    709710}