MVC Aplicacoes Desktop

download MVC Aplicacoes Desktop

of 29

Transcript of MVC Aplicacoes Desktop

  • 8/3/2019 MVC Aplicacoes Desktop

    1/29

    1

    1 MVC (model-view-controller) Aplicaes Desktop

    MVC (MODELO-VISO-CONTROLADOR)

    Este tutorial tem como finalidade trazer os conceitos sobre MVC e mostra na prtica comofunciona em aplicaes desktop.

    DefinioPadro de arquitetura de software que tem como finalidade separar a estrutura de dados

    (modelo), da apresentao para o usurio (viso), das regras de negcio (controle).

    FinalidadePossibilitar o reuso, facilitar a manuteno, atualizao, deteco e correo de erros.

    EstruturaA estrutura do MVC se faz em trs camadas (Modelo, Viso e Controle).

    MODELO

    Representa o domnio da aplicao, a estrutura dos dados. Tambm pode representar a

    manipulao dos dados (persistncia e consulta).

    VISO

    Representa a forma como os dados processados (informaes) sero apresentados ao

    usurio (interface com o usurio).

    CONTROLE

    Representa o controle sobre o modelo e a viso, entre o usurio e a aplicao.

    Encarregando-se de validar as regras de negcio.

    ImplementaoVejamos na prtica como funciona.MODELO (Classe Pessoa e Cliente)

    No modelo temos as classes de dados, que nos mostram a estrutura do sistema, seu domnio.Alm destas classes, alguns tambm implementam as classes de banco nesta camada, as classes DAO. Asclasses DAO so responsveis por realizarem as gravaes, atualizaes, remoes, alteraes e consultas nobanco. Neste tutorial veremos as classes DAO em um pacote separado.O exemplo abaixo mostra uma herana. Classe me (Pessoa) e classe filha (Cliente).

  • 8/3/2019 MVC Aplicacoes Desktop

    2/29

    2

    MVC (model-view-controller) Aplicaes Desktop

    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) {

  • 8/3/2019 MVC Aplicacoes Desktop

    3/29

    3

    MVC (model-view-controller) Aplicaes Desktop

    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; }

    }

  • 8/3/2019 MVC Aplicacoes Desktop

    4/29

    4

    MVC (model-view-controller) Aplicaes Desktop

    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;

    }}

    VISO (Classe TelaCliente)Nesta camada temos as classes de comunicao com o usurio, parte grfica. onde o usurio faz uma solicitao

    ao sistema e ele recebe a resposta a essa solicitao. interessante notar que nesta classe se adiciona o ouvinte aocomponente da tela, que ser controlada pela classe de controle (mtodo setOuvinte(ActionListener ouvinte,WindowListener ouv, KeyListener ov)). Tambm importante notar os mtodos de envio de mensagem (mensagem(Objectp1,String p2,int p3) e mensagemOpao(Object p1, String p2,int p3,int p4, Icon p5, Object[] p6, Object p7)) que serosolicitados pela classe de controle, caso necessite avisar algo ao usurio.

    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;

  • 8/3/2019 MVC Aplicacoes Desktop

    5/29

    5

    MVC (model-view-controller) Aplicaes Desktop

    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));

  • 8/3/2019 MVC Aplicacoes Desktop

    6/29

    6

    MVC (model-view-controller) Aplicaes Desktop

    lblOrgaoEmissor.setText("Orgo 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("Nmero:");

    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("Cdigo:");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;

    }

  • 8/3/2019 MVC Aplicacoes Desktop

    7/29

    7

    MVC (model-view-controller) Aplicaes Desktop

    /*** 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("Nmero da Residncia do Cliente");

    txtNumero.setDocument(new FormataTextField(6));

    }

    return txtNumero;

    }

    /**

    * This method initializes txtBairro

    *

    * @return javax.swing.JTextField

    */

  • 8/3/2019 MVC Aplicacoes Desktop

    8/29

  • 8/3/2019 MVC Aplicacoes Desktop

    9/29

    9

    MVC (model-view-controller) Aplicaes Desktop

    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");

  • 8/3/2019 MVC Aplicacoes Desktop

    10/29

    10

    MVC (model-view-controller) Aplicaes Desktop

    }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 Ao"); 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

  • 8/3/2019 MVC Aplicacoes Desktop

    11/29

    11

    MVC (model-view-controller) Aplicaes Desktop

    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) ;

  • 8/3/2019 MVC Aplicacoes Desktop

    12/29

    12

    MVC (model-view-controller) Aplicaes Desktop

    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();

  • 8/3/2019 MVC Aplicacoes Desktop

    13/29

    13

    MVC (model-view-controller) Aplicaes Desktop

    }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)

  • 8/3/2019 MVC Aplicacoes Desktop

    14/29

    14

    MVC (model-view-controller) Aplicaes Desktop

    codigo = 0;else

    codigo = Integer.parseInt(cod);

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

    else

    codigoP = 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 Invlido","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 mensagemOpao(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

    */

  • 8/3/2019 MVC Aplicacoes Desktop

    15/29

    15

    MVC (model-view-controller) Aplicaes Desktop

    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("rgo 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() {

  • 8/3/2019 MVC Aplicacoes Desktop

    16/29

    16

    MVC (model-view-controller) Aplicaes Desktop

    if (txtComplemento == null) {txtComplemento = new JTextField(); txtComplemento.setLocation(new Point(104, 164));

    txtComplemento.setSize(new Dimension(275, 16));

    txtComplemento.setToolTipText("Complemento do Endereo 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 fcil de identificar um problema e resolv-lo. Pois caso faa um classe de controle para todo o sistema, ela ficar

    enorme. Reparem, que logo no construtor ele j seta o mtodo setOuvinte() da viso e passa this como parmetro,ndicando que ele est tomando conta de qualquer solicitao que o usurio fizer na tela (tela.setOuvinte(this, this,this)).Podemos tambm notar que no mtodo actionPerformed(ActionEvent e), ele faz toda a validao, aplicando as regras denegcio, por exemplo, o cliente obrigatoriamente precisa informar o RG para ser cadastrado.f(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 viso exiba uma mensagem (tela.mensagem("Informe o RG", "Mensagem",OptionPane.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 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);}

  • 8/3/2019 MVC Aplicacoes Desktop

    17/29

    17

    MVC (model-view-controller) Aplicaes Desktop

    catch (SQLException e) {tela.mensagem("Operao no 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("Operao no 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("Operao no realizada","Aviso",JOptionPane.ERROR_MESSAGE);

    }

    }

    public void actionPerformed(ActionEvent e) {

    String comando = e.getActionCommand();

    if (comando.equals("Novo")){

    tela.limparTela();

    tela.modoConsultaPessoa();}

    else

    if(comando.equals("Incluir"))

    incluirCliente();

    else

    if(comando.equals("Cancelar"))

    {tela.limparTela();

    tela.modoInicial();}

    else

  • 8/3/2019 MVC Aplicacoes Desktop

    18/29

    18

    MVC (model-view-controller) Aplicaes Desktop

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

    else

    if(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();}

    else

    if(cl.getLogradouro().equals("") || cl.getLogradouro() == null)

    {tela.mensagem("Informe o Logradouro", "Mensagem", JOptionPane.WARNING_MESSAGE);

    tela.modoLogradouro();}

    else

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

    {tela.mensagem("Informe o Nmero", "Mensagem", JOptionPane.WARNING_MESSAGE);

    tela.modoNumero();}

    else

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

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

    tela.modoBairro();}

    else

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

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

    else

    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();}

    else

    if(cl.getOrgaoEmissor().equals("") || cl.getOrgaoEmissor() == null)

    {tela.mensagem("Informe o Orgo Emissor", "Mensagem", JOptionPane.WARNING_MESSAGE);

    tela.modoOrgaoEmissor();}

    else

  • 8/3/2019 MVC Aplicacoes Desktop

    19/29

    19

    MVC (model-view-controller) Aplicaes Desktop

    try {if(dao.buscarCliente(cl.getIdPessoa()))

    {tela.mensagem("Cliente j Cadastrado", "Mensagem", JOptionPane.WARNING_MESSAGE);

    tela.limparTela();

    tela.modoConsultaPessoa();}else

    try{

    {autoNumeracao = dao.obterIdCliente() + 1;

    cl.setCodigo(autoNumeracao);

    Object[] opcoes = {"Sim", "No" } ;

    int resp = tela.mensagemOpao("Confirma os Dados?", "Confirmao",

    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 Includo com

    Sucesso!","Aviso",JOptionPane.INFORMATION_MESSAGE) ;

    if(venda)

    {cv.inserirCliente(cl);

    tela.dispose(); }

    else

    { tela.limparTela();

    tela.modoInicial();}

    }// fim da pergunta

    }// fim do else

    }// fim do try

    catch (SQLException e) {

    tela.mensagem("Operao no 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("Operao no realizada","Aviso",JOptionPane.ERROR_MESSAGE) ;

    tela.limparTela();

    tela.modoInicial();}

    catch (Exception e) {

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

    tela.limparTela();

    tela.modoInicial();}

  • 8/3/2019 MVC Aplicacoes Desktop

    20/29

    20

    MVC (model-view-controller) Aplicaes Desktop

    else{tela.mensagem("Operao no 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();}

    else

    if(cl.getLogradouro().equals("") || cl.getLogradouro() == null)

    {tela.mensagem("Informe o Logradouro", "Mensagem", JOptionPane.WARNING_MESSAGE);tela.modoLogradouro();}

    else

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

    {tela.mensagem("Informe o Nmero", "Mensagem", JOptionPane.WARNING_MESSAGE);

    tela.modoNumero();}

    else

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

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

    tela.modoBairro();}

    else

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

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

    tela.modoTelefone();}

    else

    try {

    {

    Object[] opcoes = {"Sim", "No" } ;

    int resp = tela.mensagemOpao("Confirma os Dados?", "Confirmao", JOptionPane.DEFAULT_OPTION,

    JOptionPane.QUESTION_MESSAGE, null, opcoes, opcoes[0]);if (resp==0)

    {

    dao.alterarCliente(cl);

    tela.mensagem("Cliente " + cl.getNome() + " foi Alterado com

    Sucesso!","Aviso",JOptionPane.INFORMATION_MESSAGE) ;

    tela.limparTela();

    tela.modoInicial();

    }// fim da pegunta

    }

    } // fim do try

    catch (SQLException e) {

  • 8/3/2019 MVC Aplicacoes Desktop

    21/29

    21

    MVC (model-view-controller) Aplicaes Desktop

    tela.mensagem("Operao no 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("Operao no realizada", "Mensagem", JOptionPane.INFORMATION_MESSAGE);

    tela.limparTela();

    tela.modoInicial();

    }

    }

    public void excluirCliente() {

    cl = tela.lerCliente();

    if(cl != null && cl.getCodigo() != 0)

    {

    Object[] opcoes = {"Sim", "No" } ;

    int resp = tela.mensagemOpao("Confirma a excluso?", "Excluir", JOptionPane.DEFAULT_OPTION,

    JOptionPane.QUESTION_MESSAGE, null, opcoes, opcoes[0]);

    if (resp==0)

    {

    try {

    dao.excluirCliente(cl);

    }

    catch (SQLException e) {

    tela.mensagem("Operao no 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 Excludo com

    Sucesso!","Aviso",JOptionPane.INFORMATION_MESSAGE) ;

    tela.limparTela();

    tela.modoInicial();

  • 8/3/2019 MVC Aplicacoes Desktop

    22/29

    22

    MVC (model-view-controller) Aplicaes Desktop

    }

    }

    else

    tela.mensagem("Operao no 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();

    lista = new ArrayList();

    //lista = dao.consultarCliente(cl);

    lista = dao.consultarCliente(cl);

    }

    catch (SQLException e) {

    tela.mensagem("Operao no 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();

    }

    else

    if(lista.size() == 0)

    {tela.mensagem("Cliente no Encontrado", "Mensagem",

    JOptionPane.INFORMATION_MESSAGE);

    tela.limparTela();

  • 8/3/2019 MVC Aplicacoes Desktop

    23/29

    23

    MVC (model-view-controller) Aplicaes Desktop

    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("Operao no 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)

  • 8/3/2019 MVC Aplicacoes Desktop

    24/29

    24

    MVC (model-view-controller) Aplicaes Desktop

    {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("Operao no 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 responsvel por manipular os dados com o banco. Incluso, alterao, excluso, 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;

  • 8/3/2019 MVC Aplicacoes Desktop

    25/29

    25

    MVC (model-view-controller) Aplicaes Desktop

    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());

  • 8/3/2019 MVC Aplicacoes Desktop

    26/29

    26

    MVC (model-view-controller) Aplicaes Desktop

    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 consultarCliente(Cliente cl) throws SQLException, Exception

    { //ArrayList lista = new ArrayList();

    ArrayList lista = new ArrayList();

    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())

    {

  • 8/3/2019 MVC Aplicacoes Desktop

    27/29

    27

    MVC (model-view-controller) Aplicaes Desktop

    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

  • 8/3/2019 MVC Aplicacoes Desktop

    28/29

    28

    MVC (model-view-controller) Aplicaes Desktop

    {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

  • 8/3/2019 MVC Aplicacoes Desktop

    29/29

    29 MVC (model-view-controller) Aplicaes Desktop

    ConclusoO MVC funciona como um corpo humano. O controle o crebro, que faz todo o controle docorpo. Recebe requisies e dispara estmulos a reas especficas do corpo para atender as

    requisies. Nossas caractersticas fsicas, bem como nossa personalidade, seria o modelo, aestrutura. J nossos sentidos, como audio, viso, fala, olfato, tato e paladar seriam a viso,pois funciona como a entrada e sada de informaes (observar uma imagem, sorrir, chorar,comer).