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

Last change on this file since 1667 was 1667, checked in by work@…, 11 years ago
  • tried to resolve #342 but cannot fix the issue due to the mail plugin not using the configuration properly... perhaps we need to bugfix the plugin itself instead...
  • Property svn:keywords set to Rev Author Date
File size: 3.9 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 dbnp.configuration.*
10
11/**
12 * Application Bootstrapper
13 * @Author Jeroen Wesbeek
14 * @Since 20091021
15 *
16 * Revision information:
17 * $Rev: 1667 $
18 * $Author: work@osx.eu $
19 * $Date: 2011-03-23 12:11:48 +0000 (wo, 23 mrt 2011) $
20 */
21class BootStrap {
22        // user spring security
23        def springSecurityService
24
25        // inject the datasource
26        def dataSource
27
28        // inject the grails application
29        def grailsApplication
30
31        def init = { servletContext ->
32                // Grom a development message
33                if (String.metaClass.getMetaMethod("grom")) "bootstrapping application".grom()
34
35                // get configuration
36                def config = grailsApplication.config
37
38                // set the mail configuration properties in runtime, as
39                // this is not definable in a .properties file due to the
40                // fact for the mail properties a map is used
41                if (config.grails.mail.username && config.grails.mail.password) {
42                        if (config.grails.mail.host =~ 'live.com') {
43                                // use microsoft hotmail
44                                config.grails.mail.port = 587
45                                config.grails.mail.props = [
46                                        "mail.smtp.starttls.enable"     : "true",
47                                        "mail.smtp.port"                        : "587"
48                                ]
49                        } else {
50                                // assume gmail
51                                config.grails.mail.port = 465
52                                config.grails.mail.props= [
53                                        "mail.smtp.auth"                                        : "true",
54                                        "mail.smtp.socketFactory.port"          : '465',
55                                        "mail.smtp.socketFactory.class"         : "javax.net.ssl.SSLSocketFactory",
56                                        "mail.smtp.socketFactory.fallback"      : "false"
57                                ]
58                        }
59                }
60
61                // define timezone
62                System.setProperty('user.timezone', 'CET')
63
64                // set up authentication (if required)
65                if (!SecRole.count() || !SecUser.count()) BootStrapAuthentication.initDefaultAuthentication(springSecurityService)
66
67                // set up the SAM communication manager
68                // this should probably more dynamic and put into the modules
69                // section instead of the bootstrap as not all instances will
70                // probably run WITH sam. GSCF should be able to run independently
71                // from other modules. Part of gscf ticket #185
72                if (config.modules) {
73                        // Grom a development message
74                        if (String.metaClass.getMetaMethod("grom")) "Registering SAM REST methods".grom()
75                        CommunicationManager.registerModule('gscf', config.grails.serverURL, config.modules)
76                        CommunicationManager.registerRestWrapperMethodsFromSAM()
77                }
78
79                // automatically handle database upgrades
80                DatabaseUpgrade.handleUpgrades(dataSource)
81
82                // developmental/test/demo bootstrapping:
83                //      - templates
84                //      - ontologies
85                //      - and/or studies
86                if (    grails.util.GrailsUtil.environment == GrailsApplication.ENV_DEVELOPMENT ||
87                grails.util.GrailsUtil.environment == GrailsApplication.ENV_TEST ||
88                grails.util.GrailsUtil.environment == "dbnpdemo") {
89                        // add ontologies?
90                        if (!Ontology.count()) ExampleTemplates.initTemplateOntologies()
91
92                        // add templates?
93                        if (!Template.count()) ExampleTemplates.initTemplates()
94
95                        // add data required for the webtests?
96                        if (grails.util.GrailsUtil.environment == GrailsApplication.ENV_TEST) ExampleStudies.addTestData()
97
98                        // add example studies?
99                        if (!Study.count() && grails.util.GrailsUtil.environment == GrailsApplication.ENV_DEVELOPMENT)
100                                ExampleStudies.addExampleStudies(SecUser.findByUsername('user'), SecUser.findByUsername('admin'))
101                }
102
103                /**
104                 * attach ontologies in runtime. Possible problem is that you need
105                 * an internet connection when bootstrapping though.
106                 * @see dbnp.studycapturing.Subject
107                 * @see dbnp.studycapturing.Sample
108                 */
109                TemplateEntity.getField(Subject.domainFields, 'species').ontologies = [Ontology.getOrCreateOntologyByNcboId(1132)]
110                TemplateEntity.getField(Sample.domainFields, 'material').ontologies = [Ontology.getOrCreateOntologyByNcboId(1005)]
111        }
112
113        def destroy = {
114                // Grom a development message
115                if (String.metaClass.getMetaMethod("grom")) "stopping application...".grom()
116        }
117} 
Note: See TracBrowser for help on using the repository browser.