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:
|
1-Eclipse - Novo projeto |
Caso a opção não esteja na lista, selecione Other e digite java project na janela que abrirá:
|
2-Eclipse - Other - Novo projeto |
Adotei o nome CadCliente, porém, escolha outro nome se for de sua preferência.
|
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.
|
4-Eclipse - src |
Opção 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).
|
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.
|
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.
|
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.
|
9-Eclipse - pacote controle |
E o último pacote, view, para o formulário:
|
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):
|
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:
|
12-Eclipse - Generate Getters and Setters |
Clique em Select All e OK:
|
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):
|
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:
|
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:
|
17-Eclipse - Add Library |
Deixe a opção padrão, JRE System Library e clique em Next:
|
18-Eclipse - Seleção da biblioteca |
Finalmente clique em Finish com a opção Workspace default...
|
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.
|
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):
|
21-Eclipse - Interface |
Nomeie como feito nas classes:
|
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:
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.