Ignore:
Timestamp:
Apr 1, 2011, 10:31:36 AM (10 years ago)
Author:
robert@…
Message:

Save buttons in simple wizard

File:
1 edited

Legend:

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

    r1684 r1685  
    127127                                success()
    128128                        }.to "existingSamples"
    129 
    130129                        on("previous").to "study"
     130                        on("refresh") {
     131                                if( !handleExistingSamples( flow.study, params, flow ) )
     132                                        return error()
     133
     134                                // Refresh the templates, since the template editor has been opened.
     135                                flow.templates = [
     136                                                'Subject': Template.findAllByEntity( Subject.class ).collect { it.refresh(); return it },
     137                                                'Event': Template.findAllByEntity( Event.class ).collect { it.refresh(); return it },
     138                                                'SamplingEvent': Template.findAllByEntity( SamplingEvent.class ).collect { it.refresh(); return it },
     139                                                'Sample': Template.findAllByEntity( Sample.class ).collect { it.refresh(); return it }
     140                                ];
     141                        }.to "existingSamples"
    131142                        on("update") {
    132143                                handleExistingSamples( flow.study, params, flow ) ? success() : error()
     
    173184                                flow.sampleForm.importFile = filename
    174185                                       
    175                                 // Refresh the templates, since the template editor has been opened. To make this happen
    176                                 // the hibernate session has to be cleared first
    177                                 sessionFactory.getCurrentSession().clear();
    178                                
     186                                // Refresh the templates, since the template editor has been opened.
    179187                                flow.templates = [
    180                                                 'Subject': Template.findAllByEntity( Subject.class ),
    181                                                 'Event': Template.findAllByEntity( Event.class ),
    182                                                 'SamplingEvent': Template.findAllByEntity( SamplingEvent.class ),
    183                                                 'Sample': Template.findAllByEntity( Sample.class )
     188                                                'Subject': Template.findAllByEntity( Subject.class ).collect { it.refresh(); return it },
     189                                                'Event': Template.findAllByEntity( Event.class ).collect { it.refresh(); return it },
     190                                                'SamplingEvent': Template.findAllByEntity( SamplingEvent.class ).collect { it.refresh(); return it },
     191                                                'Sample': Template.findAllByEntity( Sample.class ).collect { it.refresh(); return it }
    184192                                ];
    185                        
    186193                        }.to "samples"
    187194                        on("previous").to "returnFromSamples"
     
    295302                         }.to "overview"
    296303                        on( "previous" ).to "returnFromAssays"
     304                        on( "save" ) {
     305                                handleAssays( flow.assay, params, flow );
     306                                if( flow.assay.template && !validateObject( flow.assay ) )
     307                                        error();
     308
     309                                if( saveStudyToDatabase( flow ) ) {
     310                                        flash.message = "Your study is succesfully saved.";
     311                                } else {
     312                                        flash.error = "An error occurred while saving your study: <br />"
     313                                        flow.study.getErrors().each { flash.error += it.toString() + "<br />"}
     314                                        return error();
     315                                }
     316                        }.to "assays"
    297317                        on("refresh") {
    298                                 // Refresh the templates, since the template editor has been opened. To make this happen
    299                                 // the hibernate session has to be cleared first
    300                                 //sessionFactory.getCurrentSession().clear();
    301                                
    302318                                handleAssays( flow.assay, params, flow );
    303319                               
     
    319335                        on( "previous" ).to "startAssays"
    320336                }
    321                
    322337                saveStudy {
    323338                        action {
    324                                 if( flow.assay && flow.assay.template && !flow.study.assays?.contains( flow.assay ) ) {
    325                                         flow.study.addToAssays( flow.assay );
    326                                 }
    327                                
    328                                 if( flow.study.save( flush: true ) ) {
    329                                         // Make sure all samples are attached to all assays
    330                                         flow.study.assays.each { assay ->
    331                                                 def l = []+ assay.samples;
    332                                                 l.each { sample ->
    333                                                         if( sample )
    334                                                                 assay.removeFromSamples( sample );
    335                                                 }
    336                                                 assay.samples?.clear();
    337                
    338                                                 flow.study.samples.each { sample ->
    339                                                         assay.addToSamples( sample )
    340                                                 }
    341                                         }
    342                        
     339                                if( saveStudyToDatabase( flow ) ) {
    343340                                        flash.message = "Your study is succesfully saved.";
    344                                        
    345341                                        finish();
    346342                                } else {
    347343                                        flash.error = "An error occurred while saving your study: <br />"
    348344                                        flow.study.getErrors().each { flash.error += it.toString() + "<br />"}
    349                                        
    350                                         // Remove the assay from the study again, since it is still available
    351                                         // in the session
    352                                         if( flow.assay ) {
    353                                                 flow.study.removeFromAssays( flow.assay );
    354                                                 flow.assay.parent = flow.study;
    355                                         }
    356                                        
    357345                                        overview();
    358346                                }
     
    366354                handleError{
    367355                        redirect action: "errorPage"
     356                }
     357        }
     358       
     359        /**
     360         * Saves the study with assay
     361         *
     362         * @param flow
     363         * @return true on success, false otherwise
     364         */
     365        protected boolean saveStudyToDatabase( def flow ) {
     366                // Save the assay to the study
     367                if( flow.assay && flow.assay.template && !flow.study.assays?.contains( flow.assay ) ) {
     368                        flow.study.addToAssays( flow.assay );
     369                }
     370
     371                if( flow.study.save( flush: true ) ) {
     372                        // Make sure all samples are attached to all assays
     373                        flow.study.assays.each { assay ->
     374                                def l = []+ assay.samples;
     375                                l.each { sample ->
     376                                        if( sample )
     377                                                assay.removeFromSamples( sample );
     378                                }
     379                                assay.samples?.clear();
     380
     381                                flow.study.samples.each { sample ->
     382                                        assay.addToSamples( sample )
     383                                }
     384                        }
     385                       
     386                        return true;
     387       
     388                } else {
     389                        // Remove the assay from the study again, since it is still available
     390                        // in the session
     391                        if( flow.assay ) {
     392                                flow.study.removeFromAssays( flow.assay );
     393                                flow.assay.parent = flow.study;
     394                        }
     395                       
     396                        return false;
    368397                }
    369398        }
Note: See TracChangeset for help on using the changeset viewer.