Cícero Ednilson

Blog sobre Desenvolvimento de Softwares

Home » Criando uma aplicação Java com JSF, PrimeFaces, CDI e JPA – Parte 7: Desenvolvendo cadastro via upload de arquivo XML.

Criando uma aplicação Java com JSF, PrimeFaces, CDI e JPA – Parte 7: Desenvolvendo cadastro via upload de arquivo XML.

0 Flares Twitter 0 Facebook 0 Filament.io 0 Flares ×

Nessa parte do nosso tutorial vamos criar na nossa página de cadastro uma outra tab na nossa tabView para realizarmos upload de um arquivo XML que vai conter varios registros para cadastrado.

Páginas do tutorial.

Criando uma aplicação Java com JSF, PrimeFaces, CDI e JPA – Parte 1: Introdução.

Criando uma aplicação Java com JSF, PrimeFaces, CDI e JPA – Parte 2: Criando o banco de dados.

Criando uma aplicação Java com JSF, PrimeFaces, CDI e JPA – Parte 3: Criando o projeto com JSF no Maven.

Criando uma aplicação Java com JSF, PrimeFaces, CDI e JPA – Parte 4: Criando o template com Facelets.

Criando uma aplicação Java com JSF, PrimeFaces, CDI e JPA – Parte 5: Desenvolvendo a autenticação do sistema.

Criando uma aplicação Java com JSF, PrimeFaces, CDI e JPA – Parte 6: Desenvolvendo cadastro de pessoa.

Criando uma aplicação Java com JSF, PrimeFaces, CDI e JPA – Parte 7: Desenvolvendo cadastro via upload de arquivo XML.

Criando uma aplicação Java com JSF, PrimeFaces, CDI e JPA – Parte 8: Desenvolvendo consulta com PrimeFaces dataTable.

Criando uma aplicação Java com JSF, PrimeFaces, CDI e JPA – Parte 9: Formatando LocalDateTime.

Criando uma aplicação Java com JSF, PrimeFaces, CDI e JPA – Parte 10: Editando um registro.

Criando uma aplicação Java com JSF, PrimeFaces, CDI e JPA – Parte 11: Excluindo um registro.

Criando uma aplicação Java com JSF, PrimeFaces, CDI e JPA – Parte 12: Consulta com Carousel PrimeFaces.

Criando uma aplicação Java com JSF, PrimeFaces, CDI e JPA – Parte 13: Consulta com Gráfico PrimeFaces.

Criando uma aplicação Java com JSF, PrimeFaces, CDI e JPA – Parte 14: Exportando arquivo XML com fileDownload e Jdom.

Montanto o XML para realização do Upload.

O nosso arquivo xml deve seguir o layout abaixo, vou deixar disponível para download o arquivo xml que vou usar nesse tutorial aqui.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?xml version="1.0" encoding="UTF-8"?>
<pessoas>
  <pessoa>	
	<nome>Cícero Ednilson</nome>
	<sexo>M</sexo>
	<email>ciceroednilson@gmail.com</email>
	<endereco>São Paulo, São Paulo, Faria lima N°10</endereco>
  </pessoa>
  <pessoa>	
	<nome>Lucas  Silva</nome>
	<sexo>M</sexo>
	<email>RafaelLimaMelo@dayrep.com</email>
	<endereco>Beco dos Chagas, 1264</endereco>
  </pessoa>  
  <pessoa>	
	<nome>Kai Correia Ferreira</nome>
	<sexo>M</sexo>
	<email>KaiCorreiaFerreira@jourrapide.com</email>
	<endereco>Praça Plácido de Castro, 1783</endereco>
  </pessoa>    
</pessoas>

Alterando o Controller CadastrarPessoaController para receber e processar o arquivo XML.

Podemos ver no código abaixo na linha 39 o objeto UploadedFile, esse objeto que vai receber nosso arquivo XML para ser processado no método UploadRegistros que está na linha 78 como mostra o código abaixo.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
package br.com.ciceroednilson.pessoa.controller;
 
 
import java.io.IOException;
 
import javax.enterprise.context.RequestScoped;
import javax.inject.Inject;
import javax.inject.Named;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
 
import org.primefaces.model.UploadedFile;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.SAXException;
 
import br.com.ciceroednilson.model.PessoaModel;
import br.com.ciceroednilson.repository.PessoaRepository;
import br.com.ciceroednilson.usuario.controller.UsuarioController;
import br.com.ciceroednilson.uteis.Uteis;
 
@Named(value="cadastrarPessoaController")
@RequestScoped
public class CadastrarPessoaController {
 
	@Inject
	PessoaModel pessoaModel;
 
	@Inject
	UsuarioController usuarioController;
 
	@Inject
	PessoaRepository pessoaRepository;
 
 
	private UploadedFile file;
 
	public UploadedFile getFile() {
		return file;
	}
 
	public void setFile(UploadedFile file) {
		this.file = file;
	}
 
	public PessoaModel getPessoaModel() {
		return pessoaModel;
	}
 
