# HG changeset patch # User František Kučera # Date 1243548791 -7200 # Node ID 1b10a6565e8c1ded866414099ea5c5254daa5030 # Parent 267cce6b9d778442fffd39bdde8696f195a512c3 Propojení javascriptu a servletu. diff -r 267cce6b9d77 -r 1b10a6565e8c java/sql-vyuka/src/java/cz/frantovo/sql/vyuka/Html.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/java/sql-vyuka/src/java/cz/frantovo/sql/vyuka/Html.java Fri May 29 00:13:11 2009 +0200 @@ -0,0 +1,14 @@ +package cz.frantovo.sql.vyuka; + +/** + * + * @author fiki + */ +public class Html { + + /** Escapuje HTML značky v textu. */ + public static String escapuj(String text) { + /** TODO: dopsat! */ + return text; + } +} diff -r 267cce6b9d77 -r 1b10a6565e8c java/sql-vyuka/src/java/cz/frantovo/sql/vyuka/ajax/Ajax.java --- a/java/sql-vyuka/src/java/cz/frantovo/sql/vyuka/ajax/Ajax.java Thu May 28 23:12:19 2009 +0200 +++ b/java/sql-vyuka/src/java/cz/frantovo/sql/vyuka/ajax/Ajax.java Fri May 29 00:13:11 2009 +0200 @@ -1,5 +1,9 @@ package cz.frantovo.sql.vyuka.ajax; +import cz.frantovo.sql.vyuka.dto.Hlaska; +import cz.frantovo.sql.vyuka.dto.Hlaska.Typ; +import cz.frantovo.sql.vyuka.dto.VysledekSQL; + /** * Pomocník servletu. Vrací HTML části stránek. * @author fiki @@ -10,14 +14,27 @@ * @return Historie SQL příkazů daného uživatele. */ public String getHistorie(String idSezeni) { - return "

historie (id=" + idSezeni + ")

"; + VysledekSQL v = new VysledekSQL(); + v.getHlasky().add(new Hlaska("Bude vypsána vaše historie", Typ.OK)); + v.getHlasky().add(new Hlaska("idSezení: " + idSezeni, Typ.OK)); + v.getHlasky().add(new Hlaska("Ale ještě to není hotové.", Typ.Varovani)); + v.getHlasky().add(new Hlaska("Což je asi chyba.", Typ.Chyba)); + v.getHlasky().add(new Hlaska("Stejně vám něco doporučíme.", Typ.Tip)); + return v.getHtml(); } /** * Vykoná zadaný SQL příkaz v databázi. * @return Výsledek dotazu – tabulka, hláška nebo chyba. */ - public String geSQLVysledek(String sql) { - return "

SQL dotaz (čeština): " + sql + "

"; + public String geSQLVysledek(String sql, String idSezeni) { + VysledekSQL v = new VysledekSQL(); + v.getHlasky().add(new Hlaska("Bude vykonán SQL dotaz.", Typ.OK)); + v.getHlasky().add(new Hlaska("idSezení: " + idSezeni, Typ.OK)); + v.getHlasky().add(new Hlaska("SQL: " + sql, Typ.OK)); + v.getHlasky().add(new Hlaska("Ale ještě to není hotové.", Typ.Varovani)); + v.getHlasky().add(new Hlaska("Což je asi chyba.", Typ.Chyba)); + v.getHlasky().add(new Hlaska("Stejně vám něco doporučíme.", Typ.Tip)); + return v.getHtml(); } } diff -r 267cce6b9d77 -r 1b10a6565e8c java/sql-vyuka/src/java/cz/frantovo/sql/vyuka/ajax/Servlet.java --- a/java/sql-vyuka/src/java/cz/frantovo/sql/vyuka/ajax/Servlet.java Thu May 28 23:12:19 2009 +0200 +++ b/java/sql-vyuka/src/java/cz/frantovo/sql/vyuka/ajax/Servlet.java Fri May 29 00:13:11 2009 +0200 @@ -35,13 +35,13 @@ * @throws IOException if an I/O error occurs */ protected void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { - + /** Používáme pouze UTF-8 */ response.setContentType("text/html;charset=UTF-8"); request.setCharacterEncoding("UTF-8"); PrintWriter out = response.getWriter(); - + try { akce parametrAkce = akce.chyba; @@ -51,15 +51,17 @@ /** Chyba nebo podvržený AJAXový požadavek → zobrazíme chybovou hlášku */ } + Ajax a = new Ajax(); + String idSezeni = request.getRequestedSessionId(); switch (parametrAkce) { case vykonat: - out.println(a.geSQLVysledek(request.getParameter("sql"))); + out.println(a.geSQLVysledek(request.getParameter("sql"), idSezeni)); break; case historie: - out.println(a.geSQLVysledek(request.getRequestedSessionId())); + out.println(a.getHistorie(idSezeni)); break; case test: out.println("

AJAX jede!

