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

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

changed domain model for events and protocol parameters, and for template field storage, added NuGO PPS3 events, added searchable plugin for full text queries, corrected a few HTML errors in create study

  • 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: 139 $
15 * $Author: keesvb $
16 * $Date: 2010-01-27 08:58:59 +0000 (wo, 27 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                        ).with { if (!validate()) { errors.each { println it} } else save()}
120
121                        def x=1
122                        12.times {
123                                def currentSubject = new Subject(
124                                        name: "A" + x++,
125                                        species: mouseTerm,
126                                        templateStringFields: ["Genotype" : "C57/Bl6j", "Gender" : "Male"],
127                                        templateNumberFields: ["Age" : 17, "Cage" : (int)(x/2)]
128                                ).with { if (!validate()) { errors.each { println it} } else save()}
129
130                                exampleStudy.addToSubjects(currentSubject)
131                                .addToEvents(new Event(
132                                        subject: currentSubject,
133                                        startTime: Date.parse('yyyy-MM-dd','2008-01-07'),
134                                        endTime: Date.parse('yyyy-MM-dd','2008-01-14'),
135                                        eventDescription: eventTreatment,
136                                        parameterStringValues: ['Diet':'10% fat (palm oil)','Compound':'Vehicle','Administration':'intraperitoneal injection'])
137                                ).with { if (!validate()) { errors.each { println it} } else save()}
138                        }
139
140                        new Study(title:"example",code:"Excode",researchQuestion:"ExRquestion",description:"Exdescription",ecCode:"ExecCode",dateCreated:new Date(),lastUpdated:new Date(),startDate:new Date()).save()
141                        new Study(title:"testAgain",code:"testcode",researchQuestion:"testRquestion",description:"testdescription",ecCode:"testCode",dateCreated:new Date(),lastUpdated:new Date(),startDate:new Date()).save()
142                        new Study(title:"Exampletest",code:"Examplecode",researchQuestion:"ExampleRquestion",description:"Exampledescription",ecCode:"ExampleecCode",dateCreated:new Date(),lastUpdated:new Date(),startDate:new Date()).save()
143                }
144        }
145
146        def destroy = {
147        }
148} 
Note: See TracBrowser for help on using the repository browser.