| Home | Sobre | Contatos |

 

 

java para dispositivos móveis
desenvolvendo aplicações com j2me

| Home | Livro J2ME | Exemplos do livro | Contatos |

Login Form





Esqueceu sua senha?
Sem conta? Crie uma

Syndicate

Capítulo 15 - VendaRemota.java PDF Imprimir E-mail

By Thienne M Johnson, on 09-12-2007 15:42


/*
Java para Dispositivos Móveis - Desenvolvendo aplicações com J2ME
por Thienne M. Johnson
Novatec Editora LTDa
ISBN: 978-85-7522-143-3
*/

package principal;

import conexao.GetPostRegistros;
import javax.microedition.midlet.*;  
import javax.microedition.lcdui.*;  

import java.util.Vector;
import javax.microedition.rms.*;

import rms.RmsVenda;

public class VendaRemota extends MIDlet implements CommandListener, Runnable {  
       private Display display;  
       private List telaInicial, telaClientes, telaProdutos, telaPedidos;
       private Alert alerta;
       private Command sair, sobre, voltar, salvar, novo, apagar;  
       private Form adicionarCliente, adicionarProduto, adicionarPedido, telaInformacoes;
       private TextField tfCliente, tfProduto, tfQuantidade, tfPreco;
       private Vector vecClientes, vecProdutos, vecPedidos = null;
       boolean deletedFlags[] = null;
       private ChoiceGroup clientesCG, produtosCG;
       boolean gravacaoOK = false;
   
    //RMS   
       private RmsVenda rmsPedidos, rmsClientes, rmsProdutos;
       private RecordStore RSPedidos, RSClientes, RSProdutos;
       private String BDClientes = "BancoClientes";
       private String BDPedidos = "BancoPedidos";
       private String BDProdutos = "BancoProdutos";

    //Conexao com Servlet
       private GetPostRegistros  conClientes;
      private Thread t = null;
    
       public VendaRemota(){  
               display  = Display.getDisplay(this);  
               sair = new Command("Sair", Command.EXIT, 0);
               voltar = new Command ("Voltar", Command.BACK, 0);
               salvar = new Command( "Salvar", Command.OK, 1);
               apagar = new Command("Apagar", Command.OK, 1);
           novo = new Command("Novo", Command.OK, 1);
           sobre = new Command ("Sobre", Command.HELP,1);
       
               telaInicial = new List( "Sistema de Venda Remota", Choice.IMPLICIT );
               telaInicial.append("Clientes",null);
               telaInicial.append("Produtos",null);
               telaInicial.append("Pedidos",null);  
               telaInicial.append("Transmitir dados",null);
               telaInicial.append("Zerar Registros",null);
               telaInicial.append("Estatísticas",null);
               telaInicial.addCommand(sair);
               telaInicial.addCommand(sobre);  
               telaInicial.setCommandListener(this);       
          
               telaClientes = new List("Cadastro de Clientes", Choice.MULTIPLE);        
               telaClientes.addCommand(voltar);  
               telaClientes.addCommand(novo);
               telaClientes.addCommand(apagar);
               telaClientes.setCommandListener(this);

               telaProdutos = new List("Cadastro de Produtos", Choice.MULTIPLE);        
               telaProdutos.addCommand(voltar);  
               telaProdutos.addCommand(novo);
               telaProdutos.addCommand(apagar);
               telaProdutos.setCommandListener(this);

               telaPedidos = new List("Cadastro de Pedidos", Choice.MULTIPLE);        
               telaPedidos.addCommand(voltar);
               telaPedidos.addCommand(novo);
               telaPedidos.addCommand(apagar);
               telaPedidos.setCommandListener(this);

               adicionarCliente = new Form ("Adicione novo cliente");
               tfCliente = new TextField ("Nome do Cliente","",20, TextField.ANY);
               adicionarCliente.append(tfCliente);
               adicionarCliente.addCommand(salvar);
               adicionarCliente.addCommand(voltar);
               adicionarCliente.setCommandListener(this);

               adicionarProduto = new Form ("Adicione novo produto");
               tfProduto = new TextField ("Nome do Produto","",20, TextField.ANY);
               tfPreco = new TextField ("Preco Unitario","",7, TextField.ANY);
               adicionarProduto.append(tfProduto);
               adicionarProduto.append(tfPreco);
               adicionarProduto.addCommand(salvar);
               adicionarProduto.addCommand(voltar);
               adicionarProduto.setCommandListener(this);
       
              adicionarPedido = new Form ("Adicione novo pedido");
              String[] strings = new String[] { "" };
              clientesCG = new ChoiceGroup("Clientes cadastrados", ChoiceGroup.POPUP, strings, null);
               produtosCG = new ChoiceGroup("Produtos cadastrados", ChoiceGroup.POPUP, strings, null);
               tfQuantidade = new TextField("Quantidade","",3, TextField.NUMERIC);
               adicionarPedido.append(clientesCG);
               adicionarPedido.append(produtosCG);
               adicionarPedido.append(tfQuantidade);
               adicionarPedido.addCommand(salvar);
               adicionarPedido.addCommand(voltar);
               adicionarPedido.setCommandListener(this);
       
           rmsPedidos = new RmsVenda();
           rmsClientes = new RmsVenda();
           rmsProdutos = new RmsVenda();
           telaInformacoes = new Form ("Estatísticas do sistema");
           telaInformacoes.addCommand(voltar);
           telaInformacoes.setCommandListener(this);
       }  

