7 de ago. de 2018

Java Desktop, Cadastro CRUD - 2: MVC

Nesta segunda parte vamos criar e organizar o projeto em pacotes, criar a classe bean e classes auxiliares. Confira a Parte 1 neste link.

O projeto funcionará no padrão de arquitetura MVC (Model-View-Controler). Veja mais detalhes sobre este padrão neste link.

Criando um novo projeto

java-desktop-cadastro-crud-parte-2-mvc

Crie um novo projeto - Menu File - New - Java Project:


java-desktop-cadastro-crud-parte-2-mvc
1-Eclipse - Novo projeto
Caso a opção não esteja na lista, selecione Other e digite java project na janela que abrirá:


java-desktop-cadastro-crud-parte-2-mvc
2-Eclipse - Other - Novo projeto


Adotei o nome CadCliente, porém, escolha outro nome se for de sua preferência.


java-desktop-cadastro-crud-parte-2-mvc
3-Eclipse - Nome do projeto
Abrindo o conteúdo do projeto clicando na seta à esquerda do projeto, clique com o botão direito do mouse em src para criar os pacotes.


java-desktop-cadastro-crud-parte-2-mvc
4-Eclipse - src
Opção New - Package:


java-desktop-cadastro-crud-parte-2-mvc
5-Eclipse - Novo Pacote
Nomeie no padrão invertido de um endereço de site, o pacote bean, onde ficam as classes (br.com.cliente.bean).


java-desktop-cadastro-crud-parte-2-mvc
6-Eclipse - pacote bean
Repetindo o processo para o pacote onde ficam as classes de acesso ao objeto - DAO - Data Access Object, br.com.cliente.dao.


java-desktop-cadastro-crud-parte-2-mvc
7-Elipse - pacote DAO
A seguir, o pacote util, para as classes de conexão com o banco de dados, a classe principal com o método main e a classe das máscaras de preenchimento.


java-desktop-cadastro-crud-parte-2-mvc
8-Eclipse - pacote util
Pacote controle, onde ficam as classes que atribuem os métodos da classe DAO à um objeto, para posteriormente fazer as alterações nos formulários. Neste caso, no formulário de cadastro de clientes.


java-desktop-cadastro-crud-parte-2-mvc
9-Eclipse - pacote controle
E o último pacote, view, para o formulário:


java-desktop-cadastro-crud-parte-2-mvc
10-Eclipse - pacote view
Dentro do pacote bean ficará a classe Cliente com os atributos e métodos assessores (botão direito do mouse sobre o pacote br.com.cliente.bean - New - Class):


java-desktop-cadastro-crud-parte-2-mvc
11-Eclipse - nova classe
Na classe Cliente digite os atributos privados. Recomendo digitar para melhor fixar os códigos, para fins de estudo.


