Changeset 1155

Show
Ignore:
Timestamp:
17-11-10 14:12:48 (3 years ago)
Author:
work@…
Message:

- resolving issue #195, sample generation madness. This was partly caused by the intoduction of ParentEvent? and only happened in strange situations which normally should not happen in a serious study. But of course, it should never happen.
- also extended the sample name with eventGroupName

Location:
trunk/grails-app
Files:
4 modified

Legend:

Unmodified
Added
Removed
  • trunk/grails-app/conf/Config.groovy

    r1133 r1155  
    120120        warn 'org.mortbay.log' 
    121121 
     122        //info 'org.codehaus.groovy.grails.web.servlet', 
     123        //       'org.codehaus.groovy.grails.plugins' 
     124 
    122125        //debug 'org.codehaus.groovy.grails.plugins' 
    123126} 
  • trunk/grails-app/controllers/dbnp/studycapturing/WizardController.groovy

    r1150 r1155  
    8080                // start the flow 
    8181                onStart { 
     82                        log.info ".entering onStart" 
     83 
    8284                        // define flow variables 
    8385                        flow.page = 0 
     
    105107                        render(view: "/wizard/index") 
    106108                        onRender { 
     109                                log.info ".entering mainPage" 
     110 
    107111                                flow.page = 1 
    108112                                success() 
     
    120124                handleJump { 
    121125                        action { 
     126                                log.info ".entering handleJump" 
     127 
    122128                                if (flow.jump && flow.jump.action == 'edit') { 
    123129                                        if (flow.jump.id) { 
     
    146152                        render(view: "_start") 
    147153                        onRender { 
     154                                log.info ".entering start" 
     155 
    148156                                flow.page = 1 
    149157                                success() 
     
    164172                        render(view: "_redirect") 
    165173                        onRender { 
     174                                log.info ".entering redirectToImport" 
    166175                                flash.uri = "/importer/index" 
    167176                        } 
     
    173182                        render(view: "_modify") 
    174183                        onRender { 
     184                                log.info ".entering modify" 
     185 
    175186                                flow.page = 1 
    176187                                flash.cancel = true 
     
    196207                        render(view: "_study") 
    197208                        onRender { 
     209                                log.info ".entering study" 
     210 
    198211                                flow.page = 1 
    199212                                success() 
     
    240253                        render(view: "_subjects") 
    241254                        onRender { 
     255                                log.info ".entering subjects" 
     256 
    242257                                flow.page = 2 
    243258 
     
    298313                        render(view: "_events") 
    299314                        onRender { 
     315                                log.info ".entering events" 
     316 
    300317                                flow.page = 3 
    301318 
     
    470487                eventsNext { 
    471488                        action { 
     489                                log.info ".entering eventsNext" 
     490 
    472491                                def assigned = false 
    473492 
     
    496515                        render(view: "_unassigned_samplingEvent_warning") 
    497516                        onRender { 
     517                                log.info ".entering unassignedSamplingEventsWarning" 
     518 
    498519                                flow.page = 3 
    499520                                success() 
     
    507528                        render(view: "_groups") 
    508529                        onRender { 
     530                                log.info ".entering groups" 
     531 
    509532                                flow.page = 3 
    510533                                success() 
     
    528551                        render(view: "_samples_previous_warning") 
    529552                        onRender { 
     553                                log.info ".entering samplePrevious" 
     554 
    530555                                flow.page = 4 
    531  
    532                                 // TEMPORARY FIX TO REMOVE ALL SAMPLES AND REGENERATE THEM 
    533                                 // THEN USER BROWSED BACK 
    534                                 println ".removing samples from study" 
    535  
    536                                 // remove samples from study 
    537                                 flow.samples.each() { 
    538                                         flow.study.removeFromSamples(it.sample) 
    539                                 } 
    540  
    541                                 // remove samples from flow 
    542                                 flow.remove('samples') 
    543                                 // END FIX 
    544556                        } 
    545557                        on("next").to "samples" 
     
    551563                        render(view: "_samples") 
    552564                        onRender { 
     565                                log.info ".entering samples" 
     566 
    553567                                flow.page = 4 
    554568                                success() 
     
    614628                        render(view: "_assays") 
    615629                        onRender { 
     630                                log.info ".entering assays" 
     631 
    616632                                flow.page = 5 
    617633                        } 
     
    710726                assayNext { 
    711727                        action { 
     728                                log.info ".entering assayNext" 
     729 
    712730                                // have we got samples and assays? 
    713731                                if (flow.study.assays && flow.study.samples) { 
     
    728746                        render(view: "_assay_groups") 
    729747                        onRender { 
     748                                log.info ".entering assayGroups" 
     749 
    730750                                flow.page = 5 
    731751                        } 
     
    752772                confirmPrevious { 
    753773                        action { 
     774                                log.info ".entering confirmPrevious" 
     775 
    754776                                // have we got samples and assays? 
    755777                                if (flow.study.assays && flow.study.samples) { 
     
    770792                        render(view: "_confirmation") 
    771793                        onRender { 
     794                                log.info ".entering confirm" 
     795 
    772796                                flow.page = 6 
    773797                        } 
     
    787811                        render(view: "_wait") 
    788812                        onRender { 
     813                                log.info ".entering waitForSave" 
     814 
    789815                                flow.page = 7 
    790816                        } 
     
    795821                save { 
    796822                        action { 
    797                                 println "saving..." 
     823                                log.info ".entering save" 
     824 
    798825                                flash.wizardErrors = [:] 
    799826 
     
    801828                                try { 
    802829                                        // save study 
    803                                         println ".saving study" 
     830                                        log.info ".saving study" 
    804831 
    805832                                        // Make sure the owner of the study is set right 
     
    810837                                                throw new Exception('error saving study') 
    811838                                        } 
    812                                         println ".saved study "+flow.study+" (id: "+flow.study.id+")" 
     839                                        log.info ".saved study "+flow.study+" (id: "+flow.study.id+")" 
    813840 
    814841                                        success() 
     
    832859                        render(view: "_error") 
    833860                        onRender { 
     861                                log.info ".entering error" 
     862 
    834863                                flow.page = 6 
    835864                        } 
     
    842871                        render(view: "_done") 
    843872                        onRender { 
     873                                log.info ".entering done" 
     874 
    844875                                flow.page = 7 
    845876                        } 
     
    9841015                                                flow.study.addToPublications(publication) 
    9851016                                        } else { 
    986                                                 println('.publication with ID ' + id + ' not found in database.') 
     1017                                                log.info('.publication with ID ' + id + ' not found in database.') 
    9871018                                        } 
    9881019                                } 
     
    9901021 
    9911022                } else { 
    992                         println('.no publications selected.') 
     1023                        log.info('.no publications selected.') 
    9931024                        flow.study.publications.clear() 
    9941025                } 
     
    10451076                                                flow.study.addToPersons(studyPerson) 
    10461077                                        } else { 
    1047                                                 println('.person ' + ids.person + ' or Role ' + ids.role + ' not found in database.') 
     1078                                                log.info('.person ' + ids.person + ' or Role ' + ids.role + ' not found in database.') 
    10481079                                        } 
    10491080                                } 
    10501081                        } 
    10511082                } else { 
    1052                         println('.no persons selected.') 
     1083                        log.info('.no persons selected.') 
    10531084                        flow.study.persons.clear() 
    10541085                } 
     
    10941125                                            users.add(user) 
    10951126                                        } else { 
    1096                                                 println('.user with ID ' + id + ' not found in database.') 
     1127                                                log.info('.user with ID ' + id + ' not found in database.') 
    10971128                                        } 
    10981129                                } 
     
    11001131 
    11011132                } else { 
    1102                         println('.no users selected.') 
     1133                        log.info('.no users selected.') 
    11031134                        users.clear() 
    11041135                } 
     
    12111242                                // validate subject 
    12121243                                if (subject.validate()) { 
    1213                                         println ".added subject "+subject 
     1244                                        log.info ".added subject "+subject 
    12141245                                } else { 
    12151246                                        // whoops? 
     
    12931324                                                                // instantiate a sample for this subject / event 
    12941325                                                                def samplingEventName = this.ucwords(event.template.name) 
    1295                                                                 def sampleName = (this.ucwords(subject.name) + '_' + samplingEventName + '_' + new RelTime(event.startTime).toString()).replaceAll("([ ]{1,})", "") 
     1326                                                                def eventGroupName = eventGroup.name.replaceAll(/\w+/, { it[0].toUpperCase() + ((it.size() > 1) ? it[1..-1] : '') }).replaceAll("([ ]{1,})", "") 
     1327                                                                def sampleName = (this.ucwords(subject.name) + '_' + samplingEventName + '_' + eventGroupName + '_' + new RelTime(event.startTime).toString()).replaceAll("([ ]{1,})", "") 
    12961328                                                                def tempSampleIterator = 0 
    12971329                                                                def tempSampleName = sampleName 
     
    13891421                                                eventGroup.samplingEvents.each() { samplingEvent -> 
    13901422                                                        def samplingEventName = this.ucwords(samplingEvent.template.name) 
    1391                                                         def sampleName = (this.ucwords(subject.name) + '_' + samplingEventName + '_' + new RelTime(samplingEvent.startTime).toString()).replaceAll("([ ]{1,})", "") 
     1423                                                        def eventGroupName = eventGroup.name.replaceAll(/\w+/, { it[0].toUpperCase() + ((it.size() > 1) ? it[1..-1] : '') }).replaceAll("([ ]{1,})", "") 
     1424                                                        def sampleName = (this.ucwords(subject.name) + '_' + samplingEventName + '_' + eventGroupName + '_' + new RelTime(samplingEvent.startTime).toString()).replaceAll("([ ]{1,})", "") 
    13921425                                                        def tempSampleIterator = 0 
    13931426                                                        def tempSampleName = sampleName 
     
    14131446                                                        ) 
    14141447                                                } 
     1448                                        } else { 
    14151449                                        } 
    14161450                                } else { 
    1417                                         // remove from eventGroup 
    1418                                         eventGroup.removeFromSubjects(subject) 
    1419  
    1420                                         // iterate through samplingEvents 
    1421                                         eventGroup.samplingEvents.each() { samplingEvent -> 
    1422                                                 flow.study.samples.findAll { ( it.parentEvent.equals(samplingEvent) && it.parentSubject.equals(subject) ) }.each() { 
    1423                                                         // delete this sample 
    1424                                                         flow.study.removeFromSamples( it ) 
    1425                                                         it.delete() 
     1451                                        // check if this subject is a member of this eventGroup 
     1452                                        if (eventGroup.subjects.find { it.equals(subject) }) { 
     1453                                                // remove from eventGroup 
     1454                                                eventGroup.removeFromSubjects(subject) 
     1455 
     1456                                                // iterate through samplingEvents 
     1457                                                eventGroup.samplingEvents.each() { samplingEvent -> 
     1458                                                        flow.study.samples.findAll { (it.parentEvent.equals(samplingEvent) && it.parentSubject.equals(subject) && it.parentEventGroup.equals(eventGroup)) }.each() { 
     1459                                                                // delete this sample 
     1460                                                                flow.study.removeFromSamples(it) 
     1461                                                                it.delete() 
     1462                                                        } 
    14261463                                                } 
    14271464                                        } 
  • trunk/grails-app/taglib/dbnp/studycapturing/WizardTagLib.groovy

    r1040 r1155  
    226226         */ 
    227227        def baseElement = { inputElement, attrs, help -> 
    228 println ".rendering [" + inputElement + "] with name [" + attrs.get('name') + "] and value [" + ((attrs.value) ? attrs.get('value').toString() : "-") + "]" 
     228                log.info ".rendering [" + inputElement + "] with name [" + attrs.get('name') + "] and value [" + ((attrs.value) ? attrs.get('value').toString() : "-") + "]" 
     229 
    229230                // work variables 
    230231                def description = attrs.remove('description') 
  • trunk/grails-app/views/wizard/pages/_samples.gsp

    r1146 r1155  
    1717<wizard:pageContent> 
    1818 
    19         <g:if env="development"> 
     19        <% /* g:if env="development"> 
    2020                <wizard:ajaxButtonElement description="Development feature (regenerate samples)" name="regenerate" value="regenerate new samples" url="[controller:'wizard',action:'pages']" update="[success:'wizardPage',failure:'wizardError']" afterSuccess="onWizardPage()"> 
    2121                        This functionality is only available in development mode for debugging purposes and will not show in test and production environments 
    2222                </wizard:ajaxButtonElement> 
    23         </g:if> 
     23        </g:if */ %> 
    2424         
    2525        <span class="info"> 
     
    103103                                                <div class="column">Subject</div> 
    104104                                                <div class="column">Template</div> 
    105                                                 <wizard:templateColumnHeaders entity="${sample}" class="column" columnWidths="[Name:200]"/> 
     105                                                <wizard:templateColumnHeaders entity="${sample}" class="column" columnWidths="[Name:250]"/> 
    106106                                        </div> 
    107107                                </g:if>