       public void startApp() {  
        display.setCurrent(telaInicial);
           RSPedidos  = rmsPedidos.abrirRecordStore(BDPedidos);
           RSClientes = rmsClientes.abrirRecordStore(BDClientes);
           RSProdutos = rmsProdutos.abrirRecordStore(BDProdutos);
           vecClientes = rmsClientes.listarRegistros(RSClientes);
           vecProdutos = rmsProdutos.listarRegistros(RSProdutos);
           vecPedidos  = rmsPedidos.listarRegistros(RSPedidos);
       }  

       public void gerenciarClientes(){
        vecClientes = rmsClientes.listarRegistros(RSClientes);
           gerarTela(vecClientes, telaClientes);
           display.setCurrent(telaClientes);
       }

       public void gerenciarProdutos(){
        vecProdutos = rmsProdutos.listarRegistros(RSProdutos);
           gerarTela(vecProdutos, telaProdutos);
           display.setCurrent(telaProdutos);
       }

       public void gerenciarPedidos(){
            vecPedidos  = rmsPedidos.listarRegistros(RSPedidos);
            gerarTela(vecPedidos, telaPedidos);
            display.setCurrent(telaPedidos);
       }

       private void gerarTela(Vector vecNomes, List tela){
        tela.deleteAll();
        for (int i = 0; i < vecNomes.size(); i++) {
            if (tela.getTitle()=="Cadastro de Clientes"){
                Clientes item = (Clientes)vecNomes.elementAt(i);
                String nome = item.getNome();
                tela.append(nome, null);
            }else if (tela.getTitle()=="Cadastro de Produtos"){
                Produtos item = (Produtos)vecNomes.elementAt(i);
                String nome = item.getNome();
                float preco = item.getPreco();
                tela.append(nome+" R$"+preco, null);
            }else{
                Pedidos item = (Pedidos)vecNomes.elementAt(i);
                String cliente = item.getCliente();
                String produto = item.getProduto();
                int quantidade = item.getQuantidade();
                tela.append(cliente+" "+produto+" "+quantidade, null);
            }
        }
        testarComandoApagar(tela);
        display.setCurrent(tela);    
    }

       private void testarComandoApagar(List tela){
           if ((tela.getString(0)).regionMatches(true, 8, "não cadastrados", 0, 15)){
            Ticker ticker = new Ticker ("Nenhum registro encontrado neste cadastro");
               tela.setTicker(ticker);
               tela.removeCommand(apagar);
           }else if ((tela.getString(0)).regionMatches(true, 9, "não cadastrados", 0, 15)){
            Ticker ticker = new Ticker ("Nenhum registro encontrado neste cadastro");
            tela.setTicker(ticker);
            tela.removeCommand(apagar);
          }else{
            tela.addCommand(apagar);
            tela.setTicker(null);
        }
      }
 
    private void testarComandoSalvar(Displayable d){
        if (d == adicionarCliente){
            if (tfCliente.size() != 0){
                gravacaoOK = true;
               }
           }else if (d == adicionarProduto){
            if ((tfProduto.size() != 0) && (tfPreco.size() != 0)){
                gravacaoOK = true;
               }
           }else if (d == adicionarPedido){
            if ((clientesCG.getString(0)== "Clientes não cadastrados") || ((produtosCG.getString(0))=="Produtos não cadastrados") || (tfQuantidade.size()==0)) {
                   gravacaoOK = false;
               }else
                gravacaoOK=true;
           }
       }