	public void setPessoaModel(PessoaModel pessoaModel) {
		this.pessoaModel = pessoaModel;
	}
 
	/**
	 *SALVA UM NOVO REGISTRO VIA INPUT 
	 */
	public void SalvarNovaPessoa(){
 
		pessoaModel.setUsuarioModel(this.usuarioController.GetUsuarioSession());
 
		//INFORMANDO QUE O CADASTRO FOI VIA INPUT
		pessoaModel.setOrigemCadastro("I");
 
		pessoaRepository.SalvarNovoRegistro(this.pessoaModel);
 
		this.pessoaModel = null;
 
		Uteis.MensagemInfo("Registro cadastrado com sucesso");
 
	}
 
	/**
	 * REALIZANDO UPLOAD DE ARQUIVO
	 */
	 public void UploadRegistros() {
 
		 DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
 
		 try {
 
 
			 if(this.file.getFileName().equals("")){
				 Uteis.MensagemAtencao("Nenhum arquivo selecionado!");
				 return;
			 }
 
			 DocumentBuilder builder = factory.newDocumentBuilder();
 
	                 Document doc = builder.parse(this.file.getInputstream());
 
	                 Element element = doc.getDocumentElement();
 
	                 NodeList nodes = element.getChildNodes();
 
	                for (int i = 0; i < nodes.getLength(); i++) {
 
	        	     Node node  = nodes.item(i);
 
	        	    if(node.getNodeType() == Node.ELEMENT_NODE){
 
	        		 Element elementPessoa =(Element) node;
 
	        		 //PEGANDO OS VALORES DO ARQUIVO XML
	        		 String nome     = elementPessoa.getElementsByTagName("nome").item(0).getChildNodes().item(0).getNodeValue();
	        		 String sexo     = elementPessoa.getElementsByTagName("sexo").item(0).getChildNodes().item(0).getNodeValue();
	        		 String email    = elementPessoa.getElementsByTagName("email").item(0).getChildNodes().item(0).getNodeValue();
	        		 String endereco = elementPessoa.getElementsByTagName("endereco").item(0).getChildNodes().item(0).getNodeValue();
 
	        		 PessoaModel newPessoaModel = new PessoaModel();
 
	        		 newPessoaModel.setUsuarioModel(this.usuarioController.GetUsuarioSession());
	        		 newPessoaModel.setEmail(email);
	        		 newPessoaModel.setEndereco(endereco);
	        		 newPessoaModel.setNome(nome);
	        		 newPessoaModel.setOrigemCadastro("X");
	        		 newPessoaModel.setSexo(sexo);
 
	        		 //SALVANDO UM REGISTRO QUE VEIO DO ARQUIVO XML
	        		 pessoaRepository.SalvarNovoRegistro(newPessoaModel);
	        	   }
	              }
 
 
 
		     Uteis.MensagemInfo("Registros cadastrados com sucesso!");
 
		} catch (ParserConfigurationException e) {
 
			e.printStackTrace();
 
		} catch (SAXException e) {
 
			e.printStackTrace();
 
		} catch (IOException e) {
 
			e.printStackTrace();
		}
 
 
	 }
 
}

Alterando página cadastrarPessoa.xhtml para a realização de Upload

Agora vamos adicionar o código abaixo na nossa página cadastrarPessoa.xhtml para criar mais uma tab que vai ter o componente para a realização do Upload do nosso arquivo XML.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<p:tab title="Upload Xml Pessoa">
 
   <h:form id="form-upload" enctype="multipart/form-data">
 
      <h:panelGrid id="panelGrid-upload-xml" columns="2" cellpadding="10">
 
	<p:fileUpload value="#{cadastrarPessoaController.file}" 
		      mode="simple" 
		      skinSimple="true" 
		      label="Selecionar"/>
 
	<p:commandButton value="Importar..." 
		 	 ajax="false"
		 	 actionListener="#{cadastrarPessoaController.UploadRegistros}"/>
 
     </h:panelGrid>
 
   </h:form>	 			 		
</p:tab>

Podemos ver na imagem abaixo como ficou nossa página depois que adicionamos a tab que vai realizar o Upload do arquivo.

Vamos realizar o deploy do nosso sistema e depois vamos acessar a página de login.

Agora vamos acessar o menu Cadastro, e depois vamos clicar na aba Upload Xml Pessoa.

Agora vamos clicar no botão selecionar e procurar o nosso arquivo xml.

Localizando arquivo xml para upload

Depois de selecionar o arquivo XML vamos clicar no botão Importar…

Depois da importação do arquivo vamos receber a mensagem abaixo.

Podemos também visualizar no banco de dados os registros que foram cadastrados via upload.

Bom é isso ai amigos, nessa parte do nosso tutorial aprendemos a realizar upload de arquivo xml atráves do componente fileUpload do PrimeFaces, na próxima parte do nosso tutorial vamos criar a primeira página de consulta.

Comentários

Name of author

Name: ciceroednilson@gmail.com

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

0 Flares Twitter 0 Facebook 0 Filament.io 0 Flares ×