Sou desenvolvedor java a 12 anos, e sempre acompanhei o fórum e aprendi muito, tomei a decisão de contribuir com um pouco do que sei. Segue abaixo, um código muito simples, utilizando o padrao singleton e reflection, a 1ª classe, é a base de auxílio para remoção de acentos e formatações de uma String, a segunda, e uma implementação realizando a leitura dos métodos do objeto, selecionando apenas os com retorno do tipo String, ele obtem o método, depois o valor do retorno, executa a rotina de remoção dos acentos e caracteres depois, seta os novos valores e retorna o objeto, criticas e sugestões são muito bem vindas
1º classe com funções de remoção de acentos e caracteres:public class UtilString {
private static UtilString instance = new UtilString();
public static UtilString getInstance() {
return instance;
}
public UtilString() {
}
public String removerFormatacao(String passa) {
if (passa == null) {
return "";
}
passa = passa.replace("[", "");
passa = passa.replace("]", "");
passa = passa.replace("{", "");
passa = passa.replace("}", "");
passa = passa.replace(".", "");
passa = passa.replace("-", "");
passa = passa.replace("=", "");
passa = passa.replace("(", "");
passa = passa.replace(")", "");
passa = passa.replace("/", "");
passa = passa.replace("\\", "");
passa = passa.replace("|", "");
passa = passa.replace("R$", "");
passa = passa.replace("$", "");
return passa.trim();
}
public String removerAcentos(String passa) {
if (passa == null) {
return "";
}
passa = Normalizer.normalize(passa, Normalizer.Form.NFD);
passa = passa.replaceAll("[^\\p{ASCII}]", "");
if (Globais.getInstance().isAPP_STR_TRIM()) {
passa = passa.trim();
}
if (Globais.getInstance().isAPP_STR_UPPER()) {
passa = passa.toUpperCase();
}
return passa;
}
}
public static void main(String[] args) throws IllegalArgumentException, IllegalAccessException, InvocationTargetException, NoSuchMethodException {
classBase cb = new classBase();
cb.setId(1);
cb.setNome("Jôãó");
cb.setFantasia("Péréã");
cb.setCnpjcpf("[CPF removido]");
cb =(classBase) removerFormatacaoAcentos(cb);
System.out.println(cb.getFantasia());
System.out.println(cb.getNome());
System.out.println(cb.getCnpjcpf());
}
public static Object removerFormatacaoAcentos(Object obj) throws IllegalArgumentException, IllegalAccessException, InvocationTargetException, NoSuchMethodException {
Method[] campos = obj.getClass().getMethods();
for (Method f : campos) {
if (f.getReturnType().toString().equals("class java.lang.String")) {
String nome = f.getName();
if (nome.contains("get")) {
String aux = (String) f.invoke(obj);
aux = UtilString.getInstance().removerAcentos(aux);
aux = UtilString.getInstance().removerFormatacao(aux);
nome = nome.replace("get", "set");
Method method = obj.getClass().getMethod(nome, String.class);
method.invoke(obj, aux);
}
}
}
return obj;
}