diff -r 08cd160ec1c6 -r e7a5763c789c java/sql-vyuka/src/java/cz/frantovo/sql/vyuka/dao/PiskovisteDAO.java --- a/java/sql-vyuka/src/java/cz/frantovo/sql/vyuka/dao/PiskovisteDAO.java Fri May 29 04:09:58 2009 +0200 +++ b/java/sql-vyuka/src/java/cz/frantovo/sql/vyuka/dao/PiskovisteDAO.java Sat May 30 01:26:29 2009 +0200 @@ -18,6 +18,10 @@ */ public class PiskovisteDAO extends VyukaSuperDAO { + private enum VLASTNOSTI { + + VYCHOZI_CESTA + } TipyDAO tipy = new TipyDAO(); HistorieDAO historie = new HistorieDAO(); @@ -32,22 +36,44 @@ PreparedStatement ps = null; ResultSet rs = null; try { + /** + * Uživatelskému SQL příkazu předřadíme výchozí cestu. + * Protože uživatelé si ji mohou měnit a kvůli recyklaci databázových zdrojů + * by jeden uživatel mohl ovlivnit jiného. + */ + if (getVlastnost(VLASTNOSTI.VYCHOZI_CESTA) != null) { + sql = orizni(getVlastnost(VLASTNOSTI.VYCHOZI_CESTA)) + sql; + } + ps = db.prepareStatement(sql); boolean isRS = ps.execute(); if (isRS) { rs = ps.getResultSet(); v.getTabulky().add(zpracujVysledek(rs)); + } - while (ps.getMoreResults()) { - rs = ps.getResultSet(); - v.getTabulky().add(zpracujVysledek(rs)); + /** 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). */ + while (ps.getMoreResults()) { + rs = ps.getResultSet(); + v.getTabulky().add(zpracujVysledek(rs)); + } + + /** Varování */ + if (v.getHlasky().size() < 1 && v.getTabulky().size() < 1) { + v.getHlasky().add(new Hlaska("SQL příkaz proběhl, ale nevrátil žádná data.", Typ.Varovani)); + } + + /** Varování */ + int pocitadloTabulek = 1; + for (Tabulka t : v.getTabulky()) { + if (t.getHodnoty().size() < 1) { + v.getHlasky().add(new Hlaska("Tabulka " + pocitadloTabulek + " je prázdná.", Typ.Varovani)); } - } else { - /** TODO: zobrazit počet aktualizovaných? */ - v.getHlasky().add(new Hlaska("SQL příkaz byl proveden, ale nevrátil žádná data.", Typ.Varovani)); + pocitadloTabulek++; } + } catch (SQLException e) { log.log(Level.SEVERE, "SQL chyba při vykonávání uživatelského dotazu.", e); v.getHlasky().add(new Hlaska("Chybné SQL: " + e.getMessage(), Typ.Chyba));