Eae galera!
Estou desenvolvendo um módulo de validação em uma aplicaçao e gostaria da opinião de vcs a respeito da mesma:
Todas as classes que tem a responsabilidade de efetuar uma validação em qualquer objeto, deve implementar essa interface:
/**
* Interface usada para fazer efetuar as validacoes em objetos gerais.
* @author Danilo Barsotti
*/
public interface ValidationBase{
public boolean isValid();
public List<String> getMessages();
}
Exemplo de uma classe que implementa a interface acima:
public class UserValidationTest implements ValidationBase{
private UserModelMock userModel;
public UserValidationTest(UserModelMock userModel){
this.userModel = userModel;
}
@Override
public List<String> getMessages() {
// TODO Auto-generated method stub
return null;
}
@Override
public boolean isValid() {
if(!"".equals(userModel.getNome())){
return true;
}else{
return false;
}
}
}
Os models que necessitam de validações devem estender essa classe:
/**
* Todos os models que necessitarem de validacao deverao estender
* dessa classe.
*
* @author Danilo Barsotti
*
*/
public abstract class ModelValidatedBase extends ModelBase{
private ValidationBase validation = getValidationBase();
public abstract ValidationBase getValidationBase();
public boolean isValid(){
return validation.isValid();
}
public List<String> getMessages(){
return validation.getMessages();
}
}
Um exemplo de model que estende a classe acima:
public class UserModelMock extends ModelValidatedBase{
private String nome;
@Override
public ValidationBase getValidationBase() {
return new UserValidationTest(this);
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
}
E o uso de tudo isso ficaria assim ( para se efetuar a validação do model ):
( o teste ficou ridiculo pois ainda estou desenvolvendo. 8) )
public class ValidationTest extends TestCase{
public void testValidation() throws Exception{
UserModelMock user = new UserModelMock();
user.setNome("Danilo");
assertEquals(true, user.isValid());
}
public static void main(String args[]) throws Exception{
ValidationTest val = new ValidationTest();
val.testValidation();
}
}
A idéia é facilitar a programação das validações dos models, deixando a responsabilidade para o proprio model de efetuar sua validação ( até a validação não sair do dominio da mesma ).
Oque vcs acham disso?
ficaria melhor se eu injetar na ModelValidatedBase o ValidationBase usando Spring?
Alguma dica/critica/sugestão??
Obrigado a todos!!!