Janela Devolução Problmas

0 respostas
E

Galera, tenho essa tela de devoluçao, na qual eu tenho um grid no qual mostra a consulta dos filmes locados, ao selecionar algum eu aperto no botao devolver, ao invés dele alterar o meu boolean dentro da tabela, ele acrescenta mais um registro, ele traz o valor corretamente da linha que selecionei, porém parece que a comparação que eu faço para ver se existe o filme na tabela não existe, desde já agradeço a ajuda.

Segue o código

package views;

import java.awt.Color;
import java.awt.Container;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.FocusEvent;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.List;

import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Query;
import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JFormattedTextField;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JScrollPane;
import javax.swing.JSeparator;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.SwingConstants;
import javax.swing.table.AbstractTableModel;
import javax.swing.table.TableColumn;

import Beans.filmes_locados;
import Beans.locacao_locadora;
import Buscas.BuscaFilmeLocado;

import com.swtdesigner.SwingResourceManager;

@SuppressWarnings("serial")
public class JanelaDevolucao1 extends JDialog {

	SimpleDateFormat format = new SimpleDateFormat("dd/MM/yyyy");
	JLabel rotulo3, rotulo10;
	JButton consultar;
	JTextField cod_cli;
	JFormattedTextField data;
	private JScrollPane scrollPane;
	private JTable tabela;
	private JButton visualizarButton;
	private JLabel nomeLabel;
	private JLabel codigoLabel;
	private JTextField nomeField;
	private JTextField codigoField;
	private boolean cancelarBusca = false;
	double valortotal = 0;

	class TableModelLocacao extends AbstractTableModel {
		private static final long serialVersionUID = 1L;

		private List<filmes_locados> filmes_locados;
		private String[] colunas = { "Código", "Titulo", "Genero", "Valor" };
		private int colSize[] = { 50, 80, 210 };

		public int getColumnCount() {
			return colunas.length;
		}

		public int getRowCount() {
			if (filmes_locados == null) {
				return 0;
			}

			return filmes_locados.size();
		}

		public Object getValueAt(int rowIndex, int columnIndex) {
			filmes_locados filme = filmes_locados.get(rowIndex);

			switch (columnIndex) {
			case 0:
				return filme.getCod_filme();
			case 1:
				return filme.getCod_filme_locado();
			case 2:
				return filme.getTitulo();
			case 3:
				return filme.getTitulo();
			default:
				return null;
			}
		}

		public Class<?> getColumnClass(int columnIndex) {
			if (columnIndex == 2) {
				if (filmes_locados != null && !filmes_locados.isEmpty()) {
					return getValueAt(0, columnIndex).getClass();
				}
			}

			return super.getColumnClass(columnIndex);
		}

		@Override
		public String getColumnName(int column) {
			return colunas[column];
		}

		public void setColumnsWidth() {
			for (int i = 0; i < colSize.length; i++) {
				TableColumn tableColumn = tabela.getColumnModel().getColumn(i);
				tableColumn.setPreferredWidth(colSize[i]);
				tableColumn.setMinWidth(colSize[i]);
			}
		}

		public void addItem(filmes_locados filme) {
			if (filmes_locados == null) {
				filmes_locados = new ArrayList<filmes_locados>();
			}

			filmes_locados.add(filme);

			tabela.updateUI();
		}

		public filmes_locados getItem(int index) {
			return filmes_locados.get(index);
		}

		public void setItems(List<filmes_locados> list) {
			filmes_locados = list;

			tabela.updateUI();
		}

		public List<filmes_locados> getItems() {
			return filmes_locados;
		}

		public void removeItem(int index) {
			if (filmes_locados != null) {
				filmes_locados.remove(index);
			}

			tabela.updateUI();
		}

		public void removeItem(Object o) {
			if (filmes_locados != null) {
				filmes_locados.remove(o);
			}

			tabela.updateUI();
		}

		public void removeAll() {
			filmes_locados = null;

			tabela.updateUI();
		}
	}

	private static EntityManagerFactory f = null;

