package Artikelarchiv;
import java.sql.ResultSet;
import java.sql.SQLException;
import javax.swing.table.AbstractTableModel;
/**
*
* @author Markus Riepe, Robert Viehmann
*
*/
public class MyTableModel extends AbstractTableModel {
static Datenbank db = new Datenbank();
String[] coulums = "Titel, Quelle, Erscheinungsdatum".split(", ");
String[] table = "autor, schlagwort".split(", ");
String sTmp = "";
String sql = "";
ResultSet rs = null;
/**
* Wird doch gar nicht benötigt?! Montag klären!!!!!!
* @param args
*/
public static void main(String[] args) {
}
private String[] createRow() {
String tmpAutor = "";
String tmpTitel = "";
String tmpQuelle = "";
String tmpSchlagworte = "";
String tmpErscheinungsdatum = "";
String werte = "";
String[] werteArray = null;
String tmp = "";
String[] idArtikel = "".split(", ");
/*
* Liest die IDs aller Datensätze der Tabelle und speichert sie in einer array
*/
ResultSet tmpRs;
try {
tmpRs = db.select("SELECT ID FROM artikel");
while (tmpRs.next()) {
tmp += tmpRs.getInt("ID") + ",";
}
idArtikel = tmp.split(",");
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
for (int i = 0; i < 1; i++) {
try {
for (int j = 0; j < table.length; j++) {
sTmp = "";
sql = "SELECT Name FROM artikel_" + table[j] + " INNER JOIN " + table[j]
+ " ON (" + table[j] + ".ID=artikel_" + table[j] + "." + table[j]
+ "_ID) WHERE artikel_" + table[j] + ".artikel_ID=" + idArtikel;
rs = db.select(sql);
while (rs.next()) {
if (rs.getRow() != 1)
sTmp += ", ";
sTmp += rs.getString("Name");
}
if (table[j].equals("autor"))
tmpAutor = sTmp;
else if (table[j].equals("schlagwort"))
tmpSchlagworte = sTmp;
}
for (int j = 0; j < coulums.length; j++) {
sql = "SELECT " + coulums[j] + " FROM artikel WHERE ID=" + idArtikel<em>;</em>
<em>
</em>
<em>
rs = db.select(sql);</em>
<em>
while (rs.next()){</em>
<em>
if (coulums[j].equals("Titel")) {</em>
<em>
tmpTitel = rs.getString(coulums[j]);</em>
<em>
} else if (coulums[j].equals("Quelle")) {</em>
<em>
tmpQuelle = rs.getString(coulums[j]);</em>
<em>
} else if (coulums[j].equals("Erscheinungsdatum")) {</em>
<em>
tmpErscheinungsdatum = rs.getString(coulums[j]);</em>
<em>
}</em>
<em>
}</em>
<em>
}</em>
<em>
</em>
<em>
} catch (SQLException e1) {</em>
<em>
// TODO Auto-generated catch block</em>
<em>
e1.printStackTrace();</em>
<em>
}</em>
<em>
</em>
<em>
werte = idArtikel</em><em><em> + ";:;" + tmpAutor + ";:;" + tmpTitel + ";:;" + tmpQuelle</em></em>
<em><em>
+ ";:;" + tmpSchlagworte + ";:;" + tmpErscheinungsdatum;</em></em>
<em><em>
}</em></em>
<em><em>
werteArray = werte.split(";:;");</em></em>
<em><em>
</em></em>
<em><em>
</em></em>
<em><em>
return werteArray;</em></em>
<em><em>
}</em></em>
<em><em>
</em></em>
<em><em>
// Eine Variable vom Typ String[], der wir die Namen der Spaltenköpfe mitgeben.</em></em>
<em><em>
private String[] columnNames = { "ID", "Autor(en)", "Titel", "Quelle", "Schlagwort(e)",</em></em>
<em><em>
"Erscheinungsdatum" };</em></em>
<em><em>
</em></em>
<em><em>
// Eine Variable vom Typ Objec[] [], in der wir die Zeilen erstellen.</em></em>
<em><em>
private Object[][] data = { {createRow()[0], createRow()[1], createRow()[2], createRow()[3], createRow()[4], createRow()[5]}};</em></em>
<em><em>
</em></em>
<em><em>
/**</em></em>
<em><em>
* In dieser Methode lesen wir die Anzahl der Spalten aus.</em></em>
<em><em>
*/</em></em>
<em><em>
public int getColumnCount() {</em></em>
<em><em>
return columnNames.length;</em></em>
<em><em>
}</em></em>
<em><em>
</em></em>
<em><em>
/**</em></em>
<em><em>
* In dieser Methode lesen wir die Anzahl der Zeilen aus.</em></em>
<em><em>
*/</em></em>
<em><em>
public int getRowCount() {</em></em>
<em><em>
return data.length;</em></em>
<em><em>
}</em></em>
<em><em>
</em></em>
<em><em>
/**</em></em>
<em><em>
* In dieser Methode lesen wir die Spaltennamen aus.</em></em>
<em><em>
*/</em></em>
<em><em>
public String getColumnName(int col) {</em></em>
<em><em>
return columnNames[col];</em></em>
<em><em>
}</em></em>
<em><em>
</em></em>
<em><em>
/**</em></em>
<em><em>
* In dieser Methode lesen wir den Wert einer Zelle aus.</em></em>
<em><em>
*/</em></em>
<em><em>
public Object getValueAt(int row, int col) {</em></em>
<em><em>
return data[row][col];</em></em>
<em><em>
}</em></em>
<em><em>
</em></em>
<em><em>
/**</em></em>
<em><em>
* In dieser Methode legen wir fest, ob eine Zelle editierbar ist oder nicht.</em></em>
<em><em>
*/</em></em>
<em><em>
public boolean isCellEditable(int row, int col) {</em></em>
<em><em>
if (col == 0) {</em></em>
<em><em>
return false;</em></em>
<em><em>
} else {</em></em>
<em><em>
return false;</em></em>
<em><em>
}</em></em>
<em><em>
}</em></em>
<em><em>
</em></em>
<em><em>
/**</em></em>
<em><em>
* In dieser Methode legen wir fest, dass die Tabelle neu dargestellt werden soll,</em></em>
<em><em>
* wenn eine Zeile ausgewählt wurde.</em></em>
<em><em>
*/</em></em>
<em><em>
public void setValueAt(Object value, int row, int col) {</em></em>
<em><em>
data[row][col] = value;</em></em>
<em><em>
fireTableCellUpdated(row, col);</em></em>
<em><em>
}</em></em>
<em><em>
}</em></em>
<em><em>
</em></em>