Como disse que iria continuar postando mee desenvolvimento.
Agora posso o seguinte problema.
Criei uma classe, na verdade fiz pequenas modificações em uma que encontrei, Reflections que me retorna a quantidade de setters existentes em meu programa, isso me ajuda muito, assim posso ir chamando um a uma até chegar ao fim e salvar no banco.
Vou lhes mostrar minha classe.
Reflections
/*
* Classe que é responsável por fazer a reflection do campo, ou seja
* trazer para o sistema o getter correspondente.
*/
package br.com.conlicitacao.util;
import java.lang.reflect.Method;
/**
*
* @author Carlos Eduardo
*/
public class Reflections {
public static int howManyGetters(Class aClass){
Method[] methods = aClass.getMethods();
int count = 0;
for(Method method : methods){
if(isGetter(method)){
count++;
}
}
return count;
}
public static int howManySetters(Class aClass){
Method[] methods = aClass.getMethods();
int count = 0;
for(Method method : methods){
if(isSetter(method))
count++;
}
return count;
}
public static boolean isGetter(Method method){
if(!method.getName().startsWith("getCon"))
return false;
if(method.getParameterTypes().length != 0)
return false;
if(void.class.equals(method.getReturnType()))
return false;
return true;
}
public static boolean isSetter(Method method){
if(!method.getName().startsWith("set"))
return false;
if(method.getParameterTypes().length != 1)
return false;
return true;
}
}
Conlicitacao
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package br.com.conlicitacao.model;
import br.com.conlicitacao.util.Reflections;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import org.apache.commons.lang3.text.WordUtils;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
/**
*
* @author Carlos Eduardo
*/
@ManagedBean(name = "conlicitacao")
@ViewScoped
public class Conlicitacao {
public Conlicitacao() {
}
private int conCodigo;
private String conObjeto;
private String conEdital;
private String conNumero;
private String conProcesso;
private String conData;
private String conObservacao;
private String conUnidadeLicitante;
private String conEndereco;
private String conCep;
private String conCidade;
private String conFone;
private String conHomePage;
public Conlicitacao(int codigo) {
this.conCodigo = codigo;
}
/**
* @return the conCodigo
*/
public int getConCodigo() {
return conCodigo;
}
/**
* @return the conObjeto
*/
public String getConObjeto() {
return conObjeto;
}
/**
* @return the conEdital
*/
public String getConEdital() {
return conEdital;
}
/**
* @return the conNumero
*/
public String getConNumero() {
return conNumero;
}
/**
* @return the conProcesso
*/
public String getConProcesso() {
return conProcesso;
}
/**
* @return the conData
*/
public String getConData() {
return conData;
}
/**
* @return the conObservacao
*/
public String getConObservacao() {
return conObservacao;
}
/**
* @return the conUnidadeLicitante
*/
public String getConUnidadeLicitante() {
return conUnidadeLicitante;
}
/**
* @return the conEndereco
*/
public String getConEndereco() {
return conEndereco;
}
/**
* @return the conCep
*/
public String getConCep() {
return conCep;
}
/**
* @return the conCidade
*/
public String getConCidade() {
return conCidade;
}
/**
* @return the conFone
*/
public String getConFone() {
return conFone;
}
/**
* @return the conHomePage
*/
public String getConHomePage() {
return conHomePage;
}
/**
* @param conCodigo the conCodigo to set
*/
public void setConCodigo(int conCodigo) {
this.conCodigo = conCodigo;
}
/**
* @param conObjeto the conObjeto to set
*/
public void setConObjeto(String conObjeto) {
this.conObjeto = conObjeto;
}
/**
* @param conEdital the conEdital to set
*/
public void setConEdital(String conEdital) {
this.conEdital = conEdital;
}
/**
* @param conNumero the conNumero to set
*/
public void setConNumero(String conNumero) {
this.conNumero = conNumero;
}
/**
* @param conProcesso the conProcesso to set
*/
public void setConProcesso(String conProcesso) {
this.conProcesso = conProcesso;
}
/**
* @param conData the conData to set
*/
public void setConData(String conData) {
this.conData = conData;
}
/**
* @param conObservacao the conObservacao to set
*/
public void setConObservacao(String conObservacao) {
this.conObservacao = conObservacao;
}
/**
* @param conUnidadeLicitante the conUnidadeLicitante to set
*/
public void setConUnidadeLicitante(String conUnidadeLicitante) {
this.conUnidadeLicitante = conUnidadeLicitante;
}
/**
* @param conEndereco the conEndereco to set
*/
public void setConEndereco(String conEndereco) {
this.conEndereco = conEndereco;
}
/**
* @param conCep the conCep to set
*/
public void setConCep(String conCep) {
this.conCep = conCep;
}
/**
* @param conCidade the conCidade to set
*/
public void setConCidade(String conCidade) {
this.conCidade = conCidade;
}
/**
* @param conFone the conFone to set
*/
public void setConFone(String conFone) {
this.conFone = conFone;
}
/**
* @param conHomePage the conHomePage to set
*/
public void setConHomePage(String conHomePage) {
this.conHomePage = conHomePage;
}
/*
* Faz a validação de cada valor para saber o mesmo é um valor de identificação ex: Objeto. Caso contrario retorna
* verdadeiro para que o programa possa prosseguir.
*
*/
public static boolean validaPreenchimento(String string, List<String> lista) {
for (String list : lista) {
if (string.contains(list) || string.isEmpty()) {
return false;
} else {
}
}
return true;
}
public static List<String> getList() {
File arquivoHTML = new File("C:/Conlicitacao.html");
try {
Document documento = Jsoup.parse(arquivoHTML, "ISO-8859-1");
Elements nodes = documento.select("[width=20%]");
List<String> lista = new ArrayList<String>();
for (Element no : nodes) {
String objeto = no.text();
if (validaPreenchimento(objeto, lista)) {
lista.add(objeto);
}
}
return lista;
} catch (IOException e) {
throw new RuntimeException(e);
}
}
public static boolean validaValorLista(List<String> lista, String valor) {
if (lista.contains(valor)) {
return false;
}
return true;
}
public List<String> procuraValorTabela(List<String> lista) {
File arquivoHTML = new File("C:/Conlicitacao.html");
List<String> list = new ArrayList<String>();
Conlicitacao con = new Conlicitacao();
try {
Document documento = Jsoup.parse(arquivoHTML, "ISO-8859-1");
Elements nodes = documento.select("td");
for (Element no : nodes) {
String texto = no.text();
if (!stringVazia(texto)) {
if (validaPreenchimento(texto, lista)) {
texto = strippedString(texto).toLowerCase();
texto = WordUtils.capitalize(texto);
list.add(texto);
}
}
}
return list;
} catch (IOException e) {
throw new RuntimeException(e);
}
}
public boolean stringVazia(String string) {
string = string.trim();
if (string.isEmpty()) {
return true;
}
return false;
}
/*
* Faz a verificação da lista gerada item a item e chama o arquivo correspondente.
*/
/*
* Remove todos os caracteres especiais da String passada ao parãmetro.
*/
public static String strippedString(String string) {
String pattern = "[*]";
String strippedString = string.replaceAll(pattern, "");
return strippedString.trim();
}
public static void main(String args[]) {
Conlicitacao con = new Conlicitacao();
List<String> list = getList();
List<String> listaValores = con.procuraValorTabela(list);
for (String string : listaValores) {
System.out.println(string);
}
Reflections.printGettersSetters(Conlicitacao.class);
System.out.println(Reflections.howManyGetters(Conlicitacao.class));
}
}
Eu pego um .html removo os valores da coluna que não me interessa e coloco em uma lista os valores que são necessários. Até ae tudo ótimo.
Porém o problema é:
Suponhamos que meu getList() me retorne os seguinte valores: Objeto:, Edital:.
Quando faço a verificação novamente eu qustiono ao meu programa se a coluna que estou lendo é igual a esta que já foi armazenada se sim ele não faz nada.
O que percebi é que a leitura sequencial, ou seja a proxima vez que ele percorre o node, o valor do texto é o correspondente ao anterior.
Ex.:
Li - Objeto: -> Não insiro na lista.
Li - Valor do objeto -> Insiro na lista.
Só que isso me faz perder uma forma de referenciar este valor ao seu setter correspondente.
Será que podem me ajudar quanto a isso?
Sem mais.
Obrigado.