Lokalizace v HTML (tlačítka), nastavení search_path proměnné.
authorFrantišek Kučera <franta-hg@frantovo.cz>
Sat May 30 01:26:29 2009 +0200 (2009-05-30)
changeset 18e7a5763c789c
parent 17 08cd160ec1c6
child 19 2ffdd7be6d5e
Lokalizace v HTML (tlačítka), nastavení search_path proměnné.
java/sql-vyuka/src/java/cz/frantovo/sql/vyuka/dao/HistorieDAO.sql.xml
java/sql-vyuka/src/java/cz/frantovo/sql/vyuka/dao/PiskovisteDAO.java
java/sql-vyuka/src/java/cz/frantovo/sql/vyuka/dao/PiskovisteDAO.xml
java/sql-vyuka/src/java/cz/frantovo/sql/vyuka/preklady_cs.properties
java/sql-vyuka/web/WEB-INF/casti/aplikace.jspx
java/sql-vyuka/web/WEB-INF/web.xml
     1.1 --- a/java/sql-vyuka/src/java/cz/frantovo/sql/vyuka/dao/HistorieDAO.sql.xml	Fri May 29 04:09:58 2009 +0200
     1.2 +++ b/java/sql-vyuka/src/java/cz/frantovo/sql/vyuka/dao/HistorieDAO.sql.xml	Sat May 30 01:26:29 2009 +0200
     1.3 @@ -5,7 +5,9 @@
     1.4          <![CDATA[
     1.5          SELECT *
     1.6          FROM historie
     1.7 -        WHERE id_sezeni = ?
     1.8 +        WHERE   id_sezeni = ?
     1.9 +                AND sql IS NOT NULL
    1.10 +                AND sql <> ''
    1.11          ORDER BY id DESC
    1.12          LIMIT 20
    1.13          ]]>
     2.1 --- a/java/sql-vyuka/src/java/cz/frantovo/sql/vyuka/dao/PiskovisteDAO.java	Fri May 29 04:09:58 2009 +0200
     2.2 +++ b/java/sql-vyuka/src/java/cz/frantovo/sql/vyuka/dao/PiskovisteDAO.java	Sat May 30 01:26:29 2009 +0200
     2.3 @@ -18,6 +18,10 @@
     2.4   */
     2.5  public class PiskovisteDAO extends VyukaSuperDAO {
     2.6  
     2.7 +    private enum VLASTNOSTI {
     2.8 +
     2.9 +        VYCHOZI_CESTA
    2.10 +    }
    2.11      TipyDAO tipy = new TipyDAO();
    2.12      HistorieDAO historie = new HistorieDAO();
    2.13  
    2.14 @@ -32,22 +36,44 @@
    2.15                  PreparedStatement ps = null;
    2.16                  ResultSet rs = null;
    2.17                  try {
    2.18 +                    /**
    2.19 +                     * Uživatelskému SQL příkazu předřadíme výchozí cestu.
    2.20 +                     * Protože uživatelé si ji mohou měnit a kvůli recyklaci databázových zdrojů
    2.21 +                     * by jeden uživatel mohl ovlivnit jiného.
    2.22 +                     */
    2.23 +                    if (getVlastnost(VLASTNOSTI.VYCHOZI_CESTA) != null) {
    2.24 +                        sql = orizni(getVlastnost(VLASTNOSTI.VYCHOZI_CESTA)) + sql;
    2.25 +                    }
    2.26 +
    2.27                      ps = db.prepareStatement(sql);
    2.28                      boolean isRS = ps.execute();
    2.29  
    2.30                      if (isRS) {
    2.31                          rs = ps.getResultSet();
    2.32                          v.getTabulky().add(zpracujVysledek(rs));
    2.33 +                    }
    2.34  
    2.35 -                        while (ps.getMoreResults()) {
    2.36 -                            rs = ps.getResultSet();
    2.37 -                            v.getTabulky().add(zpracujVysledek(rs));
    2.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). */
    2.39 +                    while (ps.getMoreResults()) {
    2.40 +                        rs = ps.getResultSet();
    2.41 +                        v.getTabulky().add(zpracujVysledek(rs));
    2.42 +                    }
    2.43 +
    2.44 +                    /** Varování */
    2.45 +                    if (v.getHlasky().size() < 1 && v.getTabulky().size() < 1) {
    2.46 +                        v.getHlasky().add(new Hlaska("SQL příkaz proběhl, ale nevrátil žádná data.", Typ.Varovani));
    2.47 +                    }
    2.48 +
    2.49 +                    /** Varování */
    2.50 +                    int pocitadloTabulek = 1;
    2.51 +                    for (Tabulka t : v.getTabulky()) {
    2.52 +                        if (t.getHodnoty().size() < 1) {
    2.53 +                            v.getHlasky().add(new Hlaska("Tabulka " + pocitadloTabulek + "  je prázdná.", Typ.Varovani));
    2.54                          }
    2.55 -                    } else {
    2.56 -                        /** TODO: zobrazit počet aktualizovaných? */
    2.57 -                        v.getHlasky().add(new Hlaska("SQL příkaz byl proveden, ale nevrátil žádná data.", Typ.Varovani));
    2.58 +                        pocitadloTabulek++;
    2.59                      }
    2.60  
    2.61 +
    2.62                  } catch (SQLException e) {
    2.63                      log.log(Level.SEVERE, "SQL chyba při vykonávání uživatelského dotazu.", e);
    2.64                      v.getHlasky().add(new Hlaska("Chybné SQL: " + e.getMessage(), Typ.Chyba));
     3.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     3.2 +++ b/java/sql-vyuka/src/java/cz/frantovo/sql/vyuka/dao/PiskovisteDAO.xml	Sat May 30 01:26:29 2009 +0200
     3.3 @@ -0,0 +1,13 @@
     3.4 +<?xml version="1.0" encoding="UTF-8"?>
     3.5 +<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
     3.6 +<properties>    
     3.7 +    <!--
     3.8 +    PostgreSQL proměnná „search_path“ – nastavíme ji před každým uživatelským SQL dotazem,
     3.9 +    aby se uživatelé vzájemně neovlivňovali.
    3.10 +    -->
    3.11 +    <entry key="VYCHOZI_CESTA">
    3.12 +        <![CDATA[
    3.13 +        SET search_path TO "$user",public;
    3.14 +        ]]>
    3.15 +    </entry>
    3.16 +</properties>
    3.17 \ No newline at end of file
     4.1 --- a/java/sql-vyuka/src/java/cz/frantovo/sql/vyuka/preklady_cs.properties	Fri May 29 04:09:58 2009 +0200
     4.2 +++ b/java/sql-vyuka/src/java/cz/frantovo/sql/vyuka/preklady_cs.properties	Sat May 30 01:26:29 2009 +0200
     4.3 @@ -1,4 +1,5 @@
     4.4  jazyk=\u010De\u0161tina
     4.5 +kozy=Kozy
     4.6  
     4.7  nazev=SQL: tenhle jazyk t\u011B bude bavit!
     4.8  
     4.9 @@ -6,8 +7,8 @@
    4.10  blok.vysledek=V\u00FDsledek
    4.11  blok.napoveda=N\u00E1pov\u011Bda
    4.12  
    4.13 -tlacitko.historie.tip=Vyp\u00ED\u0161e historii SQL p\u0159\u00EDkaz\u016F.
    4.14 -tlacitko.vykonat.tip=Vykon\u00E1 zadan\u00FD SQL p\u0159\u00EDkaz.
    4.15 +tlacitko.historie.tip=Vyp\u00ED\u0161e historii SQL p\u0159\u00EDkaz\u016F (Ctrl+H).
    4.16 +tlacitko.vykonat.tip=Vykon\u00E1 zadan\u00FD SQL p\u0159\u00EDkaz (Ctrl+Enter).
    4.17  
    4.18  vychozi.sql=SELECT * FROM tabulka;
    4.19  vychozi.vysledek=V\u00EDtejte v programu SQL v\u00FDuka!
     5.1 --- a/java/sql-vyuka/web/WEB-INF/casti/aplikace.jspx	Fri May 29 04:09:58 2009 +0200
     5.2 +++ b/java/sql-vyuka/web/WEB-INF/casti/aplikace.jspx	Sat May 30 01:26:29 2009 +0200
     5.3 @@ -24,14 +24,16 @@
     5.4                      <form action="#" name="aplikace">
     5.5                          <fieldset>
     5.6                              <textarea id="vstupniPole" name="vstupniPole" rows="100" cols="1000" onkeypress="javascript:checkTab(event);"><fmt:message key="vychozi.sql"/></textarea>
     5.7 +                            <fmt:message key="tlacitko.historie.tip" var="zobrazitHistoriiTip" />
     5.8                              <button class="zobrazitHistorii"
     5.9                                      name="zobrazitHistorii"
    5.10 -                                    title="Vypíše historii SQL příkazů."
    5.11 +                                    title="${zobrazitHistoriiTip}"
    5.12                                      type="button"
    5.13                                      onclick="javascript:ajaxZobrazitHistorii();">&amp;nbsp;</button>
    5.14 +                            <fmt:message key="tlacitko.vykonat.tip" var="vykonatSQLTip" />
    5.15                              <button class="vykonatSQL"
    5.16                                      name="vykonatSQL"
    5.17 -                                    title="Vykoná zadaný SQL příkaz."
    5.18 +                                    title="${vykonatSQLTip}"
    5.19                                      type="button"
    5.20                                      onclick="javascript:ajaxVykonatSQL();">&amp;nbsp;</button>
    5.21                          </fieldset>
     6.1 --- a/java/sql-vyuka/web/WEB-INF/web.xml	Fri May 29 04:09:58 2009 +0200
     6.2 +++ b/java/sql-vyuka/web/WEB-INF/web.xml	Sat May 30 01:26:29 2009 +0200
     6.3 @@ -10,7 +10,7 @@
     6.4      </servlet-mapping>
     6.5      <session-config>
     6.6          <session-timeout>
     6.7 -            30
     6.8 +            60
     6.9          </session-timeout>
    6.10      </session-config>
    6.11      <welcome-file-list>