Ignore:
Timestamp:
May 3, 2010, 3:55:29 PM (9 years ago)
Author:
duh
Message:
  • refactored TemplateEntity? to check for and handle event + domain fields properly
  • refactored wizard event page to

1) display events seperated in event templates
2) display cross-template event groups

  • todo: event fields are not yet properly handled
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/grails-app/domain/dbnp/studycapturing/TemplateEntity.groovy

    r389 r390  
    270270         */
    271271        def fieldExists(String fieldName) {
    272                 TemplateFieldType fieldType = template.getFieldType(fieldName)
    273 
    274                 // If the field is found, a TemplateFieldType is returned
    275                 // otherwise null
    276                 if (fieldType) {
    277                     return true
    278                 } else {
    279                     return false
    280                 }
     272                // escape the fieldName for easy matching
     273                // (such escaped names are commonly used
     274                // in the HTTP forms of this application)
     275                def escapedLowerCaseFieldName = fieldName.toLowerCase().replaceAll("([^a-z0-9])","_")
     276
     277                // check if this domain class has got this property
     278                if (this.properties.containsKey(fieldName)) {
     279                        // domain class contains this property
     280                        return true
     281                } else if (template == null) {
     282                        // no, and we haven't got a template set either
     283                        return false
     284                } else {
     285                        // the domain class doesn't have this property but
     286                        // it has a template defined. Check the template
     287                        // fields to see if such a template field exists
     288                        TemplateField field = this.template.fields.find { it.name.toLowerCase().replaceAll("([^a-z0-9])","_") == escapedLowerCaseFieldName }
     289
     290                        // does the template field exist?
     291                        if (field == null) {
     292                                // no such template field
     293                                return false
     294                        } else {
     295                                // found!
     296                                return true
     297                        }
     298                }
    281299        }
    282300
     
    287305         */
    288306        def setFieldValue(String fieldName, value) {
     307                // escape the fieldName for easy matching
     308                // (such escaped names are commonly used
     309                // in the HTTP forms of this application)
     310                def escapedLowerCaseFieldName = fieldName.toLowerCase().replaceAll("([^a-z0-9])","_")
     311
    289312                // First, search if there is an entity property with the given name, and if so, set that
    290313                if (this.properties.containsKey(fieldName)) {
     
    296319                        // there is a template, check the template fields
    297320                        // Find the target template field, if not found, throw an error
    298                         TemplateField field = this.template.fields.find { it.name == fieldName }
     321                        TemplateField field = this.template.fields.find { it.name.toLowerCase().replaceAll("([^a-z0-9])","_") == escapedLowerCaseFieldName }
    299322
    300323                        if (field == null) {
     
    306329                                if (field.type == TemplateFieldType.STRINGLIST && value && value.class == String) {
    307330                                        // Kees insensitive pattern matching ;)
    308                                         value = field.listEntries.find { it.name ==~ /(?i)($value)/ }
     331                                        def escapedLowerCaseValue = value.toLowerCase().replaceAll("([^a-z0-9])","_")
     332                                        value = field.listEntries.find {
     333                                                it.name.toLowerCase().replaceAll("([^a-z0-9])","_") == escapedLowerCaseValue
     334                                        }
    309335                                }
    310336
Note: See TracChangeset for help on using the changeset viewer.