2010-05-10 7 views
0

Exemple de document XML Règles:Enregistrer des règles métier dans un document XML, valider ensuite en Java, comment?

<user> 
    <username> 
    <not-null/> 
    <capitals value="false"/> 
    <max-length value="15"/> 
    </username> 
    <email> 
    <not-null/> 
    <isEmail/> 
    <max-length value="40"/> 
    </email> 
</user> 

Comment puis-je mettre en œuvre cela? Je commence à partir de zéro, ce que j'ai actuellement est une User-class, et un UserController qui enregistre l'objet User dans de DB (via une couche Service et couche Dao), Spring MVC de base. Je ne peux pas utiliser la validation Spring MVC mais dans notre modèle classes, je dois utiliser un document XML pour un administrateur peut modifier les règles

Je pense que je besoin d'un modèle qui construit dynamiquement un algorithme basé sur ce qui est fourni par le document XML Rules, mais je ne peux pas penser à autre chose qu'à une quantité massive de if-statements.

Je n'ai encore rien pour l'analyse syntaxique et je ne sais pas comment je vais (dé) le coupler à partir de l'implémentation réelle du processus de validation.

Répondre

0

Peut-être un exemple serait:

//PSEUDOCODE 
    abstract class Validator { 
    Map<String method, Set<Field> fields> validationMap; 
    Map<String fieldName, Set<String> errorMessages> validationErrors; 

void parseXML() { 
    validationMap.add("notNull", { " 'username', 'JavaPete' ", " 'email', '[email protected]' " } 
    validationMap.add("max-length", { " 'username', 'JavaPete', '15' ", ... } 
    } 

void validate() { 
     for (String method : validationMap.keys) { 
      for (Field field : validationMap.get(method)) { 
       invoke(method, field); 
      } 
     } 
    } 

void notNull(Field field) { 
    if (field.getValue() == "") { 
      validationErrors.add(field.getFieldName(), "Can't be null!"); 
    } 
    } 

Remarquez que je n'ajoute chaque jeu <> propriété dans les cartes correctement, mais il est juste de faire un point ici.

Serait-ce une solution valide? robuste?

1

Cette roue a été réinventée tant de fois!

Vous probablement peut utiliser la validation Spring MVC en mettant en œuvre l'interface de Spring Validator, mais vous devrez peut-être mettre en œuvre ou de trouver un moyen de baser la validation des règles chargées par un autre moyen.

I googled et situé de nombreuses pages décrivant comment utiliser la validation des communs dans Spring. En prime, certains décrivent l'utilisation de valang. Si votre administrateur peut modifier les règles de validation avant le déploiement, l'une de celles-ci pourrait suffire.

Si vous souhaitez vraiment créer des règles métier XML, vous pouvez analyser les règles à l'aide de Apache Digester. Vous souhaitez probablement charger les règles dans une structure de données utilisée par votre propre implémentation de l'interface Spring Validator.

Si les règles doivent être modifiables après le déploiement, vous devrez bien sûr ajouter un mécanisme pour actualiser les règles. Mais Digester, au moins, y aidera probablement encore.

+0

Salut, merci pour les bonnes références! J'avais besoin d'une solution pour changer les règles après le déploiement. J'ai une solution actuelle maintenant, mais je vais regarder dans Apache Digester. Merci encore. – JavaPete

Questions connexes