Grails

Reuse of globally defined constraints across domain model

Details

  • Type: Improvement Improvement
  • Status: Closed Closed
  • Priority: Minor Minor
  • Resolution: Fixed
  • Affects Version/s: None
  • Fix Version/s: 1.2-M4
  • Component/s: None
  • Labels:
    None

Description

class PersonalityTraits {
int mindFulness
int listener
int energetic
int partyFreak
int outgoing
int relaxed
int stylish
int musical
int careful
int analytical
int creative
int romantic
int physical
int adventurous
int spiritual
static belongsTo = [Person]

static constraints = { mindFulness(range:1..5) listener(range:1..5) energetic(range:1..5) partyFreak(range:1..5) outgoing(range:1..5) relaxed(range:1..5) stylish(range:1..5) musical(range:1..5) careful(range:1..5) analytical(range:1..5) creative(range:1..5) romantic(range:1..5) physical(range:1..5) adventurous(range:1..5) spiritual(range:1..5) }
}

Seems like a break of the DRY principle. Why not have a way to define a constraint as a global constant than can be reused across the domain model.
This could be modelled something like the following.

Config.groovy
===========
grails.model.global.constraints = [
Five : [range: 1..5]
...
]

PersonalityTraits.groovy
===================

class PersonalityTraits {
@constraint Five
int mindFulness

@constraint Five
int listener
...
}

OR by allowing grouping of properties with same constraint type

class PersonalityTraits {
int mindFulness
int listener
...

static constraintConfig = { Five(mindFulness, listener, ...) }

static sortOrder = { mindfulness() listener() ... }
}

Issue Links

Activity

There are no comments yet on this issue.

People

Vote (0)
Watch (0)

Dates

  • Created:
    Updated:
    Resolved: