Ignore:
Timestamp:
Aug 16, 2010, 6:27:31 PM (10 years ago)
Author:
keesvb
Message:

updated event group with unique name constraint, added EventGroup? tests and updated deleteEventGroup to deal with empty event groups

Location:
trunk/grails-app/domain/dbnp/studycapturing
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/grails-app/domain/dbnp/studycapturing/EventGroup.groovy

    r784 r813  
    2020
    2121        static constraints = {
     22                // Ensure that the event group name is unique within the study
     23                name(unique:['parent'])
    2224        }
    2325}
  • trunk/grails-app/domain/dbnp/studycapturing/Study.groovy

    r812 r813  
    268268                println "-"
    269269                println "-"
    270                 println "REMOVING AND ENENTGROUP DOES NOT DELETE SAMPLES"
     270                println "REMOVING AN EVENTGROUP DOES NOT DELETE SAMPLES"
    271271                println "-"
    272272                println "-"
     
    279279                String msg = "EventGroup ${eventGroup} was deleted"
    280280
    281                 // remove all samples that originate from this eventGroup
    282                 if (eventGroup.samplingEvents.size()) {
    283                         // find all samples related to this eventGroup
    284                         // - subject comparison is relatively straightforward and
    285                         //   behaves as expected
    286                         // - event comparison behaves strange, so now we compare
    287                         //              1. database id's or,
    288                         //              2. object identifiers or,
    289                         //              3. objects itself
    290                         //   this seems now to work as expected
    291                         this.samples.findAll { sample ->
    292                                 (
    293                                         (eventGroup.subjects.findAll {
    294                                                 it.equals(sample.parentSubject)
    295                                         })
    296                                         &&
    297                                         (eventGroup.samplingEvents.findAll {
    298                                                 (
    299                                                         (it.id && sample.parentEvent.id && it.id==sample.parentEvent.id)
    300                                                         ||
    301                                                         (it.getIdentifier() == sample.parentEvent.getIdentifier())
    302                                                         ||
    303                                                         it.equals(sample.parentEvent)
    304                                                 )
    305                                         })
    306                                 )
    307                         }.each() {
    308                                 // remove sample from study
    309 
    310                                 // -------
    311                                 // NOTE, the right samples are found, but the don't
    312                                 // get deleted from the database!
    313                                 // -------
    314 
    315                                 println ".removing sample '${it.name}' from study '${this.title}'"
    316                                 msg += ", sample '${it.name}' was deleted"
    317                                 this.removeFromSamples( it )
     281                // If the event group contains sampling events
     282                if (eventGroup.samplingEvents) {
     283                        // remove all samples that originate from this eventGroup
     284                        if (eventGroup.samplingEvents.size()) {
     285                                // find all samples related to this eventGroup
     286                                // - subject comparison is relatively straightforward and
     287                                //   behaves as expected
     288                                // - event comparison behaves strange, so now we compare
     289                                //              1. database id's or,
     290                                //              2. object identifiers or,
     291                                //              3. objects itself
     292                                //   this seems now to work as expected
     293                                this.samples.findAll { sample ->
     294                                        (
     295                                                (eventGroup.subjects.findAll {
     296                                                        it.equals(sample.parentSubject)
     297                                                })
     298                                                &&
     299                                                (eventGroup.samplingEvents.findAll {
     300                                                        (
     301                                                                (it.id && sample.parentEvent.id && it.id==sample.parentEvent.id)
     302                                                                ||
     303                                                                (it.getIdentifier() == sample.parentEvent.getIdentifier())
     304                                                                ||
     305                                                                it.equals(sample.parentEvent)
     306                                                        )
     307                                                })
     308                                        )
     309                                }.each() {
     310                                        // remove sample from study
     311
     312                                        // -------
     313                                        // NOTE, the right samples are found, but the don't
     314                                        // get deleted from the database!
     315                                        // -------
     316
     317                                        println ".removing sample '${it.name}' from study '${this.title}'"
     318                                        msg += ", sample '${it.name}' was deleted"
     319                                        this.removeFromSamples( it )
     320                                }
    318321                        }
    319                 }
    320 
    321                 // remove all samplingEvents from this eventGroup
    322                 eventGroup.samplingEvents.findAll{}.each() {
    323                         eventGroup.removeFromSamplingEvents(it)
    324                         println ".removed samplingEvent '${it.name}' from eventGroup '${eventGroup.name}'"
    325                         msg += ", samplingEvent '${it.name}' was removed from eventGroup '${eventGroup.name}'"
    326                 }
    327 
    328                 // remove all subject from this eventGroup
    329                 eventGroup.subjects.findAll{}.each() {
    330                         eventGroup.removeFromSubjects(it)
    331                         println ".removed subject '${it.name}' from eventGroup '${eventGroup.name}'"
    332                         msg += ", subject '${it.name}' was removed from eventGroup '${eventGroup.name}'"
     322
     323                        // remove all samplingEvents from this eventGroup
     324                        eventGroup.samplingEvents.findAll{}.each() {
     325                                eventGroup.removeFromSamplingEvents(it)
     326                                println ".removed samplingEvent '${it.name}' from eventGroup '${eventGroup.name}'"
     327                                msg += ", samplingEvent '${it.name}' was removed from eventGroup '${eventGroup.name}'"
     328                        }
     329                }
     330
     331                // If the event group contains subjects
     332                if (eventGroup.subjects) {
     333                        // remove all subject from this eventGroup
     334                        eventGroup.subjects.findAll{}.each() {
     335                                eventGroup.removeFromSubjects(it)
     336                                println ".removed subject '${it.name}' from eventGroup '${eventGroup.name}'"
     337                                msg += ", subject '${it.name}' was removed from eventGroup '${eventGroup.name}'"
     338                        }
    333339                }
    334340
Note: See TracChangeset for help on using the changeset viewer.