29
1 1 MVC (model-view-controller) – Aplicações Desktop www.tiacademicoweb.xpg.com.br MVC (MODELO-VISÃO-CONTROLADOR) Este tutorial tem como finalidade trazer os conceitos sobre MVC e mostra na prática como funciona em aplicações desktop. Definição Padrão de arquitetura de software que tem como finalidade separar a estrutura de dados (modelo), da apresentação para o usuário (visão), das regras de negócio (controle). Finalidade Possibilitar o reuso, facilitar a manutenção, atualização, detecção e correção de erros. Estrutura A estrutura do MVC se faz em três camadas (Modelo, Visão e Controle). MODELO Representa o domínio da aplicação, a estrutura dos dados. Também pode representar a manipulação dos dados (persistência e consulta). VISÃO Representa a forma como os dados processados (informações) serão apresentados ao usuário (interface com o usuário). CONTROLE Representa o controle sobre o modelo e a visão, entre o usuário e a aplicação. Encarregando-se de validar as regras de negócio. Implementação Vejamos na prática como funciona. MODELO (Classe Pessoa e Cliente) No modelo temos as classes de dados, que nos mostram a estrutura do sistema, seu domínio. Além destas classes, alguns também implementam as classes de banco nesta camada, as classes DAO. As classes DAO são responsáveis por realizarem as gravações, atualizações, remoções, alterações e consultas no banco. Neste tutorial veremos as classes DAO em um pacote separado. O exemplo abaixo mostra uma herança. Classe mãe (Pessoa) e classe filha (Cliente).

Tutorial MVC - aplicações desktop

Embed Size (px)

Citation preview

Page 1: Tutorial MVC - aplicações desktop

1

1 MVC (model-view-controller) – Aplicações Desktop

www.tiacademicoweb.xpg.com.br

MVC (MODELO-VISÃO-CONTROLADOR)

Este tutorial tem como finalidade trazer os conceitos sobre MVC e mostra na prática comofunciona em aplicações desktop.

DefiniçãoPadrão de arquitetura de software que tem como finalidade separar a estrutura de dados(modelo), da apresentação para o usuário (visão), das regras de negócio (controle).

FinalidadePossibilitar o reuso, facilitar a manutenção, atualização, detecção e correção de erros.

EstruturaA estrutura do MVC se faz em três camadas (Modelo, Visão e Controle).

MODELORepresenta o domínio da aplicação, a estrutura dos dados. Também pode representar amanipulação dos dados (persistência e consulta).

VISÃORepresenta a forma como os dados processados (informações) serão apresentados aousuário (interface com o usuário).

CONTROLERepresenta o controle sobre o modelo e a visão, entre o usuário e a aplicação.Encarregando-se de validar as regras de negócio.

ImplementaçãoVejamos na prática como funciona.

MODELO (Classe Pessoa e Cliente)No modelo temos as classes de dados, que nos mostram a estrutura do sistema, seu domínio.

Além destas classes, alguns também implementam as classes de banco nesta camada, as classes DAO. Asclasses DAO são responsáveis por realizarem as gravações, atualizações, remoções, alterações e consultas nobanco. Neste tutorial veremos as classes DAO em um pacote separado.O exemplo abaixo mostra uma herança. Classe mãe (Pessoa) e classe filha (Cliente).

Page 2: Tutorial MVC - aplicações desktop

2

2 MVC (model-view-controller) – Aplicações Desktop

www.tiacademicoweb.xpg.com.br

