Changeset 569


Ignore:
Timestamp:
Jun 16, 2010, 2:57:34 PM (9 years ago)
Author:
duh
Message:
  • commit related to bug # 107

-- extended Ontology domain class with a getOrCreateOntologyByNcboId(...) method which can be used as a replacement for findByNcboId(...). This method now returns the Ontology if it exists, or creates it (by using the bioportal webservices) on the fly.
-- changed the runtime bootstrap 'hack' to use getOrCreateOntologyByNcboId(...) instead
-- removed the ontology create code from the TemplateEditor? (added in #567)

Location:
trunk/grails-app
Files:
3 edited

Legend:

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

    r567 r569  
    11061106
    11071107                        }
    1108 
    1109                         // Ontologies must be connected to the templatefields in runtime
    1110                         // because the Ontology.findByNcboId is not available otherwise
    1111                         TemplateEntity.getField(Subject.domainFields, 'species').ontologies = [Ontology.findByNcboId(1132)]
    1112                         TemplateEntity.getField(Sample.domainFields, 'material').ontologies = [Ontology.findByNcboId(1005)]
    11131108                }
     1109
     1110                // attach ontologies in runtime
     1111                // @see dbnp.studycapturing.Subject
     1112                // @See dbnp.studycapturing.Sample
     1113                TemplateEntity.getField(Subject.domainFields, 'species').ontologies = [Ontology.getOrCreateOntologyByNcboId(1132)]
     1114                TemplateEntity.getField(Sample.domainFields, 'material').ontologies = [Ontology.getOrCreateOntologyByNcboId(1005)]
    11141115        }
    11151116
  • trunk/grails-app/controllers/dbnp/studycapturing/TemplateEditorController.groovy

    r567 r569  
    131131                params.entity = entity;
    132132
    133                 // got ontologies?
    134                 if (params.ontologies) {
    135                         // fetch the ontologies
    136                         def ontologies = []
    137                         params.ontologies.split(/\,/).each() { ncboId ->
    138                                 // trim ncboId
    139                                 ncboId = ncboId.trim()
    140 
    141                                 // find ontology
    142                                 def ontology = Ontology.findAllByNcboId( ncboId )
    143 
    144                                 // got the ontology?
    145                                 if (ontology) {
    146                                         ontology.each() {
    147                                                 ontologies[ ontologies.size() ] = it
    148                                         }
    149                                 } else {
    150                                         // no, fetch it from the bioportal
    151                                         ontology = Ontology.getBioPortalOntology( ncboId )
    152 
    153                                         // does it validate?
    154                                         if (ontology.validate()) {
    155                                                 // yeah, add it!
    156                                                 ontology.save(flush:true)
    157                                                 ontology.refresh()
    158                                                 ontologies[ ontologies.size() ] = ontology
    159                                         }
    160                                 }
    161                         }
    162 
    163                         // and set it as parameter again
    164                         params.ontologies = ontologies
    165                 } else {
    166                         params.remove('ontologies')
    167                 }
    168 println params
    169 
    170                 // Create the template field and add it to the template
     133                // Create the template fields and add it to the template
    171134                def template = new Template( params );
    172 //TemplateEntity.getField(entity.domainFields, 'species').ontologies = [Ontology.findByNcboId(1132)]
    173 TemplateEntity.getField(entity.domainFields, 'species').ontologies = params.ontologies
    174 
    175135        if (template.validate() && template.save(flush: true)) {
    176 println template
    177 println template.fields
    178 println template.getRequiredFields()
    179 println template.findAllByEntity( entity )
    180 
    181 
    182 
    183136                        def html = g.render( template: 'elements/liTemplate', model: [template: template] );
    184137                        def output = [ id: template.id, html: html ];
    185138                        render output as JSON;
    186 
    187             //render '';
    188139        } else {
    189140            response.status = 500;
  • trunk/grails-app/domain/dbnp/data/Ontology.groovy

    r565 r569  
    5656                        ncboVersionedId: o.id
    5757                );
     58        }
     59
     60
     61        /**
     62         * Return the Ontology by ncboId, or create it if nonexistent.
     63         * @param ncboId
     64         * @return Ontology
     65         */
     66        static Ontology getOrCreateOntologyByNcboId( Integer ncboId ) {
     67                return getOrCreateOntologyByNcboId( ncboId as String )
     68        }
     69        static Ontology getOrCreateOntologyByNcboId( String ncboId ) {
     70                def ontology = findByNcboId( ncboId )
     71
     72                // got an ontology?
     73                if (!ontology) {
     74                        // no, fetch it from the webservice
     75                        ontology = getBioPortalOntology( ncboId )
     76
     77                        if (ontology && ontology.validate() && ontology.save(flush:true)) {
     78                                ontology.refresh()
     79                        }
     80                }
     81
     82                return ontology
    5883        }
    5984
Note: See TracChangeset for help on using the changeset viewer.