Ok

En poursuivant votre navigation sur ce site, vous acceptez l'utilisation de cookies. Ces derniers assurent le bon fonctionnement de nos services. En savoir plus.

« Diagramme de classe UML dans Grails | Page d'accueil | Retour d'expérience sur les codings dojos »

26 février 2010

Créer des données au démarrage dans Grails

Créer des données dans le BootStrap

Le BootStrap est une classe située dans le dossier /grails-app/conf du projet. Elle peut servir, entre-autre, à ajouter des données lors du démarrage. On peut commencer par détecter dans quel type d'environnement on se trouve en utilisant un «break»:

def init = { servletContext ->

switch (GrailsUtil.environment)

{

case "development":

println "**** BootStrap Développement en cous ..."

configureForDevelopment()

break

case "test":

println "**** BootStrap Test en cous ..."

configureForTest()

break

case "production":

println "**** BootStrap Production en cous ..."

configureForProduction()

break

}

println "**** Fin BootStrap"

}

On peut ensuite tester s'il y a des données déjà existantes et en ajouter si ce n'est pas le cas:

if (Technologie.count() == 0) {

println " - Création Technologie"

def tech = new Technologie(nom:"Non Connue")

tech.validate()

println tech

tech.errors.allErrors.each {

println it

}

tech.save(flush:true)

Qui devrait donner quelque chose du genre:

Inventaire applicatif du DMDI - CK

Field error in object 'ca.qc.hydro.ck.Application' on field 'contacts.role': rejected value [null]; …

Field error in object 'ca.qc.hydro.ck.Application' on field 'marche': rejected value [null]; …

Field error in object 'ca.qc.hydro.ck.Application' on field 'planificateur': rejected value [null]; …

Field error in object 'ca.qc.hydro.ck.Application' on field 'ressources.role': rejected value [null]; …

Field error in object 'ca.qc.hydro.ck.Application' on field 'uniteApplications.role': rejected value [null]; …

 

La méthode «validate» sert à peupler le champ «errors» de «tech» et le «flush:true» sert à indiquer qu'il faut persister ce qui vient d'être sauvegardé immédiatement. On peut aussi ajouter/retirer des éléments relationnels (de type: a hasMany b) en utilisant la méthode addTo/removeFrom :

applicationInstance.addToUniteApplications(uniteStructurelle:UniteStructurelle.findByDescriptionIlike("%Équipe sécurité%"),role:RoleUniteStructurelle.findByNom("Client"))

15:01 | Lien permanent | Commentaires (0) | Tags : grails