source: trunk/grails-app/conf/BootStrap.groovy @ 1471

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