Changeset 1612

Show
Ignore:
Timestamp:
10-03-11 09:54:52 (3 years ago)
Author:
robert@…
Message:

Update simple wizard to import subject without a name correctly and import date values in the right way

Location:
trunk/grails-app
Files:
2 modified

Legend:

Unmodified
Added
Removed
  • trunk/grails-app/controllers/dbnp/studycapturing/SimpleWizardController.groovy

    r1611 r1612  
    717717                                        // Determine entity class and add a parent. Add the entity to the study 
    718718                                        def preferredIdentifier = importerService.givePreferredIdentifier( entity.class ); 
    719                                         def equalClosure = { it.getFieldValue( preferredIdentifier.name ) == entity.getFieldValue( preferredIdentifier.name ) } 
     719                                        def equalClosure = { it.getIdentifier() == entity.getIdentifier() } 
    720720                                        def entityName = entity.class.name[ entity.class.name.lastIndexOf( "." ) + 1 .. -1 ] 
    721721 
     
    724724                                        switch( entity.class ) { 
    725725                                                case Sample: 
    726                                                         if( !preferredIdentifier || !study.samples?.find( equalClosure ) ) { 
     726                                                        if( !study.samples?.find( equalClosure ) ) { 
    727727                                                                study.addToSamples( entity ); 
    728728                                                        } 
     
    743743                                                        break; 
    744744                                                case Subject: 
    745                                                         // Subjects should have unique names; if the user has entered the same name multiple times, 
    746                                                         // the subject will be renamed 
    747                                                         def subjectFound = study.subjects?.find( equalClosure ) ; 
    748                                                         if( preferredIdentifier && subjectFound ) { 
    749                                                                 def baseName = entity.getFieldValue( preferredIdentifier.name ) 
    750                                                                 def counter = 1; 
     745                                                        if( !study.samples?.find( equalClosure ) ) { 
    751746                                                                 
    752                                                                 while( study.subjects?.find { it.getFieldValue( preferredIdentifier.name ) == entity.getFieldValue( preferredIdentifier.name ) } ) { 
    753                                                                         entity.setFieldValue( preferredIdentifier.name, baseName + " (" + counter++ + ")" ) 
     747                                                                if( preferredIdentifier ) { 
     748                                                                        // Subjects without a name should just be called 'subject' 
     749                                                                        if( !entity.getFieldValue( preferredIdentifier.name ) ) 
     750                                                                                entity.setFieldValue( preferredIdentifier.name, "Subject" ); 
     751                                                                 
     752                                                                        // Subjects should have unique names; if the user has entered the same name multiple times, 
     753                                                                        // the subject will be renamed 
     754                                                                        def baseName = entity.getFieldValue( preferredIdentifier.name ) 
     755                                                                        def counter = 2; 
     756                                                                         
     757                                                                        while( study.subjects?.find { it.getFieldValue( preferredIdentifier.name ) == entity.getFieldValue( preferredIdentifier.name ) } ) { 
     758                                                                                entity.setFieldValue( preferredIdentifier.name, baseName + " (" + counter++ + ")" ) 
     759                                                                        } 
    754760                                                                } 
     761                                                                 
     762                                                                study.addToSubjects( entity ); 
     763                                                         
    755764                                                        } 
    756                                                         study.addToSubjects( entity ); 
    757765                                                         
    758766                                                        break; 
    759767                                                case Event: 
    760                                                         if( !preferredIdentifier || !study.events?.find( equalClosure ) ) { 
     768                                                        if( !study.events?.find( equalClosure ) ) { 
    761769                                                                study.addToEvents( entity ); 
    762770                                                        } 
     
    769777                                                        }  
    770778                                                 
    771                                                         if( !preferredIdentifier || !study.samplingEvents?.find( equalClosure ) ) { 
     779                                                        if( !study.samplingEvents?.find( equalClosure ) ) { 
    772780                                                                study.addToSamplingEvents( entity ); 
    773781                                                        } 
  • trunk/grails-app/services/dbnp/importer/ImporterService.groovy

    r1611 r1612  
    413413                                if (mc != null && !mc.dontimport && mc.entityclass == entity) { 
    414414                                        try { 
    415                                                 value = formatValue(df.formatCellValue(cell), mc.templatefieldtype) 
     415                                                if( cell.getCellType() == Cell.CELL_TYPE_NUMERIC && DateUtil.isCellDateFormatted(cell) ) { 
     416                                                        // The format for date template fields is dd/mm/yyyy 
     417                                                        def date = cell.getDateCellValue(); 
     418                                                        value = date.format( "dd/MM/yyyy" ) 
     419                                                        println "Date value: " + value + " - " + formatValue(df.formatCellValue(cell), mc.templatefieldtype); 
     420                                                } else { 
     421                                                        value = formatValue(df.formatCellValue(cell), mc.templatefieldtype) 
     422                                                } 
    416423                                        } catch (NumberFormatException nfe) { 
    417424                                                value = ""