Changeset 1594


Ignore:
Timestamp:
Mar 7, 2011, 3:28:25 PM (6 years ago)
Author:
robert@…
Message:

Finishing touch after refactoring entity tokens (#329)

Location:
trunk
Files:
12 edited

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
Note: See TracChangeset for help on using the changeset viewer.