2010-05-10 3 views
0

Пример XML Правила документа:Сохранение бизнес-правил в XML-документе, подтверждение после этого на Java, как?

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

Как это реализовать? Я начинаю с нуля, у меня в настоящее время есть пользовательский класс и UserController, который сохраняет объект User в DB (через слой Service-layer и Dao-layer), базовый Spring MVC. я не могу использовать Spring MVC Validation однако в нашей модели классов, я использовать документ XML так что администратор может изменить правила

Я думаю, что я нужен шаблон, который динамически строит алгоритм, основанный на том, что предоставленный документом XML-правил, но я не могу представить ничего, кроме огромного количества if-утверждений.

У меня также нет ничего для синтаксического анализа, и я не уверен, как я собираюсь (де) связать его с фактической реализацией процесса валидации.

ответ

0

Может быть примером может быть:

//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!"); 
    } 
    } 

Обратите внимание, я не добавлял каждый комплект <> свойство в Картах правильно, но это просто сделать точку здесь.

Было бы правильным решением? надежный?

1

Это колесо было изобретено столько раз!

Вы вероятно может использовать проверку Spring MVC, реализовав интерфейс Spring в Validator, но вам может понадобиться для реализации или найти способ базировать проверку на правилах, загруженных другими средствами.

I googled и размещено много страниц, описывающих, как использовать проверку доли в весне. В качестве бонуса некоторые описывают использование valang. Если ваш администратор может редактировать правила проверки до развертывания, одного из них может быть достаточно.

Если вы действительно хотите создать домашние бизнес-правила XML, вы можете проанализировать правила, используя Apache Digester. Вероятно, вы захотите загрузить правила в структуру данных, используемую вашей собственной реализацией интерфейса Spring Validator.

Если правила должны быть изменены после развертывания, вам, конечно же, необходимо будет добавить механизм для обновления правил. Но, по крайней мере, Digester, вероятно, поможет там.

+0

Привет, спасибо за хорошие ссылки! Мне нужно решение для изменения правил после развертывания. Теперь у меня есть текущее решение, но я буду изучать Apache Digester. Еще раз спасибо. – JavaPete