Eu estou com uma dúvida sobre o uso de XMLEncoder e como é uma dúvida meio básica coloquei aqui nessa área do fórum…se fiz errado por favor me desculpem e peço que procedam como acharem coerente.
Eu tenho a necessidade de persistir algumas classes e para isso vou usar um arquivo XML ou um banco MySQL, snedo assim usei padrões de projeto como DAO, FACTORY e outras tranqueiras. Eu tenho uma classe Zona (Zona Eleitoral) e criei um DAO que pretendo usar para acessar os objetos dessa classe. Porem na hora de ?encodar? propriamente falando alguma tranqueira ocorre.
PS: Eu usei alguns padrões de projeto e talvez o mau uso deles deve estar causando problema
Metodo que pega os dados do frame e faz a inserção
[code]private void btGravarActionPerformed(java.awt.event.ActionEvent evt) {
int numero = Integer.parseInt(tfNumero.getText());
String telefone = tfTelefone.getText();
int numeroAtm = Integer.parseInt(tfNumeroATM.getText());
String ipRemoteWAN = tfIpRemoteWAN.getText();
DAOFactory _fabricanteDAO = DAOFactory.getDAOFactory(DAOFactory.XML);
IZonaDAO _zonaDAO = _fabricanteDAO.getZonaDAO();
Zona _zona = new Zona(numero, telefone, numeroAtm, ipRemoteWAN);
int novoNumeroZona = _zonaDAO.insertZona(_zona); }
[/code]
Fabrica de DAO para o tipo XML.
[code] package aprendizadodao.abstractDAO;
import aprendizadodao.concreteDAO.IZonaDAO;
import aprendizadodao.concreteDAO.XmlZonaDAO;
import java.beans.XMLEncoder;
import java.io.BufferedOutputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
public class XmlDAOFactory extends DAOFactory{
private static FileOutputStream outputStream;
private static XMLEncoder encoder = null;
private static String URL = “C:”;
private static String FILE_NAME = “Zonas.xml”;
/** Creates a new instance of XmlDAOFactory */
public XmlDAOFactory() {
}
public static XMLEncoder getXmlEncoder(){
try {
if (encoder == null) {
outputStream = new FileOutputStream(URL+FILE_NAME);
encoder = new XMLEncoder(new BufferedOutputStream(outputStream));
return encoder;
} else {
return encoder;
}
} catch (FileNotFoundException ex) {
//caso o arquivo a ser criado não seja encontrado
}
return null;
}
public IZonaDAO getZonaDAO() {
return new XmlZonaDAO();
}
/* Ainda será implementado
public IChamadoDAO getChamadoDAO(){
return new XmlChamado();
}
*/ }
[/code]
DAO para a classe Zona que persiste em XML
[code] package aprendizadodao.concreteDAO;
import aprendizadodao.Zona;
import aprendizadodao.abstractDAO.DAOFactory;
import aprendizadodao.abstractDAO.XmlDAOFactory;
import javax.sql.RowSet;
public class XmlZonaDAO implements IZonaDAO{
private XmlDAOFactory _fabricanteXML;
/** Creates a new instance of XmlZonaDAO */
public XmlZonaDAO() {
_fabricanteXML = new XmlDAOFactory();
}
public int insertZona(Zona _zona) {
_fabricanteXML.getXmlEncoder().writeObject(_zona);
_fabricanteXML.getXmlEncoder().close();
return _zona.getNumero();
}
public boolean deleteZona(int _numero) {
return true;
}
public Zona findZona(Zona _zona) {
return _zona;
}
public boolean updateZona(Zona _zona) {
return true;
}
public RowSet listZona() {
return null;
}
}
[/code]
Arquivo gerado é:
<?xml version="1.0" encoding="UTF-8" ?>
<java version="1.6.0_02" class="java.beans.XMLDecoder" />
E ai alguem para ajudar?