All pastes #333167 Raw Edit

Untitled

public text v1 · immutable
#333167 ·published 2007-01-30 19:01 UTC
rendered paste body
package 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();
    	}
	}
}