Changeset 1594

Show
Ignore:
Timestamp:
07-03-11 15:28:25 (3 years ago)
Author:
robert@…
Message:

Finishing touch after refactoring entity tokens (#329)

Location:
trunk
Files:
12 modified

Legend:

Unmodified
Added
Removed
  • trunk/grails-app/conf/DatabaseUpgrade.groovy

    r1574 r1594  
    3434                setAssayModuleDefaultValues(sql, db)            // 1490 
    3535        dropMappingColumnNameConstraint(sql, db) 
     36                alterStudyAndAssay(sql, db)                                     // 1594 
    3637        } 
    3738 
     
    194195       } 
    195196    } 
     197         
     198        /** 
     199        * The field study.code has been set to be nullable 
     200        * The field assay.externalAssayId has been removed 
     201        * @param sql 
     202        * @param db 
     203        */ 
     204   public static void alterStudyAndAssay(sql, db) { 
     205           // are we running postgreSQL ? 
     206           if (db == "org.postgresql.Driver") { 
     207                   try { 
     208                           sql.execute("ALTER TABLE assay DROP COLUMN external_assayid") 
     209                   } catch (Exception e) { 
     210                           println "alterStudyAndAssay externalAssayId could not be removed from assay: " + e.getMessage() 
     211                   } 
     212                   try { 
     213                           sql.execute("ALTER TABLE study ALTER COLUMN code DROP NOT NULL") 
     214                   } catch (Exception e) { 
     215                           println "alterStudyAndAssay study.code could not be set to accept null values: " + e.getMessage() 
     216                   } 
     217           } 
     218            
     219           // Load all studies and save them again. This prevents errors on saving later 
     220           Study.list().each { 
     221                   it.save(); 
     222           } 
     223   } 
     224 
    196225} 
  • trunk/grails-app/conf/dbnp/configuration/ExampleStudies.groovy

    r1590 r1594  
    420420                        name: 'Lipid profiling', 
    421421                        template: ccAssayTemplate, 
    422                         module: clinicalModule, 
    423                         externalAssayID: 'PPS3_SAM' 
     422                        module: clinicalModule 
    424423                ) 
    425424 
     
    427426                        name: 'Lipidomics profile', 
    428427                        template: metAssayTemplate, 
    429                         module: metabolomicsModule, 
    430                         externalAssayID: 'PPS3_Lipidomics' 
     428                        module: metabolomicsModule 
    431429                ).setFieldValue('Spectrometry technique', 'LC/MS') 
    432430 
     
    443441                        name            : 'Glucose assay before', 
    444442                        template        : ccAssayTemplate, 
    445                         module          : clinicalModule, 
    446                         externalAssayID: 'PPSH-Glu-B' 
     443                        module          : clinicalModule 
    447444                ) 
    448445 
     
    450447                        name            : 'Glucose assay after', 
    451448                        template        : ccAssayTemplate, 
    452                         module          : clinicalModule, 
    453                         externalAssayID: 'PPSH-Glu-A' 
     449                        module          : clinicalModule 
    454450                ) 
    455451 
     
    457453                        name            : 'Lipidomics profile before', 
    458454                        template        : metAssayTemplate, 
    459                         module          : metabolomicsModule, 
    460                         externalAssayID: 'PPSH_Lipidomics_start' 
     455                        module          : metabolomicsModule 
    461456                ).setFieldValue('Spectrometry technique', 'GC/MS') 
    462457 
     
    464459                        name            : 'Lipidomics profile after', 
    465460                        template        : metAssayTemplate, 
    466                         module          : metabolomicsModule, 
    467                         externalAssayID: 'PPSH_Lipidomics_end' 
     461                        module          : metabolomicsModule 
    468462                ).setFieldValue('Spectrometry technique', 'GC/MS') 
    469463 
     
    473467                        name            : '16S Sequencing assay', 
    474468                        template        : ccAssayTemplate, 
    475                         module          : metagenomicsModule, 
    476                         externalAssayID: 'PPSH-SEQ-16S' 
     469                        module          : metagenomicsModule 
    477470                ) 
    478471 
     
    481474                        name            : '18S Sequencing assay', 
    482475                        template        : ccAssayTemplate, 
    483                         module          : metagenomicsModule, 
    484                         externalAssayID: 'PPSH-SEQ-18S' 
     476                        module          : metagenomicsModule 
    485477                ) 
    486478 
  • trunk/grails-app/controllers/dbnp/studycapturing/StudyWizardController.groovy

    r1545 r1594  
    832832                            // set template 
    833833                            flow.assay.template = template 
    834                             if (template) { 
    835                                     flow.assay.setFieldValue( 
    836                                             'externalAssayID', 
    837                                             ucwords(flow.study.code).replaceAll("([ ]{1,})", "") + '_' + ucwords(template.name).replaceAll("([ ]{1,})", "") 
    838                                     ) 
    839                             } 
    840834                    } else { 
    841835                            // create a new assay instance 
    842836                            flow.assay = new Assay(template: template) 
    843                             if (template) { 
    844                                     flow.assay.setFieldValue( 
    845                                             'externalAssayID', 
    846                                             ucwords(flow.study.code).replaceAll("([ ]{1,})", "") + '_' + ucwords(template.name).replaceAll("([ ]{1,})", "") 
    847                                     ) 
    848                             } 
    849837                    } 
    850838 
  • trunk/grails-app/controllers/nmc/PilotController.groovy

    r1430 r1594  
    7878                   assayInstance.name = "${studyInstance.title} - Metabolomics Assay" 
    7979                   assayInstance.module = AssayModule.findByName("Metabolomics module") 
    80                    assayInstance.externalAssayID = assayInstance?.name?.encodeAsMD5() 
    8180                   studyInstance.addToAssays(assayInstance) 
    8281                   assayInstance.save(flush: true) 
  • trunk/grails-app/domain/dbnp/studycapturing/Assay.groovy

    r1526 r1594  
    1313        // The dbNP module in which the assay omics data can be found. */ 
    1414        AssayModule module 
    15  
    16         // The assay ID which is used in the dbNP submodule which contains the actual omics data of this assay. 
    17         // This ID is generated in GSCF, but is used in the submodules to refer to this particular Assay. 
    18         String externalAssayID 
    1915 
    2016        /** 
     
    3935                        type: TemplateFieldType.MODULE, 
    4036                        required: true 
    41                 ), 
    42                 new TemplateField( 
    43                         name: 'externalAssayID', 
    44                         type: TemplateFieldType.STRING, 
    45                         required: true 
    4637                ) 
    4738        ] 
     
    5445 
    5546        static constraints = { 
    56                 externalAssayID(nullable:false, blank:false, unique: true) 
    5747                assayUUID(nullable:true, unique: true) 
    5848        } 
  • trunk/grails-app/domain/dbnp/studycapturing/Study.groovy

    r1589 r1594  
    5555                title(nullable:false, blank: false, maxSize: 255) 
    5656                owner(nullable: true, blank: true) 
    57                 code(nullable: false, blank: true, unique: true, maxSize: 255) 
     57                code(nullable: true, blank: true, unique: true, maxSize: 255) 
    5858                studyUUID(nullable:true, unique:true, maxSize: 255) 
    5959                // TODO: add custom validator for 'published' to assess whether the study meets all quality criteria for publication 
     
    9898                preferredIdentifier: true, 
    9999                comment: 'Fill out the code by which many people will recognize your study', 
    100                 required: true), 
     100                required: false), 
    101101                new TemplateField( 
    102102                name: 'startDate', 
  • trunk/grails-app/views/assay/create.gsp

    r1430 r1594  
    2727                    <table> 
    2828                        <tbody> 
    29                          
    30                             <tr class="prop"> 
    31                                 <td valign="top" class="name"> 
    32                                     <label for="externalAssayID"><g:message code="assay.externalAssayID.label" default="External Assay ID" /></label> 
    33                                 </td> 
    34                                 <td valign="top" class="value ${hasErrors(bean: assayInstance, field: 'externalAssayID', 'errors')}"> 
    35                                     <g:textField name="externalAssayID" value="${fieldValue(bean: assayInstance, field: 'externalAssayID')}" /> 
    36                                 </td> 
    37                             </tr> 
    3829                         
    3930                            <tr class="prop"> 
  • trunk/grails-app/views/assay/edit.gsp

    r1430 r1594  
    3030                    <table> 
    3131                        <tbody> 
    32                          
    33                             <tr class="prop"> 
    34                                 <td valign="top" class="name"> 
    35                                   <label for="externalAssayID"><g:message code="assay.externalAssayID.label" default="External Assay ID" /></label> 
    36                                 </td> 
    37                                 <td valign="top" class="value ${hasErrors(bean: assayInstance, field: 'externalAssayID', 'errors')}"> 
    38                                     <g:textField name="externalAssayID" value="${fieldValue(bean: assayInstance, field: 'externalAssayID')}" /> 
    39                                 </td> 
    40                             </tr> 
    4132                         
    4233                            <tr class="prop"> 
  • trunk/grails-app/views/assay/list.gsp

    r1430 r1594  
    2525                            <g:sortableColumn property="id" title="${message(code: 'assay.id.label', default: 'Id')}" /> 
    2626                         
    27                             <g:sortableColumn property="externalAssayID" title="${message(code: 'assay.externalAssayID.label', default: 'External Assay ID')}" /> 
    28                          
    2927                            <th><g:message code="assay.module.label" default="Module" /></th> 
    3028                             
     
    4038                         
    4139                            <td><g:link action="show" id="${assayInstance.id}">${fieldValue(bean: assayInstance, field: "id")}</g:link></td> 
    42                          
    43                             <td>${fieldValue(bean: assayInstance, field: "externalAssayID")}</td> 
    4440                         
    4541                            <td>${fieldValue(bean: assayInstance, field: "module")}</td> 
  • trunk/grails-app/views/assay/show.gsp

    r1430 r1594  
    2727                             
    2828                            <td valign="top" class="value">${fieldValue(bean: assayInstance, field: "id")}</td> 
    29                              
    30                         </tr> 
    31                      
    32                         <tr class="prop"> 
    33                             <td valign="top" class="name"><g:message code="assay.externalAssayID.label" default="External Assay ID" /></td> 
    34                              
    35                             <td valign="top" class="value">${fieldValue(bean: assayInstance, field: "externalAssayID")}</td> 
    3629                             
    3730                        </tr> 
  • trunk/grails-app/views/study/show_assays.gsp

    r1573 r1594  
    99                  <th></th> 
    1010                </g:if> 
    11                   <th width="100">Assay Code</th> 
    1211                <th width="100">Assay Name</th> 
    1312                <th width="100">Module</th> 
     
    2726                        </td> 
    2827                  </g:if> 
    29                         <td>${assay?.token}</td> 
    3028                  <td>${assay?.name}</td> 
    3129                  <td>${assay?.module?.name}</td> 
  • trunk/test/unit/dbnp/studycapturing/AssayServiceTests.groovy

    r1588 r1594  
    6161        mockDomain(AssayModule,   [ new AssayModule(id: 1, url: 'http://www.example.com') ]) 
    6262 
    63         mockDomain(Assay,         [ new Assay(id: 1, externalAssayID: 'assay1', module: AssayModule.get(1), samples: [Sample.get(1),Sample.get(2)]), 
    64                                     new Assay(id: 2, externalAssayID: 'assay1', module: AssayModule.get(1), samples: [])]) 
     63        mockDomain(Assay,         [ new Assay(id: 1, module: AssayModule.get(1), samples: [Sample.get(1),Sample.get(2)]), 
     64                                    new Assay(id: 2, module: AssayModule.get(1), samples: [])]) 
    6565 
    6666        Subject.get(1).metaClass.static.log = mockLog