source: trunk/grails-app/controllers/dbnp/studycapturing/TermEditorController.groovy @ 488

Last change on this file since 488 was 488, checked in by duh, 9 years ago
  • tweaked termEditorController (set lines in the proper order, error() and success() should always be called last) and removed debugging feedback
  • added PostgreSQL optimization comment to datasource
  • Property svn:keywords set to Date Author Rev
File size: 2.1 KB
Line 
1/**
2 * TermEditorController Controller
3 *
4 * Webflow driven term editor
5 *
6 * @author  Jeroen Wesbeek
7 * @since       20100420
8 * @package     studycapturing
9 *
10 * Revision information:
11 * $Rev: 488 $
12 * $Author: duh $
13 * $Date: 2010-05-27 14:10:12 +0000 (do, 27 mei 2010) $
14 */
15package dbnp.studycapturing
16
17import dbnp.data.Term
18import dbnp.data.Ontology
19
20class TermEditorController {
21        /**
22         * index closure
23         */
24    def index = {
25                // got a ontology get parameter?
26                def ontologies = (params.ontologies) ? params.ontologies : null
27
28                // enter the flow!
29        redirect(action: 'pages', params:["ontologies":ontologies])
30    }
31
32        /**
33         * Webflow
34         */
35        def pagesFlow = {
36                // start the flow
37                onStart {
38                        println "start term / ontology editor flow"
39
40                        if (params.ontologies) {
41                                flow.ontologies         = params.ontologies
42                                flow.ontologiesList     = []
43                                params.ontologies.split(/\,/).each() { ncboId ->
44                                        // trim the id
45                                        ncboId.trim()
46
47                                        // and add to the flow scope
48                                        flow.ontologiesList[ flow.ontologies.size() ] = ncboId
49                                }
50                        }
51                }
52
53                // main term editor page
54                terms {
55                        render(view: "terms")
56                        onRender {
57                                println ".rendering term selection popup"
58                        }
59                        on("add") {
60                                def ontology = Ontology.findByNcboVersionedId( params.get('term-ontology_id') as int )
61                def strTerm = params.get('term')
62
63                                // do we have an ontology?
64                                if (!ontology) {
65                                        // TODO: if ontology is missing, create it
66                    // pending possible addition to OntoCAT BioportalOntologyService API of search by versioned Ontology Id
67                                }
68
69                                // instantiate term with parameters
70                                def term = new Term(
71                                        name: strTerm,
72                                        ontology: ontology,
73                                        accession: params.get('term-concept_id')
74                                )
75
76                                // validate term
77                                if (term.validate()) {
78                                        // save the term to the database
79                                        if (term.save(flush:true)) {
80                                                flash.message = "Term addition succeeded"
81                                                success()
82                                        } else {
83                                                flash.message = "Oops, we encountered a problem while storing the selected term. Please try again."
84                                                error()
85                                        }
86                                } else {
87                                        // term did not validate properly
88                                        flash.message = "Oops, we encountered a problem while storing the selected term. Please try again."
89                                        error()
90                                }
91                        }.to "terms"
92                }
93        }
94}
Note: See TracBrowser for help on using the repository browser.