rendered paste bodypackage fachkonzept;
import db.*;
import java.util.*;
import javax.swing.table.*;
import javax.swing.tree.*;
import java.sql.*;
public class Model extends Observable{
private MyTableModel aTableModel;
private MyTreeModel aTreeModel;
public Model(){
}
public TreeModel getTreeModel(){
return aTreeModel;
}
public TableModel getTableModel(){
return aTableModel;
}
public void setTableModel(String table, String query){
aTableModel = new MyTableModel(table,query);
setChanged();
notifyObservers();
}
public void setTreeModel(){
aTreeModel = new MyTreeModel();
setChanged();
notifyObservers();
}
private class MyTreeModel extends DefaultTreeModel{
static final long serialVersionUID = 1L;
private ResultSet res;
public MyTreeModel(){
super(new DefaultMutableTreeNode("Alle Veranstaltungen"));
try{
res = new DBAccess().getConnection().createStatement().
executeQuery("select * from tabellen;");
while (res.next()){
insertNodeInto( new DefaultMutableTreeNode
(res.getString(1)),
(DefaultMutableTreeNode)root, res.getInt(2));
}
}catch (Exception ae){
System.err.print(ae.getMessage());
ae.printStackTrace();
}
}
}
private class MyTableModel extends AbstractTableModel{
static final long serialVersionUID = 1L;
private ResultSet res;
private int rows=0;
private int columns=0;
private Object[][] data;
private String[] columnNames;
public MyTableModel(String table, String query){
try{
res = new DBAccess().getConnection().createStatement().
executeQuery("select count(*) from "+table+";");
res.next();
rows = res.getInt(1);
res = new DBAccess().getConnection().createStatement().
executeQuery(query);
columns = res.getMetaData().getColumnCount();
columnNames = new String[columns];
for (int i=1; i<= columns; i++){
columnNames[i-1]=res.getMetaData().getColumnName(i);
}
data = new Object[rows][columns];
for (int i=0; i<rows; i++){
res.next();
for (int j=1; j<=columns; j++){
data[i][j-1]= res.getString(j);
}
}
}catch (Exception ae){
System.err.print(ae.getMessage());
ae.printStackTrace();
}
new TableRowSorter<TableModel>(this);
}
public int getColumnCount() { return columns;}
public int getRowCount() { return rows;}
public Object getValueAt(int row, int col)
{ return data[row][col]; }
public String getColumnName(int col) {
return columnNames[col];
}
public Class<?> getColumnClass(int columnIndex){
return data[0][columnIndex].getClass();
}
}
}