1  package br.com.cliente.bean;
2  
3  public class Cliente {
4   private Integer id;
5   private String nome;
6   private String endereco;
7   private String municipio;
8   private String cep;
9   private String tel;
10  private String cel;
11  private String cpf;
12  private String cnpj;
13  private String genero; 

Crie os métodos assessores acessando o menu Source e Generate Getters and Setters:


java-desktop-cadastro-crud-parte-2-mvc
12-Eclipse - Generate Getters and Setters
Clique em Select All e OK:


java-desktop-cadastro-crud-parte-2-mvc
13-Eclipse - Seleção
Os métodos assessores são criados automaticamente:


1 package br.com.cliente.bean;
2 
3 public class Cliente {
4  private Integer id;
5  private String nome;
6  private String endereco;
7  private String municipio;
8  private String cep;
9  private String tel;
10 private String cel;
11 private String cpf;
12 private String cnpj;
13 private String genero;
14 
15 public Integer getId() {
16  return id;
17 }
18 public void setId(Integer id) {
19  this.id = id;
20 }
21 public String getNome() {
22  return nome;
23 }
24 public void setNome(String nome) {
25  this.nome = nome;
26 }
27 public String getEndereco() {
28  return endereco;
29 }
30 public void setEndereco(String endereco) {
31  this.endereco = endereco;
32 }
33 public String getMunicipio() {
34  return municipio;
35 }
36 public void setMunicipio(String municipio) {
37  this.municipio = municipio;
38 }
39 public String getCep() {
40  return cep;
41 }
42 public void setCep(String cep) {
43  this.cep = cep;
44 }
45 public String getTel() {
46  return tel;
47 }
48 public void setTel(String tel) {
49  this.tel = tel;
50 }
51 public String getCel() {
52  return cel;
53 }
54 public void setCel(String cel) {
55  this.cel = cel;
56 }
57 public String getCpf() {
58  return cpf;
59 }
60 public void setCpf(String cpf) {
61  this.cpf = cpf;
62 }
63 public String getCnpj() {
64  return cnpj;
65 }
66 public void setCnpj(String cnpj) {
67  this.cnpj = cnpj;
68 }
69 public String getGenero() {
70  return genero;
71 }
72 public void setGenero(String genero) {
73  this.genero = genero;
74 }
75 
76 
77 @Override
78 public String toString() {
79  // TODO Auto-generated method stub
80  return getNome();
81 }
82 }

Após os métodos assessores, é preciso subscrever o método toString, que servirá mais adiante na pesquisa do formulário. Usando o recurso da IDE Eclipse, digite apenas to e, com o atalho de teclado CTRL+Espaço e a primeira opção da lista deverá ser toString - override method...

Para concluir esta parte 2, mais três classes auxiliares no pacote br.com.controle.util: a classe Principal com o método main, que dá a "partida" ao sistema; a classe MaskCampos, para as máscaras de preenchimento e a classe Conectar, para fazer a conexão ao banco e a interface Dao, com métodos a serem implementados posteriormente na classe ClenteDao.

Da mesma forma que você criou a classe Cliente, clique com o botão direito do mouse agora no pacote br.com.cliente.util para criar a classe Principal, marcando a opção public static void main(String[] args){ como na imagem abaixo, ou digite o método manualmente (o que recomendo por ajudar a fixar na memória):

java-desktop-cadastro-crud-parte-2-mvc
14-Eclipse - Classe com método main

Repetindo o processo, crie a classe MaskCampos (ou outro nome de sua preferência). Desmarque a opção para incluir o método main, se for o caso. Esta classe terá os seguintes métodos:


1 package br.com.cliente.util;
2 
3 import java.text.ParseException;
4 
5 import javax.swing.JFormattedTextField;
6 import javax.swing.text.MaskFormatter;
7 
8 public class MaskCampos {
9  public MaskFormatter maskTel(JFormattedTextField textfield) throws ParseException{
10        MaskFormatter mask = null;
11        mask = new MaskFormatter("(##)####-####");
12        mask.setOverwriteMode(true);
13        mask.setValidCharacters("0123456789");
14        mask.setPlaceholderCharacter('_');
15        mask.install(textfield);
16        return mask;
17    }
18 
19 public MaskFormatter maskCel(JFormattedTextField textfield) throws ParseException{
20        MaskFormatter mask = null;
21        mask = new MaskFormatter("(##)#####-####");
22        mask.setOverwriteMode(true);
23        mask.setValidCharacters("0123456789");
24        mask.setPlaceholderCharacter('_');
25        mask.install(textfield);
26        return mask;
27    }
28 
29 public MaskFormatter maskCpf(JFormattedTextField textfield) throws ParseException{
30        MaskFormatter mask = null;
31        mask = new MaskFormatter("###.###.###-##");
32        mask.setOverwriteMode(true);
33        mask.setValidCharacters("0123456789");
34        mask.setPlaceholderCharacter('_');
35        mask.install(textfield);
36        return mask;
37    }
38 
39 public MaskFormatter maskCep(JFormattedTextField textfield) throws ParseException{
40        MaskFormatter mask = null;
41        mask = new MaskFormatter("#####-###");
42        mask.setOverwriteMode(true);
43        mask.setValidCharacters("0123456789");
44        mask.setPlaceholderCharacter('_');
45        mask.install(textfield);
46        return mask;
47    }
48 
49 public MaskFormatter maskCnpj(JFormattedTextField textfield) throws ParseException{
50        MaskFormatter mask = null;
51        mask = new MaskFormatter("##.###.###/####-##");
52        mask.setOverwriteMode(true);
53        mask.setValidCharacters("0123456789");
54        mask.setPlaceholderCharacter('_');
55        mask.install(textfield);
56        return mask;
57    }
58 }

Estes métodos serão usados posteriormente na classe do pacote view, onde estará o formulário de cadastro.

Deu erro!

Caso dê erro com este código, faça o procedimento a seguir. De outro modo, avance até o próximo título.

Com o botão direito do mouse sobre o projeto, selecione Build Path - Configure Build Path:


java-desktop-cadastro-crud-parte-2-mvc
15-Eclipse - Build Path
Remova a biblioteca JRE System Library - botão Remove:


java-desktop-cadastro-crud-parte-2-mvc
16-Eclipse - Biblioteca/Library
Clique em Add Library para adicionar novamente a biblioteca:


java-desktop-cadastro-crud-parte-2-mvc
17-Eclipse - Add Library
Deixe a opção padrão, JRE System Library e clique em Next:


java-desktop-cadastro-crud-parte-2-mvc
18-Eclipse - Seleção da biblioteca
Finalmente clique em Finish com a opção Workspace default...


java-desktop-cadastro-crud-parte-2-mvc
19-Eclipse - Workspace default

Classe de conexão e interface Dao


O próximo passo é criar a classe de conexão e a interface Dao.


java-desktop-cadastro-crud-parte-2-mvc
20-Eclipse - classe de conexão
O código para fazer a conexão com o banco (nas publicações seguintes terá a orientação para criar o banco de dados no Xampp):


1 package br.com.cliente.util;
2 
3 import java.sql.Connection;
4 import java.sql.DriverManager;
5 import java.sql.SQLException;
6 
7 public class Conector {
8  static String url = "jdbc:mysql://localhost/cadastrocliente";
9  static String usuario = "root";
10 static String senha = "";
11 static Connection con;
12 
13 public static Connection getConexao() throws SQLException{
14  try{
15   Class.forName("org.gjt.mm.mysql.Driver");
16   if(con == null){
17    con = (Connection) DriverManager.getConnection(url, usuario, senha);
18   }
19   return con;
20  }catch(ClassNotFoundException e){
21   throw new SQLException(e.getMessage());
22  }
23 }

E a interface Dao - (botão direito em br.com.cliente.util - New - Interface):

java-desktop-cadastro-crud-parte-2-mvc
21-Eclipse - Interface
Nomeie como feito nas classes:


java-desktop-cadastro-crud-parte-2-mvc
22-Eclipse - Nomeando interface

A interface terá os seguintes métodos, correspondente ao CRUD do banco de dados:


1 package br.com.cliente.util;
2 
3 import java.util.List;
4 
5 public interface Dao {
6  public void insert(Object o);
7  public void update(Object o);
8  public void delete(Object o);
9  public Object select(int i);
10 public List select();
11 }

Connector J - MySQL


Para a conexão funcionar, precisamos adicionar uma biblioteca jar no projeto. O connector J do MySQL. 

Você faz download do arquivo no site oficial, através deste link.

Na página aberta pelo link acima, clique em download na opção da página em destaque na imagem abaixo:

java-desktop-cadastro-crud-parte-2-mvc

Na próxima janela, mude em Select Operating System para Platform Independent

Clique em Download na opção ZIP se você usa Windows, ou TAR se usa Linux.


Finalmente, clique em No thanks, just start download para baixar o arquivo:


Adicionando no projeto pelo Eclipse


O caminho para adicionar a biblioteca no Ecluse é Project -> Properties -> Java Build Path -> Libraries -> Add External JAR e selecione o arquivo que você baixou “mysql-connector-java-.... jar".

Depois desta pequena maratona, seu projeto já estará "trocando ideia" com o banco de dados, através da classe Conector.

Na próxima parte veremos a criação da base de dados (BD) no XAMPP com o phpMyAdmin e nas partes seguintes as classes restantes: ClienteDao, implementando os métodos da interface Dao; ClienteCT para atribuir os métodos de ClienteDao a um objeto e a classe FormCliente, para o formulário.


futebol-selecao-copa-serie-amazon-prime

Java Desktop, Cadastro CRUD - Parte 3