Ignore:
Timestamp:
Feb 10, 2010, 5:35:11 PM (10 years ago)
Author:
duh
Message:
  • previous commits broke application bootstrapping:
    • fixed some domain classes where nullable and / or blank were not correctly implemented
    • commented out the PPSH study which is still buggy
  • improved wizard data handeling, error reporting and javascript
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/grails-app/controllers/dbnp/studycapturing/WizardController.groovy

    r183 r189  
    6767                }
    6868
    69                 // render the study page and handle study logic
     69                // render and handle the study page
    7070                study {
    7171                        render(view: "_study")
     
    100100                }
    101101
    102                 // render page two
     102                // render and handle subjects page
    103103                subjects {
    104104                        render(view: "_subjects")
     
    146146                }
    147147
     148                // render and handle group page
    148149                groups {
    149150                        render(view: "_groups")
     
    190191                        return false
    191192                } else {
     193                        def names = new LinkedHashMap();
    192194                        def errors = false;
    193195                        def id = 0;
     196
     197                        // iterate through subjects
    194198                        flow.subjects.each() {
    195199                                // store subject properties
     200                                def name = params.get('subject_' + id + '_name')
    196201                                it.name = params.get('subject_' + id + '_name')
    197202                                it.species = Term.findByName(params.get('subject_' + id + '_species'))
    198203
     204                                // remember name and check for duplicates
     205                                if (!names[ it.name ]) {
     206                                        names[ it.name ] = [count: 1, first: 'subject_' + id + '_name']
     207                                } else {
     208                                        // duplicate name found, set error flag
     209                                        names[ it.name ]['count']++
     210
     211                                        // second occurence?
     212                                        if (names[ it.name ]['count'] == 2) {
     213                                                // yeah, also mention the first
     214                                                // occurrence in the error message
     215                                                this.appendErrorMap([[names[ it.name ]['first']]: 'The subject name needs to be unique!'], flash.errors)
     216                                        }
     217
     218                                        // add to error map
     219                                        this.appendErrorMap([['subject_' + id + '_name']: 'The subject name needs to be unique!'], flash.errors)
     220                                        errors = true
     221                                }
     222
    199223                                // clear lists
    200                                 def stringList = new LinkedHashMap();
    201                                 def intList = new LinkedHashMap();
     224                                def stringList  = new LinkedHashMap();
     225                                def intList             = new LinkedHashMap();
     226                                def floatList   = new LinkedHashMap();
     227                                def termList    = new LinkedHashMap();
    202228
    203229                                // get all template fields
    204230                                flow.study.template.subjectFields.each() {
     231                                        // valid type?
     232                                        if (!it.type) throw new NoSuchFieldException("Field name ${fieldName} not recognized")
     233
    205234                                        // get value
    206235                                        def value = params.get('subject_' + id + '_' + it.name);
    207 
    208236                                        if (value) {
    209237                                                // add to template parameters
    210238                                                switch (it.type) {
    211239                                                        case 'STRINGLIST':
    212                                                                 stringList[it.name] = value
     240                                                                stringList[it.name]     = value
    213241                                                                break;
    214242                                                        case 'INTEGER':
    215                                                                 intList[it.name] = value
     243                                                                intList[it.name]        = value
     244                                                                break;
     245                                                        case 'FLOAT':
     246                                                                floatList[it.name]      = value
    216247                                                                break;
    217248                                                        default:
    218249                                                                // unsupported type?
    219                                                                 println "ERROR: unsupported type: " + it.type
     250                                                                throw new NoSuchFieldException("Field type ${it.type} not recognized")
    220251                                                                break;
    221252                                                }
     
    224255
    225256                                // set field data
    226                                 it.templateStringFields = stringList
    227                                 it.templateIntegerFields = intList
     257                                it.templateStringFields         = stringList
     258                                it.templateIntegerFields        = intList
     259                                it.templateFloatFields          = floatList
     260                                it.templateTermFields           = termList
    228261
    229262                                // validate subject
Note: See TracChangeset for help on using the changeset viewer.