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

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

added helper functions to Subject and Template classes to easily get the template fields, and added a demonstration of use in the sandbox

  • Property svn:keywords set to Date Author Rev
File size: 5.4 KB
Line 
1import org.codehaus.groovy.grails.commons.GrailsApplication
2import grails.util.GrailsUtil
3import dbnp.studycapturing.*
4
5import dbnp.data.Ontology
6import dbnp.data.Term
7
8/**
9 * Application Bootstrapper
10 * @Author Jeroen Wesbeek
11 * @Since 20091021
12 *
13 * Revision information:
14 * $Rev: 146 $
15 * $Author: keesvb $
16 * $Date: 2010-01-28 17:42:30 +0000 (do, 28 jan 2010) $
17 */
18class BootStrap {
19        def init = {servletContext ->
20                // define timezone
21                System.setProperty('user.timezone', 'CET')     
22
23                if (GrailsUtil.environment == GrailsApplication.ENV_DEVELOPMENT) {
24                        printf("development bootstrapping....\n\n");
25
26                        // ontologies
27                        def speciesOntology = new Ontology(
28                                name: 'NCBI Taxonomy',
29                                shortName: 'Taxon',
30                                url: 'http://www.obofoundry.org/cgi-bin/detail.cgi?id=ncbi_taxonomy'
31                        ).with { if (!validate()) { errors.each { println it} } else save()}
32
33
34                        // terms
35                        def mouseTerm = new Term(
36                                name: 'Mus musculus',
37                                ontology: speciesOntology,
38                                accession: '10090'
39                        ).with { if (!validate()) { errors.each { println it} } else save()}
40                        def humanTerm = new Term(
41                                name: 'Homo sapiens',
42                                ontology: speciesOntology,
43                                accession: '9606'
44                        ).with { if (!validate()) { errors.each { println it} } else save()}
45
46                        def madmaxOntology = new Ontology(
47                                name: 'Madmax ontology',
48                                shortName: 'MDMX',
49                                url: 'madmax.bioinformatics.nl'
50                        ).with { if (!validate()) { errors.each { println it} } else save()}
51
52                        def treatmentTerm = new Term(
53                                name: 'ExperimentalProtocol',
54                                ontology: madmaxOntology,
55                                accession: 'P-MDMXGE-264'
56                        ).with { if (!validate()) { errors.each { println it} } else save()}
57
58
59                        def treatmentProtocol = new Protocol(
60                                name: 'MADMAX Experimental Protocol',
61                                reference: treatmentTerm
62                        ).with { if (!validate()) { errors.each { println it} } else save()}
63
64                        treatmentProtocol
65                        .addToParameters(new ProtocolParameter(
66                                name: 'Diet',
67                                type: ProtocolParameterType.STRINGLIST,
68                                listEntries: ['10% fat (palm oil)','45% fat (palm oil)']))
69                        .addToParameters(new ProtocolParameter(
70                                name: 'Compound',
71                                type: ProtocolParameterType.STRINGLIST,
72                                listEntries: ['Vehicle','Leptin']))
73                        .addToParameters(new ProtocolParameter(
74                                name: 'Administration',
75                                type: ProtocolParameterType.STRING))
76                        .save()
77
78
79                        // create system user
80                        /*
81                        def systemUser = userService.createUser(InstanceGenerator.user(
82                                username: 'system',
83                                pass: 'system',
84                                passConfirm: 'system',
85                                enabled: true
86                        ))
87                        */
88
89                        // Mouse template
90                        def mouseTemplate = new Template(
91                                name: 'Mouse'
92                        ).addToSubjectFields(new TemplateSubjectField(
93                                name: 'Genotype',type: TemplateFieldType.STRINGLIST))
94                        .addToSubjectFields(new TemplateSubjectField(
95                                name: 'Gender',type: TemplateFieldType.STRINGLIST))
96                        .addToSubjectFields(new TemplateSubjectField(
97                                name: 'Age',type: TemplateFieldType.INTEGER))
98                        .addToSubjectFields(new TemplateSubjectField(
99                                name: 'Cage',type: TemplateFieldType.INTEGER))
100                        .with { if (!validate()) { errors.each { println it} } else save()}
101
102
103                        //events
104                        def eventTreatment = new EventDescription(
105                                name: 'Treatment',
106                                description: 'Experimental Treatment Protocol NuGO PPS3 leptin module',
107                                classification: treatmentTerm,
108                                protocol: treatmentProtocol
109                        ).with { if (!validate()) { errors.each { println it} } else save()}
110
111                        // studies
112                        def exampleStudy = new Study(
113                                title:"NuGO PPS3 mouse study leptin module",
114                                code:"PPS3_leptin_module",
115                                researchQuestion:"Leptin etc.",
116                                description:"C57Bl/6 mice were fed a high fat (45 en%) or low fat (10 en%) diet after a four week run-in on low fat diet. After 1 week 10 mice that received a low fat diet were given an IP leptin challenge and 10 mice of the low-fat group received placebo injections. The same procedure was performed with mice that were fed the high-fat diet. After 4 weeks the procedure was repeated. In total 80 mice were culled.",
117                                ecCode:"2007117.c",
118                                startDate: Date.parse('yyyy-MM-dd','2007-12-11'),
119                                template: mouseTemplate
120                        ).with { if (!validate()) { errors.each { println it} } else save()}
121
122                        def x=1
123                        12.times {
124                                def currentSubject = new Subject(
125                                        name: "A" + x++,
126                                        species: mouseTerm,
127                                        template: mouseTemplate,
128                                        templateStringFields: ["Genotype" : "C57/Bl6j", "Gender" : "Male"],
129                                        templateIntegerFields: ["Age" : 17, "Cage" : (int)(x/2)]
130                                ).with { if (!validate()) { errors.each { println it} } else save()}
131
132                                exampleStudy.addToSubjects(currentSubject)
133                                .addToEvents(new Event(
134                                        subject: currentSubject,
135                                        startTime: Date.parse('yyyy-MM-dd','2008-01-07'),
136                                        endTime: Date.parse('yyyy-MM-dd','2008-01-14'),
137                                        eventDescription: eventTreatment,
138                                        parameterStringValues: ['Diet':'10% fat (palm oil)','Compound':'Vehicle','Administration':'intraperitoneal injection'])
139                                ).with { if (!validate()) { errors.each { println it} } else save()}
140                        }
141
142                        new Study(title:"example",code:"Excode",researchQuestion:"ExRquestion",description:"Exdescription",ecCode:"ExecCode",dateCreated:new Date(),lastUpdated:new Date(),startDate:new Date()).save()
143                        new Study(title:"testAgain",code:"testcode",researchQuestion:"testRquestion",description:"testdescription",ecCode:"testCode",dateCreated:new Date(),lastUpdated:new Date(),startDate:new Date()).save()
144                        new Study(title:"Exampletest",code:"Examplecode",researchQuestion:"ExampleRquestion",description:"Exampledescription",ecCode:"ExampleecCode",dateCreated:new Date(),lastUpdated:new Date(),startDate:new Date()).save()
145                }
146        }
147
148        def destroy = {
149        }
150} 
Note: See TracBrowser for help on using the repository browser.