1.1 --- a/java/sql-vyuka/src/java/cz/frantovo/sql/vyuka/dao/PiskovisteDAO.java Fri May 29 04:09:58 2009 +0200
1.2 +++ b/java/sql-vyuka/src/java/cz/frantovo/sql/vyuka/dao/PiskovisteDAO.java Sat May 30 01:26:29 2009 +0200
1.3 @@ -18,6 +18,10 @@
1.4 */
1.5 public class PiskovisteDAO extends VyukaSuperDAO {
1.6
1.7 + private enum VLASTNOSTI {
1.8 +
1.9 + VYCHOZI_CESTA
1.10 + }
1.11 TipyDAO tipy = new TipyDAO();
1.12 HistorieDAO historie = new HistorieDAO();
1.13
1.14 @@ -32,22 +36,44 @@
1.15 PreparedStatement ps = null;
1.16 ResultSet rs = null;
1.17 try {
1.18 + /**
1.19 + * Uživatelskému SQL příkazu předřadíme výchozí cestu.
1.20 + * Protože uživatelé si ji mohou měnit a kvůli recyklaci databázových zdrojů
1.21 + * by jeden uživatel mohl ovlivnit jiného.
1.22 + */
1.23 + if (getVlastnost(VLASTNOSTI.VYCHOZI_CESTA) != null) {
1.24 + sql = orizni(getVlastnost(VLASTNOSTI.VYCHOZI_CESTA)) + sql;
1.25 + }
1.26 +
1.27 ps = db.prepareStatement(sql);
1.28 boolean isRS = ps.execute();
1.29
1.30 if (isRS) {
1.31 rs = ps.getResultSet();
1.32 v.getTabulky().add(zpracujVysledek(rs));
1.33 + }
1.34
1.35 - while (ps.getMoreResults()) {
1.36 - rs = ps.getResultSet();
1.37 - v.getTabulky().add(zpracujVysledek(rs));
1.38 + /** TODO: ošetřit případ, kdy vykonáme dva příkazy bez výsledkové sady a třetí příkaz ji už má (teď se nezobrazí výsledná tabulka). */
1.39 + while (ps.getMoreResults()) {
1.40 + rs = ps.getResultSet();
1.41 + v.getTabulky().add(zpracujVysledek(rs));
1.42 + }
1.43 +
1.44 + /** Varování */
1.45 + if (v.getHlasky().size() < 1 && v.getTabulky().size() < 1) {
1.46 + v.getHlasky().add(new Hlaska("SQL příkaz proběhl, ale nevrátil žádná data.", Typ.Varovani));
1.47 + }
1.48 +
1.49 + /** Varování */
1.50 + int pocitadloTabulek = 1;
1.51 + for (Tabulka t : v.getTabulky()) {
1.52 + if (t.getHodnoty().size() < 1) {
1.53 + v.getHlasky().add(new Hlaska("Tabulka " + pocitadloTabulek + " je prázdná.", Typ.Varovani));
1.54 }
1.55 - } else {
1.56 - /** TODO: zobrazit počet aktualizovaných? */
1.57 - v.getHlasky().add(new Hlaska("SQL příkaz byl proveden, ale nevrátil žádná data.", Typ.Varovani));
1.58 + pocitadloTabulek++;
1.59 }
1.60
1.61 +
1.62 } catch (SQLException e) {
1.63 log.log(Level.SEVERE, "SQL chyba při vykonávání uživatelského dotazu.", e);
1.64 v.getHlasky().add(new Hlaska("Chybné SQL: " + e.getMessage(), Typ.Chyba));