       public void pauseApp() { }  
      
       public void destroyApp(boolean unconditional) {
        rmsPedidos.closeRecordStore(RSPedidos);
           rmsClientes.closeRecordStore(RSClientes);
           rmsProdutos.closeRecordStore(RSProdutos);
           notifyDestroyed();
       }     

       private void zerarRegistros(){
          rmsClientes.zerarRegistros(RSClientes, "BancoClientes");
          rmsProdutos.zerarRegistros(RSProdutos, "BancoProdutos");
          rmsPedidos.zerarRegistros(RSPedidos, "BancoPedidos");
         RSPedidos  = rmsPedidos.abrirRecordStore(BDPedidos);
         RSClientes = rmsClientes.abrirRecordStore(BDClientes);
         RSProdutos = rmsProdutos.abrirRecordStore(BDProdutos);
         vecProdutos.removeAllElements();
         vecClientes.removeAllElements();
         vecPedidos.removeAllElements();
         vecClientes = rmsClientes.listarRegistros(RSClientes);
         vecProdutos = rmsProdutos.listarRegistros(RSProdutos);
         vecPedidos  = rmsPedidos.listarRegistros(RSPedidos);
         mostrarAlerta("Registros zerados", "Bancos de dados apagados");
           display.setCurrent(alerta, telaInicial);
       }

       private void mostrarInformacoes(RecordStore rs){
        try{
            String nomeRs = rs.getName();
            String numero = Integer.toString(rs.getNumRecords());
            String tamanho = Integer.toString(rs.getSize());
                  String disponivel = Integer.toString(rs.getSizeAvailable());
            StringItem nomeSI = new StringItem ("Nome do RecordStore", nomeRs);
            StringItem tamanhoOc = new StringItem ("Tamanho ocupado (em bytes)", tamanho.toString());
            StringItem numeroReg = new StringItem ("Número de registros existentes", numero);
                StringItem tamanhoDis = new StringItem ("Tamanho disponível (em bytes)", disponivel);
            telaInformacoes.append(nomeSI);
            telaInformacoes.append(tamanhoOc);
            telaInformacoes.append(numeroReg);
            telaInformacoes.append(tamanhoDis);
        }
        catch (Exception exc) {}
    }

       private void mostrarAlerta(String tipoAlerta, String msg){
        alerta = new Alert(tipoAlerta, msg, null, AlertType.WARNING);
              alerta.setTimeout(Alert.FOREVER);
    }

