Ignore:
Timestamp:
Mar 10, 2011, 9:54:52 AM (11 years ago)
Author:
robert@…
Message:

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

File:
1 edited

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                                                        }
Note: See TracChangeset for help on using the changeset viewer.