public abstract class Pessoa {private int idPessoa;private String nome,logradouro, bairro, numero, telefone, rg, orgaoEmissor, complemento;

public Pessoa(){ super();

// TODO Auto-generated constructor stub}

public Pessoa(int idPessoa, String nome, String logradouro, String bairro, String numero, String telefone, String rg,String orgaoEmissor, String complemento) {

super();this.idPessoa = idPessoa;this.nome = nome;this.logradouro = logradouro;this.bairro = bairro;this.numero = numero;this.telefone = telefone;this.rg = rg;this.orgaoEmissor = orgaoEmissor;this.complemento = complemento;

}public String getBairro() {

return bairro; }

public void setBairro(String bairro) {this.bairro = bairro; }

public String getComplemento() {return complemento; }

public void setComplemento(String complemento) {this.complemento = complemento; }

public int getIdPessoa() {return idPessoa; }

public void setIdPessoa(int idPessoa) {this.idPessoa = idPessoa; }

public String getLogradouro() {return logradouro; }

public void setLogradouro(String logradouro) {

Page 3: Tutorial MVC - aplicações desktop

3

3 MVC (model-view-controller) – Aplicações Desktop

www.tiacademicoweb.xpg.com.br

this.logradouro = logradouro; }

public String getNome() {return nome; }

public void setNome(String nome) {this.nome = nome; }

public String getNumero() {return numero; }

public void setNumero(String numero) {this.numero = numero; }

public String getOrgaoEmissor() {return orgaoEmissor; }

public void setOrgaoEmissor(String orgaoEmissor) {this.orgaoEmissor = orgaoEmissor; }

public String getRg() {return rg; }

public void setRg(String rg) {this.rg = rg; }

public String getTelefone() {return telefone; }

public void setTelefone(String telefone) {this.telefone = telefone; }

}

Page 4: Tutorial MVC - aplicações desktop

4

4 MVC (model-view-controller) – Aplicações Desktop

www.tiacademicoweb.xpg.com.br

package modelo;public class Cliente extends Pessoa{

private int codigo;

public Cliente() {super();// TODO Auto-generated constructor stub

}

public Cliente(int idPessoa, String nome, String logradouro, String bairro, String numero, String telefone, String rg,String orgaoEmissor, int codigo, String complemento) {

super(idPessoa, nome, logradouro, bairro, numero, telefone, rg, orgaoEmissor, complemento);this.codigo = codigo;

}public Cliente(int codigo) {

super();this.codigo = codigo;

}public int getCodigo() {

return codigo;}public void setCodigo(int codigo) {

this.codigo = codigo;}

}

VISÃO (Classe TelaCliente)Nesta camada temos as classes de comunicação com o usuário, parte gráfica. É onde o usuário faz uma solicitação

ao sistema e ele recebe a resposta a essa solicitação. É interessante notar que nesta classe se adiciona o ouvinte aocomponente da tela, que será controlada pela classe de controle (método setOuvinte(ActionListener ouvinte,WindowListener ouv, KeyListener ov)). Também é importante notar os métodos de envio de mensagem (mensagem(Objectp1,String p2,int p3) e mensagemOpçao(Object p1, String p2,int p3,int p4, Icon p5, Object[] p6, Object p7)) que serãosolicitados pela classe de controle, caso necessite avisar algo ao usuário.

package visao;

import javax.swing.Icon; import javax.swing.JFrame; import javax.swing.JOptionPane; import javax.swing.JPanel;import javax.swing.JLabel; import java.awt.Rectangle; import javax.swing.JTextField; import javax.swing.JButton;import javax.swing.ImageIcon; import java.awt.Point; import java.awt.Dimension; import java.awt.Font;import javax.swing.SwingConstants; import java.awt.event.ActionListener; import java.awt.event.KeyEvent;import java.awt.event.KeyListener; import java.awt.event.WindowListener; import java.awt.ComponentOrientation;import java.awt.Insets; import java.awt.Toolkit; import java.text.ParseException; import javax.swing.JFormattedTextField;import javax.swing.text.MaskFormatter; import modelo.Cliente; import javax.swing.WindowConstants;import formatacao.FormataTextField;

Page 5: Tutorial MVC - aplicações desktop

5

5 MVC (model-view-controller) – Aplicações Desktop

www.tiacademicoweb.xpg.com.br

public class TelaCliente extends JFrame {

private static final long serialVersionUID = 1L; private JPanel jContentPane = null; private JLabel lblCodigo = null;private JTextField txtCodigo = null; private JLabel lblNome = null; private JTextField txtNome = null;private JLabel lblLogradouro = null; private JTextField txtLogradouro = null; private JLabel lblNumero = null;private JTextField txtNumero = null; private JLabel lblBairro = null; private JTextField txtBairro = null;private JLabel lblTelefone = null; private JButton btnNovo = null; private JButton btnIncluir = null;private JButton btnExcluir = null; private JButton btnAtualizar = null; private JButton btnConsultar = null;private JButton btnCancelar = null; private JLabel lblTopo = null; private JFormattedTextField ftxtTel = null;private JLabel lblRg = null; private JFormattedTextField ftxtRg = null; private JLabel lblOrgaoEmissor = null;private JTextField txtOrgaoEmissor = null; private JLabel lblCodPessoa = null; private JTextField txtCodPessoa = null;private JLabel lblComplemento = null; private JTextField txtComplemento = null;/*** This is the default constructor*/

public TelaCliente() {super();initialize();

}/*** This method initializes this** @return void*/

private void initialize() {this.setSize(651, 312);this.setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE);this.setResizable(false);this.setIconImage(Toolkit.getDefaultToolkit().getImage(getClass().getResource("/icones/sisfarmatitulo.png")));this.setContentPane(getJContentPane());this.setTitle("SISFarma - Cadastrar Cliente");

}/*** This method initializes jContentPane** @return javax.swing.JPanel*/

private JPanel getJContentPane() {if (jContentPane == null) {

lblComplemento = new JLabel(); lblComplemento.setBounds(new Rectangle(16, 163, 90, 16));lblComplemento.setText("Complemento:");lblCodPessoa = new JLabel(); lblCodPessoa.setBounds(new Rectangle(228, 75, 81, 16));lblCodPessoa.setText("Cod. Pessoa:");lblOrgaoEmissor = new JLabel(); lblOrgaoEmissor.setBounds(new Rectangle(376, 195, 131, 15));

Page 6: Tutorial MVC - aplicações desktop

6

6 MVC (model-view-controller) – Aplicações Desktop

www.tiacademicoweb.xpg.com.br

lblOrgaoEmissor.setText("Orgão Emissor do RG:");lblRg = new JLabel(); lblRg.setBounds(new Rectangle(451, 75, 37, 14));lblRg.setText("RG:");lblTelefone = new JLabel(); lblTelefone.setBounds(new Rectangle(15, 194, 61, 16));lblTelefone.setText("Telefone:");lblBairro = new JLabel(); lblBairro.setBounds(new Rectangle(388, 163, 46, 16));lblBairro.setText("Bairro:");lblNumero = new JLabel(); lblNumero.setBounds(new Rectangle(474, 135, 61, 16));lblNumero.setText("Número:");lblLogradouro = new JLabel(); lblLogradouro.setBounds(new Rectangle(15, 135, 76, 16));lblLogradouro.setText("Logradouro:");lblNome = new JLabel(); lblNome.setBounds(new Rectangle(15, 105, 46, 16));lblNome.setText("Nome:");lblCodigo = new JLabel(); lblCodigo.setBounds(new Rectangle(15, 75, 46, 16));lblCodigo.setText("Código:");jContentPane = new JPanel(); jContentPane.setLayout(null);jContentPane.add(lblCodigo, null); jContentPane.add(getTxtCodigo(), null);jContentPane.add(lblNome, null); jContentPane.add(getTxtNome(), null);jContentPane.add(lblLogradouro, null); jContentPane.add(getTxtLogradouro(), null);jContentPane.add(lblNumero, null); jContentPane.add(getTxtNumero(), null);jContentPane.add(lblBairro, null); jContentPane.add(getTxtBairro(), null);jContentPane.add(lblTelefone, null); jContentPane.add(getBtnNovo(), null);jContentPane.add(getBtnIncluir(), null); jContentPane.add(getBtnExcluir(), null);jContentPane.add(getBtnAtualizar(), null); jContentPane.add(getBtnConsultar(), null);

jContentPane.add(getBtnCancelar(), null); jContentPane.add(getLblTopo(), null);jContentPane.add(getFtxtTel(), null); jContentPane.add(lblRg, null);jContentPane.add(getFtxtRg(), null); jContentPane.add(lblOrgaoEmissor, null);jContentPane.add(getTxtOrgaoEmissor(), null); jContentPane.add(lblCodPessoa, null);jContentPane.add(getTxtCodPessoa(), null); jContentPane.add(lblComplemento, null);jContentPane.add(getTxtComplemento(), null);

}return jContentPane;

}/*** This method initializes txtCodigo** @return javax.swing.JTextField*/

private JTextField getTxtCodigo() {if (txtCodigo == null) {

txtCodigo = new JTextField(); txtCodigo.setBounds(new Rectangle(107, 76, 113, 16));txtCodigo.setEnabled(false);

}return txtCodigo;

}

Page 7: Tutorial MVC - aplicações desktop

7

7 MVC (model-view-controller) – Aplicações Desktop

www.tiacademicoweb.xpg.com.br

/*** This method initializes txtNome** @return javax.swing.JTextField*/

private JTextField getTxtNome() {if (txtNome == null) {

txtNome = new JTextField(); txtNome.setBounds(new Rectangle(106, 106, 522, 16));txtNome.setToolTipText("Nome Completo do Cliente para Cadastro ou Parcial para Consulta");txtNome.setDocument(new FormataTextField(50));

}return txtNome;

}/*** This method initializes txtLogradouro** @return javax.swing.JTextField*/

private JTextField getTxtLogradouro() {if (txtLogradouro == null) {

txtLogradouro = new JTextField(); txtLogradouro.setBounds(new Rectangle(105, 134, 354, 16));txtLogradouro.setToolTipText("Av, Rua, Beco, Travessa onde Reside o Cliente");txtLogradouro.setDocument(new FormataTextField(25));

}return txtLogradouro;

}

/*** This method initializes txtNumero** @return javax.swing.JTextField*/

private JTextField getTxtNumero() {if (txtNumero == null) {

txtNumero = new JTextField(); txtNumero.setBounds(new Rectangle(561, 135, 68, 16));txtNumero.setToolTipText("Número da Residência do Cliente");txtNumero.setDocument(new FormataTextField(6));

}return txtNumero;

}/*** This method initializes txtBairro** @return javax.swing.JTextField*/

Page 8: Tutorial MVC - aplicações desktop

8

8 MVC (model-view-controller) – Aplicações Desktop

www.tiacademicoweb.xpg.com.br

private JTextField getTxtBairro() {if (txtBairro == null) {

txtBairro = new JTextField(); txtBairro.setToolTipText("Bairro onde Reside o Cliente");txtBairro.setLocation(new Point(434, 164)); txtBairro.setSize(new Dimension(194, 16));txtBairro.setDocument(new FormataTextField(25));

}return txtBairro;

}/*** This method initializes btnNovo** @return javax.swing.JButton*/

private JButton getBtnNovo() {if (btnNovo == null) {

btnNovo = new JButton(); btnNovo.setLocation(new Point(15, 226));btnNovo.setSize(new Dimension(89, 30));btnNovo.setIcon(new ImageIcon(getClass().getResource("/icones/novo.png")));btnNovo.setFont(new Font("Dialog", Font.BOLD, 12));btnNovo.setVerticalTextPosition(SwingConstants.CENTER);btnNovo.setVerticalAlignment(SwingConstants.CENTER);btnNovo.setHorizontalAlignment(SwingConstants.CENTER);btnNovo.setHorizontalTextPosition(SwingConstants.RIGHT);btnNovo.setMnemonic(KeyEvent.VK_UNDEFINED); btnNovo.setPreferredSize(new Dimension(96, 40));btnNovo.setComponentOrientation(ComponentOrientation.UNKNOWN);btnNovo.setToolTipText("Cadastrar Novo Cliente"); btnNovo.setMargin(new Insets(2, 2, 2, 2));btnNovo.setName(""); btnNovo.setText("Novo");

}return btnNovo;

}/*** This method initializes btnIncluir** @return javax.swing.JButton*/

private JButton getBtnIncluir() {if (btnIncluir == null) {

btnIncluir = new JButton();btnIncluir.setIcon(new ImageIcon(getClass().getResource("/icones/incluir.png")));btnIncluir.setLocation(new Point(119, 226)); btnIncluir.setSize(new Dimension(89, 30));btnIncluir.setToolTipText("Incluir Novo Cliente");btnIncluir.setFont(new Font("Dialog", Font.BOLD, 12)); btnIncluir.setAlignmentY(0.5F);btnIncluir.setAutoscrolls(false); btnIncluir.setMargin(new Insets(2, 2, 2, 2));btnIncluir.setText("Incluir");

}

Page 9: Tutorial MVC - aplicações desktop

9

9 MVC (model-view-controller) – Aplicações Desktop

www.tiacademicoweb.xpg.com.br

return btnIncluir;}/*** This method initializes btnExcluir** @return javax.swing.JButton*/

private JButton getBtnExcluir() {if (btnExcluir == null) {

btnExcluir = new JButton();btnExcluir.setIcon(new ImageIcon(getClass().getResource("/icones/excluir.png")));btnExcluir.setLocation(new Point(223, 226)); btnExcluir.setSize(new Dimension(89, 30));btnExcluir.setToolTipText("Excluir Cliente"); btnExcluir.setMargin(new Insets(2, 2, 2, 2));btnExcluir.setText("Excluir");

}return btnExcluir;

}/*** This method initializes btnAtualizar** @return javax.swing.JButton*/

private JButton getBtnAtualizar() {if (btnAtualizar == null) {

btnAtualizar = new JButton();btnAtualizar.setIcon(new ImageIcon(getClass().getResource("/icones/alterar.png")));btnAtualizar.setLocation(new Point(327, 226)); btnAtualizar.setSize(new Dimension(89, 30));btnAtualizar.setToolTipText("Atualizar Dados do Cliente");btnAtualizar.setMargin(new Insets(2, 2, 2, 2)); btnAtualizar.setText("Atualizar");

}return btnAtualizar;

}/*** This method initializes btnConsultar** @return javax.swing.JButton*/

private JButton getBtnConsultar() {if (btnConsultar == null) {

btnConsultar = new JButton();btnConsultar.setIcon(new ImageIcon(getClass().getResource("/icones/consultar.png")));btnConsultar.setLocation(new Point(431, 226)); btnConsultar.setSize(new Dimension(89, 30));btnConsultar.setToolTipText("Consultar um Cliente");btnConsultar.setMargin(new Insets(2, 2, 2, 2));btnConsultar.setMnemonic(KeyEvent.VK_UNDEFINED);btnConsultar.setText("Consultar");

Page 10: Tutorial MVC - aplicações desktop

10

10

MVC (model-view-controller) – Aplicações Desktop

www.tiacademicoweb.xpg.com.br

}return btnConsultar;

}/*** This method initializes btnCancelar** @return javax.swing.JButton*/

private JButton getBtnCancelar() {if (btnCancelar == null) {

btnCancelar = new JButton();btnCancelar.setIcon(new ImageIcon(getClass().getResource("/icones/cancelar.png")));btnCancelar.setLocation(new Point(535, 226)); btnCancelar.setSize(new Dimension(89, 30));btnCancelar.setToolTipText("Cancelar uma Ação"); btnCancelar.setMargin(new Insets(2, 2, 2, 2));btnCancelar.setText("Cancelar");

}return btnCancelar;

}/*** This method initializes lblTopo** @return javax.swing.JLabel*/

private JLabel getLblTopo() {if (lblTopo == null) {

lblTopo = new JLabel(); lblTopo.setText("lblTopo");lblTopo.setIcon(new ImageIcon(getClass().getResource("/imagem/topoCliente.png")));lblTopo.setBounds(new Rectangle(0, -2, 645, 62));

}return lblTopo;

}/*** This method initializes ftxtTel** @return javax.swing.JFormattedTextField*/

private JFormattedTextField getFtxtTel() {if (ftxtTel == null) {

try {ftxtTel = new JFormattedTextField(new MaskFormatter("(##)####-####"));ftxtTel.setLocation(new Point(104, 195)); ftxtTel.setSize(new Dimension(106, 16));ftxtTel.setToolTipText("Telefone de Contato do Cliente. (XX) XXXX-XXXX");ftxtTel.setFocusLostBehavior(JFormattedTextField.COMMIT);

} catch (ParseException e) {// TODO Auto-generated catch block

Page 11: Tutorial MVC - aplicações desktop

11

11

MVC (model-view-controller) – Aplicações Desktop

www.tiacademicoweb.xpg.com.br

this.mensagem("Erro ao Informar o Telefone","Aviso",JOptionPane.WARNING_MESSAGE);}

}return ftxtTel;

}

public void limparTela(){

txtCodPessoa.setText(""); txtCodigo.setText("") ; txtNome.setText("") ; txtLogradouro.setText("") ;txtNumero.setText("") ; txtBairro.setText("") ; ftxtTel.setText("") ; ftxtRg.setText("");txtOrgaoEmissor.setText(""); txtComplemento.setText(""); txtNome.requestFocus() ;

}

public void modoInicial(){

btnNovo.setEnabled(true) ; btnIncluir.setEnabled(false) ;btnExcluir.setEnabled(false) ; btnAtualizar.setEnabled(false) ; btnConsultar.setEnabled(true) ;btnCancelar.setEnabled(false) ; txtCodigo.setEnabled(false) ; txtNome.setEnabled(true);txtLogradouro.setEnabled(false) ; txtNumero.setEnabled(false) ; txtBairro.setEnabled(false) ;ftxtTel.setEnabled(false) ; ftxtRg.setEnabled(false); txtOrgaoEmissor.setEnabled(false);txtComplemento.setEnabled(false); txtNome.requestFocus();

}public void modoConsultaPessoa(){

ftxtRg.requestFocus(true); btnNovo.setEnabled(false) ; btnIncluir.setEnabled(false) ;btnExcluir.setEnabled(false) ; btnAtualizar.setEnabled(false) ; btnConsultar.setEnabled(false) ;btnCancelar.setEnabled(true) ; txtCodigo.setEnabled(false) ; txtNome.setEnabled(false);txtLogradouro.setEnabled(false) ; txtNumero.setEnabled(false) ; txtBairro.setEnabled(false) ;ftxtTel.setEnabled(false) ; ftxtRg.setEnabled(true); txtOrgaoEmissor.setEnabled(false);txtComplemento.setEnabled(false);

}public void modoNovo(){

btnNovo.setEnabled(false) ; btnIncluir.setEnabled(true) ; btnExcluir.setEnabled(false) ;btnAtualizar.setEnabled(false) ; btnConsultar.setEnabled(false) ; btnCancelar.setEnabled(true) ;txtCodigo.setEnabled(false) ; txtNome.setEnabled(true); txtLogradouro.setEnabled(true) ;txtNumero.setEnabled(true) ; txtBairro.setEnabled(true) ; ftxtTel.setEnabled(true) ;ftxtRg.setEnabled(true); txtOrgaoEmissor.setEnabled(true); txtComplemento.setEnabled(true);txtNome.requestFocus();

}public void modoVenda(){

btnNovo.setEnabled(false) ; btnIncluir.setEnabled(true) ; btnExcluir.setEnabled(false) ;btnAtualizar.setEnabled(false) ; btnConsultar.setEnabled(false) ; btnCancelar.setEnabled(false) ;

Page 12: Tutorial MVC - aplicações desktop

12

12

MVC (model-view-controller) – Aplicações Desktop

www.tiacademicoweb.xpg.com.br

txtCodigo.setEnabled(false) ; txtNome.setEnabled(true); txtLogradouro.setEnabled(true) ;txtNumero.setEnabled(true) ; txtBairro.setEnabled(true) ;ftxtTel.setEnabled(true) ; ftxtRg.setEnabled(true); txtOrgaoEmissor.setEnabled(true);txtComplemento.setEnabled(true); txtNome.requestFocus();

}public void modoConsulta(){

btnNovo.setEnabled(false) ; btnIncluir.setEnabled(false) ; btnExcluir.setEnabled(true) ;btnAtualizar.setEnabled(true) ; btnConsultar.setEnabled(false) ; btnCancelar.setEnabled(true) ;txtCodigo.setEnabled(false) ; txtNome.setEnabled(true); txtLogradouro.setEnabled(true) ;txtNumero.setEnabled(true) ; txtBairro.setEnabled(true) ; ftxtTel.setEnabled(true) ;ftxtRg.setEnabled(true); txtOrgaoEmissor.setEnabled(true); txtComplemento.setEnabled(true);txtNome.requestFocus();

}public void modoPessoa(){

btnNovo.setEnabled(false) ; btnIncluir.setEnabled(true) ; btnExcluir.setEnabled(false) ;btnAtualizar.setEnabled(false) ; btnConsultar.setEnabled(false) ; btnCancelar.setEnabled(true) ;txtCodigo.setEnabled(false) ; txtNome.setEnabled(false); txtLogradouro.setEnabled(false) ;txtNumero.setEnabled(false) ; txtBairro.setEnabled(false) ; ftxtTel.setEnabled(false) ;ftxtRg.setEnabled(false); txtOrgaoEmissor.setEnabled(false); txtComplemento.setEnabled(false);

}public void modoNome(){

txtNome.setText(""); txtNome.requestFocus();}public void modoLogradouro(){

txtLogradouro.setText(""); txtLogradouro.requestFocus();}public void modoNumero(){

txtNumero.setText(""); txtNumero.requestFocus();}public void modoBairro(){

txtBairro.setText(""); txtBairro.requestFocus();}public void modoTelefone(){

ftxtTel.setText(""); ftxtTel.requestFocus();}public void modoRg(){

ftxtRg.setText(""); ftxtRg.requestFocus();

Page 13: Tutorial MVC - aplicações desktop

13

13

MVC (model-view-controller) – Aplicações Desktop

www.tiacademicoweb.xpg.com.br

}public void modoBloquearRg(){

ftxtRg.setEnabled(false);}public void modoOrgaoEmissor(){

txtOrgaoEmissor.setText(""); txtOrgaoEmissor.requestFocus();}public void setOuvinte(ActionListener ouvinte, WindowListener ouv, KeyListener ov){

btnNovo.addActionListener(ouvinte) ; btnIncluir.addActionListener(ouvinte) ;btnExcluir.addActionListener(ouvinte) ; btnAtualizar.addActionListener(ouvinte) ;btnConsultar.addActionListener(ouvinte) ; btnCancelar.addActionListener(ouvinte) ;this.addWindowListener(ouv); ftxtRg.addKeyListener(ov);

}public void escreverCliente(Cliente c){

txtCodPessoa.setText(String.valueOf(c.getIdPessoa())); txtCodigo.setText(String.valueOf(c.getCodigo()));txtNome.setText(c.getNome()); txtLogradouro.setText(c.getLogradouro());txtNumero.setText(c.getNumero()); txtBairro.setText(c.getBairro());ftxtTel.setText(c.getTelefone()); ftxtRg.setText(c.getRg());txtOrgaoEmissor.setText(c.getOrgaoEmissor()); txtComplemento.setText(c.getComplemento());

}public void escreverPessoa(Cliente cl){

txtCodPessoa.setText(String.valueOf(cl.getIdPessoa())); txtNome.setText(cl.getNome());txtLogradouro.setText(cl.getLogradouro()); txtNumero.setText(cl.getNumero());txtBairro.setText(cl.getBairro()); ftxtTel.setText(cl.getTelefone());ftxtRg.setText(cl.getRg()); txtOrgaoEmissor.setText(cl.getOrgaoEmissor());txtComplemento.setText(cl.getComplemento());

}public Cliente lerCliente(){Cliente c = new Cliente();try{

String nome = txtNome.getText(); String logradouro = txtLogradouro.getText();String numero = txtNumero.getText(); String bairro = txtBairro.getText();String telefone = ftxtTel.getText(); String cod = txtCodigo.getText();String rg = ftxtRg.getText(); String oe = txtOrgaoEmissor.getText();String codP = txtCodPessoa.getText(); String complemento = txtComplemento.getText();int codigo; int codigoP;

if(cod.equals("") || cod == null)

Page 14: Tutorial MVC - aplicações desktop

14

14

MVC (model-view-controller) – Aplicações Desktop

www.tiacademicoweb.xpg.com.br

codigo = 0;else

codigo = Integer.parseInt(cod);

if(codP.equals("") || codP == null)codigoP = 0;

elsecodigoP = Integer.parseInt(codP);

telefone = telefone.replaceAll("\\(" , "").replaceAll("\\)", "").replaceAll("-", "").replaceAll(" ", "");rg = rg.replaceAll("[-.]" , "").replaceAll(" ", "");

c.setIdPessoa(codigoP);c.setCodigo(codigo); c.setNome(nome); c.setLogradouro(logradouro);c.setNumero(numero); c.setBairro(bairro); c.setTelefone(telefone); c.setRg(rg);c.setOrgaoEmissor(oe); c.setComplemento(complemento);

} // fim do try

catch(NumberFormatException e){this.mensagem("Tipo de Dado Inválido","Aviso",JOptionPane.ERROR_MESSAGE) ;}catch(NullPointerException e){this.mensagem("Erro ao Criar o Objeto","Aviso",JOptionPane.ERROR_MESSAGE) ;}catch(Exception e){this.mensagem("Erro","Aviso",JOptionPane.ERROR_MESSAGE) ;}

return c ;}public String lerRg(){

String rg = ftxtRg.getText();rg = rg.replaceAll("[-.]" , "").replaceAll(" ", "");return rg;

}public void mensagem(Object p1,String p2,int p3){

JOptionPane.showMessageDialog(null, p1,p2,p3);}

public int mensagemOpçao(Object p1, String p2,int p3,int p4, Icon p5, Object[] p6, Object p7){

return JOptionPane.showOptionDialog(null, p1, p2, p3, p4, p5, p6, p7);}/*** This method initializes ftxtRg** @return javax.swing.JFormattedTextField*/

Page 15: Tutorial MVC - aplicações desktop

15

15

MVC (model-view-controller) – Aplicações Desktop

www.tiacademicoweb.xpg.com.br

private JFormattedTextField getFtxtRg() {if (ftxtRg == null) {

try {ftxtRg = new JFormattedTextField(new MaskFormatter("##.###.###-#"));ftxtRg.setBounds(new Rectangle(493, 75, 137, 15));ftxtRg.setSize(new Dimension(92, 16));ftxtRg.setToolTipText("Regitro Geral do Cliente. Pressione Enter para Continuar o Cadastro");ftxtRg.setFocusLostBehavior(JFormattedTextField.COMMIT);

} catch (ParseException e) {this.mensagem("Erro ao Informar o RG","Aviso",JOptionPane.WARNING_MESSAGE);

}}return ftxtRg;

}/*** This method initializes txtOrgaoEmissor** @return javax.swing.JTextField*/

private JTextField getTxtOrgaoEmissor() {if (txtOrgaoEmissor == null) {

txtOrgaoEmissor = new JTextField(); txtOrgaoEmissor.setBounds(new Rectangle(508, 195, 122, 16));txtOrgaoEmissor.setToolTipText("Órgão Emissor do Registro Geral do Cliente");txtOrgaoEmissor.setDocument(new FormataTextField(6));

}return txtOrgaoEmissor;

}/*** This method initializes txtCodPessoa** @return javax.swing.JTextField*/

private JTextField getTxtCodPessoa() {if (txtCodPessoa == null) {

txtCodPessoa = new JTextField(); txtCodPessoa.setLocation(new Point(310, 75));txtCodPessoa.setEnabled(false); txtCodPessoa.setSize(new Dimension(113, 16));

}return txtCodPessoa;

}/*** This method initializes txtComplemento** @return javax.swing.JTextField*/

private JTextField getTxtComplemento() {

Page 16: Tutorial MVC - aplicações desktop

16

16

MVC (model-view-controller) – Aplicações Desktop

www.tiacademicoweb.xpg.com.br

if (txtComplemento == null) {txtComplemento = new JTextField(); txtComplemento.setLocation(new Point(104, 164));txtComplemento.setSize(new Dimension(275, 16));txtComplemento.setToolTipText("Complemento do Endereço do Cliente");txtComplemento.setDocument(new FormataTextField(25));

}return txtComplemento;

}} // @jve:decl-index=0:visual-constraint="10,10"

