• Nenhum resultado encontrado

Capítulo 15 - VendaRemota.java

N/A
N/A
Protected

Academic year: 2022

Share "Capítulo 15 - VendaRemota.java"

Copied!
6
0
0

Texto

(1)

Capítulo 15 - VendaRemota.java

/*

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

http://j2me.datamazon.com Fornecido por Joomla! Produzido em: 30 June, 2016, 14:20

(2)

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

http://j2me.datamazon.com Fornecido por Joomla! Produzido em: 30 June, 2016, 14:20

(3)

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

http://j2me.datamazon.com Fornecido por Joomla! Produzido em: 30 June, 2016, 14:20

(4)

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

http://j2me.datamazon.com Fornecido por Joomla! Produzido em: 30 June, 2016, 14:20

(5)

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

http://j2me.datamazon.com Fornecido por Joomla! Produzido em: 30 June, 2016, 14:20

(6)

}

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

} }

http://j2me.datamazon.com Fornecido por Joomla! Produzido em: 30 June, 2016, 14:20

Referências

Documentos relacionados

2 RELATÓRIO SOBRE A PETIÇÃO N. Da agenda da reunião constava a apreciação e relato, em execução do solicitado por Sua Excelência a Presidente da Assembleia Legislativa, da

b) A partir dos dados anteriores, do resultado obtido e comprimento do tubo de junção real de 20cm (desprezando os joelhos), encontre o tamanho do tubo a

Nesta Nota Legislativa, o DIAP elaborou dois quadros com a relação dos 27 Destaques para Votação em Separado (DVS) de caráter supressivos e os sobre as emendas apresentadas à

Na população total do estudo, dos 1501 pacientes, 1472 pacientes foram tratados; 496 receberam Fragmin® (primeira dose antes da cirurgia), 487 receberam Fragmin® (primeira dose após

Os resultados indicam que pode ocorrer uma leve acumulação de nadroparina em pacientes com insuficiência renal leve a moderada (clearance de creatinina maior ou igual a 30 mL/min e

Em relação aos questionários aplicados, pode-se observar que durante o período da manhã as salas de aula são consideradas aceitáveis pelos usuários, não ocasionando nenhum tipo

assevera “Compete à União desapropriar por interes- se social, para fins de reforma agrária, o imóvel rural que não esteja cumprindo sua função social, mediante prévia e

Aplicação de padrões de projetos existentes ou específicos para a plataforma Java ME em aplicações móveis.. Desenvolvimento de sistemas e aplicativos nas plataformas J2ME e