Changes in [20:47de9e8ce93e:30:d65581701671]
- Files:
-
- 12 added
- 4 removed
- 13 modified
Legend:
- Unmodified
- Added
- Removed
-
java/sql-vyuka/src/java/cz/frantovo/sql/vyuka/dao/HistorieDAO.java
r16 r26 59 59 60 60 Tabulka t = new Tabulka(); 61 String[] zahlavi = {" Kdy", "SQL příkaz"};61 String[] zahlavi = {"historie.kdy", "historie.prikaz"}; 62 62 t.setZahlavi(zahlavi); 63 63 t.setZahlaviTip("historie.zahlaviTip"); 64 t.setLokalizovat(true); 64 65 65 66 Connection db = getSpojeni(DATABAZE.APLIKACE); -
java/sql-vyuka/src/java/cz/frantovo/sql/vyuka/dao/PiskovisteDAO.java
r19 r30 46 46 } 47 47 48 long casPred = System.currentTimeMillis(); 48 49 ps = db.prepareStatement(sql); 49 50 boolean isRS = ps.execute(); … … 59 60 v.getTabulky().add(zpracujVysledek(rs)); 60 61 } 62 long dobaProvadeni = System.currentTimeMillis() - casPred; 61 63 62 64 /** Varování */ … … 74 76 } 75 77 78 v.getHlasky().add(new Hlaska("SQL příkaz byl proveden úspěšně, během " + dobaProvadeni + " ms.", Typ.OK)); 76 79 77 80 } catch (SQLException e) { -
java/sql-vyuka/src/java/cz/frantovo/sql/vyuka/dao/TipyDAO.java
r16 r29 1 1 package cz.frantovo.sql.vyuka.dao; 2 2 3 import java.sql.Connection; 4 import java.sql.PreparedStatement; 5 import java.sql.ResultSet; 6 import java.util.logging.Level; 7 3 8 /** 4 * 9 * Rady, tipy, odkazy, citáty… pro zobrazování uživatelům. 5 10 * @author fiki 6 11 */ 7 12 public class TipyDAO extends VyukaSuperDAO { 8 13 14 private enum SQL { 15 16 NAHODNY_TIP 17 } 18 19 /** 20 * @return Náhodný tip načtený z databáze 21 */ 9 22 public String getTip() { 10 /** TODO: Tipy brát z databáze. */ 11 return "Stejně vám něco <a href=\"http://frantovo.cz/blog/\">doporučíme</a>."; 23 Connection db = getSpojeni(DATABAZE.APLIKACE); 24 if (db == null) { 25 log.log(Level.SEVERE, "Databáze je null."); 26 return null; 27 } else { 28 PreparedStatement ps = null; 29 ResultSet rs = null; 30 try { 31 ps = db.prepareStatement(getSQL(SQL.NAHODNY_TIP)); 32 rs = ps.executeQuery(); 33 rs.next(); 34 return rs.getString("text"); 35 } catch (Exception e) { 36 log.log(Level.SEVERE, "Chyba při hledání náhodného tipu.", e); 37 return null; 38 } finally { 39 zavri(db, ps, rs); 40 } 41 } 12 42 } 13 43 } -
java/sql-vyuka/src/java/cz/frantovo/sql/vyuka/dto/Hlaska.java
r12 r25 1 1 package cz.frantovo.sql.vyuka.dto; 2 3 import cz.frantovo.sql.vyuka.Html;4 2 5 3 /** … … 7 5 * @author fiki 8 6 */ 9 public class Hlaska implements HtmlObjekt{7 public class Hlaska { 10 8 9 public enum Typ { 10 11 OK, 12 Tip, 13 Varovani, 14 Chyba 15 } 11 16 private String text; 12 17 private Typ typ; 13 private boolean escapovat ;18 private boolean escapovat = true; 14 19 15 20 /** … … 34 39 this.typ = typ; 35 40 this.escapovat = true; 36 }37 38 public String getHtml() {39 String hodnota;40 if (isEscapovat()) {41 hodnota = Html.escapuj(text);42 } else {43 hodnota = text;44 }45 return "<p class=\"vysledek" + getTyp().name() + "\">" + hodnota + "</p>";46 41 } 47 42 … … 69 64 this.escapovat = escapovat; 70 65 } 71 72 public enum Typ {73 74 OK,75 Tip,76 Varovani,77 Chyba78 }79 66 } -
java/sql-vyuka/src/java/cz/frantovo/sql/vyuka/dto/Tabulka.java
r16 r26 1 1 package cz.frantovo.sql.vyuka.dto; 2 2 3 import cz.frantovo.sql.vyuka.Html;4 3 import java.util.ArrayList; 5 4 import java.util.Collection; … … 9 8 * @author fiki 10 9 */ 11 public class Tabulka implements HtmlObjekt{10 public class Tabulka { 12 11 13 12 private String[] zahlavi; 13 private String zahlaviTip; 14 14 private Collection<Object[]> hodnoty = new ArrayList<Object[]>(); 15 16 public String getHtml() { 17 18 if (getZahlavi() == null || getHodnoty() == null || getZahlavi().length < 1) { 19 return "<p>Chybná tabulka</p>"; 20 } else { 21 22 StringBuffer html = new StringBuffer(); 23 24 html.append("<table>"); 25 26 27 html.append("<thead title=\"Chceš setřídit výsledek podle nějakého sloupce? Co takhle ORDER BY sloupec.\">"); 28 html.append("<tr>"); 29 for (String z : getZahlavi()) { 30 html.append("<td>" + Html.escapuj(z) + "</td>"); 31 } 32 html.append("</tr>"); 33 html.append("</thead>"); 34 35 36 html.append("<tbody>"); 37 for (Object[] hh : getHodnoty()) { 38 html.append("<tr>"); 39 for (Object h : hh) { 40 html.append(formatujBunku(h)); 41 } 42 html.append("</tr>"); 43 } 44 html.append("</tbody>"); 45 46 html.append("</table>"); 47 48 49 return html.toString(); 50 } 51 } 52 53 private String formatujBunku(Object o) { 54 /** TODO: podporovat i jiné typy */ 55 if (o instanceof Integer) { 56 return "<td class=\"cislo\">" + Html.escapuj(String.valueOf(o)) + "</td>"; 57 } else { 58 return "<td>" + Html.escapuj(String.valueOf(o)) + "</td>"; 59 } 60 } 15 /** Zda se má lokalizovat záhlaví tabulky a její tip. */ 16 private boolean lokalizovat = false; 61 17 62 18 public String[] getZahlavi() { … … 68 24 } 69 25 26 public String getZahlaviTip() { 27 return zahlaviTip; 28 } 29 30 public void setZahlaviTip(String zahlaviTip) { 31 this.zahlaviTip = zahlaviTip; 32 } 33 70 34 public Collection<Object[]> getHodnoty() { 71 35 return hodnoty; 72 36 } 37 38 /** 39 * Zda se má lokalizovat záhlaví tabulky a její tip. 40 * @return the lokalizovat 41 */ 42 public boolean isLokalizovat() { 43 return lokalizovat; 44 } 45 46 /** 47 * Zda se má lokalizovat záhlaví tabulky a její tip. 48 * @param lokalizovat the lokalizovat to set 49 */ 50 public void setLokalizovat(boolean lokalizovat) { 51 this.lokalizovat = lokalizovat; 52 } 73 53 } -
java/sql-vyuka/src/java/cz/frantovo/sql/vyuka/dto/Uzivatel.java
r13 r24 13 13 this.idSezeni = idSezeni; 14 14 this.ipAdresa = ipAdresa; 15 } 16 17 public Uzivatel() { 15 18 } 16 19 -
java/sql-vyuka/src/java/cz/frantovo/sql/vyuka/dto/VysledekSQL.java
r12 r25 5 5 6 6 /** 7 * Výsledek SQL dotazu 7 * Výsledek SQL dotazu. 8 * Obsahuje tabulky a hlášky. 8 9 * @author fiki 9 10 */ 10 public class VysledekSQL implements HtmlObjekt{11 public class VysledekSQL { 11 12 12 13 private Collection<Tabulka> tabulky = new ArrayList<Tabulka>(); … … 20 21 return hlasky; 21 22 } 22 23 public String getHtml() {24 StringBuffer html = new StringBuffer();25 26 for (Tabulka t : tabulky) {27 html.append(t.getHtml());28 }29 30 for (Hlaska h : hlasky) {31 html.append(h.getHtml());32 }33 34 return html.toString();35 }36 23 } -
java/sql-vyuka/src/java/cz/frantovo/sql/vyuka/preklady_cs.properties
r18 r24 14 14 vychozi.vysledek=V\u00EDtejte v programu SQL v\u00FDuka! 15 15 vychozi.napoveda=Tady bude n\u00E1pov\u011Bda 16 17 js.nepodporovany=V\u00E1\u0161 prohl\u00ED\u017Ee\u010D nepodporuje AJAX. Po\u0159i\u010Fte si m\u00E9n\u011B zastaral\u00FD prohl\u00ED\u017Ee\u010D, nejl\u00E9pe Firefox. 18 js.probihaSQL=Prob\u00EDh\u00E1 zpracov\u00E1n\u00ED SQL p\u0159\u00EDkazu\u2026 19 js.probihaHistorie=Na\u010D\u00EDt\u00E1 se historie\u2026 20 21 licence.program=Program je vyd\u00E1n pod licenc\u00ED: 22 licence.agpl=GNU Affero GPL 23 licence.zdrojaky=Zdrojov\u00E9 k\u00F3dy ke sta\u017Een\u00ED: 24 25 vysledek.razeniTip=Chce\u0161 set\u0159\u00EDdit v\u00FDsledek podle n\u011Bjak\u00E9ho sloupce? Co takhle ORDER BY sloupec. 26 historie.kdy=Kdy 27 historie.prikaz=SQL p\u0159\u00EDkaz 28 historie.zahlaviTip=Posledn\u00ED proveden\u00E9 SQL p\u0159\u00EDkazy. -
java/sql-vyuka/web/WEB-INF/casti/aplikace.jspx
r20 r23 6 6 <fmt:setBundle basename="cz.frantovo.sql.vyuka.preklady" scope="application"/> 7 7 8 <!-- Logo programu --> 8 9 <div id="zahlavi"><h1><fmt:message key="nazev"/></h1></div> 9 10 10 11 <div id="bloky"> 12 <!-- Nápověda --> 11 13 <div class ="blok" id="napoveda"> 12 14 <h2><fmt:message key="blok.napoveda"/></h2> 13 <div class="vnitrekBloku" >14 < p id="napovedniPole"><fmt:message key="vychozi.napoveda"/></p>15 <div class="vnitrekBloku" id="napovedniPole"> 16 <jsp:include page="napoveda.jspx" flush="false"/> 15 17 </div> 16 18 </div> 17 18 19 19 <div id="io"> 20 20 <!-- Zadávání SQL příkazů --> 21 21 <div class ="blok" id="vstup"> 22 22 <h2><fmt:message key="blok.zadavani"/></h2> … … 28 28 rows="100" 29 29 cols="1000" 30 onkeypress="javascript: checkTab(event);"><fmt:message key="vychozi.sql"/></textarea>30 onkeypress="javascript:zpracujTabulatory(event);"><fmt:message key="vychozi.sql"/></textarea> 31 31 <input id="stavovePole" 32 32 name="stavovePole" … … 48 48 </div> 49 49 </div> 50 51 52 53 54 50 <!-- Zobrazování výstupu --> 55 51 <div class ="blok" id="vystup"> 56 52 <h2><fmt:message key="blok.vysledek"/></h2> 57 53 <div class="vnitrekBloku" id="vystupniPole"> 58 <p> 59 <fmt:message key="vychozi.vysledek"/> 60 </p> 54 <jsp:include page="vitejte.jspx" flush="false"/> 61 55 </div> 62 56 </div> 63 57 </div> 58 </div> 64 59 65 </div> 60 <!-- Načteme si lokalizované texty do skrytého formuláře, aby je mohl používat JavaScript --> 61 <form action="#" name="lokalizace" id="lokalizace"> 62 <textarea name="nepodporovany"><fmt:message key="js.nepodporovany"/></textarea> 63 <textarea name="probihaSQL"><fmt:message key="js.probihaSQL"/></textarea> 64 <textarea name="probihaHistorie"><fmt:message key="js.probihaHistorie"/></textarea> 65 </form> 66 66 </jsp:root> -
java/sql-vyuka/web/hlavni.js
r20 r24 16 16 return new ActiveXObject("Microsoft.XMLHTTP"); 17 17 } else { 18 alert( "Váš prohlížeč nepodporuje AJAX. Pořiďte si méně zastaralý prohlížeč, nejlépe Firefox.");18 alert(document.lokalizace.nepodporovany.value); 19 19 return null; 20 20 } 21 21 } 22 22 23 23 24 /** Náš AJAXový objekt. */ 24 25 var ajax = getXmlHttpRequestObject(); 26 25 27 26 28 /** … … 32 34 } 33 35 36 34 37 /** 35 38 * Zobrazí text na požadovaném místě. 36 * @param text text k zobrazení 37 * @param kde id prvku, do kterého se má text vypsat 39 * @param text text k zobrazení. V případě formulářů prostý text, v ostatních případech HTML text. 40 * @param kde id prvku, do kterého se má text vypsat. 38 41 **/ 39 42 function zobraz(text, kde) { … … 47 50 } 48 51 49 /**50 * Zobrazí text ve výstupním poli.51 * @param text HTML text k zobrazení52 **/53 function zobrazVystup(text) {54 zobraz(text, vystupniPole);55 }56 57 /**58 * Zobrazí text ve vstupním poli.59 * Požijeme pro načtení SQL příkazu z historie.60 * @param text prostý text k zobrazení61 **/62 function zobrazVstup(text) {63 zobraz(text, vstupniPole);64 }65 66 /**67 * Zobrazí text ve vstupním poli.68 * Požijeme pro načtení SQL příkazu z historie.69 * @param text prostý text k zobrazení70 **/71 function zobrazStav(text) {72 zobraz(text, stavovePole);73 }74 75 /**76 * Zobrazí text ve poli pro nápovědu.77 * @param text text k zobrazení78 **/79 function zobrazNapovedu(text) {80 zobraz(text, napovedniPole);81 }82 52 83 53 /** Jednoduchá AJAXová funkce, načte obsah souboru a zobrazí ho ve výstupním okně. */ 84 54 function ajaxVykonatSQL() { 85 55 if (ajax.readyState == 4 || ajax.readyState == 0) { 86 zobraz Stav('Probíhá zpracování SQL příkazu…');87 ajax.open("POST", 'ajax ?akce=vykonat&sql=' + encodeURIComponent(getSQL()), true);56 zobraz(document.lokalizace.probihaSQL.value, stavovePole); 57 ajax.open("POST", 'ajax.jspx?akce=vykonat&sql=' + encodeURIComponent(getSQL()), true); 88 58 ajax.onreadystatechange = function() { 89 59 if (ajax.readyState == 4) { 90 zobraz Vystup(ajax.responseText);91 zobraz Stav('');60 zobraz(ajax.responseText, vystupniPole); 61 zobraz('', stavovePole); 92 62 } 93 63 }; … … 100 70 function ajaxZobrazitHistorii() { 101 71 if (ajax.readyState == 4 || ajax.readyState == 0) { 102 ajax.open("POST", 'ajax?akce=historie', true); 72 zobraz(document.lokalizace.probihaHistorie.value, stavovePole); 73 ajax.open("POST", 'ajax.jspx?akce=historie', true); 103 74 ajax.onreadystatechange = function() { 104 75 if (ajax.readyState == 4) { 105 zobrazVystup(ajax.responseText); 76 zobraz(ajax.responseText, vystupniPole); 77 zobraz('', stavovePole); 106 78 } 107 79 }; -
java/sql-vyuka/web/index.jsp
r14 r23 1 <!DOCTYPE html SYSTEM "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 1 2 <%@page contentType="text/html" pageEncoding="UTF-8"%> 2 3 <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> 3 4 <%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %> 4 <!DOCTYPE html SYSTEM "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">5 5 6 6 <fmt:setBundle basename="cz.frantovo.sql.vyuka.preklady" scope="application"/> -
java/sql-vyuka/web/styl.css
r20 r22 203 203 font-style: italic; 204 204 } 205 206 /** Skrytý formulář sloužící pro lokalizaci JavaScriptu */ 207 #lokalizace { 208 display: none; 209 } -
java/sql-vyuka/web/vstupniPole.js
r15 r22 3 3 var tab = "\t"; 4 4 5 function checkTab(evt) {5 function zpracujTabulatory(evt) { 6 6 7 7 var t = evt.target;