public final void updateData() {
        cache = new ArrayList();

        try {
            getDataWorker = new ListaClasesCursoDataWorker(horario, dia) {
                @Override
                public void done() {
                    try {

                        // Execute the query and store the result set and its metadata
                        ResultSet rs = get();

                        System.out.println("Data Worker DONE!");

                        ResultSetMetaData meta = rs.getMetaData();

                        colCount = meta.getColumnCount();

                        // Now we must rebuild the headers array with the new column names
                        headers = new String[colCount];

                        for (int h = 1; h <= colCount; h++) {
                            headers[h - 1] = meta.getColumnName(h);
                        }

                        // and file the cache with the records from our query. This would
                        // not be
                        // practical if we were expecting a few million records in response
                        // to our
                        // query, but we aren't, so we can do this.
                        while (rs.next()) {
                            String[] record = new String[colCount];

                            for (int i = 0; i < colCount; i++) {
                                record[i] = rs.getString(i + 1);
                            }

                            cache.add(record);
                        }

                        fireTableChanged(null);    // notify everyone that we have a new table.
                    } catch (SQLException | InterruptedException | ExecutionException ex) {
                        Logger.getLogger(ClasesTableModel.class.getName()).log(Level.SEVERE, null, ex);
                    }
                }
            };
            getDataWorker.execute();
        } catch (SQLException e) {
            cache = new ArrayList();    // blank it out and keep going.
            Logger.getLogger(ClasesTableModel.class.getName()).log(Level.SEVERE, null, e);
        }
    }