Socorro não arrumei um jeito de ordenar essa lista de array de objetos , no caso a problema esta na função Ordena() no arquivo main
A parte de leitura do XML e criação dos objetos, gravação em uma txt ta ok , mas falta essa ordenação.
To quebrando a cabeça , e tenho que entregar amanhã na Faculdade. :?:
BoletosXML.java
/**
* @author Ismael Ramos Moraes
* Description Classe que define tipo de boleto
* */
public class BoletosXML
{
// atributos(catacteristicas) da classe Boleto
private String numero;
private String vcto;
private String valor;
private String cliente;
// get set da classe
public void setCliente(String cliente) {
this.cliente = cliente;
}
public String getCliente() {
return cliente;
}
public void setValor(String valor) {
this.valor = valor;
}
public String getValor() {
return valor;
}
public void setVcto(String vcto) {
this.vcto = vcto;
}
public String getVcto() {
return vcto;
}
public void setNumero(String numero) {
this.numero = numero;
}
public String getNumero() {
return numero;
}
}
Classe Main.java
import org.w3c.dom.Element;
import org.w3c.dom.NodeList;
import org.w3c.dom.Document;
import org.xml.sax.SAXException;
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
public class Main
{
public static void main(String[] args)
{
try{
GravaArquivo(LerBoletosXML("C:\BoletosXML\boletos.xml"),"C:\BoletosXML\boletos.txt");
}catch (ParserConfigurationException e) {e.printStackTrace();}
catch (SAXException e) {e.printStackTrace();}
catch (IOException e) {e.printStackTrace();}
try {
Ordena(LerBoletosXML("C:\BoletosXML\boletos.xml"));
} catch (ParserConfigurationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SAXException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
/**
* @param String arquivo - local doa rquivo xml
* @throws ParserConfigurationException
* @throws IOException
* @throws SAXException
* @description Realiza leitura do arquivo xml no disco
* **/
public static ArrayList<BoletosXML> LerBoletosXML(String arquivo) throws ParserConfigurationException, SAXException, IOException
{
/*cria ArrayList de Instancias de BoletosXml */
ArrayList<BoletosXML> Boletos= new ArrayList<BoletosXML>();
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
Document doc = db.parse(arquivo);
Element elem = doc.getDocumentElement();
// pega todos os elementos boletos do XML
NodeList boletos_list = elem.getElementsByTagName( "boleto" );
// percorre cada elemento boleto encontrado
for( int i=0; i<boletos_list.getLength(); i++ )
{
Element tagBoleto = (Element) boletos_list.item(i);
// pega os dados cadastrado para o boleto atual
String numero =null, vcto = null, valor = null, cliente = null;
try
{
numero= getChildTagValue( tagBoleto, "numero" );
vcto = getChildTagValue( tagBoleto, "vcto" );
valor = getChildTagValue( tagBoleto, "valor" );
cliente = getChildTagValue( tagBoleto, "cliente" );
} catch (Exception e){e.printStackTrace();}
// criando uma instancia(objeto)da classe BoletosXML e atribui valores
BoletosXML b=new BoletosXML();
b.setNumero(numero);
b.setVcto(vcto);
b.setValor(valor);
b.setCliente(cliente);
// add instância no ArrayList de Objetos BoletosXML
Boletos.add(b);
}
return Boletos;
}//Fim metodo LerBoletoXML
/**
* @param Element elem, String tagName
* @description este método lê e retorna o conteúdo (texto) de uma tag (elemento)
* filho da tag informada como parâmetro(tagName)
* */
public static String getChildTagValue( Element elem, String tagName ) throws Exception
{
NodeList children = elem.getElementsByTagName( tagName );
if( children == null ) return null;
Element child = (Element) children.item(0);
if( child == null ) return null;
return child.getFirstChild().getNodeValue();
}
/** 2) Um método de ordenação que receba como parâmetro uma lista (ArrayList)
* de instâncias dos boletos, e de posse desta lista, faça a ordenação de todas as instâncias,
* usando o número do boleto como chave de ordenação.
* */
public static void Ordena(ArrayList <BoletosXML> Boleto)
{
for (int x=0;x<Boleto.size()-1;x++)
{
BoletosXML b=new BoletosXML();
String n1=Boleto.get(x).getNumero();String n2=Boleto.get(x+1).getNumero();
int v=n1.compareToIgnoreCase(n2);
if(v<0)
{
// aqui os dados da posição x+1 sao inseridos na posição de x
System.out.println (Boleto.get(x).getNumero());
String tempNumero=Boleto.get(x).getNumero();
String tempVcto=Boleto.get(x).getVcto();
String tempValor=Boleto.get(x).getValor();
String tempCliente=Boleto.get(x).getCliente();
b.setNumero(Boleto.get(x+1).getNumero());
b.setVcto(Boleto.get(x+1).getVcto());
b.setValor(Boleto.get(x+1).getValor());
b.setCliente(Boleto.get(x+1).getCliente());
Boleto.set(x, b);
}
/*
System.out.println (Boleto.get(x).getNumero());
System.out.println(Boleto.get(x).getVcto());
System.out.println (Boleto.get(x).getValor());
System.out.println (Boleto.get(x).getCliente());
System.out.println("Boletoto em x +1");
System.out.println (Boleto.get(x+1).getNumero());
System.out.println(Boleto.get(x+1).getVcto());
System.out.println (Boleto.get(x+1).getValor());
System.out.println (Boleto.get(x+1).getCliente());
*/
}
}
/**
* @param Boleto é ArrayList de BoletosXML
* @param arq String-local para gravação ex:C:\BoletosXML\boletos.txt
* @description Realiza Gravação do arquivo txt no disco
* **/
public static void GravaArquivo(ArrayList <BoletosXML> Boleto, String arq)
{
// acessa arquivo fisico na maquina
FileWriter arquivo;
try {
arquivo = new FileWriter(arq);
BufferedWriter buffer=new BufferedWriter(arquivo);
for(int x=0;x<(Boleto.size());x++)
{
String Numero=Boleto.get(x).getNumero();
String Vcto=Boleto.get(x).getVcto();
String Valor=Boleto.get(x).getValor();
String Cliente=Boleto.get(x).getCliente();
//[telefone removido];07/08/2010;123.78;joao da silva
buffer.write(Numero+";"+Vcto+";"+Valor+";"+Cliente);
buffer.newLine();
}
// fehar buffer para gravar no arquivo // feccha arquivo
buffer.close();
arquivo.close();
} catch (IOException e){ e.printStackTrace(); }
}
}
arquivo XML
boletos.xml
<?xml version="1.0" encoding="utf-8"?>
<boletos>
<boleto>
<numero>[telefone removido]</numero>
<vcto>02/09/2010</vcto>
<valor>789.25</valor>
<cliente>albuquerque, maria</cliente>
</boleto>
<boleto>
<numero>[telefone removido]</numero>
<vcto>06/07/2010</vcto>
<valor>237.18</valor>
<cliente>ferlon, renata alonzo</cliente>
</boleto>
<boleto>
<numero>[telefone removido]</numero>
<vcto>07/08/2010</vcto>
<valor>123.78</valor>
<cliente>silva, joao da</cliente>
</boleto>
</boletos>
Dicas pequenas mas fundamnetais.
Garanti mais alguns pontinhos com o professor.