root/trunk/grails-app/conf/BootStrap.groovy @ 1547

Revision 1547, 3.3 KB (checked in by work@…, 3 years ago)

- renamed bootstraps to example

  • Property svn:keywords set to Rev Author Date
Line 
1import dbnp.authentication.SecRole
2import dbnp.authentication.SecUser
3import org.codehaus.groovy.grails.commons.GrailsApplication
4import org.dbnp.gdt.*
5import dbnp.studycapturing.Study
6import dbnp.studycapturing.Subject
7import dbnp.studycapturing.Sample
8import dbnp.rest.common.CommunicationManager
9import org.codehaus.groovy.grails.commons.*
10import dbnp.configuration.*
11
12
13/**
14 * Application Bootstrapper
15 * @Author Jeroen Wesbeek
16 * @Since 20091021
17 *
18 * Revision information:
19 * $Rev$
20 * $Author$
21 * $Date$
22 */
23class BootStrap {
24        // user spring security
25        def springSecurityService
26
27        // inject the datasource
28        def dataSource
29
30        def init = { servletContext ->
31                // grom what's happening
32                "bootstrapping application".grom()
33
34                // get configuration
35                def config = ConfigurationHolder.config
36
37                // set the mail configuration properties in runtime, as
38                // this is not definable in a .properties file due to the
39                // fact for the mail properties a map is used
40                if (config.grails.mail.username && config.grails.mail.password) {
41                        // use TLS
42                        config.grails.mail.port = 465
43                        config.grails.mail.props= [
44                                "mail.smtp.auth": "true",
45                                "mail.smtp.socketFactory.port": '465',
46                                "mail.smtp.socketFactory.class": "javax.net.ssl.SSLSocketFactory",
47                                "mail.smtp.socketFactory.fallback": "false"
48                        ]
49                }
50
51                // define timezone
52                System.setProperty('user.timezone', 'CET')
53
54                // set up authentication (if required)
55                if (!SecRole.count() || !SecUser.count()) BootStrapAuthentication.initDefaultAuthentication(springSecurityService)
56
57                // set up the SAM communication manager
58                // this should probably more dynamic and put into the modules
59                // section instead of the bootstrap as not all instances will
60                // probably run WITH sam. GSCF should be able to run independently
61                // from other modules. Part of gscf ticket #185
62                if (config.modules) {
63                        // register SAM REST methods
64                        "Registering SAM REST methods".grom()
65                        CommunicationManager.registerModule('gscf', config.grails.serverURL, config.modules)
66                        CommunicationManager.registerRestWrapperMethodsFromSAM()
67                }
68
69                // automatically handle database upgrades
70                DatabaseUpgrade.handleUpgrades(dataSource)
71
72                // developmental bootstrapping:
73                //      - templates
74                //      - ontologies
75                //      - and/or studies
76                if (grails.util.GrailsUtil.environment == GrailsApplication.ENV_DEVELOPMENT || grails.util.GrailsUtil.environment == GrailsApplication.ENV_TEST || grails.util.GrailsUtil.environment == "dbnpdemo") {
77                        // add ontologies?
78                        if (!Ontology.count()) ExampleTemplates.initTemplateOntologies()
79
80                        // add templates?
81                        if (!Template.count()) ExampleTemplates.initTemplates()
82
83                        // add example studies?
84                        if (!Study.count() && grails.util.GrailsUtil.environment != "demo" && grails.util.GrailsUtil.environment != GrailsApplication.ENV_TEST) ExampleStudies.addExampleStudies(SecUser.findByUsername('user'), SecUser.findByUsername('admin'))
85                }
86
87                /**
88                 * attach ontologies in runtime. Possible problem is that you need
89                 * an internet connection when bootstrapping though.
90                 * @see dbnp.studycapturing.Subject
91                 * @see dbnp.studycapturing.Sample
92                 */
93                TemplateEntity.getField(Subject.domainFields, 'species').ontologies = [Ontology.getOrCreateOntologyByNcboId(1132)]
94                TemplateEntity.getField(Sample.domainFields, 'material').ontologies = [Ontology.getOrCreateOntologyByNcboId(1005)]
95        }
96
97        def destroy = {
98                "stopping application...".grom()
99        }
100}
Note: See TracBrowser for help on using the browser.