"); diff -r 267cce6b9d77 -r 1b10a6565e8c java/sql-vyuka/src/java/cz/frantovo/sql/vyuka/dto/Hlaska.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/java/sql-vyuka/src/java/cz/frantovo/sql/vyuka/dto/Hlaska.java Fri May 29 00:13:11 2009 +0200 @@ -0,0 +1,79 @@ +package cz.frantovo.sql.vyuka.dto; + +import cz.frantovo.sql.vyuka.Html; + +/** + * Hláška úspěšného provedení. + * @author fiki + */ +public class Hlaska implements HtmlObjekt { + + private String text; + private Typ typ; + private boolean escapovat; + + /** + * SQL hláška + * @param text text hlášky + * @param typ ovlivňuje ikonku + * @param escapovat zda máme escapovat text kvůli HTML značkám + */ + public Hlaska(String text, Typ typ, boolean escapovat) { + this.text = text; + this.typ = typ; + this.escapovat = escapovat; + } + + /** + * SQL hláška + * @param text text hlášky + * @param typ ovlivňuje ikonku + */ + public Hlaska(String text, Typ typ) { + this.text = text; + this.typ = typ; + this.escapovat = true; + } + + public String getHtml() { + String hodnota; + if (isEscapovat()) { + hodnota = Html.escapuj(text); + } else { + hodnota = text; + } + return "

" + hodnota + "

"; + } + + public String getText() { + return text; + } + + public void setText(String hodnota) { + this.text = hodnota; + } + + public Typ getTyp() { + return typ; + } + + public void setTyp(Typ typ) { + this.typ = typ; + } + + public boolean isEscapovat() { + return escapovat; + } + + public void setEscapovat(boolean escapovat) { + this.escapovat = escapovat; + } + + public enum Typ { + + OK, + Tip, + Varovani, + Chyba + } +} diff -r 267cce6b9d77 -r 1b10a6565e8c java/sql-vyuka/src/java/cz/frantovo/sql/vyuka/dto/HtmlObjekt.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/java/sql-vyuka/src/java/cz/frantovo/sql/vyuka/dto/HtmlObjekt.java Fri May 29 00:13:11 2009 +0200 @@ -0,0 +1,10 @@ +package cz.frantovo.sql.vyuka.dto; + +/** + * HTML objekt. + * @author fiki + */ +public interface HtmlObjekt { + + public String getHtml(); +} diff -r 267cce6b9d77 -r 1b10a6565e8c java/sql-vyuka/src/java/cz/frantovo/sql/vyuka/dto/Tabulka.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/java/sql-vyuka/src/java/cz/frantovo/sql/vyuka/dto/Tabulka.java Fri May 29 00:13:11 2009 +0200 @@ -0,0 +1,74 @@ +package cz.frantovo.sql.vyuka.dto; + +import cz.frantovo.sql.vyuka.Html; +import java.util.ArrayList; +import java.util.Collection; + +/** + * Tabulka, která je výsledkem SQL dotazu. + * @author fiki + */ +public class Tabulka implements HtmlObjekt { + + private String[] zahlavi; + private Collection hodnoty = new ArrayList(); + + public String getHtml() { + + if (getZahlavi() == null || getHodnoty() == null || getZahlavi().length < 1) { + return "

Chybná tabulka

"; + } else { + + StringBuffer html = new StringBuffer(); + + html.append(""); + + + html.append(""); + html.append(""); + for (String z : getZahlavi()) { + html.append(""); + } + html.append(""); + html.append(""); + + + html.append(""); + for (Object[] hh : getHodnoty()) { + for (Object h : hh) { + html.append(formatujRadek(h)); + } + } + html.append(""); + + html.append("
" + Html.escapuj(z) + "
"); + + + return html.toString(); + } + } + + private String formatujRadek(Object o) { + if (o instanceof Integer) { + return "" + Html.escapuj(String.valueOf(o)) + ""; + } else { + return "" + Html.escapuj(String.valueOf(o)) + ""; + } + } + + public String[] getZahlavi() { + return zahlavi; + } + + public void setZahlavi(String[] zahlavi) { + this.zahlavi = zahlavi; + } + + public Collection getHodnoty() { + return hodnoty; + } + + public void setHodnoty(Collection hodnoty) { + this.hodnoty = hodnoty; + } +} diff -r 267cce6b9d77 -r 1b10a6565e8c java/sql-vyuka/src/java/cz/frantovo/sql/vyuka/dto/VysledekSQL.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/java/sql-vyuka/src/java/cz/frantovo/sql/vyuka/dto/VysledekSQL.java Fri May 29 00:13:11 2009 +0200 @@ -0,0 +1,36 @@ +package cz.frantovo.sql.vyuka.dto; + +import java.util.ArrayList; +import java.util.Collection; + +/** + * Výsledek SQL dotazu + * @author fiki + */ +public class VysledekSQL implements HtmlObjekt { + + private Collection tabulky = new ArrayList(); + private Collection hlasky = new ArrayList(); + + public Collection getTabulky() { + return tabulky; + } + + public Collection getHlasky() { + return hlasky; + } + + public String getHtml() { + StringBuffer html = new StringBuffer(); + + for (Tabulka t : tabulky) { + html.append(t.getHtml()); + } + + for (Hlaska h : hlasky) { + html.append(h.getHtml()); + } + + return html.toString(); + } +} diff -r 267cce6b9d77 -r 1b10a6565e8c java/sql-vyuka/web/hlavni.js --- a/java/sql-vyuka/web/hlavni.js Thu May 28 23:12:19 2009 +0200 +++ b/java/sql-vyuka/web/hlavni.js Fri May 29 00:13:11 2009 +0200 @@ -86,7 +86,7 @@ /** Jednoduchá AJAXová funkce, načte obsah souboru a zobrazí ho ve výstupním okně. */ function ajaxZobrazitHistorii() { if (ajax.readyState == 4 || ajax.readyState == 0) { - ajax.open("POST", 'historie.html', true); + ajax.open("POST", 'ajax?akce=historie', true); ajax.onreadystatechange = zobrazitHistoriiVypis; ajax.send(null); }