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
| public class TableModel extends AbstractTableModel {
protected String[] columnNames = {};
protected int columnCount = 0;
protected Class[] columnClasses = {}; /* Type des données contenues dans la colonne */
protected List<Object[]> rowValues = new ArrayList<Object[]>(); /* Liste de de chaque ligne de valeur */
protected ResultSetMetaData metaData;
protected boolean editable = false;
private ErrorDialog _errorMsg;
private String stmp;
/**
* Creates a new instance of TableModel
*/
public TableModel(ResultSet rs) {
/* Initialisation du dialogue d'erreur */
_errorMsg = new ErrorDialog();
try {
updateModel(rs);
} catch (SQLException ex) {
_errorMsg.WriteMessage("Exception TableModel",ex.getStackTrace().toString(),_errorMsg.ErrorMessage);
return;
}
}
/**
* modifie ce TableModel pour qu'il corresponde à un
* ResultSet donné.
*/
public void updateModel(ResultSet rs) throws SQLException {
// récpération de l'information sur les données
metaData = rs.getMetaData();
columnCount = metaData.getColumnCount();
// allocation des tableaux pour stocker les noms des colonnes
// et le type (classes) des colonnes
columnNames = new String[columnCount];
columnClasses = new Class[columnCount];
for (int i = 1; i <= columnCount; i++) {
stmp = metaData.getColumnName(i);
columnNames[i-1] = stmp;
try {
columnClasses[i-1] = Class.forName(metaData.getColumnClassName(i));
}
catch (ClassNotFoundException clnfe) {
// normalement ce type d'exception ne devrait jamais être lancé
_errorMsg.WriteMessage("Exception TableModel",clnfe.getStackTrace().toString(),_errorMsg.ErrorMessage);
return;
}
}
// chargement des données dans la liste rowValues
// initialisation de la liste des lignes avec une liste vide
rowValues = new ArrayList<Object[]>();
// récuperation de chacune des lignes du ResultSet
while (rs.next()) {
//création d'un tableau d'objets pour récupérer les données d'une ligne
Object[] values = new Object[columnCount];
// recopie des valeurs de la ligne dans le tableau
for (int i = 1; i <= columnCount; i++)
values[i-1] = rs.getObject(i);
// ajout du tableau à la liste des lignes
rowValues.add(values);
}
// signale au Listener de ce TableModel qu'une nouvelle table a
// été constituée
fireTableStructureChanged();
} |
Partager