Lokalizace v HTML (tlačítka), nastavení search_path proměnné.
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();">&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();">&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>