CONTROLE (Classe ControleCliente)Todo o controle fica nas classes desta camada. Interessante que cada tela tenha uma classe que a controla, pois

fica mais fácil de identificar um problema e resolvê-lo. Pois caso faça um classe de controle para todo o sistema, ela ficaráenorme. Reparem, que logo no construtor ele já seta o método setOuvinte() da visão e passa “this” como parâmetro,indicando que ele está tomando conta de qualquer solicitação que o usuário fizer na tela (tela.setOuvinte(this, this,this)).Podemos também notar que no método actionPerformed(ActionEvent e), ele faz toda a validação, aplicando as regras denegócio, por exemplo, o cliente obrigatoriamente precisa informar o RG para ser cadastrado.if(cl.getRg().equals("") || cl.getRg() == null || cl.getRg().length() > 0 && cl.getRg().length() < 9 || cl.getRg().equals("000000000"))

{tela.mensagem("Informe o RG", "Mensagem", JOptionPane.WARNING_MESSAGE);tela.modoRg();}

Reparem que o controle solicita que a visão exiba uma mensagem (tela.mensagem("Informe o RG", "Mensagem",JOptionPane.WARNING_MESSAGE)) e que o DAO inclua os dados do cliente no banco (dao.gravarCliente(cl)).

package controle;