	public JanelaDevolucao1(EntityManagerFactory f1) {

		this.setTitle("Devolução");
		getContentPane().setForeground(new Color(30, 144, 255));
		getContentPane().setLayout(null);
		Container tela = getContentPane();
		setLayout(null);

		f = f1;

		tela.setBackground(new Color(181, 181, 181));
		rotulo3 = new JLabel("Código do Filme:");
		rotulo10 = new JLabel("");
		cod_cli = new JTextField(5);

		scrollPane = new JScrollPane();
		scrollPane.setBackground(Color.WHITE);
		scrollPane.setBounds(163, 217, 427, 105);
		getContentPane().add(scrollPane);

		final JLabel label_4 = new JLabel();
		label_4.setText("Cód. locação");
		label_4.setBounds(34, 146, 88, 14);
		getContentPane().add(label_4);

		final JLabel cod_locacao = new JLabel();
		cod_locacao.setBounds(128, 146, 54, 14);
		getContentPane().add(cod_locacao);

		final JLabel clienteLabel = new JLabel();
		clienteLabel.setText("Cliente");
		clienteLabel.setBounds(285, 146, 54, 14);
		getContentPane().add(clienteLabel);

		final JLabel label_5 = new JLabel();
		label_5.setBounds(330, 146, 100, 14);
		getContentPane().add(label_5);

		final JLabel label_7 = new JLabel();
		label_7.setText("Data Locação");
		label_7.setBounds(543, 146, 73, 14);
		getContentPane().add(label_7);

		final JLabel label_8 = new JLabel();
		label_8.setBounds(622, 146, 88, 14);
		getContentPane().add(label_8);

		visualizarButton = new JButton();
		visualizarButton.setIcon(SwingResourceManager.getIcon(JanelaDevolucao1.class, "/picture/OKShield-32.png"));
		visualizarButton.addActionListener(new ActionListener() {
			public void actionPerformed(final ActionEvent e) {

				if (!cod_cli.getText().trim().equals("")) {

					EntityManager me = f.createEntityManager();

					locacao_locadora film = new locacao_locadora();

					//
					// <<<<<< Localizando o Registro no Banco = FIND >>>>>
					//
					film = me.find(locacao_locadora.class, Integer.parseInt(cod_cli.getText().trim()));

					if (film != null) {

						cod_locacao.setText(String.valueOf(film.getCod_loc()));
						label_5.setText(String.valueOf(film.getCod_cli()));
						label_8.setText(film.getData_loc());

					}

				} else {
					JOptionPane.showMessageDialog(null, "Título não encontrado!");

					cod_cli.requestFocus();

				}

				buscarAction();
			}
		});
		visualizarButton.setBounds(282, 47, 31, 23);
		getContentPane().add(visualizarButton);
		consultar = new JButton("");

		rotulo3.setBounds(37, 40, 100, 30);
		rotulo10.setBounds(526, 51, 144, 30);

		cod_cli.setBounds(142, 43, 100, 25);

		consultar.setIcon(SwingResourceManager.getIcon(JanelaFuncionario.class, "/picture/lupa.jpg"));
		consultar.setBounds(248, 47, 28, 23);
		tela.add(rotulo3);
		tela.add(rotulo10);
		tela.add(cod_cli);
		tela.add(consultar);
		//	   	 DESABILITAM-SE ALGUNS BOTÕES 
		consultar.setEnabled(true);

		setSize(765, 431);

		setLocationRelativeTo(null);// CENTRALIZA A JANELA 

		//	 Ações Botões

		consultar.addActionListener(new ActionListener() {
			public void actionPerformed(final ActionEvent arg0) {
				BuscaFilmeLocado filme = new BuscaFilmeLocado(f);
				filme.setModal(true);
				filme.setVisible(true);

				locacao_locadora film = filme.getFilmeLocadoSelecionado();

				if (film != null) {
					cod_cli.setText("");

					cod_cli.setText(String.valueOf(film.getCod_cli()));

					cod_cli.requestFocus();
				}
			}
		});

		final JSeparator separator = new JSeparator();
		separator.setBounds(142, 10, 581, 8);
		getContentPane().add(separator);

		final JSeparator separator_1 = new JSeparator();
		separator_1.setOrientation(SwingConstants.VERTICAL);
		separator_1.setBounds(23, 15, 11, 72);
		getContentPane().add(separator_1);

		final JSeparator separator_3 = new JSeparator();
		separator_3.setBounds(23, 87, 700, 20);
		getContentPane().add(separator_3);

		final JLabel label_3 = new JLabel();
		label_3.setBounds(10, 10, 105, 14);
		separator_3.add(label_3);
		label_3.setFont(new Font("Dialog", Font.BOLD, 12));
		label_3.setText("Dados locação");

		final JLabel label = new JLabel();
		label.setFont(new Font("Dialog", Font.BOLD, 12));
		label.setText("Pesquisa Locação");
		label.setBounds(32, 10, 105, 14);
		getContentPane().add(label);

		final JSeparator separator_1_1 = new JSeparator();
		separator_1_1.setOrientation(SwingConstants.VERTICAL);
		separator_1_1.setBounds(723, 15, 11, 72);
		getContentPane().add(separator_1_1);

		final JSeparator separator_3_1 = new JSeparator();
		separator_3_1.setBounds(124, 113, 599, 20);
		getContentPane().add(separator_3_1);

		tabela = new JTable();
		scrollPane.setViewportView(tabela);
		tabela.setModel(new TableModelLocacao());
		TableModelLocacao tmb = (TableModelLocacao) tabela.getModel();
		tmb.setColumnsWidth();

		final JLabel label_3_1 = new JLabel();
		label_3_1.setFont(new Font("Dialog", Font.BOLD, 12));
		label_3_1.setText("Dados locação");
		label_3_1.setBounds(32, 108, 105, 14);
		getContentPane().add(label_3_1);

		final JSeparator separator_1_2 = new JSeparator();
		separator_1_2.setOrientation(SwingConstants.VERTICAL);
		separator_1_2.setBounds(23, 115, 11, 72);
		getContentPane().add(separator_1_2);

		final JSeparator separator_3_1_1 = new JSeparator();
		separator_3_1_1.setBounds(23, 182, 700, 8);
		getContentPane().add(separator_3_1_1);

		final JSeparator separator_1_1_1 = new JSeparator();
		separator_1_1_1.setOrientation(SwingConstants.VERTICAL);
		separator_1_1_1.setBounds(721, 113, 2, 72);
		getContentPane().add(separator_1_1_1);

		final JButton devolverButton = new JButton();
		devolverButton.addActionListener(new ActionListener() {
			public void actionPerformed(final ActionEvent arg0) {

				filmes_locados result;

				TableModelLocacao modelLocacao = (TableModelLocacao) tabela.getModel();
				result = modelLocacao.getItem(tabela.getSelectedRow());

				if (result != null) {

					List<filmes_locados> filme = new ArrayList<filmes_locados>();
					EntityManager em = f.createEntityManager();

					filmes_locados film = getFilmeEntregueSelecionado();

					if (film != null) {
						int cod_filme = 0;

						cod_filme = film.getCod_filme();
						JOptionPane.showMessageDialog(null, "Filme devolvido" + cod_filme);

						filmes_locados d = new filmes_locados();

						StringBuilder jpql = new StringBuilder("SELECT p FROM filmes_locados p WHERE p.cod_filme_locado =" + cod_filme);//("SELECT p FROM cliente_locadora p WHERE p.cod_cli = ? OR p.nome_cli LIKE ?" );

						try {
							EntityManager em1 = f.createEntityManager();
							Query query = em1.createQuery(jpql.toString());
							filme = query.getResultList();
						} catch (Exception e) {
							JOptionPane.showMessageDialog(null, "Cai no erro!");
							e.printStackTrace();
						}

						if (filme != null) {

							for (filmes_locados filme1 : filme) {// {filme.equals(cod_filme);
								d.setEntregue(true);

								em.getTransaction().begin();
								//
								// <<<<< Comando para Alteração = MERGE >>>>>
								//
								em.merge(d);
								em.getTransaction().commit();

								JOptionPane.showMessageDialog(null, "Filme devolvido");
							}
						}

						else

							JOptionPane.showMessageDialog(null, "Erro!");

					}

					else
						JOptionPane.showMessageDialog(null, "Problemas!");
				}
			}
		});
		devolverButton.setIcon(SwingResourceManager.getIcon(JanelaDevolucao1.class, "/picture/OKShield-32.png"));
		devolverButton.setText("Devolver");
		devolverButton.setBounds(622, 351, 113, 23);
		getContentPane().add(devolverButton);

	}

