java/sql-vyuka/src/java/cz/frantovo/sql/vyuka/dao/PiskovisteDAO.java
changeset 18 e7a5763c789c
parent 17 08cd160ec1c6
child 19 2ffdd7be6d5e
     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));