import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.KeyEvent;import java.awt.event.KeyListener; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent;import java.sql.SQLException; import java.util.ArrayList; import javax.swing.JOptionPane; import modelo.Cliente;import dao.DaoCliente; import visao.TelaCliente; import visao.TelaPesquisa;

public class ControleCliente extends WindowAdapter implements ActionListener, KeyListener{

private TelaCliente tela = null ; private DaoCliente dao = null ; private Cliente cl = null;private ControleVenda cv = null; private ArrayList<Cliente> lista = null; private boolean venda = false;private ControleTelaFarmacia cf = null; private boolean fechar = true;

public ControleCliente(TelaCliente tela, ControleVenda cv,boolean v) {super(); this.tela = tela ; this.cv = cv; venda = v; tela.setOuvinte(this, this,this); tela.modoVenda();

try {dao = new DaoCliente() ;

}catch (ClassNotFoundException e) {

tela.mensagem("Erro ao carregar o driver","Aviso",JOptionPane.ERROR_MESSAGE);}

Page 17: Tutorial MVC - aplicações desktop

17

17

MVC (model-view-controller) – Aplicações Desktop

www.tiacademicoweb.xpg.com.br

catch (SQLException e) {tela.mensagem("Operação não realizada","Aviso",JOptionPane.ERROR_MESSAGE);

}}public ControleCliente(TelaCliente tela) {

super(); this.tela = tela ; tela.modoInicial(); tela.setOuvinte(this,this,this);try {

dao = new DaoCliente() ;}catch (ClassNotFoundException e) {

tela.mensagem("Erro ao carregar o driver","Aviso",JOptionPane.ERROR_MESSAGE);}catch (SQLException e) {

tela.mensagem("Operação não realizada","Aviso",JOptionPane.ERROR_MESSAGE);}

}

public ControleCliente(TelaCliente tela, ControleTelaFarmacia c) {super(); this.tela = tela ; cf = c; tela.modoInicial(); tela.setOuvinte(this,this,this);try {

dao = new DaoCliente() ;}catch (ClassNotFoundException e) {

tela.mensagem("Erro ao carregar o driver","Aviso",JOptionPane.ERROR_MESSAGE);}catch (SQLException e) {

tela.mensagem("Operação não realizada","Aviso",JOptionPane.ERROR_MESSAGE);}

}

public void actionPerformed(ActionEvent e) {String comando = e.getActionCommand();

if (comando.equals("Novo")){tela.limparTela();tela.modoConsultaPessoa();}

elseif(comando.equals("Incluir"))

incluirCliente();else

if(comando.equals("Cancelar")){tela.limparTela();tela.modoInicial();}

else

Page 18: Tutorial MVC - aplicações desktop

18

18

MVC (model-view-controller) – Aplicações Desktop

www.tiacademicoweb.xpg.com.br

if(comando.equals("Atualizar"))alterarCliente();

elseif(comando.equals("Excluir"))

excluirCliente();else

if(comando.equals("Consultar"))consultarCliente();

}public void incluirCliente() {

cl = tela.lerCliente(); int autoNumeracao = 0;

if(cl != null)if(cl.getNome().equals("") || cl.getNome() == null)

{tela.mensagem("Informe o Nome", "Mensagem", JOptionPane.WARNING_MESSAGE);tela.modoNome();}

elseif(cl.getLogradouro().equals("") || cl.getLogradouro() == null){tela.mensagem("Informe o Logradouro", "Mensagem", JOptionPane.WARNING_MESSAGE);tela.modoLogradouro();}

elseif(cl.getNumero().equals("") || cl.getNumero() == null){tela.mensagem("Informe o Número", "Mensagem", JOptionPane.WARNING_MESSAGE);tela.modoNumero();}

elseif(cl.getBairro().equals("") || cl.getBairro() == null)

{tela.mensagem("Informe o Bairro", "Mensagem", JOptionPane.WARNING_MESSAGE);tela.modoBairro();}

elseif(cl.getTelefone().length() > 0 && cl.getTelefone().length() < 10 || cl.getTelefone().equals("0000000000")){tela.mensagem("Telefone Incorreto", "Mensagem", JOptionPane.WARNING_MESSAGE);tela.modoTelefone();}

elseif(cl.getRg().equals("") || cl.getRg() == null || cl.getRg().length() > 0 && cl.getRg().length() < 9 ||cl.getRg().equals("000000000") )

{tela.mensagem("Informe o RG", "Mensagem", JOptionPane.WARNING_MESSAGE);tela.modoRg();}

elseif(cl.getOrgaoEmissor().equals("") || cl.getOrgaoEmissor() == null){tela.mensagem("Informe o Orgão Emissor", "Mensagem", JOptionPane.WARNING_MESSAGE);tela.modoOrgaoEmissor();}

else

Page 19: Tutorial MVC - aplicações desktop

19

19

MVC (model-view-controller) – Aplicações Desktop

www.tiacademicoweb.xpg.com.br

try {if(dao.buscarCliente(cl.getIdPessoa())){tela.mensagem("Cliente já Cadastrado", "Mensagem", JOptionPane.WARNING_MESSAGE);tela.limparTela();tela.modoConsultaPessoa();}

elsetry{{autoNumeracao = dao.obterIdCliente() + 1;cl.setCodigo(autoNumeracao);Object[] opcoes = {"Sim", "Não" } ;int resp = tela.mensagemOpçao("Confirma os Dados?", "Confirmação",JOptionPane.DEFAULT_OPTION, JOptionPane.QUESTION_MESSAGE, null, opcoes, opcoes[0]);

if (resp==0){ if(cl.getIdPessoa() == 0)

{autoNumeracao = dao.obterIdPessoa() + 1;cl.setIdPessoa(autoNumeracao);dao.gravarPessoa(cl);}

dao.gravarCliente(cl);tela.mensagem("Cliente " + cl.getNome() + " foi Incluído comSucesso!","Aviso",JOptionPane.INFORMATION_MESSAGE) ;if(venda){cv.inserirCliente(cl);tela.dispose(); }

else{ tela.limparTela();

tela.modoInicial();}}// fim da pergunta

}// fim do else}// fim do trycatch (SQLException e) {

tela.mensagem("Operação não realizada","Aviso",JOptionPane.ERROR_MESSAGE) ;tela.limparTela();tela.modoInicial(); }

catch (Exception e) {tela.mensagem("Erro","Aviso",JOptionPane.ERROR_MESSAGE) ;tela.limparTela();tela.modoInicial(); }

} catch (SQLException e) {tela.mensagem("Operação não realizada","Aviso",JOptionPane.ERROR_MESSAGE) ;tela.limparTela();tela.modoInicial();}

catch (Exception e) {tela.mensagem("Erro","Aviso",JOptionPane.ERROR_MESSAGE) ;tela.limparTela();tela.modoInicial();}

Page 20: Tutorial MVC - aplicações desktop

20

20

MVC (model-view-controller) – Aplicações Desktop

www.tiacademicoweb.xpg.com.br

else{tela.mensagem("Operação não realizada", "Mensagem", JOptionPane.INFORMATION_MESSAGE);tela.limparTela();tela.modoInicial();}

}public void alterarCliente() {

cl = tela.lerCliente();if(cl != null && cl.getCodigo() != 0)if(cl.getNome().equals("") || cl.getNome() == null){tela.mensagem("Informe o Nome", "Mensagem", JOptionPane.WARNING_MESSAGE);tela.modoNome();}

elseif(cl.getLogradouro().equals("") || cl.getLogradouro() == null){tela.mensagem("Informe o Logradouro", "Mensagem", JOptionPane.WARNING_MESSAGE);tela.modoLogradouro();}

elseif(cl.getNumero().equals("") || cl.getNumero() == null)

{tela.mensagem("Informe o Número", "Mensagem", JOptionPane.WARNING_MESSAGE);tela.modoNumero();}

elseif(cl.getBairro().equals("") || cl.getBairro() == null)

{tela.mensagem("Informe o Bairro", "Mensagem", JOptionPane.WARNING_MESSAGE);tela.modoBairro();}

elseif(cl.getTelefone().length() > 0 && cl.getTelefone().length() < 10 || cl.getTelefone().equals("0000000000"))

{tela.mensagem("Telefone Incorreto", "Mensagem", JOptionPane.WARNING_MESSAGE);tela.modoTelefone();}

elsetry {{Object[] opcoes = {"Sim", "Não" } ;int resp = tela.mensagemOpçao("Confirma os Dados?", "Confirmação", JOptionPane.DEFAULT_OPTION,JOptionPane.QUESTION_MESSAGE, null, opcoes, opcoes[0]);if (resp==0){

dao.alterarCliente(cl);tela.mensagem("Cliente " + cl.getNome() + " foi Alterado comSucesso!","Aviso",JOptionPane.INFORMATION_MESSAGE) ;tela.limparTela();tela.modoInicial();

}// fim da pegunta}

} // fim do trycatch (SQLException e) {

Page 21: Tutorial MVC - aplicações desktop

21

21

MVC (model-view-controller) – Aplicações Desktop

www.tiacademicoweb.xpg.com.br

tela.mensagem("Operação não realizada","Aviso",JOptionPane.ERROR_MESSAGE) ;tela.limparTela();tela.modoInicial();

}catch (Exception e) {

tela.mensagem("Erro","Aviso",JOptionPane.ERROR_MESSAGE) ;tela.limparTela();tela.modoInicial();

}else

{tela.mensagem("Operação não realizada", "Mensagem", JOptionPane.INFORMATION_MESSAGE);tela.limparTela();tela.modoInicial();}

}

public void excluirCliente() {cl = tela.lerCliente();

if(cl != null && cl.getCodigo() != 0){Object[] opcoes = {"Sim", "Não" } ;int resp = tela.mensagemOpçao("Confirma a exclusão?", "Excluir", JOptionPane.DEFAULT_OPTION,JOptionPane.QUESTION_MESSAGE, null, opcoes, opcoes[0]);if (resp==0){

try {dao.excluirCliente(cl);

}

catch (SQLException e) {tela.mensagem("Operação não realizada","Aviso",JOptionPane.ERROR_MESSAGE) ;tela.limparTela();tela.modoInicial();}

catch (Exception e) {tela.mensagem("Erro","Aviso",JOptionPane.ERROR_MESSAGE) ;tela.limparTela();tela.modoInicial();}

tela.mensagem("Cliente " + cl.getNome() + " foi Excluído comSucesso!","Aviso",JOptionPane.INFORMATION_MESSAGE) ;tela.limparTela();tela.modoInicial();

Page 22: Tutorial MVC - aplicações desktop

22

22

MVC (model-view-controller) – Aplicações Desktop

www.tiacademicoweb.xpg.com.br

}

}else

tela.mensagem("Operação não realizada", "Mensagem", JOptionPane.INFORMATION_MESSAGE);}public void consultarCliente() {

cl = tela.lerCliente();

if(cl != null)

//if(cl.getNome().equals("") || cl.getNome() == null)//{tela.mensagem("Informe o Nome do Cliente para a Pesquisa", "Mensagem",JOptionPane.WARNING_MESSAGE);//tela.modoInicial();}

//else{try {

//lista = new ArrayList<Pessoa>();lista = new ArrayList<Cliente>();//lista = dao.consultarCliente(cl);lista = dao.consultarCliente(cl);

}

catch (SQLException e) {tela.mensagem("Operação não realizada","Aviso",JOptionPane.ERROR_MESSAGE) ;tela.limparTela();tela.modoInicial();

}

catch (Exception e) {tela.mensagem("Erro","Aviso",JOptionPane.ERROR_MESSAGE) ;tela.limparTela();tela.modoInicial();

}if (lista.size() == 1)

{tela.mensagem("Cliente Encontrado", "Mensagem",JOptionPane.INFORMATION_MESSAGE);tela.escreverCliente(lista.get(0));tela.modoConsulta();}

elseif(lista.size() == 0){tela.mensagem("Cliente não Encontrado", "Mensagem",JOptionPane.INFORMATION_MESSAGE);

tela.limparTela();

Page 23: Tutorial MVC - aplicações desktop

23

23

MVC (model-view-controller) – Aplicações Desktop

www.tiacademicoweb.xpg.com.br

tela.modoInicial();}else

if(lista.size()>1 || cl.getNome().equals("")){TelaPesquisa janela = new TelaPesquisa();new ControlePesquisa(janela, this, lista, null, "Cliente") ;janela.setLocationRelativeTo(null);janela.setVisible(true);fechar = false;}

}}public void escreverCliente(Cliente cl){

tela.escreverCliente(cl);tela.modoConsulta();

}public void windowClosing(WindowEvent e){

if(venda == false)// janela do menu cadastro{if(fechar)

{tela.dispose();cf.desbloquearMenu();}

}else

