Comprendre le liant entre DAO et Tableabstract Model
Bonjour,
Je me suis lancé dans le java pour mettre un point une petite application pour m'aider à gérer mon stock de livres. J'utilise donc les différents tuto pour intégrer les fondamentaux.
Là je suis sur les concepts de DAO et de abstracttablemodel, dans l'objectif de faire afficher une liste de livres à partir d'un mot clé dans un champ de recherche. Cela fonctionne sans modele DAO et avec un defauttablemodel, mais j'aimerai comprendre ce concept, pour avoir les bons réflexes d'optimisation.
Est ce qu'il est pertinent de l'utiliser même pour un table de faible complexité ? J'ai vu dans les tutos, qu'il fallait aussi construire une classe *dao, c'est donc là à priori, que je dois faire ma requête... mais à ce moment là, puis je récupérer la variable de mon panel ?
J'ai une erreur sur mon model qui dit que "the method getTitre() is undefined for the type object", j'ai aussi du mal a comprendre ou déclarer cette même méthode.
Je vous remercie
Bien cordialement
Le Panel du champ de recherche :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133
| package com.pl.app;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import javax.swing.GroupLayout;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.table.DefaultTableModel;
public class PanelConsult extends JPanel {
ArrayList t1=new ArrayList();
ArrayList t2=new ArrayList();
ArrayList t3=new ArrayList();
ArrayList t4=new ArrayList();
ArrayList t5=new ArrayList();
ArrayList t6=new ArrayList();
ArrayList t7=new ArrayList();
ArrayList t8=new ArrayList();
ArrayList t9=new ArrayList();
DefaultTableModel model;
JScrollPane scroll=new JScrollPane();
JTable tableau =null;
private JTextField jTextField1;
private JButton jButton1;
private JLabel jLabel1;
private JPanel panelc = new JPanel();
public PanelConsult() {
jTextField1 = new JTextField();
jLabel1 = new JLabel();
jButton1 = new JButton();
jLabel1.setText("Votre recherche");
jButton1.setText("Ok");
jTextField1.setText("Recherche");
GroupLayout layout = new GroupLayout(panelc);
panelc.setLayout(layout);
add(panelc);
layout.setAutoCreateGaps(true);
layout.setAutoCreateContainerGaps(true);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
.addContainerGap()
.addComponent(jLabel1)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jTextField1, javax.swing.GroupLayout.PREFERRED_SIZE, 121, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jButton1)
.addContainerGap(192, Short.MAX_VALUE))
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jTextField1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabel1)
.addComponent(jButton1))
.addContainerGap(277, Short.MAX_VALUE))
);
jButton1.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
//Shows pnlFirst
ResultSet resultSet = null;
try {
//Variable contenant le titre/auteur/ean à rechercher
String rqt = jTextField1.getText();
//Préparation de l'objet statement
Statement statement = Connecteur.getInstance().createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);;
//Création d'un objet Statement
ResultSet result = statement.executeQuery("select * from baseoca where Titre like '%" + rqt + "%' OR Auteur LIKE '%" + rqt + "%' OR EAN LIKE '%" + rqt + "%' ");
while(result.next())
{
t1.add(result.getString("Titre"));
t2.add(result.getString("Auteur"));
t3.add(result.getString("Editeur"));
t4.add(result.getString("EAN"));
t5.add(result.getString("Etat"));
t6.add(result.getString("Stock"));
t7.add(result.getString("Prix"));
t8.add(result.getString("Etagere"));
}
//resultat.getconn.close();
}catch(SQLException f) {
f.printStackTrace();
}
model=new DefaultTableModel(){
public boolean isCellEditable(int row, int col){
if (col==0) {return false;}
else {return true; }
}
};
model.addColumn(" titre ",t1.toArray());
model.addColumn(" auteur ",t2.toArray());
model.addColumn(" editeur ",t3.toArray());
model.addColumn(" EAN ",t4.toArray());
model.addColumn(" Etat ",t5.toArray());
model.addColumn(" Stock ",t6.toArray());
model.addColumn(" Prix ",t7.toArray());
model.addColumn(" Etagere ",t8.toArray());
tableau = new JTable(model);
scroll.setBounds(20,20,700,400);
scroll.setViewportView(tableau);
add(tableau);
validate();
}
});
}
} |
Le modele
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52
| package com.pl.app;
import java.util.ArrayList;
import java.util.List;
import javax.swing.table.AbstractTableModel;
public class Consultmodel extends AbstractTableModel {
private final String[] entetes = { "Titre", "Auteur", "Editeur", "EAN", "Etat", "Stock", "Prix", "Etagere" };
private final List Livres = new ArrayList();
@Override
public int getColumnCount() {
return entetes.length;
}
@Override
public String getColumnName(int columnIndex) {
return entetes[columnIndex];
}
@Override
public int getRowCount() {
// TODO Auto-generated method stub
return 0;
}
@Override
public Object getValueAt(int row, int column) {
switch (column) {
case 0:
return Livres.get(row).getTitre();
case 1:
return Livres.get(row).getAuteur();
case 2:
return Livres.get(row).getEditeur();
case 3:
return Livres.get(row).getEAN();
case 4:
return Livres.get(row).getEtat();
case 5:
return Livres.get(row).getStock();
case 6:
return Livres.get(row).getPrix();
case 7:
return Livres.get(row).getEtagere();
default:
return "";
}
}
} |
Ma classe pour la table ciblée
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59
| package com.pl.app;
public class Baseoca {
//ID
private int ocaid = 0;
//Titre du livre
private String Titre = "";
//Auteur du livre
private String Auteur = "";
//Editeur du livre
private String Editeur = "";
//Numéro EAN
private long EAN = 0;
//Etat du livre
private String Etat = "";
//Stock en boutique du livre
private String Stock = "";
//Prix de l'ouvrage
private float Prix = 0;
//Etagere ou est rangée l'ouvrage
private String Etagere = "";
public Baseoca(int ocaid, String Titre, String Auteur, String Editeur, long EAN, String Etat, String Stock, float Prix,String Etagere) {
this.ocaid = ocaid;
this.Titre = Titre;
this.Auteur = Auteur;
this.Editeur = Editeur;
this.EAN = EAN;
this.Etat = Etat;
this.Stock = Stock;
this.Prix = Prix;
this.Etagere = Etagere;
}
public Baseoca(){};
public int getocaid() {
return ocaid;
}
public void setocaid(int ocaid) {
this.ocaid = ocaid;
}
public String getTitre() {
return Titre;
}
public void setNom(String Titre) {
this.Titre = Titre;
}
public String getAuteur() {
return Auteur;
}
public void setAuteur(String Auteur) {
this.Auteur = Auteur;
}
} |