Gravação e Leitura de arquivos XMl.

Projeto com gravação no banco MySql e em arquivo em XML e leitura do arquivo.

As libs do Projeto são:

- dom4j-1.6.1.jar
- xmlpull-1.1.3.1.jar
- xstream-1.4.7.jar
- mysql-connector-java-5.1.23-bin.jar

Criando a classe Cliente

package entity;

public class Cliente {
	private Integer idCliente;
	private String  nome;
	private String  email;
	private String  sexo;
	private Boolean ativo;
	
	public Cliente() {
	}
	
	public Cliente(Integer idCliente, String nome, String email, String sexo, Boolean ativo) {
		this.idCliente = idCliente;
		this.nome = nome;
		this.email = email;
		this.sexo = sexo;
		this.ativo = ativo;
	}
	
	@Override
	public String toString() {
		return "Cliente [idCliente=" + idCliente + ", nome=" + nome + ", email=" + email + ", sexo=" + sexo + ", ativo="	+ ativo + "]";
	}

	public Integer getIdCliente() {
		return idCliente;
	}
	public void setIdCliente(Integer idCliente) {
		this.idCliente = idCliente;
	}
	public String getNome() {
		return nome;
	}
	public void setNome(String nome) {
		this.nome = nome;
	}
	public String getEmail() {
		return email;
	}
	public void setEmail(String email) {
		this.email = email;
	}
	public String getSexo() {
		return sexo;
	}
	public void setSexo(String sexo) {
		this.sexo = sexo;
	}
	public Boolean getAtivo() {
		return ativo;
	}
	public void setAtivo(Boolean ativo) {
		this.ativo = ativo;
	}
}

Validando a classe...

package control;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

import entity.Cliente;

public class ValidaClienteBoolean {
//Criando uma validação para JUnit (para um programa Test) 
	
	public Boolean isValidaCodigo(Cliente c){
		if (c.getIdCliente() <=0){
			return false;
		}
		return true;
	}
	
	public Boolean isValidaNome(Cliente c){
		Pattern p = Pattern.compile("[A-Z a-z]{2,35}");
		Matcher m = p.matcher(c.getNome());
		return m.matches();  
	}
	
	public Boolean isValidEmail(Cliente c){
		Pattern p = Pattern.compile(".+@.+\\.[a-z]+");
		Matcher m = p.matcher(c.getEmail());
		return m.matches();  
	}
	
	public Boolean isValidaSexo(Cliente c){
		Pattern p = Pattern.compile("M|m|f|F");
		Matcher m = p.matcher(c.getSexo());
		return m.matches();  
	}
}    

Criando o script do banco MySql

create database if not exists banco3;

use banco3;

create table cliente(idCliente int primary key,
                      nome varchar (35),
                      email varchar (50) unique,
                      sexo  varchar (1),
                      ativo int);
                      
insert into cliente values (10,'jose','jose@gmail.com','m',1);
insert into cliente values (11,'carlos','carlos@gmail.com','m',1);
insert into cliente values (12,'luciana','luciana@gmail.com','f',0);
insert into cliente values (13,'lu','lu@gmail.com','f',1);


select * from cliente where ativo=1;

#deletar é muito forte é melhor vc desativar ...

Copiando o script para o banco...

Criando a classe Dao...

package persistence;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;

public class Dao {

	Connection con;
	PreparedStatement stmt;
	ResultSet rs;

	public void open() throws Exception{
		 Class.forName("com.mysql.jdbc.Driver");
		 con = DriverManager.
	getConnection("jdbc:mysql://localhost:3306/banco3","nome do usuario","senha");
	}	
	
	public void close() throws Exception{
		con.close();
	}
}    

Criando a classe ClienteDao...

package persistence;

import java.util.ArrayList;
import java.util.List;

import entity.Cliente;

public class ClienteDao extends Dao {

	// Deletar "", você irá desativar o Cliente ...
	public void delete(Integer cod) throws Exception {
		open();
		stmt = con.prepareStatement("update cliente set ativo=0 where idCliente=?");
		stmt.setInt(1, cod);
		stmt.execute();
		stmt.close();
		close();
	}
	

	public List findAll() throws Exception {
		open();
		List lst = new ArrayList();
	stmt = con.prepareStatement("select * from cliente where ativo=1");
		rs = stmt.executeQuery();
		while (rs.next()) {
			Cliente c = new Cliente();
			c.setIdCliente(rs.getInt(1));
			c.setNome(rs.getString(2));
			c.setEmail(rs.getString(3));
			c.setSexo(rs.getString(4));
			c.setAtivo((rs.getInt(5) == 1) ? true : false);
			lst.add(c);
		}
		close();
		return lst;
	}
}    

Criando a classe ClienteXML

package xml;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.util.ArrayList;
import java.util.List;
import com.thoughtworks.xstream.XStream;
import com.thoughtworks.xstream.io.xml.Dom4JDriver;
import com.thoughtworks.xstream.io.xml.StaxDriver;
import entity.Cliente;

public class ClienteXML {

	public void gerarXML(List lst) throws Exception {
		XStream xtream = new XStream(new StaxDriver());
 		  xtream.alias("ROWSET", List.class);//padrao oracle
		  xtream.alias("ROW", Cliente.class);
	  FileWriter fw =
			  new FileWriter(new File("c:/temp/clientenew.xml"));
		   fw.write(xtream.toXML(lst)); //grava e fecha
	       fw.close();	   
	}
	
	public List lerXML() throws Exception{
		List lst = new ArrayList();
		   XStream xstream = new XStream(new Dom4JDriver());
		           xstream.alias("ROWSET", List.class);
		           xstream.alias("ROW", Cliente.class);
 
         BufferedReader leitura = new BufferedReader(
        		 new FileReader("c:\\temp\\clientenew.xml")
        		 );  
		   lst = (List) xstream.fromXML(leitura);
           leitura.close();
		return lst;
	}
	

	public static void main(String[] args) {
	  Cliente c1 = new Cliente(1,"cesar","cesar@gmail.com","m",true);
	  Cliente c2 = new Cliente(2,"lu","lu@gmail.com","f",true);
	  Cliente c3 = new Cliente(3,"joel","joel@gmail.com","m",true);
	  List lst = new ArrayList<>();
        ClienteXML xml = new ClienteXML();
		
	  try{
	        lst.add(c1);
	        lst.add(c2);
	        lst.add(c3);
	        xml.gerarXML(lst); 
	        System.out.println("Gravado...");
	        
//		    Listlista=  new ClienteXML().lerXML();
//		    System.out.println("Lista ...:"  +   lista);
		}catch(Exception ex){
			ex.printStackTrace();
		}
	}
}    

O arquivo foi gravado na pasta Temp

Abrindo o arquivo no Chrome