{cv.setCliente(false);tela.dispose();}

try {dao.finalize();

} catch (SQLException e1) {tela.mensagem("Operação não realizada","Aviso",JOptionPane.ERROR_MESSAGE) ;

}}public void setFechar(boolean f){

fechar = f;}public void keyPressed(KeyEvent e) {

int key = e.getKeyCode();if(key == KeyEvent.VK_ENTER)

Page 24: Tutorial MVC - aplicações desktop

24

24

MVC (model-view-controller) – Aplicações Desktop

www.tiacademicoweb.xpg.com.br

{consultarPessoa();

}

}public void consultarPessoa() {

try {cl = new Cliente();cl = dao.buscarPessoa(tela.lerRg());if(cl != null) // pessoa cadastrada

{tela.escreverPessoa(cl);tela.modoPessoa();}

else{tela.modoNovo();tela.modoBloquearRg();}

} catch (SQLException e1) {tela.mensagem("Operação não realizada","Aviso",JOptionPane.ERROR_MESSAGE) ;

} catch (Exception e1) {tela.mensagem("Erro","Aviso",JOptionPane.ERROR_MESSAGE) ;

}}public void keyReleased(KeyEvent arg0) {

// TODO Auto-generated method stub}public void keyTyped(KeyEvent arg0) {

// TODO Auto-generated method stub}

}// fim do controle