	private void buscarAction() {
		TableModelLocacao modelLocacao = (TableModelLocacao) tabela.getModel();

		List<filmes_locados> filmes_locados;

		filmes_locados = buscarFilmePorParametros(Integer.parseInt(cod_cli.getText()));

		if (filmes_locados != null && !filmes_locados.isEmpty()) {

			for (filmes_locados filmes_locados1 : filmes_locados) {
				modelLocacao.addItem(filmes_locados1);

			}

			tabela.setRowSelectionInterval(0, 0);
			tabela.requestFocus();
		} else {
			JOptionPane.showMessageDialog(null, "Cai no else!");
		}

	}

	public void focusGained(final FocusEvent arg0) {
		// TODO Auto-generated method stub

	}

	@SuppressWarnings("unchecked")
	public List<filmes_locados> buscarFilmePorParametros(Integer cod_cli) {

		List<filmes_locados> filme = new ArrayList<filmes_locados>();

		StringBuilder jpql = new StringBuilder("SELECT p FROM filmes_locados p WHERE p.cod_cli IS NOT NULL");
		if (cod_cli != null && !cod_cli.equals("")) {
			jpql.append(" AND p.cod_cli = " + cod_cli);

		}

		else {
			JOptionPane.showMessageDialog(null, "Filme não locado!");
		}

		try {
			EntityManager em = f.createEntityManager();
			Query query = em.createQuery(jpql.toString());
			filme = query.getResultList();
		} catch (Exception e) {
			JOptionPane.showMessageDialog(null, "Cai no erro!");
			e.printStackTrace();
		}

		return filme;

	}

	public filmes_locados getFilmeEntregueSelecionado() {
		filmes_locados result;

		if (!cancelarBusca) {
			TableModelLocacao modelLocacao = (TableModelLocacao) tabela.getModel();
			result = modelLocacao.getItem(tabela.getSelectedRow());
		} else {
			JOptionPane.showMessageDialog(null, "Erro!");
			result = null;
		}

		return result;
	}
	//	public static void main(String args[]) {
	//
	//		JanelaLocacao app = new JanelaLocacao(f);
	//
	//		app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	//
	//	}

}
Criado 8 de dezembro de 2009
Respostas 0
Participantes 1