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