- Timestamp:
- Dec 14, 2010, 5:44:23 PM (10 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/grails-app/domain/dbnp/studycapturing/TemplateEntity.groovy
r1257 r1264 18 18 */ 19 19 abstract class TemplateEntity extends Identity { 20 / ** The actual template of this TemplateEntity instance */20 // The actual template of this TemplateEntity instance 21 21 Template template 22 22 … … 55 55 ] 56 56 57 // remember required fields when 58 // so we can validate is the required 59 // template fields are set 60 boolean requiredFieldsSet = false 61 Set requiredFields = [] 62 63 /** 64 * Get the required fields for the defined template, currently 65 * this method is called in custom validators below but it's 66 * best to call it in a template setter method. But as that 67 * involves a lot of refactoring this implementation will do 68 * fine for now. 69 * 70 * Another possible issue might be that if the template is 71 * updated after the required fields are cached in the object. 72 * 73 * @return Set requiredFields 74 */ 75 final Set getRequiredFields() { 76 if (template) { 77 // template is set, check if required fields 78 // have already been fetched 79 if (!requiredFieldsSet) { 80 // no, fetch required fields 81 requiredFields = template.getRequiredFields() 82 requiredFieldsSet = true 83 } 84 85 // return the required fields 86 return requiredFields 87 } else { 88 // template is not yet set, return 89 // an empty set 90 return [] 91 } 92 } 93 94 // overload transients from Identity 95 // and append requiredFields vars 96 static transients = [ "identifier", "iterator", "maximumIdentity", "requiredFieldsSet", "requiredFields" ] 97 98 // define the mapping 57 99 static mapping = { 58 100 // Specify that each TemplateEntity-subclassing entity should have its own tables to store TemplateField values. … … 130 172 } 131 173 174 // validating the required template fields. Note that the 175 // getRequiredFields() are cached in this object, so any 176 // template changes after caching may not be validated 177 // properly. 178 obj.getRequiredFields().findAll { it.type == TemplateFieldType.STRING }.each { field -> 179 if (! fields.find { key, value -> key == field.name } ) { 180 // required field is missing 181 error = true 182 errors.rejectValue( 183 'templateStringFields', 184 'templateEntity.required', 185 [field.name] as Object[], 186 'Property {0} is required but it missing' 187 ) 188 } 189 } 190 132 191 // got an error, or not? 133 192 return (!error) … … 150 209 } 151 210 } 211 212 // validating required fields 213 obj.getRequiredFields().findAll { it.type == TemplateFieldType.TEXT }.each { field -> 214 if (! fields.find { key, value -> key == field.name } ) { 215 // required field is missing 216 error = true 217 errors.rejectValue( 218 'templateTextFields', 219 'templateEntity.required', 220 [field.name] as Object[], 221 'Property {0} is required but it missing' 222 ) 223 } 224 } 225 152 226 return (!error) 153 227 }) … … 169 243 } 170 244 } 245 246 // validating required fields 247 obj.getRequiredFields().findAll { it.type == TemplateFieldType.STRINGLIST }.each { field -> 248 if (! fields.find { key, value -> key == field.name } ) { 249 // required field is missing 250 error = true 251 errors.rejectValue( 252 'templateStringFields', 253 'templateEntity.required', 254 [field.name] as Object[], 255 'Property {0} is required but it missing' 256 ) 257 } 258 } 259 171 260 return (!error) 172 261 }) … … 193 282 } 194 283 } 284 285 // validating required fields 286 obj.getRequiredFields().findAll { it.type == TemplateFieldType.DOUBLE }.each { field -> 287 if (! fields.find { key, value -> key == field.name } ) { 288 // required field is missing 289 error = true 290 errors.rejectValue( 291 'templateDoubleFields', 292 'templateEntity.required', 293 [field.name] as Object[], 294 'Property {0} is required but it missing' 295 ) 296 } 297 } 298 195 299 return (!error) 196 300 }) … … 212 316 } 213 317 } 318 319 // validating required fields 320 obj.getRequiredFields().findAll { it.type == TemplateFieldType.DATE }.each { field -> 321 if (! fields.find { key, value -> key == field.name } ) { 322 // required field is missing 323 error = true 324 errors.rejectValue( 325 'templateDateFields', 326 'templateEntity.required', 327 [field.name] as Object[], 328 'Property {0} is required but it missing' 329 ) 330 } 331 } 332 214 333 return (!error) 215 334 }) … … 239 358 } 240 359 } 360 361 // validating required fields 362 obj.getRequiredFields().findAll { it.type == TemplateFieldType.RELTIME }.each { field -> 363 if (! fields.find { key, value -> key == field.name } ) { 364 // required field is missing 365 error = true 366 errors.rejectValue( 367 'templateRelTimeFields', 368 'templateEntity.required', 369 [field.name] as Object[], 370 'Property {0} is required but it missing' 371 ) 372 } 373 } 374 241 375 return (!error) 242 376 }) … … 258 392 } 259 393 } 394 395 // validating required fields 396 obj.getRequiredFields().findAll { it.type == TemplateFieldType.ONTOLOGYTERM }.each { field -> 397 if (! fields.find { key, value -> key == field.name } ) { 398 // required field is missing 399 error = true 400 errors.rejectValue( 401 'templateTermFields', 402 'templateEntity.required', 403 [field.name] as Object[], 404 'Property {0} is required but it missing' 405 ) 406 } 407 } 408 260 409 return (!error) 261 410 }) … … 295 444 } 296 445 446 // validating required fields 447 obj.getRequiredFields().findAll { it.type == TemplateFieldType.FILE }.each { field -> 448 if (! fields.find { key, value -> key == field.name } ) { 449 // required field is missing 450 error = true 451 errors.rejectValue( 452 'templateFileFields', 453 'templateEntity.required', 454 [field.name] as Object[], 455 'Property {0} is required but it missing' 456 ) 457 } 458 } 459 297 460 // got an error, or not? 298 461 return (!error) … … 307 470 } 308 471 } 472 309 473 return (!error) 310 474 }) … … 326 490 } 327 491 } 492 493 // validating required fields 494 obj.getRequiredFields().findAll { it.type == TemplateFieldType.TEMPLATE }.each { field -> 495 if (! fields.find { key, value -> key == field.name } ) { 496 // required field is missing 497 error = true 498 errors.rejectValue( 499 'templateTemplateFields', 500 'templateEntity.required', 501 [field.name] as Object[], 502 'Property {0} is required but it missing' 503 ) 504 } 505 } 506 328 507 return (!error) 329 508 }) … … 345 524 } 346 525 } 526 527 // validating required fields 528 obj.getRequiredFields().findAll { it.type == TemplateFieldType.MODULE }.each { field -> 529 if (! fields.find { key, value -> key == field.name } ) { 530 // required field is missing 531 error = true 532 errors.rejectValue( 533 'templateModuleFields', 534 'templateEntity.required', 535 [field.name] as Object[], 536 'Property {0} is required but it missing' 537 ) 538 } 539 } 540 347 541 return (!error) 348 542 }) … … 369 563 } 370 564 } 565 566 // validating required fields 567 obj.getRequiredFields().findAll { it.type == TemplateFieldType.LONG }.each { field -> 568 if (! fields.find { key, value -> key == field.name } ) { 569 // required field is missing 570 error = true 571 errors.rejectValue( 572 'templateLongFields', 573 'templateEntity.required', 574 [field.name] as Object[], 575 'Property {0} is required but it missing' 576 ) 577 } 578 } 579 371 580 return (!error) 372 581 })
Note: See TracChangeset
for help on using the changeset viewer.