Index: topia2/src/java/org/codelutin/topia/generator/TopiaMetaGenerator.java diff -u topia2/src/java/org/codelutin/topia/generator/TopiaMetaGenerator.java:1.2 topia2/src/java/org/codelutin/topia/generator/TopiaMetaGenerator.java:1.3 --- topia2/src/java/org/codelutin/topia/generator/TopiaMetaGenerator.java:1.2 Wed Jan 4 13:21:51 2006 +++ topia2/src/java/org/codelutin/topia/generator/TopiaMetaGenerator.java Thu Mar 9 10:39:22 2006 @@ -24,26 +24,62 @@ * @author Grégoire DESSARD Copyright Code Lutin, Grégoire * Dessard * - * @version $Revision: 1.2 $ + * @version $Revision: 1.3 $ * - * Mise a jour: $Date: 2006/01/04 13:21:51 $ par : $Author: bpoussin $ + * Mise a jour: $Date: 2006/03/09 10:39:22 $ par : $Author: thimel $ */ package org.codelutin.topia.generator; import java.io.File; import java.io.IOException; +import java.util.ArrayList; +import java.util.List; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.codelutin.generator.ObjectModelGenerator; import org.codelutin.generator.models.object.ObjectModel; +import org.codelutin.generator.models.object.validator.AttributeNamesValidator; +import org.codelutin.generator.models.object.validator.ClassNamesValidator; +import org.codelutin.generator.models.object.validator.ObjectModelValidator; public class TopiaMetaGenerator extends ObjectModelGenerator { protected static final Log log = LogFactory.getLog(TopiaMetaGenerator.class); + private boolean validateModel(ObjectModel model) { + List validators = new ArrayList(); + + AttributeNamesValidator attrValidator = new AttributeNamesValidator(model); + attrValidator.addNameAndReason("next", "Le nom d'attribut \"next\" est incompatible avec HSQL"); + attrValidator.addNameAndReason("value", "Le nom d'attribut \"value\" est incompatible avec certains SGBD"); + attrValidator.addNameAndReason("values", "Le nom d'attribut \"values\" est incompatible avec certains SGBD"); + attrValidator.addNameAndReason("begin", "Le nom d'attribut \"begin\" est incompatible avec certains SGBD"); + attrValidator.addNameAndReason("end", "Le nom d'attribut \"end\" est incompatible avec certains SGBD"); + validators.add(attrValidator); + + ClassNamesValidator classValidator = new ClassNamesValidator(model); + classValidator.addNameAndReason("constraint", "Nom de classe incompatible avec certains SGBD"); + validators.add(classValidator); + + boolean isValid = true; + for (ObjectModelValidator validator : validators) { + if (!validator.validate()) { + for (String error : validator.getErrors()) { + log.error("WARNING " + error); + } + isValid = false; + } + } + return isValid; + } + public void generate(ObjectModel model, File destDir) throws IOException { + + //On n'empeche pas la génération si le modèle n'est pas valide + validateModel(model); + generatePersistence(model, destDir); }