Tenho duas classes que chamam seus respectivos Enum para realizar a validação dos parâmetros de entrada de um método.
Quero unificar essas duas classes em uma só, para isso pensei acrescentar o parâmetro de Enum especifico que quero
que seja acionado dentro da classe mas não conseguir fazer isso, alguma ideia de como fazer isso ?
public void metodoQualquer1 (Resource resource) {
// Instância a Classe Validador.
ValidateParameterUm validator = new ValidateParameterUm();
// É criar uma variável do Enum que pretendo chamar na classe de Validador
ValidatorParameterUmEnum vParameterUm;
// Chama a Classe Validador passando o objeto e a variavel de Enum
validator.UmValidator(resource);
if (validator.isValid()) {
// Faça alguma coisa
}
}
public void metodoQualquer2 (Resource resource) {
// Instância a Classe Validador.
ValidateParameterDois validator = new ValidateParameterDois();
// É criar uma variável do Enum que pretendo chamar na classe de Validador
ValidatorParameterDoisEnum vParameterDois;
// Aqui a ideia é chamar a Classe Validador passando o objeto e a variavel de Enum
validator.DoisValidator(resource, ParameterDois);
if (validator.isValid()) {
// Faça alguma coisa
}
}
// Dessa forma consigo unificar as duas classes Validate abaixo em uma só.
public class ValidateParameterUm {
private final List<String> errors = new ArrayList<String>();
// Aqui precisaria receber o Enum como parâmetro
public void UmValidator(Resource resource ) {
// Aqui acionar o for com o enum recebido no parâmetro, dessa forma teria a Classe fléxivel podendo ser acionada
// para validar enums diferentes.
for(ValidatorParameterUmEnum validator : ValidatorParameterUmEnum.values() ) {
if(!validator.validate(resource)) {
errors.add(validator.errorMessage);
}
}
}
public boolean isValid() {
return errors.isEmpty();
}
public Collection<String> getErrors() {
return errors;
}
}
public class ValidateParameterDois {
private final List<String> errors = new ArrayList<String>();
public void PathValidator(Resource resource ) {
for(ValidatorParameterDoisEnum validator : ValidatorParameterDoisEnum.values() ) {
if(!validator.validate(resource)) {
errors.add(validator.errorMessage);
}
}
}
public boolean isValid() {
return errors.isEmpty();
}
public Collection<String> getErrors() {
return errors;
}
}
// Enums de validação
public enum ValidatorParameterUmEnum {
NOT_NULL_CAMPO1("Campo não pode ser null") {
@Override
public boolean validate(Resource resource) {
return !resource.getName().isEmpty();
}
};
public final String errorMessage;
private ValidatorParameterPathEnum(String errorMessage) {
this.errorMessage = errorMessage;
}
public abstract boolean validate(Resource resource );
}
public enum ValidatorParameterDoisEnum {
NOT_NULL_CAMPO_ABC("Campo não pode ser null") {
@Override
public boolean validate(Resource resource) {
return !resource.getTipo().isEmpty();
}
},
NOT_NULL_CAMPO_XYZ("Campo não pode ser null") {
@Override
public boolean validate(Resource resource) {
return !resource.getDescricao().isEmpty();
}
};
public final String errorMessage;
private ValidatorParameterPathEnum(String errorMessage) {
this.errorMessage = errorMessage;
}
public abstract boolean validate(Resource resource );
}