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

Last change on this file since 855 was 855, checked in by keesvb, 10 years ago

reverted CI adjustment in BootStrap?, studies will now be added again when run in development mode

  • Property svn:keywords set to Author Date Rev
File size: 4.9 KB
Line 
1import dbnp.studycapturing.*
2
3import dbnp.data.Ontology
4import dbnp.data.Term
5import dbnp.rest.common.CommunicationManager
6import org.codehaus.groovy.grails.commons.GrailsApplication
7import grails.util.GrailsUtil
8
9// Imports for Nimble
10import grails.plugins.nimble.InstanceGenerator
11import grails.plugins.nimble.core.LevelPermission
12import grails.plugins.nimble.core.Role
13import grails.plugins.nimble.core.Group
14import grails.plugins.nimble.core.AdminsService
15import grails.plugins.nimble.core.UserService
16
17/**
18 * Application Bootstrapper
19 * @Author Jeroen Wesbeek
20 * @Since 20091021
21 *
22 * Revision information:
23 * $Rev: 855 $
24 * $Author: keesvb $
25 * $Date: 2010-08-27 15:26:19 +0000 (vr, 27 aug 2010) $
26 */
27class BootStrap {
28
29        // Injections for Nimble
30        def grailsApplication
31        def nimbleService
32        def userService
33        def adminsService
34
35        def init = {servletContext ->
36                // define timezone
37                System.setProperty('user.timezone', 'CET')
38
39                // If there are no users yet in the database
40                println "Executing Nimble bootstrap..."
41
42            // The following must be executed
43            nimbleService.init()
44
45            // Add users
46                def user
47
48                if (dbnp.user.User.count() == 0) {
49                        println "Adding example user..."
50
51                        // Create example User account
52                        user = InstanceGenerator.user()
53                        user.username = "user"
54                        user.pass = 'useR123!'
55                        user.passConfirm = 'useR123!'
56                        user.enabled = true
57
58                        def userProfile = InstanceGenerator.profile()
59                        userProfile.fullName = "Test User"
60                        userProfile.owner = user
61                        user.profile = userProfile
62
63                        def savedUser = userService.createUser(user)
64                        if (savedUser.hasErrors()) {
65                          savedUser.errors.each {
66                                log.error(it)
67                          }
68                          throw new RuntimeException("Error creating example user")
69                        }
70
71                        println "Adding example admin user..."
72
73                        // Create example Administrative account
74                        def admins = Role.findByName(AdminsService.ADMIN_ROLE)
75                        def admin = InstanceGenerator.user()
76                        admin.username = "admin"
77                        admin.pass = "admiN123!"
78                        admin.passConfirm = "admiN123!"
79                        admin.enabled = true
80
81                        def adminProfile = InstanceGenerator.profile()
82                        adminProfile.fullName = "Administrator"
83                        adminProfile.owner = admin
84                        admin.profile = adminProfile
85
86                        def savedAdmin = userService.createUser(admin)
87                        if (savedAdmin.hasErrors()) {
88                          savedAdmin.errors.each {
89                                log.error(it)
90                          }
91                          throw new RuntimeException("Error creating administrator")
92                        }
93
94                        adminsService.add(admin)
95                }
96                else {
97                        user = dbnp.user.User.findByUsername("user")
98                }
99
100                println "Done with Nimble bootstrap"
101
102                // If there are no templates yet in the database
103                if (Template.count() == 0) {
104                        println "No templates in the current database.";
105
106                        // If in development or test mode, add the ontologies manually to the database
107                        // without contacting the BioPortal website, to avoid annoying hiccups when the server is busy
108                        if (grails.util.GrailsUtil.environment != GrailsApplication.ENV_PRODUCTION) {
109                                println "Adding ontology descriptors"
110                                BootStrapTemplates.initTemplateOntologies()
111                        }
112
113                        // Add example study, subject, event etc. templates
114                        BootStrapTemplates.initTemplates()
115
116                        // If in development mode and no studies are present, add example studies
117                        if (Study.count() == 0 && grails.util.GrailsUtil.environment == GrailsApplication.ENV_DEVELOPMENT) {
118                                // check if special file is present in project directory
119                                if ((new File(System.properties['user.dir']+"/.skip-studies").exists())) {
120                                        // yes it is, skip study bootstrapping
121                                        println ".skipping study bootstrapping"
122
123                                        // get species ontology
124                                        def speciesOntology = Ontology.getOrCreateOntologyByNcboId(1132)
125
126                                        // add terms
127                                        def mouseTerm = new Term(
128                                                name: 'Mus musculus',
129                                                ontology: speciesOntology,
130                                                accession: '10090'
131                                        ).with { if (!validate()) { errors.each { println it} } else save(flush:true)}
132
133                                        def humanTerm = new Term(
134                                                name: 'Homo sapiens',
135                                                ontology: speciesOntology,
136                                                accession: '9606'
137                                        ).with { if (!validate()) { errors.each { println it} } else save(flush:true)}
138                                } else {
139                                        // general study boostrapping
140                                        BootStrapStudies.addExampleStudies(user)
141                                }
142                        }
143
144                        println "Finished adding templates and studies"
145                }
146
147                /**
148                 * attach ontologies in runtime. Possible problem is that you need
149                 * an internet connection when bootstrapping though.
150                 * @see dbnp.studycapturing.Subject
151                 * @see dbnp.studycapturing.Sample
152                 */
153                TemplateEntity.getField(Subject.domainFields, 'species').ontologies = [Ontology.getOrCreateOntologyByNcboId(1132)]
154                TemplateEntity.getField(Sample.domainFields, 'material').ontologies = [Ontology.getOrCreateOntologyByNcboId(1005)]
155
156                println "Registering SAM REST methods"
157                // register methods for accessing SAM's Rest services
158                if (grails.util.GrailsUtil.environment == GrailsApplication.ENV_PRODUCTION) {
159                        CommunicationManager.SAMServerURL = 'http://sam.nmcdsp.org'
160                }
161                else {
162                        CommunicationManager.SAMServerURL = 'http://localhost:8182/sam'
163                }
164                CommunicationManager.registerRestWrapperMethodsSAMtoGSCF()
165
166                println "Done with BootStrap"
167        }
168
169        def destroy = {
170        }
171} 
Note: See TracBrowser for help on using the repository browser.