Package br.com.moonjava.flight.controller.base

Source Code of br.com.moonjava.flight.controller.base.ConsultarVooController$VenderPassagemHandler

/*
* Copyright 2012 MoonJava LTDA.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package br.com.moonjava.flight.controller.base;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.util.ArrayList;
import java.util.List;
import java.util.ResourceBundle;

import javax.swing.JButton;
import javax.swing.JPanel;
import javax.swing.JTable;
import javax.swing.UIManager;

import org.joda.time.DateTime;

import br.com.moonjava.flight.model.base.Status;
import br.com.moonjava.flight.model.base.Voo;
import br.com.moonjava.flight.model.base.VooModel;
import br.com.moonjava.flight.util.FormatDateTime;
import br.com.moonjava.flight.util.RequestParamWrapper;
import br.com.moonjava.flight.view.voo.ConsultarVooUI;

/**
* @version 1.0 Aug 29, 2012
* @contact tiago.aguiar@moonjava.com.br
*
*/
public class ConsultarVooController extends ConsultarVooUI {

  private final JPanel conteudo;
  private final ResourceBundle bundle;
  private JButton atualizar;
  private JButton deletar;
  private JButton status;

  private List<Voo> list;
  private final List<Voo> voos = new ArrayList<Voo>();

  public ConsultarVooController(JPanel conteudo,
                                ResourceBundle bundle,
                                JButton atualizar,
                                JButton deletar,
                                JButton status) {
    super(conteudo, bundle, atualizar, deletar, status);
    this.conteudo = conteudo;
    this.bundle = bundle;
    this.atualizar = atualizar;
    this.deletar = deletar;
    this.status = status;

    addConsultarListener(new ConsultarHandler());
    addItemTableSelectedListener(new ItemTableSelectedHandler());
    addVenderPassagemListener(new VenderPassagemHandler());
  }

  /*
   * Construtor apenas para consultar voo vinda de vender passagem
   */
  public ConsultarVooController(JPanel conteudo, ResourceBundle bundle) {
    super(conteudo, bundle, true);

    this.conteudo = conteudo;
    this.bundle = bundle;
    addConsultarListener(new ConsultarHandler());
    addItemTableSelectedListener(new ItemTableSelectedPassagemHandler());
    addVenderPassagemListener(new VenderPassagemHandler());
  }

  private class ConsultarHandler implements ActionListener {

    @Override
    public void actionPerformed(ActionEvent e) {
      RequestParamWrapper request = getParameters();
      String partida = request.stringParam("partida");
      String chegada = request.stringParam("chegada");

      String country = getCountry();
      String _partida = null;
      String _chegada = null;

      // Teste para atribuir o padrão AM e PM
      if (country.equals("US")) {
        String timePartida = request.stringParam("timePartida");
        String timeChegada = request.stringParam("timeChegada");

        _partida = String.format("%s %s", partida, timePartida);
        _chegada = String.format("%s %s", chegada, timeChegada);
      } else {
        _partida = partida;
        _chegada = chegada;
      }

      int index = request.intParam("status");
      Status[] values = Status.values();
      Status _status = values[index];

      // Mascara padrão para a data
      String maskEmpty = "  /  /       :  ";
      DateTime dataPartida = null;
      DateTime dataChegada = null;

      if (!_partida.startsWith(maskEmpty)) {
        dataPartida = FormatDateTime.parseToDateTime(_partida, country);
      }

      if (!_chegada.startsWith(maskEmpty)) {
        dataChegada = FormatDateTime.parseToDateTime(_chegada, country);
      }

      request.set("partida", dataPartida);
      request.set("chegada", dataChegada);
      request.set("status", _status);

      // Exibe os vôos
      list = new VooModel().consultar(request);
      boolean isEmpty = showList(list);

      if (isEmpty) {
        messageFailed();
      } else {
        repaint();
      }
    }
  }

  private class ItemTableSelectedHandler extends MouseAdapter {
    @Override
    public void mouseClicked(MouseEvent e) {
      enableButtons();
      JTable tabela = getTable();

      // Os controladores de Deletar, Atualizar e Controlar Status
      // são objetos Singleton pois a cada evento (mouseClicked)
      // um objeto seria instanciado, ocasionando a ação
      // dos JOptionPane (definidos nestas classes) mais de uma vez.
      // Ex.: Deletar mais de um item sem um Singleton executará a JOptionPane
      // em questão a mesma quantidade de clicks (isso porque o HashCode de cada
      // objeto é diferente). Com Singleton, isso não ocorrerá porque há somente
      // um HashCode, logo, há somente um JOptionPane.
      DeletarVooController delete = DeletarVooController.getInstance();
      delete.setAttributes(tabela, conteudo, bundle, atualizar, deletar, status);
      delete.setResult(false);
      delete.setList(list);

      AtualizarVooController atualiza = AtualizarVooController.getInstance();
      atualiza.setAttributes(tabela, conteudo, bundle, atualizar, deletar, status);
      atualiza.setResult(false);
      atualiza.setList(list);

      ControlarStatusController ctrlStatus = ControlarStatusController.getInstance();
      ctrlStatus.setAttributes(tabela, list, conteudo, bundle);
      ctrlStatus.setResult(false);
      status.addActionListener(ctrlStatus);
    }
  }

  /*
   * Usado somente na tela de vender passagem
   *
   */
  private class ItemTableSelectedPassagemHandler extends MouseAdapter {

    private boolean flag;

    @Override
    public void mouseClicked(MouseEvent e) {
      if (e.getClickCount() == 2) {
        int[] rows = getTable().getSelectedRows();
        if (rows.length == 1) {
          voos.add(list.get(rows[0]));
          // Verifica se o voo é de ida e volta
          int res = 0;
          if (!flag) {
            res = messagePassagemIdaVolta();
          }
          if (res == 2) {
            addVoo();
          }
          if (res != 2 && flag) {
            if (voos.get(0).getId() != voos.get(1).getId()) {
              addVoo();
            } else {
              voos.remove(1);
            }
          }
          flag = true;
        } else {
          messageSelectFailed();
        }
      }
    }

    // Substitui os nomes padrões dos OptionPane
    private void addVoo() {
      new VenderPassagemController(conteudo, bundle, voos);
      UIManager.put("OptionPane.okButtonText", "Ok");
      UIManager.put("OptionPane.cancelButtonText", "Cancel");
    }

  }

  private class VenderPassagemHandler implements ActionListener {
    @Override
    public void actionPerformed(ActionEvent e) {
      // busca voo selecionada
      int[] rows = getTable().getSelectedRows();
      if (rows.length == 1) {
        voos.add(list.get(rows[0]));
        new VenderPassagemController(conteudo, bundle, voos);
      } else {
        messageSelectFailed();
      }
    }
  }

}
TOP

Related Classes of br.com.moonjava.flight.controller.base.ConsultarVooController$VenderPassagemHandler

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.