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

Last change on this file since 845 was 845, checked in by keesvb, 11 years ago

commit aimed at getting BootStrap? studies in gscf.nmcdsp.org via CI

  • 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: 845 $
24 * $Author: keesvb $
25 * $Date: 2010-08-27 10:35:27 +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
50                        println "Adding example user..."
51
52                        // Create example User account
53                        user = InstanceGenerator.user()
54                        user.username = "user"
55                        user.pass = 'useR123!'
56                        user.passConfirm = 'useR123!'
57                        user.enabled = true
58
59                        def userProfile = InstanceGenerator.profile()
60                        userProfile.fullName = "Test User"
61                        userProfile.owner = user
62                        user.profile = userProfile
63
64                        def savedUser = userService.createUser(user)
65                        if (savedUser.hasErrors()) {
66                          savedUser.errors.each {
67                                log.error(it)
68                          }
69                          throw new RuntimeException("Error creating example user")
70                        }
71
72                        println "Adding example admin user..."
73
74                        // Create example Administrative account
75                        def admins = Role.findByName(AdminsService.ADMIN_ROLE)
76                        def admin = InstanceGenerator.user()
77                        admin.username = "admin"
78                        admin.pass = "admiN123!"
79                        admin.passConfirm = "admiN123!"
80                        admin.enabled = true
81
82                        def adminProfile = InstanceGenerator.profile()
83                        adminProfile.fullName = "Administrator"
84                        adminProfile.owner = admin
85                        admin.profile = adminProfile
86
87                        def savedAdmin = userService.createUser(admin)
88                        if (savedAdmin.hasErrors()) {
89                          savedAdmin.errors.each {
90                                log.error(it)
91                          }
92                          throw new RuntimeException("Error creating administrator")
93                        }
94
95                        adminsService.add(admin)
96                }
97                else {
98                        user = dbnp.user.User.findByUsername("user")
99                }
100
101                println "Done with Nimble bootstrap"
102
103                // If there are no templates yet in the database
104                if (Template.count() == 0) {
105                        println "No templates in the current database.";
106
107                        // If in development or test mode, add the ontologies manually to the database
108                        // without contacting the BioPortal website, to avoid annoying hiccups when the server is busy
109                        if (grails.util.GrailsUtil.environment != GrailsApplication.ENV_PRODUCTION) {
110                                println "Adding ontology descriptors"
111                                BootStrapTemplates.initTemplateOntologies()
112                        }
113
114                        // Add example study, subject, event etc. templates
115                        BootStrapTemplates.initTemplates()
116
117                        // If in development mode and no studies are present, add example studies
118                        if (Study.count() == 0 && grails.util.GrailsUtil.environment == GrailsApplication.ENV_PRODUCTION) {
119                                // check if special file is present in project directory
120                                if ((new File(System.properties['user.dir']+"/.skip-studies").exists())) {
121                                        // yes it is, skip study bootstrapping
122                                        println ".skipping study bootstrapping"
123
124                                        // get species ontology
125                                        def speciesOntology = Ontology.getOrCreateOntologyByNcboId(1132)
126
127                                        // add terms
128                                        def mouseTerm = new Term(
129                                                name: 'Mus musculus',
130                                                ontology: speciesOntology,
131                                                accession: '10090'
132                                        ).with { if (!validate()) { errors.each { println it} } else save()}
133
134                                        def humanTerm = new Term(
135                                                name: 'Homo sapiens',
136                                                ontology: speciesOntology,
137                                                accession: '9606'
138                                        ).with { if (!validate()) { errors.each { println it} } else save()}
139                                } else {
140                                        // general study boostrapping
141                                        BootStrapStudies.addExampleStudies(user)
142                                }
143                        }
144
145                        println "Finished adding templates and studies"
146                }
147
148                /**
149                 * attach ontologies in runtime. Possible problem is that you need
150                 * an internet connection when bootstrapping though.
151                 * @see dbnp.studycapturing.Subject
152                 * @see dbnp.studycapturing.Sample
153                 */
154                TemplateEntity.getField(Subject.domainFields, 'species').ontologies = [Ontology.getOrCreateOntologyByNcboId(1132)]
155                TemplateEntity.getField(Sample.domainFields, 'material').ontologies = [Ontology.getOrCreateOntologyByNcboId(1005)]
156
157                println "Registering SAM REST methods"
158                // register methods for accessing SAM's Rest services
159                if (grails.util.GrailsUtil.environment == GrailsApplication.ENV_PRODUCTION) {
160                        CommunicationManager.SAMServerURL = 'http://sam.nmcdsp.org'
161                }
162                else {
163                        CommunicationManager.SAMServerURL = 'http://localhost:8182/sam'
164                }
165                CommunicationManager.registerRestWrapperMethodsSAMtoGSCF()
166
167                println "Done with BootStrap"
168        }
169
170        def destroy = {
171        }
172} 
Note: See TracBrowser for help on using the repository browser.