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

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

- removed obsolete bgdt imports

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