diff --git a/Stundenplan/src/Stundenplan.java b/Stundenplan/src/Stundenplan.java index 57b01b4..3a46f2f 100644 --- a/Stundenplan/src/Stundenplan.java +++ b/Stundenplan/src/Stundenplan.java @@ -38,26 +38,43 @@ public class Stundenplan implements SelectionListener { // Lehrer abfragen und ein Auswahlfeld erstellen, dass in der // GUI angezeigt wird, um den angezeigten Stundenplan anzupassen - dbc.executeStatement("SELECT kuerzel FROM lehrer"); + dbc.executeStatement("SELECT kuerzel FROM lehrer ORDER BY kuerzel"); r = dbc.getCurrentQueryResult(); - String[] teachers = new String[r.getRowCount()]; + String[] lehrer = new String[r.getRowCount()]; for (int i = 0; i < r.getRowCount(); i++) { - teachers[i] = r.getData()[i][0]; + lehrer[i] = r.getData()[i][0]; } - gui.addFilter("Lehrer", teachers); + gui.addFilter("Lehrer", lehrer); // Das gleiche für die klassen - dbc.executeStatement("SELECT bezeichner FROM klassen"); + dbc.executeStatement("SELECT bezeichner FROM klassen ORDER BY bezeichner"); r = dbc.getCurrentQueryResult(); String[] klassen = new String[r.getRowCount()]; for (int i = 0; i < r.getRowCount(); i++) { klassen[i] = r.getData()[i][0]; } gui.addFilter("Klassen", klassen); + // Und für die Räume: + dbc.executeStatement("SELECT DISTINCT Raum FROM Unterrichtsstunden ORDER BY Raum"); + r = dbc.getCurrentQueryResult(); + String[] räume = new String[r.getRowCount()]; + for (int i = 0; i < r.getRowCount(); i++) { + räume[i] = r.getData()[i][0]; + } + gui.addFilter("Räume", räume); + // Und die Fächer: + dbc.executeStatement("SELECT DISTINCT Fach FROM Unterrichtsstunden ORDER BY Fach"); + r = dbc.getCurrentQueryResult(); + String[] fächer = new String[r.getRowCount()]; + for (int i = 0; i < r.getRowCount(); i++) { + fächer[i] = r.getData()[i][0]; + } + gui.addFilter("Fächer", fächer); // GUI anzeigen und Verhalten bei Interaktion festlegen gui.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); gui.addSelectionListener(this); // GUI ruft Methode selectionChanged auf, wenn sich eine Auswahlbox ändert. gui.setLocationRelativeTo(null); gui.setVisible(true); + selectionChanged("Lehrer", lehrer[0]); } /** @@ -95,7 +112,7 @@ public class Stundenplan implements SelectionListener { "Raum " + data[i][1], // Untertitel data[i][2], // Beschreibungstext pNewValue, // Fußzeile - new Color(-16711936) // Farbe (Objekt der Klasse Color) + new Color(bestimmeFarbe(data[i][0])) // Farbe (Objekt der Klasse Color) ); } @@ -108,7 +125,10 @@ public class Stundenplan implements SelectionListener { gui.removeAllLessons(); // Neue Daten aus der Datenbank abfragen. - dbc.executeStatement(""); + dbc.executeStatement( + "SELECT Fach,Raum,Lehrer_Kürzel,Tag,Stunde FROM Unterrichtsstunden LEFT OUTER JOIN sind_in_Unterrichtsstunden" + + " WHERE sind_in_Unterrichtsstunden.Stunden_ID = Unterrichtsstunden.StundenId AND sind_in_Unterrichtsstunden.Klassen_Bezeichner LIKE \"" + + pNewValue + "\""); QueryResult r = dbc.getCurrentQueryResult(); // Falls es ein Ergebnis gibt ... @@ -121,12 +141,74 @@ public class Stundenplan implements SelectionListener { Integer.parseInt(data[i][4]) - 1, // Zeile im Plan (0=1. Stunde, ... ,9=10. Stunde) data[i][0], // Titel "Raum " + data[i][1], // Untertitel - data[i][2], // Beschreibungstext - pNewValue, // Fußzeile - new Color(-16711936) // Farbe (Objekt der Klasse Color) + pNewValue, // Beschreibungstext + data[i][2], // Fußzeile + new Color(bestimmeFarbe(data[i][0])) // Farbe (Objekt der Klasse Color) ); } + // GUI-Fenster neu zeichnen, um neue Elemente anzuzeigen. + gui.revalidate(); + gui.repaint(); + } + } else if (pList == "Räume") { + // Zuerst alle bisherigen Stunden aus der GUI entfernen + gui.removeAllLessons(); + + // Neue Daten aus der Datenbank abfragen. + dbc.executeStatement( + "SELECT Fach,Klassen_bezeichner,Lehrer_Kürzel,Tag,Stunde FROM Unterrichtsstunden LEFT OUTER JOIN sind_in_Unterrichtsstunden " + + "WHERE Unterrichtsstunden.StundenID = sind_in_Unterrichtsstunden.Stunden_ID AND Raum LIKE \"" + + pNewValue + "\""); + QueryResult r = dbc.getCurrentQueryResult(); + + // Falls es ein Ergebnis gibt ... + if (r != null) { + String[][] data = r.getData(); + + // Neue Stunden in die GUI schreiben + for (int i = 0; i < data.length; i++) { + gui.addLesson(bestimmeSpalte(data[i][3]), // Spalte im Plan (0=Montag, ... ,4=Freitag) + Integer.parseInt(data[i][4]) - 1, // Zeile im Plan (0=1. Stunde, ... ,9=10. Stunde) + data[i][0], // Titel + "Raum " + pNewValue, // Untertitel + data[i][1], // Beschreibungstext + data[i][2], // Fußzeile + new Color(bestimmeFarbe(data[i][0])) // Farbe (Objekt der Klasse Color) + ); + } + + // GUI-Fenster neu zeichnen, um neue Elemente anzuzeigen. + gui.revalidate(); + gui.repaint(); + } + } else if (pList == "Fächer") { + // Zuerst alle bisherigen Stunden aus der GUI entfernen + gui.removeAllLessons(); + + // Neue Daten aus der Datenbank abfragen. + dbc.executeStatement( + "SELECT Raum,Klassen_bezeichner,Lehrer_Kürzel,Tag,Stunde FROM Unterrichtsstunden LEFT OUTER JOIN sind_in_Unterrichtsstunden " + + "WHERE Unterrichtsstunden.StundenID = sind_in_Unterrichtsstunden.Stunden_ID AND Fach LIKE \"" + + pNewValue + "\""); + QueryResult r = dbc.getCurrentQueryResult(); + + // Falls es ein Ergebnis gibt ... + if (r != null) { + String[][] data = r.getData(); + + // Neue Stunden in die GUI schreiben + for (int i = 0; i < data.length; i++) { + gui.addLesson(bestimmeSpalte(data[i][3]), // Spalte im Plan (0=Montag, ... ,4=Freitag) + Integer.parseInt(data[i][4]) - 1, // Zeile im Plan (0=1. Stunde, ... ,9=10. Stunde) + pNewValue, // Titel + "Raum " + data[i][0], // Untertitel + data[i][1], // Beschreibungstext + data[i][2], // Fußzeile + new Color(bestimmeFarbe(pNewValue) // Farbe (Objekt der Klasse Color) + )); + } + // GUI-Fenster neu zeichnen, um neue Elemente anzuzeigen. gui.revalidate(); gui.repaint(); @@ -150,4 +232,43 @@ public class Stundenplan implements SelectionListener { return 5; } } + + public int bestimmeFarbe(String pFach) { + switch (pFach) { + case "Biologie": + return 0x00FF77; + case "Mathematik": + return 0x5000FF; + case "Latein": + return 0xFFBF00; + case "Französisch": + return 0xFF00E9; + case "Informatik": + return 0x000000; + case "Englisch": + return 0xFF0000; + case "Kunst": + return 0xFFFFFF; + case "Deutsch": + return 0x0055FF; + case "Musik": + return 0xFFD000; + case "Sport": + return 0x00FFE9; + case "Philosophie": + return 0x9800FF; + case "Religion": + return 0x632B00; + case "Chemie": + return 0xB600FF; + case "Physik": + return 0xFFE100; + case "Erdkunde": + return 0x00871F; + case "Geschichte": + return 0x844000; + default: + return 0xFFFFFF; + } + } } diff --git a/Stundenplan/src/StundenplanGUI.java b/Stundenplan/src/StundenplanGUI.java index ef2c7d2..f4be0bd 100644 --- a/Stundenplan/src/StundenplanGUI.java +++ b/Stundenplan/src/StundenplanGUI.java @@ -163,7 +163,7 @@ public class StundenplanGUI extends JFrame implements ActionListener { */ public void removeAllLessons() { for (int i = 0; i < 5; i++) { - for (int j = 0; j < 10; j++) { + for (int j = 0; j < 12; j++) { removeLesson(i, j); } } @@ -235,7 +235,7 @@ public class StundenplanGUI extends JFrame implements ActionListener { c.fill = GridBagConstraints.NONE; c.weightx = 0.2; c.weighty = 0.5; - for (int i = 0; i < 10; i++) { + for (int i = 0; i < 12; i++) { c.gridy = i + 1; jpPlan.add(makeLabel((i + 1) + ". Stunde", fHeader), c); }