Ignore:
Timestamp:
Mar 4, 2011, 12:30:52 PM (11 years ago)
Author:
s.h.sikkema@…
Message:

Fixed tests (except webtests); cleaned up Example{Studies,Templates}.groovy; decapitalized injected services; made 'transactional' properties static

Location:
trunk/grails-app/conf/dbnp/configuration
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/grails-app/conf/dbnp/configuration/BootStrapAuthentication.groovy

    r1581 r1588  
    2828
    2929                // create the admin role
    30                 def adminRole = SecRole.findByAuthority('ROLE_ADMIN') ?: new SecRole(authority: 'ROLE_ADMIN').save()
     30                def adminRole = SecRole.findByAuthority('ROLE_ADMIN') ?: new SecRole(authority: 'ROLE_ADMIN').save(failOnError:true)
    3131
    3232                // iterate through default users, see
     
    5353        }
    5454}
     55
     56//package dbnp.configuration
     57//import dbnp.authentication.*
     58//import org.codehaus.groovy.grails.commons.ConfigurationHolder
     59//
     60///**
     61// * @Author Jeroen Wesbeek <work@osx.eu>
     62// * @Since 20101111
     63// *
     64// * Revision information:
     65// * $Rev$
     66// * $Author$
     67// * $Date$
     68// */
     69//class BootStrapAuthentication {
     70//      /**
     71//       * set up the initial roles and users if required
     72//       * @visibility  public
     73//       * @void
     74//       */
     75//      public static void initDefaultAuthentication(springSecurityService) {
     76//              "setting up default authentication".grom()
     77//
     78//              // user work variable
     79//              def user=null
     80//
     81//              // get configuration
     82//              def config = ConfigurationHolder.config
     83//
     84//              // create the admin role
     85//              def adminRole = SecRole.findByAuthority('ROLE_ADMIN') ?: new SecRole(authority: 'ROLE_ADMIN').save()
     86//
     87//              // iterate through default users, see
     88//              //      - grails-app/conf/config-environment.properties
     89//              //      - ~/.grails-config/environment-gscf.properties
     90//              config.authentication.users.each { key, values ->
     91//                      // make sure we do not add duplicate users
     92//                      if (!SecUser.findAllByUsername(values.username)) {
     93//                              // create user instance
     94//                              user = new SecUser(
     95//                                      username:values.username,
     96//                                      password:springSecurityService.encodePassword( values.password , values.username ),
     97//                                      email:values.email,
     98//                                      userConfirmed: true,
     99//                                      adminConfirmed: true
     100//                              ).save(failOnError: true)
     101//
     102//                              // is this user an administrator?
     103//                              if (values.administrator == 'true') {
     104//                                      SecUserSecRole.create(user, adminRole, true)
     105//                              }
     106//                      }
     107//              }
     108//      }
     109//}
  • trunk/grails-app/conf/dbnp/configuration/ExampleStudies.groovy

    r1581 r1588  
    5555                        ontology        : speciesOntology,
    5656                        accession       : '10090'
    57                 ).with { if (!validate()) { errors.each { println it} } else save()}
     57                ).save(failOnError:true)
    5858
    5959                def humanTerm = new Term(
     
    6161                        ontology        : speciesOntology,
    6262                        accession       : '9606'
    63                 ).with { if (!validate()) { errors.each { println it} } else save()}
     63                ).save(failOnError:true)
    6464
    6565                def arabTerm = new Term(
     
    6767                        ontology        : speciesOntology,
    6868                        accession       : '3702'
    69                 ).with { if (!validate()) { errors.each { println it} } else save()}
     69        ).save(failOnError:true)
    7070
    7171                def tomatoTerm = new Term(
     
    7373                        ontology        : speciesOntology,
    7474                        accession       : '4081'
    75                 ).with { if (!validate()) { errors.each { println it} } else save()}
     75        ).save(failOnError:true)
    7676
    7777                def potatoTerm = new Term(
     
    7979                        ontology        : speciesOntology,
    8080                        accession       : '0000'
    81                 ).with { if (!validate()) { errors.each { println it} } else save()}
     81        ).save(failOnError:true)
    8282
    8383                def bloodTerm = new Term(
     
    8585                        ontology        : brendaOntology,
    8686                        accession       : 'BTO:0000131'
    87                 ).with { if (!validate()) { errors.each { println it} } else save()}
     87        ).save(failOnError:true)
    8888
    8989                def c57bl6Term = new Term(
     
    9191                        ontology        : nciOntology,
    9292                        accession       : 'C14424'
    93                 ).with { if (!validate()) { errors.each { println it} } else save()}
     93        ).save(failOnError:true)
    9494
    9595                def glucoseTerm = new Term(
     
    9797                        ontology        : chebiOntology,
    9898                        accession       : 'CHEBI:17234'
    99                 ).with { if (!validate()) { errors.each { println it} } else save()}
     99        ).save(failOnError:true)
    100100
    101101                // Create a few persons, roles and Affiliations
     
    103103                        institute       : "Science Institute NYC",
    104104                        department      : "Department of Mathematics"
    105                 ).save();
     105        ).save(failOnError:true)
     106
    106107                def affiliation2 = new PersonAffiliation(
    107108                        institute       : "InfoStats GmbH, Hamburg",
    108109                        department      : "Life Sciences"
    109                 ).save();
     110        ).save(failOnError:true)
     111
    110112                def role1 = new PersonRole(
    111113                        name            : "Principal Investigator"
    112                 ).save();
     114        ).save(failOnError:true)
     115
    113116                def role2 = new PersonRole(
    114117                        name            : "Statician"
    115                 ).save();
     118        ).save(failOnError:true)
    116119
    117120                // Create persons
     
    124127                        phone           : "1-555-3049",
    125128                        address         : "First street 2,NYC"
    126                 ).addToAffiliations(affiliation1).addToAffiliations(affiliation2).save();
     129                ).addToAffiliations(affiliation1).addToAffiliations(affiliation2).save(failOnError:true)
    127130
    128131                def person2 = new Person(
     
    134137                        phone           : "49-555-8291",
    135138                        address         : "Dritten strasse 38, Hamburg, Germany"
    136                 ).addToAffiliations(affiliation2).save();
     139                ).addToAffiliations(affiliation2).save(failOnError:true)
    137140
    138141                // Create 30 persons to test pagination
    139                 def personCounter = 1;
     142                def personCounter = 1
    140143                30.times {
    141144                        new Person(
     
    143146                                lastName        : "Testperson",
    144147                                email           : "email${personCounter++}@testdomain.com"
    145                         ).save()
     148                        ).save(failOnError:true)
    146149                }
    147150
     
    153156                        comments        : "Not published yet",
    154157                        DOI                     : "unknown"
    155                 ).save();
     158                ).save(failOnError:true)
    156159
    157160                def publication2 = new Publication(
     
    161164                        comments        : "",
    162165                        DOI                     : ""
    163                 ).save();
     166                ).save(failOnError:true)
    164167
    165168                // Add example mouse study
     
    174177                        owner           : owner,
    175178                        readers         : [otherUser]
    176                 ).with { if (!validate()) { errors.each { println it} } else save()}
     179        ).save(failOnError:true)
    177180
    178181                def evLF = new Event(
     
    235238
    236239                // Add events to study
    237                 mouseStudy.addToEvents(evLF).addToEvents(evHF).addToEvents(evBV).addToEvents(evBL).addToEvents(evLF4).addToEvents(evHF4).addToEvents(evBV4).addToEvents(evBL4).addToSamplingEvents(evS).addToSamplingEvents(evS4).with { if (!validate()) { errors.each { println it} } else save()}
     240                mouseStudy.addToEvents(evLF).addToEvents(evHF).addToEvents(evBV).addToEvents(evBL).addToEvents(evLF4).addToEvents(evHF4).addToEvents(evBV4).addToEvents(evBL4).addToSamplingEvents(evS).addToSamplingEvents(evS4).save(failOnError:true)
    238241
    239242                // Extra check if the SamplingEvents are saved correctly
    240                 evS.with { if (!validate()) { errors.each { println it} } else save()}
    241                 evS4.with { if (!validate()) { errors.each { println it} } else save()}
     243                evS.save(failOnError:true)
     244                evS4.save(failOnError:true)
    242245
    243246                def LFBV1 = new EventGroup(name: "10% fat + vehicle for 1 week").addToEvents(evLF).addToEvents(evBV).addToSamplingEvents(evS)
     
    269272                        // (this is possibly a Grails or Hibernate bug)
    270273                        mouseStudy.addToSubjects(currentSubject)
    271                         currentSubject.with { if (!validate()) { errors.each { println it} } else save()}
     274
     275            currentSubject.save(failOnError:true)
    272276
    273277                        // Add subject to appropriate EventGroup
    274                         if (x > 70) { HFBL4.addToSubjects(currentSubject).save() }
    275                         else if (x > 60) { HFBV4.addToSubjects(currentSubject).save() }
    276                         else if (x > 50) { LFBL4.addToSubjects(currentSubject).save() }
    277                         else if (x > 40) { LFBV4.addToSubjects(currentSubject).save() }
    278                         else if (x > 30) { HFBL1.addToSubjects(currentSubject).save() }
    279                         else if (x > 20) { HFBV1.addToSubjects(currentSubject).save() }
    280                         else if (x > 10) { LFBL1.addToSubjects(currentSubject).save() }
    281                         else { LFBV1.addToSubjects(currentSubject).save() }
     278            def tmpEventGroup
     279                        if (x > 70) { tmpEventGroup = HFBL4 }
     280                        else if (x > 60) { tmpEventGroup = HFBV4 }
     281                        else if (x > 50) { tmpEventGroup = LFBL4 }
     282                        else if (x > 40) { tmpEventGroup = LFBV4 }
     283                        else if (x > 30) { tmpEventGroup = HFBL1 }
     284                        else if (x > 20) { tmpEventGroup = HFBV1 }
     285                        else if (x > 10) { tmpEventGroup = LFBL1 }
     286                        else { tmpEventGroup = LFBV1 }
     287
     288            tmpEventGroup.addToSubjects(currentSubject)
    282289
    283290                        // Create sample
     
    288295                                parentSubject: currentSubject,
    289296                                parentEvent: evS //x > 40 ? evS4 : evS
    290                         );
     297                        )
     298
    291299                        mouseStudy.addToSamples(currentSample)
    292                         currentSample.with { if (!validate()) { errors.each { println it} } else save()}
    293                         currentSample.setFieldValue("Text on vial", "T" + (Math.random() * 100L))
    294                 }
     300            currentSample.setFieldValue("Text on vial", "T" + (Math.random() * 100L))
     301            currentSample.save(failOnError:true)
     302        }
    295303
    296304                // Add EventGroups to study
    297                 mouseStudy.addToEventGroups(LFBV1).addToEventGroups(LFBL1).addToEventGroups(HFBV1).addToEventGroups(HFBL1).addToEventGroups(LFBV4).addToEventGroups(LFBL4).addToEventGroups(HFBV4).addToEventGroups(HFBL4).with { if (!validate()) { errors.each { println it} } else save()}
     305                mouseStudy.addToEventGroups(LFBV1).addToEventGroups(LFBL1).addToEventGroups(HFBV1).addToEventGroups(HFBL1).addToEventGroups(LFBV4).addToEventGroups(LFBL4).addToEventGroups(HFBV4).addToEventGroups(HFBL4).save(failOnError:true)
    298306
    299307                // Add persons and publications to study
     
    301309                def studyperson2 = new StudyPerson(person: person2, role: role2)
    302310
    303                 mouseStudy.addToPersons(studyperson1).addToPersons(studyperson2).addToPublications(publication1).addToPublications(publication2).with { if (!validate()) { errors.each { println it} } else save()}
     311                mouseStudy.addToPersons(studyperson1).addToPersons(studyperson2).addToPublications(publication1).addToPublications(publication2).save(failOnError:true)
    304312
    305313                def humanStudy = new Study(
     
    311319                        ecCode                  : "unknown",
    312320                        startDate               : Date.parse('yyyy-MM-dd', '2008-01-14'),
    313                         owner                   : owner,
    314                         writers                 : [otherUser]
    315                 ).with { if (!validate()) { errors.each { println it} } else save()}
    316 
    317                 def rootGroup = new EventGroup(name: 'Root group');
     321                        owner                   : owner
     322                ).addToWriters(otherUser).save(failOnError:true)
     323
     324                def rootGroup = new EventGroup(name: 'Root group')
    318325
    319326                def fastingEvent = new Event(
    320327                        startTime               : 3 * 24 * 3600 + 22 * 3600,
    321328                        endTime                 : 3 * 24 * 3600 + 30 * 3600,
    322                         template                : fastingTreatmentTemplate).setFieldValue('Fasting period', '8h');
     329                        template                : fastingTreatmentTemplate).setFieldValue('Fasting period', '8h')
    323330
    324331                def bloodSamplingEventBefore = new SamplingEvent(
    325332                        startTime               : 0,
    326333                        template                : bloodSamplingEventTemplate,
    327                         sampleTemplate  : humanBloodSampleTemplate).setFieldValue('Sample volume', 4.5F);
     334                        sampleTemplate  : humanBloodSampleTemplate).setFieldValue('Sample volume', 4.5F)
    328335
    329336                def bloodSamplingEventAfter = new SamplingEvent(
    330337                        startTime               : 3 * 24 * 3600 + 30 * 3600,
    331338                        template                : bloodSamplingEventTemplate,
    332                         sampleTemplate  : humanBloodSampleTemplate).setFieldValue('Sample volume', 4.5F);
     339                        sampleTemplate  : humanBloodSampleTemplate).setFieldValue('Sample volume', 4.5F)
    333340
    334341                rootGroup.addToEvents fastingEvent
    335342                rootGroup.addToSamplingEvents bloodSamplingEventBefore
    336343                rootGroup.addToSamplingEvents bloodSamplingEventAfter
    337                 rootGroup.save()
    338344
    339345                humanStudy.addToEvents(fastingEvent)
     
    342348                humanStudy.addToEventGroups rootGroup
    343349
    344                 humanStudy.save()
     350                humanStudy.save(failOnError:true)
    345351
    346352                def y = 1
     
    354360
    355361                        humanStudy.addToSubjects(currentSubject)
    356                         currentSubject.with { if (!validate()) { errors.each { println it} } else save()}
     362                        currentSubject.save(failOnError:true)
    357363
    358364                        rootGroup.addToSubjects currentSubject
    359                         rootGroup.save()
     365                        rootGroup.save(failOnError:true)
    360366
    361367                        def currentSample = new Sample(
     
    365371                                parentSubject: currentSubject,
    366372                                parentEvent     : bloodSamplingEventBefore
    367                         );
     373                        )
    368374
    369375                        humanStudy.addToSamples(currentSample)
    370                         currentSample.with { if (!validate()) { errors.each { println it} } else save()}
    371                         currentSample.setFieldValue("Text on vial", "T" + (Math.random() * 100L))
     376            currentSample.setFieldValue("Text on vial", "T" + (Math.random() * 100L))
     377            currentSample.save(failOnError:true)
    372378
    373379                        currentSample = new Sample(
     
    377383                                parentSubject: currentSubject,
    378384                                parentEvent     : bloodSamplingEventAfter
    379                         );
     385                        )
    380386
    381387                        humanStudy.addToSamples(currentSample)
    382                         currentSample.with { if (!validate()) { errors.each { println it} } else save()}
    383                         currentSample.setFieldValue("Text on vial", "T" + (Math.random() * 100L))
    384                 }
     388            currentSample.setFieldValue("Text on vial", "T" + (Math.random() * 100L))
     389            currentSample.save(failOnError:true)
     390        }
    385391
    386392                // Add persons to study
    387393                def studyperson3 = new StudyPerson(person: person1, role: role2)
    388                 humanStudy.addToPersons(studyperson3).addToPublications(publication2).with { if (!validate()) { errors.each { println it} } else save()}
     394                humanStudy.addToPersons(studyperson3).addToPublications(publication2).save(failOnError:true)
    389395
    390396                // Add SAM assay reference
     
    393399                        platform: 'clinical measurements',
    394400                        url: config.modules.sam.url.toString()
    395                 ).with { if (!validate()) { errors.each { println it} } else save()}
     401                ).save(failOnError:true)
    396402
    397403                // Add metabolomics assay reference
     
    400406                        platform: 'GCMS/LCMS',
    401407                        url: config.modules.metabolomics.url.toString()
    402                 ).with { if (!validate()) { errors.each { println it} } else save()}
    403                
     408                ).save(failOnError:true)
     409
    404410                // Add metabolomics assay reference
    405411                def metagenomicsModule = new AssayModule(
     
    407413                        platform: 'High throughput sequencing',
    408414                        url: config.modules.metagenomics.url.toString()
    409                 ).with { if (!validate()) { errors.each { println it} } else save()}
    410                
     415                ).save(failOnError:true)
     416
    411417                def lipidAssayRef = new Assay(
    412418                        name: 'Lipid profiling',
     
    430436                mouseStudy.addToAssays(lipidAssayRef);
    431437                mouseStudy.addToAssays(metAssayRef);
    432                 mouseStudy.save()
     438                mouseStudy.save(failOnError:true)
    433439
    434440                def glucoseAssayBRef = new Assay(
     
    460466                ).setFieldValue('Spectrometry technique', 'GC/MS')
    461467
    462                
     468
    463469                // Add sequencing (metagenomics) assays
    464470                def sequencingAssay16SRef = new Assay(
     
    468474                        externalAssayID: 'PPSH-SEQ-16S'
    469475                )
    470                
     476
    471477                // Add sequencing (metagenomics) assays
    472478                def sequencingAssay18SRef = new Assay(
     
    476482                        externalAssayID: 'PPSH-SEQ-18S'
    477483                )
    478                
     484
    479485                humanStudy.samples*.each {
    480486                        if (it.parentEvent.startTime == 0) {
     
    489495                        }
    490496                }
    491                
     497
    492498                humanStudy.addToAssays(sequencingAssay16SRef)
    493499                humanStudy.addToAssays(sequencingAssay18SRef)
     
    496502                humanStudy.addToAssays(metAssayRefA)
    497503                humanStudy.addToAssays(metAssayRefB)
    498                 humanStudy.save()
     504                humanStudy.save(failOnError:true)
    499505        }
     506
     507    /**
     508     * Add test studies. This function is meant to be called only in test mode
     509     */
     510    static addTestStudies() {
     511
     512        final String testStudyName = "Test study"
     513        final String testStudyTemplateName = "Academic study"
     514        final String testStudyCode = "AAA-Test"
     515        final String testStudyDescription = "Description of Test Study"
     516        final Date testStudyStartDate = Date.parse('yyyy-MM-dd','2007-12-11')
     517
     518        def studyTemplate = Template.findByName(testStudyTemplateName)
     519        assert studyTemplate
     520
     521        def study = new Study(
     522            title: testStudyName,
     523            template: studyTemplate,
     524            startDate: testStudyStartDate,
     525            code: testStudyCode,
     526            description: testStudyDescription
     527        )
     528
     529        study.save(failOnError: true)
     530
     531    }
    500532}
     533
     534//package dbnp.configuration
     535//
     536///**
     537// * @Author kees
     538// * @Since Jun 25, 2010
     539// *
     540// * Revision information:
     541// * $Rev$
     542// * $Author$
     543// * $Date$
     544// */
     545//
     546//import dbnp.studycapturing.*
     547//import org.dbnp.gdt.*
     548//import org.codehaus.groovy.grails.commons.GrailsApplication
     549//import grails.util.GrailsUtil
     550//import dbnp.rest.common.CommunicationManager
     551//import org.codehaus.groovy.grails.commons.*
     552//
     553//
     554//class ExampleStudies {
     555//
     556//      /**
     557//       * Add example studies. This function is meant to be called only in development mode
     558//       */
     559//      public static void addExampleStudies(dbnp.authentication.SecUser owner, dbnp.authentication.SecUser otherUser) {
     560//              "inserting initial studies".grom()
     561//
     562//              // get configuration
     563//              def config = ConfigurationHolder.config
     564//
     565//              // Look up the used ontologies which should be in the database by now
     566//              def speciesOntology                             = Ontology.getOrCreateOntologyByNcboId(1132)
     567//              def brendaOntology                              = Ontology.getOrCreateOntologyByNcboId(1005)
     568//              def nciOntology                                 = Ontology.getOrCreateOntologyByNcboId(1032)
     569//              def chebiOntology                               = Ontology.getOrCreateOntologyByNcboId(1007)
     570//
     571//              // Look up the used templates which should also be in the database by now
     572//              def studyTemplate                               = Template.findByName("Academic study")
     573//              def mouseTemplate                               = Template.findByName("Mouse")
     574//              def humanTemplate                               = Template.findByName("Human")
     575//              def dietTreatmentTemplate               = Template.findByName("Diet treatment")
     576//              def boostTreatmentTemplate              = Template.findByName("Compound challenge")
     577//              def liverSamplingEventTemplate  = Template.findByName("Liver extraction")
     578//              def fastingTreatmentTemplate    = Template.findByName("Fasting treatment")
     579//              def bloodSamplingEventTemplate  = Template.findByName("Blood extraction")
     580//              def humanTissueSampleTemplate   = Template.findByName("Human tissue sample")
     581//              def humanBloodSampleTemplate    = Template.findByName("Human blood sample")
     582//              def ccAssayTemplate                             = Template.findByName("Clinical chemistry assay")
     583//              def metAssayTemplate                    = Template.findByName("Metabolomics assay")
     584//
     585//              // Add terms manually, to avoid having to do many HTTP requests to the BioPortal website
     586//              def mouseTerm = new Term(
     587//                      name            : 'Mus musculus',
     588//                      ontology        : speciesOntology,
     589//                      accession       : '10090'
     590//              ).with { if (!validate()) { errors.each { println it} } else save()}
     591//
     592//              def humanTerm = new Term(
     593//                      name            : 'Homo sapiens',
     594//                      ontology        : speciesOntology,
     595//                      accession       : '9606'
     596//              ).with { if (!validate()) { errors.each { println it} } else save()}
     597//
     598//              def arabTerm = new Term(
     599//                      name            : 'Arabidopsis thaliana',
     600//                      ontology        : speciesOntology,
     601//                      accession       : '3702'
     602//              ).with { if (!validate()) { errors.each { println it} } else save()}
     603//
     604//              def tomatoTerm = new Term(
     605//                      name            : 'Solanum lycopersicum',
     606//                      ontology        : speciesOntology,
     607//                      accession       : '4081'
     608//              ).with { if (!validate()) { errors.each { println it} } else save()}
     609//
     610//              def potatoTerm = new Term(
     611//                      name            : 'Solanum tuberosum',
     612//                      ontology        : speciesOntology,
     613//                      accession       : '0000'
     614//              ).with { if (!validate()) { errors.each { println it} } else save()}
     615//
     616//              def bloodTerm = new Term(
     617//                      name            : 'blood plasma',
     618//                      ontology        : brendaOntology,
     619//                      accession       : 'BTO:0000131'
     620//              ).with { if (!validate()) { errors.each { println it} } else save()}
     621//
     622//              def c57bl6Term = new Term(
     623//                      name            : 'C57BL/6 Mouse',
     624//                      ontology        : nciOntology,
     625//                      accession       : 'C14424'
     626//              ).with { if (!validate()) { errors.each { println it} } else save()}
     627//
     628//              def glucoseTerm = new Term(
     629//                      name            : 'glucose',
     630//                      ontology        : chebiOntology,
     631//                      accession       : 'CHEBI:17234'
     632//              ).with { if (!validate()) { errors.each { println it} } else save()}
     633//
     634//              // Create a few persons, roles and Affiliations
     635//              def affiliation1 = new PersonAffiliation(
     636//                      institute       : "Science Institute NYC",
     637//                      department      : "Department of Mathematics"
     638//              ).save();
     639//              def affiliation2 = new PersonAffiliation(
     640//                      institute       : "InfoStats GmbH, Hamburg",
     641//                      department      : "Life Sciences"
     642//              ).save();
     643//              def role1 = new PersonRole(
     644//                      name            : "Principal Investigator"
     645//              ).save();
     646//              def role2 = new PersonRole(
     647//                      name            : "Statician"
     648//              ).save();
     649//
     650//              // Create persons
     651//              def person1 = new Person(
     652//                      lastName        : "Scientist",
     653//                      firstName       : "John",
     654//                      gender          : "Male",
     655//                      initials        : "J.R.",
     656//                      email           : "john@scienceinstitute.com",
     657//                      phone           : "1-555-3049",
     658//                      address         : "First street 2,NYC"
     659//              ).addToAffiliations(affiliation1).addToAffiliations(affiliation2).save();
     660//
     661//              def person2 = new Person(
     662//                      lastName        : "Statician",
     663//                      firstName       : "Jane",
     664//                      gender          : "Female",
     665//                      initials        : "W.J.",
     666//                      email           : "jane@statisticalcompany.de",
     667//                      phone           : "49-555-8291",
     668//                      address         : "Dritten strasse 38, Hamburg, Germany"
     669//              ).addToAffiliations(affiliation2).save();
     670//
     671//              // Create 30 persons to test pagination
     672//              def personCounter = 1;
     673//              30.times {
     674//                      new Person(
     675//                              firstName       : "Person #${personCounter}",
     676//                              lastName        : "Testperson",
     677//                              email           : "email${personCounter++}@testdomain.com"
     678//                      ).save()
     679//              }
     680//
     681//              // Create a few publications
     682//              def publication1 = new Publication(
     683//                      title           : "Postnatal development of hypothalamic leptin receptors",
     684//                      authorsList     : "Cottrell EC, Mercer JG, Ozanne SE.",
     685//                      pubMedID        : "20472140",
     686//                      comments        : "Not published yet",
     687//                      DOI                     : "unknown"
     688//              ).save();
     689//
     690//              def publication2 = new Publication(
     691//                      title           : "Induction of regulatory T cells decreases adipose inflammation and alleviates insulin resistance in ob/ob mice",
     692//                      authorsList     : "Ilan Y, Maron R, Tukpah AM, Maioli TU, Murugaiyan G, Yang K, Wu HY, Weiner HL.",
     693//                      pubMedID        : "20445103",
     694//                      comments        : "",
     695//                      DOI                     : ""
     696//              ).save();
     697//
     698//              // Add example mouse study
     699//              def mouseStudy = new Study(
     700//                      template        : studyTemplate,
     701//                      title           : "NuGO PPS3 mouse study leptin module",
     702//                      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.",
     703//                      code            : "PPS3_leptin_module",
     704//                      researchQuestion: "Leptin etc.",
     705//                      ecCode          : "2007117.c",
     706//                      startDate       : Date.parse('yyyy-MM-dd', '2008-01-02'),
     707//                      owner           : owner,
     708//                      readers         : [otherUser]
     709//              ).with { if (!validate()) { errors.each { println it} } else save()}
     710//
     711//              def evLF = new Event(
     712//                      startTime       : 3600,
     713//                      endTime         : 3600 + 7 * 24 * 3600,
     714//                      template        : dietTreatmentTemplate
     715//              ).setFieldValue('Diet', 'low fat')
     716//
     717//              def evHF = new Event(
     718//                      startTime       : 3600,
     719//                      endTime         : 3600 + 7 * 24 * 3600,
     720//                      template        : dietTreatmentTemplate
     721//              ).setFieldValue('Diet', 'high fat')
     722//
     723//              def evBV = new Event(
     724//                      startTime       : 3600,
     725//                      endTime         : 3600 + 7 * 24 * 3600,
     726//                      template        : boostTreatmentTemplate
     727//              ).setFieldValue('Control', 'true')
     728//
     729//              def evBL = new Event(
     730//                      startTime       : 3600,
     731//                      endTime         : 3600 + 7 * 24 * 3600,
     732//                      template        : boostTreatmentTemplate
     733//              ).setFieldValue('Control', 'false')
     734//
     735//              def evLF4 = new Event(
     736//                      startTime       : 3600,
     737//                      endTime         : 3600 + 4 * 7 * 24 * 3600,
     738//                      template        : dietTreatmentTemplate
     739//              ).setFieldValue('Diet', 'low fat')
     740//
     741//              def evHF4 = new Event(
     742//                      startTime       : 3600,
     743//                      endTime         : 3600 + 4 * 7 * 24 * 3600,
     744//                      template        : dietTreatmentTemplate
     745//              ).setFieldValue('Diet', 'high fat')
     746//
     747//              def evBV4 = new Event(
     748//                      startTime       : 3600,
     749//                      endTime         : 3600 + 4 * 7 * 24 * 3600,
     750//                      template        : boostTreatmentTemplate
     751//              ).setFieldValue('Control', 'true')
     752//
     753//              def evBL4 = new Event(
     754//                      startTime       : 3600,
     755//                      endTime         : 3600 + 4 * 7 * 24 * 3600,
     756//                      template        : boostTreatmentTemplate
     757//              ).setFieldValue('Control', 'false')
     758//
     759//              def evS = new SamplingEvent(
     760//                      startTime       : 3600 + 7 * 24 * 3600,
     761//                      template        : liverSamplingEventTemplate,
     762//                      sampleTemplate: humanTissueSampleTemplate).setFieldValue('Sample weight', 5F)
     763//
     764//              def evS4 = new SamplingEvent(
     765//                      startTime       : 3600 + 7 * 24 * 3600,
     766//                      template        : liverSamplingEventTemplate,
     767//                      sampleTemplate: humanTissueSampleTemplate).setFieldValue('Sample weight', 5F)
     768//
     769//              // Add events to study
     770//              mouseStudy.addToEvents(evLF).addToEvents(evHF).addToEvents(evBV).addToEvents(evBL).addToEvents(evLF4).addToEvents(evHF4).addToEvents(evBV4).addToEvents(evBL4).addToSamplingEvents(evS).addToSamplingEvents(evS4).with { if (!validate()) { errors.each { println it} } else save()}
     771//
     772//              // Extra check if the SamplingEvents are saved correctly
     773//              evS.with { if (!validate()) { errors.each { println it} } else save()}
     774//              evS4.with { if (!validate()) { errors.each { println it} } else save()}
     775//
     776//              def LFBV1 = new EventGroup(name: "10% fat + vehicle for 1 week").addToEvents(evLF).addToEvents(evBV).addToSamplingEvents(evS)
     777//
     778//              def LFBL1 = new EventGroup(name: "10% fat + leptin for 1 week").addToEvents(evLF).addToEvents(evBL).addToSamplingEvents(evS)
     779//
     780//              def HFBV1 = new EventGroup(name: "45% fat + vehicle for 1 week").addToEvents(evHF).addToEvents(evBV).addToSamplingEvents(evS)
     781//
     782//              def HFBL1 = new EventGroup(name: "45% fat + leptin for 1 week").addToEvents(evHF).addToEvents(evBL).addToSamplingEvents(evS)
     783//
     784//              def LFBV4 = new EventGroup(name: "10% fat + vehicle for 4 weeks").addToEvents(evLF4).addToEvents(evBV4).addToSamplingEvents(evS4)
     785//
     786//              def LFBL4 = new EventGroup(name: "10% fat + leptin for 4 weeks").addToEvents(evLF4).addToEvents(evBL4).addToSamplingEvents(evS4)
     787//
     788//              def HFBV4 = new EventGroup(name: "45% fat + vehicle for 4 weeks").addToEvents(evHF4).addToEvents(evBV4).addToSamplingEvents(evS4)
     789//
     790//              def HFBL4 = new EventGroup(name: "45% fat + leptin for 4 weeks").addToEvents(evHF4).addToEvents(evBL4).addToSamplingEvents(evS4)
     791//
     792//              // Add subjects and samples and compose EventGroups
     793//              def x = 1
     794//              80.times {
     795//                      def currentSubject = new Subject(
     796//                              name: "A" + x++,
     797//                              species: mouseTerm,
     798//                              template: mouseTemplate,
     799//                      ).setFieldValue("Gender", "Male").setFieldValue("Genotype", c57bl6Term).setFieldValue("Age", 17).setFieldValue("Cage", "" + (int) (x / 2))
     800//
     801//                      // We have to save the subject first, otherwise the parentEvent property of the sample cannot be set
     802//                      // (this is possibly a Grails or Hibernate bug)
     803//                      mouseStudy.addToSubjects(currentSubject)
     804//                      currentSubject.with { if (!validate()) { errors.each { println it} } else save()}
     805//
     806//                      // Add subject to appropriate EventGroup
     807//                      if (x > 70) { HFBL4.addToSubjects(currentSubject).save() }
     808//                      else if (x > 60) { HFBV4.addToSubjects(currentSubject).save() }
     809//                      else if (x > 50) { LFBL4.addToSubjects(currentSubject).save() }
     810//                      else if (x > 40) { LFBV4.addToSubjects(currentSubject).save() }
     811//                      else if (x > 30) { HFBL1.addToSubjects(currentSubject).save() }
     812//                      else if (x > 20) { HFBV1.addToSubjects(currentSubject).save() }
     813//                      else if (x > 10) { LFBL1.addToSubjects(currentSubject).save() }
     814//                      else { LFBV1.addToSubjects(currentSubject).save() }
     815//
     816//                      // Create sample
     817//                      def currentSample = new Sample(
     818//                              name: currentSubject.name + '_B',
     819//                              material: bloodTerm,
     820//                              template: humanBloodSampleTemplate,
     821//                              parentSubject: currentSubject,
     822//                              parentEvent: evS //x > 40 ? evS4 : evS
     823//                      );
     824//                      mouseStudy.addToSamples(currentSample)
     825//                      currentSample.with { if (!validate()) { errors.each { println it} } else save()}
     826//                      currentSample.setFieldValue("Text on vial", "T" + (Math.random() * 100L))
     827//              }
     828//
     829//              // Add EventGroups to study
     830//              mouseStudy.addToEventGroups(LFBV1).addToEventGroups(LFBL1).addToEventGroups(HFBV1).addToEventGroups(HFBL1).addToEventGroups(LFBV4).addToEventGroups(LFBL4).addToEventGroups(HFBV4).addToEventGroups(HFBL4).with { if (!validate()) { errors.each { println it} } else save()}
     831//
     832//              // Add persons and publications to study
     833//              def studyperson1 = new StudyPerson(person: person1, role: role1)
     834//              def studyperson2 = new StudyPerson(person: person2, role: role2)
     835//
     836//              mouseStudy.addToPersons(studyperson1).addToPersons(studyperson2).addToPublications(publication1).addToPublications(publication2).with { if (!validate()) { errors.each { println it} } else save()}
     837//
     838//              def humanStudy = new Study(
     839//                      template                : studyTemplate,
     840//                      title                   : "NuGO PPS human study",
     841//                      code                    : "PPSH",
     842//                      researchQuestion: "How much are fasting plasma and urine metabolite levels affected by prolonged fasting ?",
     843//                      description             : "Human study performed at RRI; centres involved: RRI, IFR, TUM, Maastricht U.",
     844//                      ecCode                  : "unknown",
     845//                      startDate               : Date.parse('yyyy-MM-dd', '2008-01-14'),
     846//                      owner                   : owner,
     847//                      writers                 : [otherUser]
     848//              ).with { if (!validate()) { errors.each { println it} } else save()}
     849//
     850//              def rootGroup = new EventGroup(name: 'Root group');
     851//
     852//              def fastingEvent = new Event(
     853//                      startTime               : 3 * 24 * 3600 + 22 * 3600,
     854//                      endTime                 : 3 * 24 * 3600 + 30 * 3600,
     855//                      template                : fastingTreatmentTemplate).setFieldValue('Fasting period', '8h');
     856//
     857//              def bloodSamplingEventBefore = new SamplingEvent(
     858//                      startTime               : 0,
     859//                      template                : bloodSamplingEventTemplate,
     860//                      sampleTemplate  : humanBloodSampleTemplate).setFieldValue('Sample volume', 4.5F);
     861//
     862//              def bloodSamplingEventAfter = new SamplingEvent(
     863//                      startTime               : 3 * 24 * 3600 + 30 * 3600,
     864//                      template                : bloodSamplingEventTemplate,
     865//                      sampleTemplate  : humanBloodSampleTemplate).setFieldValue('Sample volume', 4.5F);
     866//
     867//              rootGroup.addToEvents fastingEvent
     868//              rootGroup.addToSamplingEvents bloodSamplingEventBefore
     869//              rootGroup.addToSamplingEvents bloodSamplingEventAfter
     870//              rootGroup.save()
     871//
     872//              humanStudy.addToEvents(fastingEvent)
     873//              humanStudy.addToSamplingEvents(bloodSamplingEventBefore)
     874//              humanStudy.addToSamplingEvents(bloodSamplingEventAfter)
     875//              humanStudy.addToEventGroups rootGroup
     876//
     877//              humanStudy.save()
     878//
     879//              def y = 1
     880//              11.times {
     881//                      def currentSubject = new Subject(
     882//                              name            : "" + y++,
     883//                              species         : humanTerm,
     884//                              template        : humanTemplate
     885//                      ).setFieldValue("Gender", (Math.random() > 0.5) ? "Male" : "Female")
     886//                              //.setFieldValue("DOB", new java.text.SimpleDateFormat("dd-mm-yy").parse("01-02-19" + (10 + (int) (Math.random() * 80)))).setFieldValue("DOB", new Date().parse("dd/mm/yyyy", ((10 + (int) Math.random() * 18) + "/0" + (1 + (int) (Math.random() * 8)) + "/19" + (10 + (int) (Math.random() * 80))))).setFieldValue("Age", 30).setFieldValue("Height", Math.random() * 2F).setFieldValue("Weight", Math.random() * 150F).setFieldValue("BMI", 20 + Math.random() * 10F)
     887//
     888//                      humanStudy.addToSubjects(currentSubject)
     889//                      currentSubject.with { if (!validate()) { errors.each { println it} } else save()}
     890//
     891//                      rootGroup.addToSubjects currentSubject
     892//                      rootGroup.save()
     893//
     894//                      def currentSample = new Sample(
     895//                              name            : currentSubject.name + '_B',
     896//                              material        : bloodTerm,
     897//                              template        : humanBloodSampleTemplate,
     898//                              parentSubject: currentSubject,
     899//                              parentEvent     : bloodSamplingEventBefore
     900//                      );
     901//
     902//                      humanStudy.addToSamples(currentSample)
     903//                      currentSample.with { if (!validate()) { errors.each { println it} } else save()}
     904//                      currentSample.setFieldValue("Text on vial", "T" + (Math.random() * 100L))
     905//
     906//                      currentSample = new Sample(
     907//                              name            : currentSubject.name + '_A',
     908//                              material        : bloodTerm,
     909//                              template        : humanBloodSampleTemplate,
     910//                              parentSubject: currentSubject,
     911//                              parentEvent     : bloodSamplingEventAfter
     912//                      );
     913//
     914//                      humanStudy.addToSamples(currentSample)
     915//                      currentSample.with { if (!validate()) { errors.each { println it} } else save()}
     916//                      currentSample.setFieldValue("Text on vial", "T" + (Math.random() * 100L))
     917//              }
     918//
     919//              // Add persons to study
     920//              def studyperson3 = new StudyPerson(person: person1, role: role2)
     921//              humanStudy.addToPersons(studyperson3).addToPublications(publication2).with { if (!validate()) { errors.each { println it} } else save()}
     922//
     923//              // Add SAM assay reference
     924//              def clinicalModule = new AssayModule(
     925//                      name: 'SAM module for clinical data',
     926//                      platform: 'clinical measurements',
     927//                      url: config.modules.sam.url.toString()
     928//              ).with { if (!validate()) { errors.each { println it} } else save()}
     929//
     930//              // Add metabolomics assay reference
     931//              def metabolomicsModule = new AssayModule(
     932//                      name: 'Metabolomics module',
     933//                      platform: 'GCMS/LCMS',
     934//                      url: config.modules.metabolomics.url.toString()
     935//              ).with { if (!validate()) { errors.each { println it} } else save()}
     936//
     937//              // Add metabolomics assay reference
     938//              def metagenomicsModule = new AssayModule(
     939//                      name: 'Metagenomics module',
     940//                      platform: 'High throughput sequencing',
     941//                      url: config.modules.metagenomics.url.toString()
     942//              ).with { if (!validate()) { errors.each { println it} } else save()}
     943//
     944//              def lipidAssayRef = new Assay(
     945//                      name: 'Lipid profiling',
     946//                      template: ccAssayTemplate,
     947//                      module: clinicalModule,
     948//                      externalAssayID: 'PPS3_SAM'
     949//              )
     950//
     951//              def metAssayRef = new Assay(
     952//                      name: 'Lipidomics profile',
     953//                      template: metAssayTemplate,
     954//                      module: metabolomicsModule,
     955//                      externalAssayID: 'PPS3_Lipidomics'
     956//              ).setFieldValue('Spectrometry technique', 'LC/MS')
     957//
     958//              mouseStudy.samples*.each {
     959//                      lipidAssayRef.addToSamples(it)
     960//                      metAssayRef.addToSamples(it)
     961//              }
     962//
     963//              mouseStudy.addToAssays(lipidAssayRef);
     964//              mouseStudy.addToAssays(metAssayRef);
     965//              mouseStudy.save()
     966//
     967//              def glucoseAssayBRef = new Assay(
     968//                      name            : 'Glucose assay before',
     969//                      template        : ccAssayTemplate,
     970//                      module          : clinicalModule,
     971//                      externalAssayID: 'PPSH-Glu-B'
     972//              )
     973//
     974//              def glucoseAssayARef = new Assay(
     975//                      name            : 'Glucose assay after',
     976//                      template        : ccAssayTemplate,
     977//                      module          : clinicalModule,
     978//                      externalAssayID: 'PPSH-Glu-A'
     979//              )
     980//
     981//              def metAssayRefB = new Assay(
     982//                      name            : 'Lipidomics profile before',
     983//                      template        : metAssayTemplate,
     984//                      module          : metabolomicsModule,
     985//                      externalAssayID: 'PPSH_Lipidomics_start'
     986//              ).setFieldValue('Spectrometry technique', 'GC/MS')
     987//
     988//              def metAssayRefA = new Assay(
     989//                      name            : 'Lipidomics profile after',
     990//                      template        : metAssayTemplate,
     991//                      module          : metabolomicsModule,
     992//                      externalAssayID: 'PPSH_Lipidomics_end'
     993//              ).setFieldValue('Spectrometry technique', 'GC/MS')
     994//
     995//
     996//              // Add sequencing (metagenomics) assays
     997//              def sequencingAssay16SRef = new Assay(
     998//                      name            : '16S Sequencing assay',
     999//                      template        : ccAssayTemplate,
     1000//                      module          : metagenomicsModule,
     1001//                      externalAssayID: 'PPSH-SEQ-16S'
     1002//              )
     1003//
     1004//              // Add sequencing (metagenomics) assays
     1005//              def sequencingAssay18SRef = new Assay(
     1006//                      name            : '18S Sequencing assay',
     1007//                      template        : ccAssayTemplate,
     1008//                      module          : metagenomicsModule,
     1009//                      externalAssayID: 'PPSH-SEQ-18S'
     1010//              )
     1011//
     1012//              humanStudy.samples*.each {
     1013//                      if (it.parentEvent.startTime == 0) {
     1014//                              glucoseAssayBRef.addToSamples(it)
     1015//                              metAssayRefB.addToSamples(it)
     1016//                      }
     1017//                      else {
     1018//                              glucoseAssayARef.addToSamples(it)
     1019//                              metAssayRefA.addToSamples(it)
     1020//                              sequencingAssay16SRef.addToSamples(it)
     1021//                              sequencingAssay18SRef.addToSamples(it)
     1022//                      }
     1023//              }
     1024//
     1025//              humanStudy.addToAssays(sequencingAssay16SRef)
     1026//              humanStudy.addToAssays(sequencingAssay18SRef)
     1027//              humanStudy.addToAssays(glucoseAssayARef)
     1028//              humanStudy.addToAssays(glucoseAssayBRef)
     1029//              humanStudy.addToAssays(metAssayRefA)
     1030//              humanStudy.addToAssays(metAssayRefB)
     1031//              humanStudy.save()
     1032//      }
     1033//}
  • trunk/grails-app/conf/dbnp/configuration/ExampleTemplates.groovy

    r1581 r1588  
    3636                                ncboId: '1132',
    3737                                ncboVersionedId: '38802'
    38                         ).with { if (!validate()) { errors.each { println it} } else save()}
     38                        ).save(failOnError:true)
    3939
    4040                        // add Sample>material ontology
     
    4646                                ncboId: '1005',
    4747                                ncboVersionedId: '40643'
    48                         ).with { if (!validate()) { errors.each { println it} } else save()}
     48                        ).save(failOnError:true)
    4949
    5050                        // add NCI ontology which is used in Mouse genotype template field
     
    5656                                ncboId: '1032',
    5757                                ncboVersionedId: '42838'
    58                         ).with { if (!validate()) { errors.each { println it} } else save()}
     58                        ).save(failOnError:true)
    5959
    6060                        // add CHEBI ontology which is used for describing chemicals in e.g. events
     
    6666                                ncboId: '1007',
    6767                                ncboVersionedId: '44746'
    68                         ).with { if (!validate()) { errors.each { println it} } else save()}
     68                        ).save(failOnError:true)
    6969
    7070                }
     
    8989                        name: 'Gender',type: TemplateFieldType.STRINGLIST, entity: Subject,
    9090                        listEntries: [new TemplateFieldListItem(name:'Male'),new TemplateFieldListItem(name: 'Female'),new TemplateFieldListItem(name: 'Unknown')])
    91                 .with { if (!validate()) { errors.each { println it} } else save()}
     91                .save(failOnError:true)
    9292
    9393                def ageField = new TemplateField(
    9494                        name: 'Age',type: TemplateFieldType.LONG,entity: Subject,unit: 'years',comment: 'Either include age at the start of the study or date of birth (if known)')
    95                 .with { if (!validate()) { errors.each { println it} } else save()}
     95                .save(failOnError:true)
    9696
    9797                def genotypeField = new TemplateField(
    9898                        name: 'Genotype', type: TemplateFieldType.ONTOLOGYTERM,entity: Subject,
    9999                        comment: 'If present, indicate the genetic variance of the subject (e.g., mutagenized populations,knock-out/in,transgene etc)')
    100                 .with { if (!validate()) { errors.each { println it} } else save()}
    101 
    102                  def genotypeTypeField = new TemplateField(
     100        .save(failOnError:true)
     101
     102                def genotypeTypeField = new TemplateField(
    103103                        name: 'Genotype type',type: TemplateFieldType.STRINGLIST,entity: Subject,
    104104                        listEntries: [new TemplateFieldListItem(name:'wildtype'),
     
    107107                                new TemplateFieldListItem(name:'knock-in')],
    108108                        comment: 'If a genotype was specified, please indicate here the type of the genotype')
    109                 .with { if (!validate()) { errors.each { println it} } else save()}
     109        .save(failOnError:true)
    110110
    111111                def varietyField = new TemplateField(
    112112                        name: 'Variety', type: TemplateFieldType.STRING,entity: Subject,
    113113                        comment: 'taxonomic category consisting of members of a species that differ from others of the same species in minor but heritable characteristics')
    114                 .with { if (!validate()) { errors.each { println it} } else save()}
     114        .save(failOnError:true)
    115115
    116116                def ecotypeField = new TemplateField(
    117117                        name: 'Ecotype', type: TemplateFieldType.STRING,entity: Subject,
    118118                         comment: 'a type or subspecies of life that is especially well adapted to a certain environment'
    119                 )
    120                  .with { if (!validate()) { errors.each { println it} } else save()}
     119                ).save(failOnError:true)
    121120
    122121                // Nutritional study template
     
    131130                .addToFields(new TemplateField(name: 'Institute',type: TemplateFieldType.STRING,entity: Study,comment:'In which institute was the study performed; indicate the full address information (to be replaced by persons-affiliations?)'))
    132131                .addToFields(new TemplateField(name: 'Study protocol',type: TemplateFieldType.FILE,entity: Study,comment:'Optionally attach a file in which the protocol in the study is described'))
    133                 .with { if (!validate()) { errors.each { println it} } else save()}
     132        .save(failOnError:true)
    134133
    135134                // Mouse template
     
    154153                .addToFields(new TemplateField(
    155154                        name: 'Weight', type: TemplateFieldType.DOUBLE, unit: 'gram',entity: Subject,comment:'If known indicate the weight of the subject in grams at the start of the study'))
    156                 .with { if (!validate()) { errors.each { println it} } else save()}
     155        .save(failOnError:true)
    157156
    158157                // Human template
     
    183182                .addToFields(new TemplateField(
    184183                        name: 'Run-in-food',type: TemplateFieldType.TEXT,entity: Subject, comment:'If defined, give a short description of the food used before the measurements'))
    185                 .with { if (!validate()) { errors.each { println it} } else save()}
     184                .save(failOnError:true)
    186185
    187186                def sampleRemarksField = new TemplateField(
     
    189188                        type: TemplateFieldType.TEXT,
    190189                    entity: Sample
    191                 )
    192                 .with { if (!validate()) { errors.each { println it} } else save()}
     190                ).save(failOnError:true)
    193191
    194192                def sampleVialTextField = new TemplateField(
     
    196194                        type: TemplateFieldType.STRING,
    197195                    entity: Sample
    198                 )
    199                 .with { if (!validate()) { errors.each { println it} } else save()}
     196                ).save(failOnError:true)
    200197
    201198                // Human tissue sample template
     
    213210                        entity: Sample
    214211                        )
    215                 )
    216                 .with { if (!validate()) { errors.each { println it} } else save()}
     212        ).save(failOnError:true)
    217213
    218214                // Human blood sample template
     
    230226                                entity: Sample
    231227                        )
    232                 )
    233                 .with { if (!validate()) { errors.each { println it} } else save()}
    234 
    235                
    236                 /*
     228        ).save(failOnError:true)
     229
     230
     231                /*
    237232                 * Add NMC - DCL Sample Mapping Template
    238233                 * by Michael van Vliet
    239                  * 
     234                 *
    240235                 * For the Pilot running in Leiden (NOV2010)
    241236                 */
     
    244239                        type: TemplateFieldType.STRING,
    245240                        entity: Sample
    246                 )
    247                 .with { if (!validate()) { errors.each { println it} } else save()}
     241        ).save(failOnError:true)
    248242
    249243                // Human tissue sample template
     
    253247                )
    254248                .addToFields(sampleDCLTextField)
    255                 .with { if (!validate()) { errors.each { println it} } else save()}
     249        .save(failOnError:true)
    256250                // EO DCL Sample Mapping Template**********************************
    257                
    258                
     251
     252
    259253                /*
    260254                def GrowthTreatmentTemplate = new Template(
     
    270264                .addToFields(new TemplateField(name: 'Light Intensity',type: TemplateFieldType.STRING))
    271265                .addToFields(new TemplateField(name: 'Harvest Delay',type: TemplateFieldType.STRING))
    272                 .with { if (!validate()) { errors.each { println it} } else save()}
     266                .save(failOnError:true)
    273267                 */
    274268
     
    280274                .addToFields(varietyField)
    281275                .addToFields(ecotypeField)
    282                  .addToFields(genotypeField)
     276                .addToFields(genotypeField)
    283277                /*
    284278                .addToFields(genotypeTypeField)
     
    343337                .addToFields(new TemplateField(
    344338                        name: 'Additional info', entity: Subject, type: TemplateFieldType.TEXT))
    345                 .with { if (!validate()) { errors.each { println it} } else save()}
     339        .save(failOnError:true)
    346340
    347341                def FieldTemplate = new Template(
     
    363357                .addToFields(new TemplateField(
    364358                        name: 'Harvest delay', entity: Subject, type: TemplateFieldType.TEXT))
    365                 .with { if (!validate()) { errors.each { println it} } else save()}
     359        .save(failOnError:true)
    366360
    367361                //Plant template
     
    417411                .addToFields(new TemplateField(
    418412                        name: 'Harvest delay', type: TemplateFieldType.TEXT, entity: Subject))
    419                 .with { if (!validate()) { errors.each { println it} } else save()}
     413                .save(failOnError:true)
    420414
    421415                def plantSampleTemplate = new Template(
     
    425419                .addToFields(sampleRemarksField)
    426420                .addToFields(sampleVialTextField)
    427                 .with { if (!validate()) { errors.each { println it} } else save()}
     421        .save(failOnError:true)
    428422
    429423                def materialPrepTemplate = new Template(
     
    463457                                entity: Event
    464458                        )
    465                 )
    466                 .with { if (!validate()) { errors.each { println it} } else save()}
     459                ).save(failOnError:true)
    467460
    468461                def protocolField = new TemplateField(
     
    471464                        entity: Event,
    472465                        comment: 'You can upload a protocol here which describes the procedure which was used when carrying out the event'
    473                 )
    474                 .with { if (!validate()) { errors.each { println it} } else save()}
     466                ).save(failOnError:true)
     467
    475468
    476469                // diet treatment template
     
    491484                )
    492485                .addToFields(protocolField)
    493                 .with { if (!validate()) { errors.each { println it} } else save(flush:true)}
    494                 dietTreatmentTemplate.refresh()
     486        .save(failOnError:true)
    495487
    496488                // boost treatment template
     
    515507                )
    516508                .addToFields(protocolField)
    517                 .with { if (!validate()) { errors.each { println it} } else save(flush:true)}
    518                 boostTreatmentTemplate.refresh()
     509        .save(failOnError:true)
    519510
    520511                // fasting treatment template
     
    530521                                entity: Event
    531522                        )
    532                 )
    533                 .with { if (!validate()) { errors.each { println it} } else save()}
     523                ).save(failOnError:true)
    534524
    535525                // SamplingEvent templates
     
    539529                        type: TemplateFieldType.FILE,
    540530                        comment: 'You can upload a protocol here which describes the procedure which was used when carrying out the sampling event'
    541                 )
    542                 .with { if (!validate()) { errors.each { println it} } else save()}
     531                ).save(failOnError:true)
    543532
    544533                // liver sampling event template
     
    556545                                type: TemplateFieldType.DOUBLE
    557546                        )
    558                 )
    559                 .with { if (!validate()) { errors.each { println it} } else save(flush:true)}
    560                 liverSamplingEventTemplate.refresh()
     547                ).save(failOnError:true)
    561548
    562549                // blood sampling
     
    574561                                type: TemplateFieldType.DOUBLE
    575562                        )
    576                 )
    577                 .with { if (!validate()) { errors.each { println it} } else save(flush:true)}
    578                 bloodSamplingEventTemplate.refresh()
     563                ).save(failOnError:true)
    579564
    580565                // plant sample extraction event template
     
    605590                                 ]
    606591                        )
    607                 )
    608                 .with { if (!validate()) { errors.each { println it} } else save()}
     592                ).save(failOnError:true)
    609593
    610594                // plant sampling event template
     
    645629                                type: TemplateFieldType.STRING
    646630                        )
    647                 )
    648                 .with { if (!validate()) { errors.each { println it} } else save()}
     631                ).save(failOnError:true)
    649632
    650633
     
    655638                                entity: Assay,
    656639                                type: TemplateFieldType.STRING
    657                 );
    658                 assayDescriptionField.with { if (!validate()) { errors.each { println it} } else save()}
     640                ).save(failOnError:true)
    659641
    660642                def ccAssayTemplate = new Template(
     
    664646                )
    665647                .addToFields(assayDescriptionField)
    666                 .with { if (!validate()) { errors.each { println it} } else save()}
     648                .save(failOnError:true)
    667649
    668650                def metAssayTemplate = new Template(
     
    684666                                new TemplateFieldListItem(name: 'HPLC')
    685667                            ])
    686                 )
    687                 .with { if (!validate()) { errors.each { println it} } else save(flush:true)}
    688                 metAssayTemplate.refresh()
     668                ).save(failOnError:true)
    689669        }
    690670
    691671}
     672
     673///**
     674// * @Author kees
     675// * @Since Jun 25, 2010
     676// *
     677// * Revision information:
     678// * $Rev$
     679// * $Author$
     680// * $Date$
     681// */
     682//package dbnp.configuration
     683//
     684//
     685//import dbnp.studycapturing.*
     686//import org.dbnp.gdt.*
     687//import org.codehaus.groovy.grails.commons.GrailsApplication
     688//
     689//class ExampleTemplates {
     690//
     691//      /**
     692//       * Add the ontologies that are necessary for the templates below manually
     693//       * This function can be called to avoid the HTTP requests to BioPortal each time
     694//       * (e.g. in development or automated test environments)
     695//       */
     696//      public static void initTemplateOntologies() {
     697//              "inserting initial ontologies".grom()
     698//
     699//              // If running in development or test mode, add ontologies manually to speed up development and allow running offline
     700//              if (grails.util.GrailsUtil.environment == GrailsApplication.ENV_DEVELOPMENT || grails.util.GrailsUtil.environment == GrailsApplication.ENV_TEST) {
     701//
     702//                      // add Species ontology which is used for a.o. the Subject domain field 'species'
     703//                      def speciesOntology = new Ontology(
     704//                              name: 'NCBI organismal classification',
     705//                              description: 'A taxonomic classification of living organisms and associated artifacts for their controlled description within the context of databases.',
     706//                              url: 'http://www.ncbi.nlm.nih.gov/Taxonomy/taxonomyhome.html/',
     707//                              versionNumber: '1.2',
     708//                              ncboId: '1132',
     709//                              ncboVersionedId: '38802'
     710//                      ).with { if (!validate()) { errors.each { println it} } else save()}
     711//
     712//                      // add Sample>material ontology
     713//                      def brendaOntology = new Ontology(
     714//                              name: 'BRENDA tissue / enzyme source',
     715//                              description: 'A structured controlled vocabulary for the source of an enzyme. It comprises terms for tissues, cell lines, cell types and cell cultures from uni- and multicellular organisms.',
     716//                              url: 'http://www.brenda-enzymes.info',
     717//                              versionNumber: '1.3',
     718//                              ncboId: '1005',
     719//                              ncboVersionedId: '40643'
     720//                      ).with { if (!validate()) { errors.each { println it} } else save()}
     721//
     722//                      // add NCI ontology which is used in Mouse genotype template field
     723//                      def nciOntology = new Ontology(
     724//                              name: 'NCI Thesaurus',
     725//                              description: 'A vocabulary for clinical care, translational and basic research, and public information and administrative activities.',
     726//                              url: 'http://ncicb.nci.nih.gov/core/EVS',
     727//                              versionNumber: '10.03',
     728//                              ncboId: '1032',
     729//                              ncboVersionedId: '42838'
     730//                      ).with { if (!validate()) { errors.each { println it} } else save()}
     731//
     732//                      // add CHEBI ontology which is used for describing chemicals in e.g. events
     733//                      def chebiOntology = new Ontology(
     734//                              name: 'Chemical entities of biological interest',
     735//                              description: 'A structured classification of chemical compounds of biological relevance.',
     736//                              url: 'http://www.ebi.ac.uk/chebi',
     737//                              versionNumber: '1.73',
     738//                              ncboId: '1007',
     739//                              ncboVersionedId: '44746'
     740//                      ).with { if (!validate()) { errors.each { println it} } else save()}
     741//
     742//              }
     743//              // otherwise, this may be a production demo instance, so initialize the ontologies dynamically from BioPortal
     744//              else {
     745//
     746//                      def speciesOntology = Ontology.getOrCreateOntologyByNcboId(1132)
     747//                      def brendaOntology = Ontology.getOrCreateOntologyByNcboId(1005)
     748//                      def nciOntology = Ontology.getOrCreateOntologyByNcboId(1032)
     749//                      def chebiOntology = Ontology.getOrCreateOntologyByNcboId(1007)
     750//              }
     751//      }
     752//
     753//
     754//      /**
     755//       * Add example templates, this function would normally be called on an empty database
     756//       */
     757//      public static void initTemplates() {
     758//              "inserting initial templates".grom()
     759//
     760//              def genderField = new TemplateField(
     761//                      name: 'Gender',type: TemplateFieldType.STRINGLIST, entity: Subject,
     762//                      listEntries: [new TemplateFieldListItem(name:'Male'),new TemplateFieldListItem(name: 'Female'),new TemplateFieldListItem(name: 'Unknown')])
     763//              .with { if (!validate()) { errors.each { println it} } else save()}
     764//
     765//              def ageField = new TemplateField(
     766//                      name: 'Age',type: TemplateFieldType.LONG,entity: Subject,unit: 'years',comment: 'Either include age at the start of the study or date of birth (if known)')
     767//              .with { if (!validate()) { errors.each { println it} } else save()}
     768//
     769//              def genotypeField = new TemplateField(
     770//                      name: 'Genotype', type: TemplateFieldType.ONTOLOGYTERM,entity: Subject,
     771//                      comment: 'If present, indicate the genetic variance of the subject (e.g., mutagenized populations,knock-out/in,transgene etc)')
     772//              .with { if (!validate()) { errors.each { println it} } else save()}
     773//
     774//               def genotypeTypeField = new TemplateField(
     775//                      name: 'Genotype type',type: TemplateFieldType.STRINGLIST,entity: Subject,
     776//                      listEntries: [new TemplateFieldListItem(name:'wildtype'),
     777//                              new TemplateFieldListItem(name:'transgenic'),
     778//                              new TemplateFieldListItem(name:'knock-out'),
     779//                              new TemplateFieldListItem(name:'knock-in')],
     780//                      comment: 'If a genotype was specified, please indicate here the type of the genotype')
     781//              .with { if (!validate()) { errors.each { println it} } else save()}
     782//
     783//              def varietyField = new TemplateField(
     784//                      name: 'Variety', type: TemplateFieldType.STRING,entity: Subject,
     785//                      comment: 'taxonomic category consisting of members of a species that differ from others of the same species in minor but heritable characteristics')
     786//              .with { if (!validate()) { errors.each { println it} } else save()}
     787//
     788//              def ecotypeField = new TemplateField(
     789//                      name: 'Ecotype', type: TemplateFieldType.STRING,entity: Subject,
     790//                       comment: 'a type or subspecies of life that is especially well adapted to a certain environment'
     791//              )
     792//               .with { if (!validate()) { errors.each { println it} } else save()}
     793//
     794//              // Nutritional study template
     795//              def studyTemplate = new Template(
     796//                      name: 'Academic study',
     797//                      entity: dbnp.studycapturing.Study
     798//              )
     799//              .addToFields(new TemplateField(name: 'Objectives',type: TemplateFieldType.TEXT,entity: Study,comment:'Fill out the aim or questions of the study'))
     800//              .addToFields(new TemplateField(name: 'Consortium',type: TemplateFieldType.STRING,entity: Study,comment:'If the study was performed within a consortium (e.g. NMC, NuGO), you can indicate this here'))
     801//              .addToFields(new TemplateField(name: 'Cohort name',type: TemplateFieldType.STRING,entity: Study,comment:'If a cohort was used the name or code of the cohort can be define here (define a cohort template)'))
     802//              .addToFields(new TemplateField(name: 'Lab id',type: TemplateFieldType.STRING,entity: Study,comment:'In which lab was the study performed; indicate the roomnumber.'))
     803//              .addToFields(new TemplateField(name: 'Institute',type: TemplateFieldType.STRING,entity: Study,comment:'In which institute was the study performed; indicate the full address information (to be replaced by persons-affiliations?)'))
     804//              .addToFields(new TemplateField(name: 'Study protocol',type: TemplateFieldType.FILE,entity: Study,comment:'Optionally attach a file in which the protocol in the study is described'))
     805//              .with { if (!validate()) { errors.each { println it} } else save()}
     806//
     807//              // Mouse template
     808//              def mouseTemplate = new Template(
     809//                      name: 'Mouse', entity: dbnp.studycapturing.Subject)
     810//              .addToFields(new TemplateField(
     811//                      name: 'Strain', type: TemplateFieldType.ONTOLOGYTERM, ontologies: [Ontology.getOrCreateOntologyByNcboId(1032)], entity: Subject, comment: "This is an ontology term, if the right strain is not in the list please add it with 'add more'"))
     812//              .addToFields(genotypeField)
     813//              .addToFields(genotypeTypeField)
     814//              .addToFields(genderField)
     815//              .addToFields(new TemplateField(
     816//                      name: 'Age', type: TemplateFieldType.LONG, entity: Subject, unit: 'weeks', comment: 'Age at start of study'))
     817//              .addToFields(new TemplateField(
     818//                      name: 'Age type',type: TemplateFieldType.STRINGLIST,entity: Subject,
     819//                      listEntries: [new TemplateFieldListItem(name:'postnatal'),new TemplateFieldListItem(name:'embryonal')]))
     820//              .addToFields(new TemplateField(
     821//                      name: 'Cage',type: TemplateFieldType.STRING,entity: Subject,comment:'Indicate the cage used for housing (type and/or size)'))
     822//              .addToFields(new TemplateField(
     823//                      name: '#Mice in cage',type: TemplateFieldType.LONG,entity: Subject,comment:'If known, indicate the number of mice per cage'))
     824//              .addToFields(new TemplateField(
     825//                      name: 'Litter size',type: TemplateFieldType.LONG,entity: Subject,comment:'If known, indicate the litter size of the litter from which the subject originates'))
     826//              .addToFields(new TemplateField(
     827//                      name: 'Weight', type: TemplateFieldType.DOUBLE, unit: 'gram',entity: Subject,comment:'If known indicate the weight of the subject in grams at the start of the study'))
     828//              .with { if (!validate()) { errors.each { println it} } else save()}
     829//
     830//              // Human template
     831//              def humanTemplate = new Template(
     832//                      name: 'Human', entity: dbnp.studycapturing.Subject)
     833//              .addToFields(genderField)
     834//              .addToFields(ageField)
     835//              .addToFields(new TemplateField(
     836//                      name: 'DOB',type: TemplateFieldType.DATE,entity: Subject,comment:'Date of birth'))
     837//              .addToFields(new TemplateField(
     838//                      name: 'Height',type: TemplateFieldType.DOUBLE, entity: Subject, unit: 'm'))
     839//              .addToFields(new TemplateField(
     840//                      name: 'Weight',type: TemplateFieldType.DOUBLE, entity: Subject, unit: 'kg'))
     841//              .addToFields(new TemplateField(
     842//                      name: 'BMI',type: TemplateFieldType.DOUBLE, entity: Subject, unit: 'kg/m2',comment:'Body-mass-index'))
     843//              .addToFields(new TemplateField(
     844//                      name: 'Race',type: TemplateFieldType.STRING,entity: Subject, comment:'If known and of interest the ethnic group can be indicated'))
     845//              .addToFields(new TemplateField(
     846//                      name: 'Waist circumference',type: TemplateFieldType.DOUBLE, unit: 'cm',entity: Subject, comment:'The waist circumference is measured just above the hip bone. Indicate the measure at the start of the study.'))
     847//              .addToFields(new TemplateField(
     848//                      name: 'Hip circumference',type: TemplateFieldType.DOUBLE, unit: 'cm',entity: Subject, comment:'The hip circumference is measured at the level of the two bony prominences front of the hips. Indicate the measure at the start of the study.'))
     849//              .addToFields(new TemplateField(
     850//                      name: 'Systolic blood pressure',type: TemplateFieldType.DOUBLE, unit: 'mmHg',entity: Subject, comment:'Indicate the levels at the start of the study in mmHG'))
     851//              .addToFields(new TemplateField(
     852//                      name: 'Diastolic blood pressure',type: TemplateFieldType.DOUBLE, unit: 'mmHg',entity: Subject, comment:'Indicate the levels at the start of the study in mmHG'))
     853//              .addToFields(new TemplateField(
     854//                      name: 'Heart rate',type: TemplateFieldType.DOUBLE, unit: 'beats/min',entity: Subject, comment:'Indicate the heart rate at the start of in study in beats per minute'))
     855//              .addToFields(new TemplateField(
     856//                      name: 'Run-in-food',type: TemplateFieldType.TEXT,entity: Subject, comment:'If defined, give a short description of the food used before the measurements'))
     857//              .with { if (!validate()) { errors.each { println it} } else save()}
     858//
     859//              def sampleRemarksField = new TemplateField(
     860//                      name: 'Remarks',
     861//                      type: TemplateFieldType.TEXT,
     862//                  entity: Sample
     863//              )
     864//              .with { if (!validate()) { errors.each { println it} } else save()}
     865//
     866//              def sampleVialTextField = new TemplateField(
     867//                      name: 'Text on vial',
     868//                      type: TemplateFieldType.STRING,
     869//                  entity: Sample
     870//              )
     871//              .with { if (!validate()) { errors.each { println it} } else save()}
     872//
     873//              // Human tissue sample template
     874//              def humanSampleTemplate = new Template(
     875//                      name: 'Human tissue sample',
     876//                      entity: dbnp.studycapturing.Sample
     877//              )
     878//              .addToFields(sampleRemarksField)
     879//              .addToFields(sampleVialTextField)
     880//              .addToFields(
     881//                      new TemplateField(
     882//                          name: 'Sample measured weight',
     883//                          unit: 'mg',
     884//                          type: TemplateFieldType.DOUBLE,
     885//                      entity: Sample
     886//                      )
     887//              )
     888//              .with { if (!validate()) { errors.each { println it} } else save()}
     889//
     890//              // Human blood sample template
     891//              def humanBloodSampleTemplate = new Template(
     892//                  name: 'Human blood sample',
     893//                      entity: dbnp.studycapturing.Sample
     894//              )
     895//              .addToFields(sampleRemarksField)
     896//              .addToFields(sampleVialTextField)
     897//              .addToFields(
     898//                      new TemplateField(
     899//                          name: 'Sample measured volume',
     900//                          unit: 'ml',
     901//                          type: TemplateFieldType.DOUBLE,
     902//                              entity: Sample
     903//                      )
     904//              )
     905//              .with { if (!validate()) { errors.each { println it} } else save()}
     906//
     907//
     908//              /*
     909//               * Add NMC - DCL Sample Mapping Template
     910//               * by Michael van Vliet
     911//               *
     912//               * For the Pilot running in Leiden (NOV2010)
     913//               */
     914//              def sampleDCLTextField = new TemplateField(
     915//                      name: 'DCL Sample Reference',
     916//                      type: TemplateFieldType.STRING,
     917//                      entity: Sample
     918//              )
     919//              .with { if (!validate()) { errors.each { println it} } else save()}
     920//
     921//              // Human tissue sample template
     922//              def dclSampleTemplate = new Template(
     923//                      name: 'DCL Sample information',
     924//                      entity: dbnp.studycapturing.Sample
     925//              )
     926//              .addToFields(sampleDCLTextField)
     927//              .with { if (!validate()) { errors.each { println it} } else save()}
     928//              // EO DCL Sample Mapping Template**********************************
     929//
     930//
     931//              /*
     932//              def GrowthTreatmentTemplate = new Template(
     933//                      name: 'Growth treatment',
     934//                      entity: dbnp.studycapturing.Event
     935//              )
     936//              .addToFields(sampleDescriptionField)
     937//              .addToFields(new TemplateField(name: 'position X',type: TemplateFieldType.STRING))
     938//              .addToFields(new TemplateField(name: 'position Y',type: TemplateFieldType.STRING))
     939//              .addToFields(new TemplateField(name: 'Block',type: TemplateFieldType.STRING))
     940//              .addToFields(new TemplateField(name: 'Temparature Day',type: TemplateFieldType.STRING))
     941//              .addToFields(new TemplateField(name: 'Temparature Night',type: TemplateFieldType.STRING))
     942//              .addToFields(new TemplateField(name: 'Light Intensity',type: TemplateFieldType.STRING))
     943//              .addToFields(new TemplateField(name: 'Harvest Delay',type: TemplateFieldType.STRING))
     944//              .with { if (!validate()) { errors.each { println it} } else save()}
     945//               */
     946//
     947//              //Plant template
     948//              def greenHouseTemplate = new Template(
     949//                      name: 'Plant-green house ',
     950//                      entity: dbnp.studycapturing.Subject
     951//              )
     952//              .addToFields(varietyField)
     953//              .addToFields(ecotypeField)
     954//               .addToFields(genotypeField)
     955//              /*
     956//              .addToFields(genotypeTypeField)
     957//              .addToFields(
     958//                      new TemplateField(
     959//                              name: 'Growth location', type: TemplateFieldType.STRINGLIST,
     960//                              listEntries: [
     961//                                      new TemplateFieldListItem(name:'Greenhouse'),
     962//                                      new TemplateFieldListItem(name: 'Field')
     963//                              ]
     964//                      )
     965//              )
     966//              .addToFields(
     967//                      new TemplateField(
     968//                              name: 'Room', type: TemplateFieldType.STRING,
     969//                              comment: 'Chamber number in case of Greenhouse'
     970//                      )
     971//              )
     972//              */
     973//              .addToFields(
     974//                      new TemplateField(
     975//                              name: 'Chamber no.',
     976//                              type: TemplateFieldType.STRING,
     977//                              entity: Subject,
     978//                              comment: 'Chamber number in the Greenhouse'
     979//                      )
     980//              )
     981//              .addToFields(
     982//                      new TemplateField(
     983//                              name: 'Growth type',
     984//                              entity: Subject,
     985//                              type: TemplateFieldType.STRINGLIST,
     986//                              listEntries: [
     987//                                      new TemplateFieldListItem(name:'Standard'),
     988//                              new TemplateFieldListItem(name: 'Experimental'),
     989//                              new TemplateFieldListItem(name: 'Unknown')
     990//                              ]
     991//                      )
     992//              )
     993//              .addToFields(new TemplateField(
     994//                      name: 'Growth protocol', entity: Subject, type: TemplateFieldType.TEXT))
     995//              .addToFields(new TemplateField(
     996//                      name: 'Position X', entity: Subject, type: TemplateFieldType.DOUBLE))
     997//              .addToFields(new TemplateField(
     998//                      name: 'Position Y', entity: Subject, type: TemplateFieldType.DOUBLE))
     999//              .addToFields(new TemplateField(
     1000//                      name: 'Block', entity: Subject, type: TemplateFieldType.STRING))
     1001//              .addToFields(new TemplateField(
     1002//                      name: 'Temperature at day', entity: Subject, type: TemplateFieldType.DOUBLE))
     1003//              .addToFields(new TemplateField(
     1004//                      name: 'Temperature at night', entity: Subject, type: TemplateFieldType.DOUBLE))
     1005//              .addToFields(new TemplateField(
     1006//                      name: 'Photo period', entity: Subject, type: TemplateFieldType.STRING))
     1007//              .addToFields(new TemplateField(
     1008//                      name: 'Light intensity', entity: Subject, type: TemplateFieldType.STRING))
     1009//              .addToFields(new TemplateField(
     1010//                      name: 'Start date', entity: Subject, type: TemplateFieldType.DATE))
     1011//              .addToFields(new TemplateField(
     1012//                      name: 'Harvest date', entity: Subject, type: TemplateFieldType.DATE))
     1013//              .addToFields(new TemplateField(
     1014//                      name: 'Harvest delay', entity: Subject, type: TemplateFieldType.TEXT))
     1015//              .addToFields(new TemplateField(
     1016//                      name: 'Additional info', entity: Subject, type: TemplateFieldType.TEXT))
     1017//              .with { if (!validate()) { errors.each { println it} } else save()}
     1018//
     1019//              def FieldTemplate = new Template(
     1020//                      name: 'Plant-open field',
     1021//                      entity: dbnp.studycapturing.Subject
     1022//              )
     1023//              .addToFields(varietyField)
     1024//              .addToFields(ecotypeField)
     1025//              .addToFields(genotypeField)
     1026//              .addToFields(new TemplateField(
     1027//                      name: 'Start date', entity: Subject, type: TemplateFieldType.DATE))
     1028//              .addToFields(new TemplateField(
     1029//                      name: 'Harvest date', entity: Subject, type: TemplateFieldType.DATE))
     1030//              .addToFields(new TemplateField(
     1031//                      name: 'Growth type', entity: Subject, type: TemplateFieldType.STRINGLIST,
     1032//                      listEntries: [new TemplateFieldListItem(name:'Standard'),new TemplateFieldListItem(name: 'Experimental')]))
     1033//              .addToFields(new TemplateField(
     1034//                      name: 'Growth protocol', entity: Subject, type: TemplateFieldType.TEXT))
     1035//              .addToFields(new TemplateField(
     1036//                      name: 'Harvest delay', entity: Subject, type: TemplateFieldType.TEXT))
     1037//              .with { if (!validate()) { errors.each { println it} } else save()}
     1038//
     1039//              //Plant template
     1040//              def chamberTemplate = new Template(
     1041//                      name: 'Plant-chamber',
     1042//                      entity: dbnp.studycapturing.Subject
     1043//              )
     1044//              .addToFields(varietyField)
     1045//              .addToFields(ecotypeField)
     1046//              .addToFields(genotypeField)
     1047//              /*
     1048//              .addToFields(genotypeTypeField)
     1049//              .addToFields(
     1050//                      new TemplateField(
     1051//                              name: 'Growth location',
     1052//                              type: TemplateFieldType.STRINGLIST,
     1053//                              listEntries: [
     1054//                                      new TemplateFieldListItem(name:'Greenhouse'),
     1055//                                      new TemplateFieldListItem(name: 'Field')
     1056//                              ]
     1057//                      )
     1058//              )
     1059//              */
     1060//              .addToFields(new TemplateField(
     1061//                      name: 'Room', type: TemplateFieldType.STRING, entity: Subject,
     1062//                      comment: 'room number'))
     1063//              .addToFields(new TemplateField(
     1064//                      name: 'Chamber no.', type: TemplateFieldType.STRING, entity: Subject,
     1065//                      comment: 'Chamber number'))
     1066//              .addToFields(new TemplateField(
     1067//                      name: 'Block', type: TemplateFieldType.STRING, entity: Subject))
     1068//              .addToFields(new TemplateField(
     1069//                      name: 'Position X', type: TemplateFieldType.DOUBLE, entity: Subject))
     1070//              .addToFields(new TemplateField(
     1071//                      name: 'Position Y', type: TemplateFieldType.DOUBLE, entity: Subject))
     1072//              .addToFields(new TemplateField(
     1073//                      name: 'Temperature at day', type: TemplateFieldType.DOUBLE, entity: Subject))
     1074//              .addToFields(new TemplateField(
     1075//                      name: 'Temperature at night', type: TemplateFieldType.DOUBLE, entity: Subject))
     1076//              .addToFields(new TemplateField(
     1077//                      name: 'Photo period', type: TemplateFieldType.STRING, entity: Subject))
     1078//              .addToFields(new TemplateField(
     1079//                      name: 'Light intensity', type: TemplateFieldType.STRING, entity: Subject))
     1080//              .addToFields(new TemplateField(
     1081//                      name: 'Start date', type: TemplateFieldType.DATE, entity: Subject))
     1082//              .addToFields(new TemplateField(
     1083//                      name: 'Harvest date', type: TemplateFieldType.DATE, entity: Subject))
     1084//              .addToFields(new TemplateField(
     1085//                      name: 'Growth type', type: TemplateFieldType.STRINGLIST, entity: Subject,
     1086//                      listEntries: [new TemplateFieldListItem(name:'Standard'),new TemplateFieldListItem(name: 'Experimental')]))
     1087//              .addToFields(new TemplateField(
     1088//                      name: 'Growth protocol', type: TemplateFieldType.TEXT, entity: Subject))
     1089//              .addToFields(new TemplateField(
     1090//                      name: 'Harvest delay', type: TemplateFieldType.TEXT, entity: Subject))
     1091//              .with { if (!validate()) { errors.each { println it} } else save()}
     1092//
     1093//              def plantSampleTemplate = new Template(
     1094//                      name: 'Plant sample',
     1095//                      entity: dbnp.studycapturing.Sample
     1096//              )
     1097//              .addToFields(sampleRemarksField)
     1098//              .addToFields(sampleVialTextField)
     1099//              .with { if (!validate()) { errors.each { println it} } else save()}
     1100//
     1101//              def materialPrepTemplate = new Template(
     1102//                      name: 'Plant-material preparation',
     1103//                  description: 'material preparation',
     1104//                  entity: dbnp.studycapturing.Event
     1105//              )
     1106//              .addToFields(new TemplateField(
     1107//                       name: 'Tissue',
     1108//                      type: TemplateFieldType.STRING,
     1109//                      entity: Event,
     1110//                  comment: 'organ/ fraction of culture/ plant part')
     1111//              )
     1112//              .addToFields(
     1113//                      new TemplateField(
     1114//                               name: 'Grinding',
     1115//                              type: TemplateFieldType.STRINGLIST,
     1116//                              entity: Event,
     1117//                          listEntries: [
     1118//                                      new TemplateFieldListItem(name:'yes'),
     1119//                              new TemplateFieldListItem(name: 'no'),
     1120//                              new TemplateFieldListItem(name: 'unknown')
     1121//                              ]
     1122//                      )
     1123//              )
     1124//              .addToFields(
     1125//                      new TemplateField(
     1126//                              name: 'Storage location',
     1127//                              type: TemplateFieldType.STRING,
     1128//                              entity: Event
     1129//                      )
     1130//              )
     1131//              .addToFields(
     1132//                      new TemplateField(
     1133//                              name: 'protocol reference',
     1134//                              type: TemplateFieldType.STRING,
     1135//                              entity: Event
     1136//                      )
     1137//              )
     1138//              .with { if (!validate()) { errors.each { println it} } else save()}
     1139//
     1140//              def protocolField = new TemplateField(
     1141//                      name: 'Protocol',
     1142//                      type: TemplateFieldType.FILE,
     1143//                      entity: Event,
     1144//                      comment: 'You can upload a protocol here which describes the procedure which was used when carrying out the event'
     1145//              )
     1146//              .with { if (!validate()) { errors.each { println it} } else save()}
     1147//
     1148//              // diet treatment template
     1149//              def dietTreatmentTemplate = new Template(
     1150//                      name: 'Diet treatment',
     1151//                      entity: dbnp.studycapturing.Event
     1152//              )
     1153//              .addToFields(
     1154//                      new TemplateField(
     1155//                              name: 'Diet',
     1156//                              type: TemplateFieldType.STRINGLIST,
     1157//                              entity: Event,
     1158//                              listEntries: [
     1159//                                      new TemplateFieldListItem(name:'low fat'),
     1160//                                      new TemplateFieldListItem(name: 'high fat')
     1161//                              ]
     1162//                      )
     1163//              )
     1164//              .addToFields(protocolField)
     1165//              .with { if (!validate()) { errors.each { println it} } else save(flush:true)}
     1166//              dietTreatmentTemplate.refresh()
     1167//
     1168//              // boost treatment template
     1169//              def boostTreatmentTemplate = new Template(
     1170//                      name: 'Compound challenge',
     1171//                      entity: dbnp.studycapturing.Event
     1172//              )
     1173//              .addToFields(
     1174//                      new TemplateField(
     1175//                              name: 'Compound',
     1176//                              type: TemplateFieldType.ONTOLOGYTERM,
     1177//                              entity: Event,
     1178//                              ontologies: [Ontology.getOrCreateOntologyByNcboId(1007)]
     1179//                      )
     1180//              )
     1181//              .addToFields(
     1182//                      new TemplateField(
     1183//                              name: 'Control',
     1184//                              type: TemplateFieldType.BOOLEAN,
     1185//                              entity: Event
     1186//                      )
     1187//              )
     1188//              .addToFields(protocolField)
     1189//              .with { if (!validate()) { errors.each { println it} } else save(flush:true)}
     1190//              boostTreatmentTemplate.refresh()
     1191//
     1192//              // fasting treatment template
     1193//              def fastingTreatment = new Template(
     1194//                      name: 'Fasting treatment',
     1195//                      description: 'Fasting for a specific amount of time',
     1196//                      entity: dbnp.studycapturing.Event
     1197//              )
     1198//              .addToFields(
     1199//                      new TemplateField(
     1200//                              name: 'Fasting period',
     1201//                              type: TemplateFieldType.RELTIME,
     1202//                              entity: Event
     1203//                      )
     1204//              )
     1205//              .with { if (!validate()) { errors.each { println it} } else save()}
     1206//
     1207//              // SamplingEvent templates
     1208//              def samplingProtocolField = new TemplateField(
     1209//                      name: 'Sample Protocol',
     1210//                      entity: SamplingEvent,
     1211//                      type: TemplateFieldType.FILE,
     1212//                      comment: 'You can upload a protocol here which describes the procedure which was used when carrying out the sampling event'
     1213//              )
     1214//              .with { if (!validate()) { errors.each { println it} } else save()}
     1215//
     1216//              // liver sampling event template
     1217//              def liverSamplingEventTemplate = new Template(
     1218//                      name: 'Liver extraction',
     1219//                      description: 'Liver sampling for transcriptomics arrays',
     1220//                      entity: dbnp.studycapturing.SamplingEvent
     1221//              )
     1222//              .addToFields(samplingProtocolField)
     1223//              .addToFields(
     1224//                      new TemplateField(
     1225//                              name: 'Sample weight',
     1226//                              unit: 'mg',
     1227//                              entity: SamplingEvent,
     1228//                              type: TemplateFieldType.DOUBLE
     1229//                      )
     1230//              )
     1231//              .with { if (!validate()) { errors.each { println it} } else save(flush:true)}
     1232//              liverSamplingEventTemplate.refresh()
     1233//
     1234//              // blood sampling
     1235//              def bloodSamplingEventTemplate = new Template(
     1236//                      name: 'Blood extraction',
     1237//                      description: 'Blood extraction targeted at lipid assays',
     1238//                      entity: dbnp.studycapturing.SamplingEvent
     1239//              )
     1240//              .addToFields(samplingProtocolField)
     1241//              .addToFields(
     1242//                      new TemplateField(
     1243//                              name: 'Sample volume',
     1244//                              entity: SamplingEvent,
     1245//                              unit: 'ml',
     1246//                              type: TemplateFieldType.DOUBLE
     1247//                      )
     1248//              )
     1249//              .with { if (!validate()) { errors.each { println it} } else save(flush:true)}
     1250//              bloodSamplingEventTemplate.refresh()
     1251//
     1252//              // plant sample extraction event template
     1253//              def plantSamplingExtractEventTemplate = new Template(
     1254//                      name: 'Plant sample extraction',
     1255//                      description: 'sample extraction',
     1256//                      entity: dbnp.studycapturing.SamplingEvent,
     1257//                  sampleTemplates: [plantSampleTemplate]
     1258//              )
     1259//              .addToFields(samplingProtocolField)
     1260//              .addToFields(
     1261//                      new TemplateField(
     1262//                              name: 'Sample weight',
     1263//                              unit: 'ul',
     1264//                              entity: SamplingEvent,
     1265//                              type: TemplateFieldType.DOUBLE
     1266//                      )
     1267//              )
     1268//              .addToFields(
     1269//                      new TemplateField(
     1270//                              name: 'Sample when measured',
     1271//                              type: TemplateFieldType.STRINGLIST,
     1272//                              entity: SamplingEvent,
     1273//                           listEntries: [
     1274//                                       new TemplateFieldListItem(name:'Dried'),
     1275//                           new TemplateFieldListItem(name: 'Fresh'),
     1276//                           new TemplateFieldListItem(name: 'Unknown')
     1277//                               ]
     1278//                      )
     1279//              )
     1280//              .with { if (!validate()) { errors.each { println it} } else save()}
     1281//
     1282//              // plant sampling event template
     1283//              def plantSamplingEventTemplate = new Template(
     1284//                      name: 'Plant-sample',
     1285//                      description: 'plant sample ',
     1286//                      entity: dbnp.studycapturing.SamplingEvent,
     1287//                  sampleTemplates: [plantSampleTemplate]
     1288//              )
     1289//              //.addToFields(samplingProtocolField)
     1290//              .addToFields(
     1291//                      new TemplateField(
     1292//                              name: 'material',
     1293//                          comment: 'physical charecteristic. e.g, grounded powder of tomato seed or liquid',
     1294//                              entity: SamplingEvent,
     1295//                              type: TemplateFieldType.STRING
     1296//                      )
     1297//              )
     1298//              .addToFields(
     1299//                      new TemplateField(
     1300//                              name: 'Description',
     1301//                              type: TemplateFieldType.STRING,
     1302//                              entity: SamplingEvent
     1303//                      )
     1304//              )
     1305//              .addToFields(
     1306//                      new TemplateField(
     1307//                              name: 'extracted material',
     1308//                              comment: 'substance to be extracted. e.g., lipids, volatiles, primary metabolites etc',
     1309//                              type: TemplateFieldType.STRING,
     1310//                              entity: SamplingEvent
     1311//                      )
     1312//              )
     1313//              .addToFields(
     1314//                      new TemplateField(
     1315//                              name: 'Text on vial',
     1316//                              entity: SamplingEvent,
     1317//                              type: TemplateFieldType.STRING
     1318//                      )
     1319//              )
     1320//              .with { if (!validate()) { errors.each { println it} } else save()}
     1321//
     1322//
     1323//              // assay templates
     1324//              def assayDescriptionField = new TemplateField(
     1325//                              name: 'Description',
     1326//                          comment: 'add general assay information here',
     1327//                              entity: Assay,
     1328//                              type: TemplateFieldType.STRING
     1329//              );
     1330//              assayDescriptionField.with { if (!validate()) { errors.each { println it} } else save()}
     1331//
     1332//              def ccAssayTemplate = new Template(
     1333//                      name: 'Clinical chemistry assay',
     1334//                      description: 'Clinical chemistry assay stored in a SAM module',
     1335//                      entity: dbnp.studycapturing.Assay
     1336//              )
     1337//              .addToFields(assayDescriptionField)
     1338//              .with { if (!validate()) { errors.each { println it} } else save()}
     1339//
     1340//              def metAssayTemplate = new Template(
     1341//                      name: 'Metabolomics assay',
     1342//                      description: 'Metabolomics assay stored in a metabolomics module',
     1343//                      entity: dbnp.studycapturing.Assay
     1344//              )
     1345//              .addToFields(assayDescriptionField)
     1346//              .addToFields(
     1347//                      new TemplateField(
     1348//                              name: 'Spectrometry technique',
     1349//                          comment: 'Select the used metabolomics technique',
     1350//                              entity: Assay,
     1351//                              type: TemplateFieldType.STRINGLIST,
     1352//                          listEntries: [
     1353//                                      new TemplateFieldListItem(name: 'GC/MS'),
     1354//                              new TemplateFieldListItem(name: 'LC/MS'),
     1355//                              new TemplateFieldListItem(name: 'NMR'),
     1356//                              new TemplateFieldListItem(name: 'HPLC')
     1357//                          ])
     1358//              )
     1359//              .with { if (!validate()) { errors.each { println it} } else save(flush:true)}
     1360//              metAssayTemplate.refresh()
     1361//      }
     1362//
     1363//}
Note: See TracChangeset for help on using the changeset viewer.