DAO (Classe DAOCliente)Aqui temos a classe responsável por manipular os dados com o banco. Inclusão, alteração, exclusão, consultar.

package dao;

import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet;import java.sql.SQLException; import java.util.ArrayList; import modelo.Cliente;

public class DaoCliente {private Connection c; private PreparedStatement ps = null; private ResultSet r = null;

Page 25: Tutorial MVC - aplicações desktop

25

25

MVC (model-view-controller) – Aplicações Desktop

www.tiacademicoweb.xpg.com.br

public DaoCliente() throws ClassNotFoundException, SQLException {super();c = Conexao.getConexao();

}public int obterIdPessoa() throws SQLException, Exception{int i = 0;

ps = c.prepareStatement("select max(idpessoa) from pessoa");r = ps.executeQuery();

if(r.next())i = r.getInt(1);

return i ;}public int obterIdCliente() throws SQLException, Exception{int i = 0;

ps = c.prepareStatement("select max(codigo) from cliente");r = ps.executeQuery();

if(r.next())i = r.getInt(1);

return i ;}public void gravarPessoa(Cliente cl) throws SQLException, Exception{

ps = c.prepareStatement("insert into pessoa values (?,?,?,?,?,?,?,?,?)");ps.setInt(1, cl.getIdPessoa());ps.setString(2, cl.getNome());ps.setString(3, cl.getLogradouro());ps.setString(4, cl.getNumero());ps.setString(5, cl.getBairro());ps.setString(6, cl.getTelefone());ps.setString(7, cl.getRg());ps.setString(8, cl.getOrgaoEmissor());ps.setString(9, cl.getComplemento());ps.executeUpdate();

}public void gravarCliente(Cliente cl) throws SQLException, Exception{

ps = c.prepareStatement("insert into cliente values (?,?)");ps.setInt(1, cl.getCodigo());ps.setInt(2, cl.getIdPessoa());

Page 26: Tutorial MVC - aplicações desktop

26

26

MVC (model-view-controller) – Aplicações Desktop

www.tiacademicoweb.xpg.com.br

ps.executeUpdate();}public void alterarCliente(Cliente cl) throws SQLException, Exception{

ps = c.prepareStatement("update pessoa set nome=?,logradouro=?,numero=?,bairro=?,telefone=?, rg=?,orgaoemissor=?, complemento=? where idpessoa in (select idpessoa from cliente where codigo = ?)");

ps.setString(1, cl.getNome());ps.setString(2, cl.getLogradouro());ps.setString(3, cl.getNumero());ps.setString(4, cl.getBairro());ps.setString(5, cl.getTelefone());ps.setString(6, cl.getRg());ps.setString(7, cl.getOrgaoEmissor());ps.setString(8, cl.getComplemento());ps.setInt(9, cl.getCodigo());

ps.executeUpdate();

/*ps = c.prepareStatement("update cliente set rg=?,orgaoemissor=? where idcliente=?");//ps.setString(1, cl.getRg());//ps.setString(2, cl.getOrgaoEmissor());ps.setInt(3, cl.getCodigo());

ps.executeUpdate();*/

}public void excluirCliente(Cliente cl) throws SQLException, Exception{

ps = c.prepareStatement("delete from cliente where codigo=?");ps.setInt(1, cl.getCodigo());ps.executeUpdate();

}public ArrayList<Cliente> consultarCliente(Cliente cl) throws SQLException, Exception{ //ArrayList<Pessoa> lista = new ArrayList<Pessoa>();

ArrayList<Cliente> lista = new ArrayList<Cliente>();

ps = c.prepareStatement("select cliente.codigo, pessoa.* from cliente, pessoa where cliente.idpessoa =pessoa.idpessoa and cliente.idpessoa in (select idpessoa from pessoa where nome ilike ?)order by nome");

ps.setString(1, cl.getNome()+ "%");r = ps.executeQuery();

while (r.next()){

Page 27: Tutorial MVC - aplicações desktop

27

27

MVC (model-view-controller) – Aplicações Desktop

www.tiacademicoweb.xpg.com.br

cl = new Cliente();

cl.setIdPessoa(r.getInt("idpessoa"));cl.setCodigo(r.getInt("codigo"));cl.setNome(r.getString("nome"));cl.setLogradouro(r.getString("logradouro"));cl.setNumero(r.getString("numero"));cl.setBairro(r.getString("bairro"));cl.setTelefone(r.getString("telefone"));cl.setRg(r.getString("rg"));cl.setOrgaoEmissor(r.getString("orgaoemissor"));cl.setComplemento(r.getString("complemento"));

lista.add(cl);}

return lista;}

public Cliente buscarPessoa(String rg) throws SQLException, Exception{

Cliente cl = null;ps = c.prepareStatement("select * from pessoa where rg=? ");ps.setString(1, rg);r = ps.executeQuery();

if(r.next()){

cl = new Cliente();

cl.setIdPessoa(r.getInt("idpessoa"));cl.setNome(r.getString("nome"));cl.setLogradouro(r.getString("logradouro"));cl.setNumero(r.getString("numero"));cl.setBairro(r.getString("bairro"));cl.setTelefone(r.getString("telefone"));cl.setRg(r.getString("rg"));cl.setOrgaoEmissor(r.getString("orgaoemissor"));cl.setComplemento(r.getString("complemento"));

}return cl;

}public boolean buscarCliente(int codP) throws SQLException, Exception

Page 28: Tutorial MVC - aplicações desktop

28

28

MVC (model-view-controller) – Aplicações Desktop

www.tiacademicoweb.xpg.com.br

{boolean resultado = false;ps = c.prepareStatement("select codigo from cliente where idpessoa=? ");ps.setInt(1, codP);r = ps.executeQuery();

if(r.next()){

resultado = true;}

return resultado;}public void desfazerBanco() throws SQLException, Exception{

c.rollback();}

public void finalize() throws SQLException{ if(r != null)

{r.close() ;ps.close();

}c.close();

}}// fim do dao

Page 29: Tutorial MVC - aplicações desktop

29

29 MVC (model-view-controller) – Aplicações Desktop

www.tiacademicoweb.xpg.com.br

ConclusãoO MVC funciona como um corpo humano. O controle é o cérebro, que faz todo o controle docorpo. Recebe requisições e dispara estímulos a áreas específicas do corpo para atender asrequisições. Nossas características físicas, bem como nossa personalidade, seria o modelo, aestrutura. Já nossos sentidos, como audição, visão, fala, olfato, tato e paladar seriam a visão,pois funciona como a entrada e saída de informações (observar uma imagem, sorrir, chorar,comer).