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