Ignore:
Timestamp:
Nov 11, 2010, 2:29:16 PM (10 years ago)
Author:
t.w.abma@…
Message:
  • rewrote part of the importer and added a ImportRecord? and ImportCell? domain
  • ontologies should now always be shown individually
File:
1 edited

Legend:

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

    r1103 r1121  
    219219        def sheet = wb.getSheetAt(sheetindex)
    220220        def table = []
    221         def failedcells = [:] // map [recordhash, [mappingcolumnlist]] values
     221        def failedcells = [:] // map [recordhash, importrecord] values
    222222       
    223223        // walk through all rows and fill the table with records
    224         (rowindex..sheet.getLastRowNum()).each { i ->
    225             //table.add(createRecord(template_id, sheet.getRow(i), mcmap))
     224        (rowindex..sheet.getLastRowNum()).each { i ->       
    226225            // Create an entity record based on a row read from Excel and store the cells which failed to be mapped
    227226            def (record, failed) = createRecord(template_id, sheet.getRow(i), mcmap)
     
    232231            // If failed cells have been found, add them to the failed cells map
    233232            // the record hashcode is later on used to put the failed data back
    234             // in the data matrix
    235             if (failed.size()!=0) failedcells.put(record.hashCode(), failed)
     233            // in the data matrix           
     234            if (failed.importcells.size()>0) failedcells.put(record.hashCode(), failed)
    236235        }
    237 
    238         failedcells.each { record ->
    239            record.each { cell ->
    240                cell.each {
    241                    println it.value.dump()
    242                }
    243             }
    244         }
    245 
    246236
    247237        return [table,failedcells]
     
    257247     **/
    258248    def saveCorrectedCells(datamatrix, failedcells, correctedcells) {       
    259         // Loop through all failed cells
    260 
    261         failedcells.each { mcrecord ->
    262             mcrecord.each { mappingcolumn ->
     249       
     250        // Loop through all failed cells (stored as
     251        failedcells.each { record ->
     252            record.value.importcells.each { cell ->
     253
    263254                  // Get the corrected value
    264                   def correctedvalue = correctedcells.find { it.key.toInteger() == mappingcolumn.hashCode()}.value
     255                  def correctedvalue = correctedcells.find { it.key.toInteger() == cell.getIdentifier()}.value
    265256
    266257                  // Find the record in the table which the mappingcolumn belongs to
    267                   def tablerecord = datamatrix.find { it.hashCode() == mcrecord.key }
    268 
    269                   // Loop through all entities in the record
     258                  def tablerecord = datamatrix.find { it.hashCode() == record.key }
     259
     260                  // Loop through all entities in the record and correct them if necessary
    270261                  tablerecord.each { rec ->
    271262                      rec.each { entity ->
    272263                            try {
    273264                                // Update the entity field
    274                                 entity.setFieldValue(mappingcolumn.value.property[0], correctedvalue)
    275                                 println "Adjusted " + mappingcolumn.value.property[0] + " to " + correctedvalue
     265                                entity.setFieldValue(cell.mappingcolumn.property, correctedvalue)
     266                                //println "Adjusted " + cell.mappingcolumn.property + " to " + correctedvalue
    276267                            }
    277268                            catch (Exception e) {
    278                                 println "Could not map corrected ontology"
     269                                //println "Could not map corrected ontology: " + cell.mappingcolumn.property + " to " + correctedvalue
    279270                            }
    280271                      }
    281272                  } // end of table record
    282             } // end of mapping record
    283         } // end of failed cells loop     
     273               } // end of cell record
     274            } // end of failedlist
    284275    }
    285276   
     
    428419                def tft = TemplateFieldType
    429420                def record = [] // list of entities and the read values
    430                 def failed = [] // list of failed columns [mappingcolumn] with the value which couldn't be mapped into the entity
     421                def failed = new ImportRecord() // list of failed cells with the value which couldn't be mapped into the entity
    431422
    432423                // Initialize all possible entities with the chosen template
     
    460451                                    temp.value = "undefined"
    461452                                    failed.add(temp)
    462                                 }*/
     453                                }*/                               
    463454                             
    464455
    465456                                try {
    466                                     /*if ((mc.templatefieldtype == TemplateFieldType.ONTOLOGYTERM) && (value == ""))
    467                                         {
    468                                             def temp = new MappingColumn()
    469                                             temp.properties = mc.properties
    470                                             temp.value="unknown"
    471                                             failed.add(temp)
    472                                         }*/
    473 
    474457                                // which entity does the current cell (field) belong to?
    475458                                    switch (mc.entity) {
     
    495478                                } catch (IllegalArgumentException iae) {
    496479                                    // store the mapping column and value which failed
    497                                     def temp = new MappingColumn()
    498                                     temp.properties = mc.properties
    499                                     temp.value = value
    500                                     failed.add(temp)
     480                                    def mcInstance = new MappingColumn()
     481                                    mcInstance.properties = mc.properties
     482                                    failed.addToImportcells(
     483                                        new ImportCell(mappingcolumn:mcInstance,
     484                                            value:value)
     485                                        )
    501486                                }
    502487                        } // end
    503488                } // end for
    504        
    505489        // a failed column means that using the entity.setFieldValue() threw an exception       
    506490        return [record, failed]       
Note: See TracChangeset for help on using the changeset viewer.