       public void commandAction(Command c, Displayable d){  
            if (c == List.SELECT_COMMAND){
                String selection = telaInicial.getString(telaInicial.getSelectedIndex());
                 if (selection == "Clientes"){
                     gerenciarClientes();
                 }else if(selection == "Produtos"){
                    gerenciarProdutos();
                 }else if(selection == "Pedidos"){
                    gerenciarPedidos();
                 }else if(selection == "Zerar Registros"){
                    zerarRegistros();                
                 }else if(selection == "Estatísticas"){
                    mostrarInformacoes(RSClientes);                
                     mostrarInformacoes(RSProdutos);
                     mostrarInformacoes(RSPedidos);
                      display.setCurrent(telaInformacoes);
                 }else if (selection == "Transmitir dados"){
                    connectThreadClientes();
                 }
             } else if (c==sair) {
                       destroyApp(true);    
                }else if (c == sobre) {    
                    String m1 = ("Livro Desenvolvendo para Dispositivos Móveis\n");
                       String m2 = ("Autora Thienne M Johnson\n");
                       String m3 = ("Editora Novatec\n");
                    mostrarAlerta("Sobre",m1+m2+m3);
                    display.setCurrent(alerta,  telaInicial);
                }else if (c==novo){
                    if (d == telaClientes){
                        tfCliente.setString("");
                        display.setCurrent(adicionarCliente);
                    }else if (d == telaProdutos){
                       tfProduto.setString("");
                      tfPreco.setString("");
                      display.setCurrent(adicionarProduto);
                    }else if (d == telaPedidos){
                       tfQuantidade.setString("");
                       clientesCG.deleteAll();
                       produtosCG.deleteAll();
                       for (int i = 0; i < vecClientes.size(); i++) {
                        Clientes item = (Clientes)vecClientes.elementAt(i);
                        String nome = item.getNome();
                        clientesCG.append(nome, null);
                       }
                       for (int i = 0; i < vecProdutos.size(); i++) {
                           Produtos item = (Produtos)vecProdutos.elementAt(i);
                           String nome = item.getNome();
                           produtosCG.append(nome, null);
                      }
                       display.setCurrent(adicionarPedido);
                    }
                }else if (c==salvar) {
                   testarComandoSalvar(display.getCurrent());
                    if (gravacaoOK == false){
                        mostrarAlerta("Aviso", "Registro vazio não será salvo\n"+"Tente novamente");
                       display.setCurrent(alerta, display.getCurrent());
                    }else {
                    if (d == adicionarCliente){
                               rmsClientes.adicionarRegistroClientes(RSClientes, tfCliente.getString());
                                   vecClientes = rmsClientes.listarRegistros(RSClientes);
                                   tfCliente.setString("");
                       }else if (d == adicionarProduto){
                                rmsProdutos.adicionarRegistroProdutos(RSProdutos, tfProduto.getString(), Float.parseFloat(tfPreco.getString()));
                                   vecProdutos  = rmsProdutos.listarRegistros(RSProdutos);
                                   tfProduto.setString("");
                                tfPreco.setString("");
                       }else if (d == adicionarPedido){
                            rmsPedidos.adicionarRegistroPedido(RSPedidos, clientesCG.getString(clientesCG.getSelectedIndex()), produtosCG.getString(produtosCG.getSelectedIndex()), Integer.parseInt(tfQuantidade.getString()));
                           vecPedidos  = rmsPedidos.listarRegistros(RSPedidos);
                              tfQuantidade.setString("");
                       }
                       gravacaoOK=false;
                       display.setCurrent(telaInicial);
                   }                
                 }else if (c==apagar){
                     if (d == telaClientes){
                        deletedFlags = new boolean[telaClientes.size()];
                        telaClientes.getSelectedFlags(deletedFlags);
                           rmsClientes.apagarRegistros(RSClientes, vecClientes, deletedFlags);
                           vecClientes = rmsClientes.listarRegistros(RSClientes);                           
                    }else if (d == telaProdutos){
                        deletedFlags = new boolean[telaProdutos.size()];
                        telaProdutos.getSelectedFlags(deletedFlags);
                           rmsProdutos.apagarRegistros(RSProdutos, vecProdutos, deletedFlags);
                           vecProdutos  = rmsProdutos.listarRegistros(RSProdutos);
                    }else if (d == telaPedidos){
                        deletedFlags = new boolean[telaPedidos.size()];
                        telaPedidos.getSelectedFlags(deletedFlags);
                           rmsPedidos.apagarRegistros(RSPedidos, vecPedidos, deletedFlags);
                            vecPedidos  = rmsPedidos.listarRegistros(RSPedidos);
                    }
                   display.setCurrent(telaInicial);
                 }else if (c==voltar){
                   if (d == adicionarPedido){
                       display.setCurrent(telaPedidos);
                   }else{
                       display.setCurrent(telaInicial);
                   }
            }    
        }
      
       private void connectThreadClientes(){
         t = new Thread(this);
             t.start();
       }

    public void run(){
        try{
            conectarEnviarPedidos();
        }catch (Exception e){}
    }

    private void conectarEnviarPedidos(){
          String url_servidor ="http://localhost:8080/VendaRemotaServlet/RecebePedidos";
          conClientes = new GetPostRegistros(url_servidor);
          String mensagem;
          try{
              mensagem = conClientes.enviarRegistros(vecPedidos);
              if (mensagem == null){
                  mensagem = "Erro de comunicação com o servlet";
              }
              mostrarAlerta("Resposta do Servlet", mensagem);
                  display.setCurrent(alerta, telaInicial);
          }catch (Exception e){}
          display.setCurrent(telaInicial);
      }
}

   

Users' Comments  
 

Average user rating

   (0 voto)

 


Adicionar comentário
Apenas utilizadores registados podem comentar um artigo.

Nenhum comentário



mXcomment 1.0.5 © 2007-2010 - visualclinic.fr
License Creative Commons - Some rights reserved
 
< Anterior   Próximo >

Advertisement
2008- Todos os direitos reservados - Profa. Thienne Johnson
Desenvolvido por datamazon