/** * @param sr * @return * @throws ApplicationException */ @Override public List<List<String>> getStudienverlaufsplan(Studienrichtung sr) throws ApplicationException { List<List<String>> spalten = new ArrayList<List<String>>(); ArrayList<String> zeile1 = new ArrayList(); zeile1.add("Studienverlaufplan\n" + sr.toString()); zeile1.add("1. Semester"); zeile1.add("2. Semester"); zeile1.add("3. Semester"); zeile1.add("4. Semester"); zeile1.add("5. Semester"); zeile1.add("6. Semester"); zeile1.add(""); spalten.add(zeile1); ArrayList<String> zeile2 = new ArrayList(); zeile2.add("Nr Kategorie"); zeile2.add("Mod V Ü P Cr"); zeile2.add("Mod V Ü P Cr"); zeile2.add("Mod V Ü P Cr"); zeile2.add("Mod V Ü P Cr"); zeile2.add("Mod V Ü P Cr"); zeile2.add("Mod V Ü P Cr"); zeile2.add("Summe"); spalten.add(zeile2); ArrayList<Studienverlauf> studienverlauf = new ArrayList(); String sql = "SELECT SR.SKUERZEL, K.LFDNR, K.NAME, " + "KU.SEM, KU.MKUERZEL, M.MODULNAME, M.VL, " + "M.UB, M.PR, M.CREDITS " + "FROM KATEGORIE K, KATEGORIEUMFANG KU, MODUL M, STUDIENRICHTUNG SR " + "WHERE SR.SKUERZEL = '" + sr.getKuerzel() + "' " + "AND SR.SKUERZEL = KU.SKUERZEL " + "AND SR.SKUERZEL = K.SKUERZEL " + "AND K.LFDNR = KU.LFDNR " + "AND M.MKUERZEL = KU.MKUERZEL " + "ORDER BY K.LFDNR, KU.SEM"; ResultSet sqlResult = null; try { sqlResult = executeQuery(sql); Studienverlauf sv = new Studienverlauf(0, ""); while (sqlResult.next()) { int vl = sqlResult.getInt("VL"); int ub = sqlResult.getInt("UB"); int pr = sqlResult.getInt("PR"); project.Modul modul = new project.Modul( sqlResult.getString("MKUERZEL"), sqlResult.getString("MODULNAME"), vl, ub, pr, sqlResult.getInt("CREDITS")); if (sv.getKategorieNr() == sqlResult.getInt("LFDNR")) { sv.addSemesterModul(sqlResult.getInt("SEM"), modul); } else { sv = new Studienverlauf(sqlResult.getInt("LFDNR"), sqlResult.getString("NAME")); sv.addSemesterModul(sqlResult.getInt("SEM"), modul); studienverlauf.add(sv); } } } catch (SQLException ex) { System.out.println(ex.getMessage()); } for (int i = 0; i < studienverlauf.size(); i++) { ArrayList<String> zeile = new ArrayList(); Studienverlauf aktVerlauf = studienverlauf.get(i); zeile.add(aktVerlauf.getKategorieNr() + " " + aktVerlauf.getKategorie()); zeile.add(aktVerlauf.getSemesterModulText(1)); zeile.add(aktVerlauf.getSemesterModulText(2)); zeile.add(aktVerlauf.getSemesterModulText(3)); zeile.add(aktVerlauf.getSemesterModulText(4)); zeile.add(aktVerlauf.getSemesterModulText(5)); zeile.add(aktVerlauf.getSemesterModulText(6)); zeile.add("" + aktVerlauf.getVerlaufWochenStunden()); spalten.add(zeile); } ArrayList<String> letzteZeile = new ArrayList(); letzteZeile.add("Summe SWS"); int gesamtsumme = 0; for (int i = 1; i < 7; i++) { int zwischensumme = 0; for (int j = 0; j < studienverlauf.size(); j++) { zwischensumme += studienverlauf.get(j).getWochenStundenVonSemester(i); } letzteZeile.add("" + zwischensumme); gesamtsumme += zwischensumme; } letzteZeile.add("" + gesamtsumme); spalten.add(letzteZeile); return spalten; }
@Override public JPanel getChart(int type, Object parameter1, Object parameter2) throws ApplicationException { // TODO Methode ausfertigen JFreeChart chart = null; switch (type) { case VISUALISIERUNG_ANTEIL_TESTATABNAHMEN: { /* Parameter 1 muss String sein, Parameter 2 muss NULL sein.*/ if (!(parameter1 instanceof String && parameter2 == null)) { throw new ApplicationException( "Die übergebenen Basisparameter passen nicht zum Visualisierungstyp."); } String semester = (String) parameter1; DefaultCategoryDataset dataset = new DefaultCategoryDataset(); /* Iteration über alle Studienrichtungen. */ for (Studienrichtung studr : this.getAllStudienrichtung()) { /* Anzahl der Studenten die sich für ein Praktikum eines Moduls in einem bestimmten Semester angemeldet haben. */ String sql = "SELECT M.MKUERZEL AS Modul, Count(*) AS Anmeldungen" + " FROM MODUL M, PRAKTIKUMSTEILNAHME P, STUDENT S" + " WHERE P.MATRIKEL = S.MATRIKEL" + " AND M.MKUERZEL = P.MKUERZEL" + " AND M.PR > 0" + " AND P.SEMESTER = '" + semester + "'" + " AND S.SKUERZEL = '" + studr.getKuerzel() + "'" + " GROUP BY M.MKUERZEL"; ResultSet resultSet = null; try { resultSet = executeQuery(sql); while (resultSet.next()) { /* Speichern der Anzahl der ANmeldungen zu einem * Modul */ String modul = resultSet.getString("Modul"); int anmeldungen = resultSet.getInt("Anmeldungen"); /* Anzahl der Bestandenen Praktikas eines Moduls in einem bestimmten Semester*/ sql = "SELECT M.MKUERZEL AS Modul, Count(*) AS Bestanden" + " FROM MODUL M, PRAKTIKUMSTEILNAHME P, STUDENT S" + " WHERE P.MATRIKEL = S.MATRIKEL" + " AND M.MKUERZEL = P.MKUERZEL" + " AND M.MKUERZEL = '" + modul + "'" + " AND M.PR > 0" + " AND P.SEMESTER = '" + semester + "'" + " AND S.SKUERZEL = '" + studr.getKuerzel() + "'" + " AND P.TESTAT > 0" + " GROUP BY M.MKUERZEL"; int bestanden = 0; ResultSet resultSet1 = executeQuery(sql); if (resultSet1.next()) { bestanden = resultSet1.getInt("Bestanden"); } /* Berechnung des Prozentualen Anteils von bestanden zu teilgenommen */ double wert = (bestanden == 0) ? 0 : (double) bestanden / (double) anmeldungen * 100; /* Dataset die Werte übergeben % - Wert, Modulname, Studienrichtung */ dataset.addValue(wert, modul, studr.getKuerzel()); } } catch (SQLException ex) { System.out.println(ex.getMessage()); } } /* Neues Balken Diagramm erzeugen mit folgenden Werte: * Titel, X-Achse Beschreibung, Y-Achse Beschreibung, Daten, * Vertical/Horizontal, Legende, Tooltip, URL. */ chart = ChartFactory.createBarChart( semester, "Praktikumsmodule nach Studienrichtung", "Erfolgreiche Teilnahme in %", dataset, PlotOrientation.VERTICAL, true, true, false); } break; case VISUALISIERUNG_AUFTEILUNG_ANMELDUNGEN: { if (!(parameter1 instanceof Studienrichtung && parameter2 instanceof String)) { throw new ApplicationException( "Die übergebenen Basisparameter passen nicht zum Visualisierungstyp."); } Studienrichtung studienrichtung = (Studienrichtung) parameter1; String semester = (String) parameter2; DefaultPieDataset dataset = new DefaultPieDataset(); String sql = "SELECT M.MKUERZEL AS Modul, Count(*) AS Anmeldungen" + " FROM MODUL M, PRAKTIKUMSTEILNAHME P, STUDENT S" + " WHERE P.MATRIKEL = S.MATRIKEL" + " AND M.MKUERZEL = P.MKUERZEL" + " AND M.PR > 0" + " AND P.SEMESTER = '" + semester + "'" + " AND S.SKUERZEL = '" + studienrichtung.getKuerzel() + "'" + " GROUP BY M.MKUERZEL"; try { ResultSet resultSet = executeQuery(sql); int i = 0; while (resultSet.next()) { int tmpAnmelungen = resultSet.getInt("Anmeldungen"); String tmpModul = resultSet.getString("Modul"); /* SchlüsselText zusammenbauen */ String key = tmpModul + ": " + tmpAnmelungen + " Anmeldungen"; dataset.insertValue(i, key, tmpAnmelungen); i++; } } catch (SQLException ex) { System.out.println(ex.getMessage()); } /* PieChart erstellen: Titel, Daten, Legende, ToolTip, URL */ chart = ChartFactory.createPieChart( studienrichtung.toString() + " (" + semester + ")", dataset, true, true, false); } break; case VISUALISIERUNG_ENTWICKLUNG_ANMELDUNGEN: { if (!(parameter1 instanceof Modul && parameter2 == null)) { throw new ApplicationException( "Die übergebenen Basisparameter passen nicht zum Visualisierungstyp."); } Modul modul = (Modul) parameter1; DefaultCategoryDataset dataset = new DefaultCategoryDataset(); /* Anmeldungen/Testate zu einem Modul in allen Semestern*/ String sql = "SELECT count(*) AS Anmeldungen, P.SEMESTER, SUM(P.TESTAT) AS Testatvergaben" + " FROM PRAKTIKUMSTEILNAHME P" + " WHERE P.MKUERZEL = '" + modul.getKuerzel() + "'" + " GROUP BY P.SEMESTER"; try { ResultSet resultSet = executeQuery(sql); while (resultSet.next()) { String semester = resultSet.getString("Semester"); int anmeldungen = resultSet.getInt("Anmeldungen"); int testate = resultSet.getInt("Testatvergaben"); dataset.addValue(anmeldungen, "Anmeldungen", semester); dataset.addValue(testate, "Testatvergaben", semester); } } catch (SQLException ex) { System.out.println(ex.getMessage()); } chart = ChartFactory.createLineChart( modul.getName() + " (" + modul.getKuerzel() + ")", "Semester", "Studierende", dataset, PlotOrientation.VERTICAL, true, true, false); } break; case VISUALISIERUNG_ANMELDUNGEN_TESTATE: { if (!(parameter1 instanceof Studienrichtung && parameter2 instanceof String)) { throw new ApplicationException( "Die übergebenen Basisparameter passen nicht zum Visualisierungstyp."); } Studienrichtung studienrichtung = (Studienrichtung) parameter1; String semester = (String) parameter2; DefaultCategoryDataset dataset = new DefaultCategoryDataset(); String sql = "SELECT count(*) AS Anmeldungen, SUM(P.TESTAT) AS Testatvergaben, P.MKUERZEL AS Modul" + " FROM PRAKTIKUMSTEILNAHME P, KATEGORIEUMFANG K" + " WHERE P.SEMESTER = '" + semester + "'" + " AND P.MKUERZEL = K.MKUERZEL" + " AND K.SKUERZEL = '" + studienrichtung.getKuerzel() + "'" + " GROUP BY P.MKUERZEL"; try { ResultSet resultSet = executeQuery(sql); while (resultSet.next()) { String modulName = resultSet.getString("Modul"); int anmeldungen = resultSet.getInt("Anmeldungen"); int testatvergaben = resultSet.getInt("Testatvergaben"); dataset.addValue(anmeldungen, "Anmeldungen", modulName); dataset.addValue(testatvergaben, "Testatvergaben", modulName); } } catch (SQLException ex) { System.out.println(ex.getMessage()); } chart = ChartFactory.createBarChart( studienrichtung.getName() + " (" + studienrichtung.getKuerzel() + ")", "Modul", "Studierende", dataset, PlotOrientation.VERTICAL, true, true, false); } break; default: { throw new ApplicationException("Der Visualisierungstyp ist nicht definiert."); } } return new ChartPanel(chart); }