sábado, 1 de abril de 2017

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

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


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


Eclipse - Other
2-Eclipse - Other - Novo projeto


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


Eclipse
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.


Eclipse
4-Eclipse - src
Opção New - Package:


New Package
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).


Eclipse
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.


Eclipse
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.


Eclipse
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.


Eclipse package
9-Eclipse - pacote controle
E o último pacote, view, para o formulário:


Eclipse package
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):


Eclipse - New - Class
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:


Eclipse
12-Eclipse - Generate Getters and Setters
Clique em Select All e OK:


Eclipse - Seleção
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):

Eclipse - Classe Principal
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:


Eclipse - Build Path
15-Eclipse - Build Path
Remova a biblioteca JRE System Library - botão Remove:


16-Eclipse - Biblioteca/Library
Clique em Add Library para adicionar novamente a biblioteca:


Eclipse - Adicionar Biblioteca
17-Eclipse - Add Library
Deixe a opção padrão, JRE System Library e clique em Next:


Eclipse - Library
18-Eclipse - Seleção da biblioteca
Finalmente clique em Finish com a opção Workspace default...


Eclipse - Opção default
19-Eclipse - Workspace default

CONTINUANDO...

Para terminar, a classe de conexão e a interface Dao.


Eclipse - Conectar
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):

Eclipse - Interface
21-Eclipse - Interface
Nomeie como feito nas classes:


Eclipse - Nomeando
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 }
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.

Escreva nos comentários, clique em curtir, visite a página do Facebook  e compartilhe com seus amigos. Até a próxima!

Nenhum comentário:

Postar um comentário