Průvodce (nápověda): serverová část.
1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1.2 +++ b/java/sql-vyuka/src/java/cz/frantovo/sql/vyuka/dao/PruvodceDAO.java Tue Jun 02 00:27:15 2009 +0200
1.3 @@ -0,0 +1,71 @@
1.4 +package cz.frantovo.sql.vyuka.dao;
1.5 +
1.6 +import cz.frantovo.sql.vyuka.dto.Pruvodce;
1.7 +import java.sql.Connection;
1.8 +import java.sql.PreparedStatement;
1.9 +import java.sql.ResultSet;
1.10 +import java.util.logging.Level;
1.11 +
1.12 +/**
1.13 + * Načítá průvodce (nápovědu) z databáze.
1.14 + * @author fiki
1.15 + */
1.16 +public class PruvodceDAO extends VyukaSuperDAO {
1.17 +
1.18 + private enum SQL {
1.19 +
1.20 + PODLE_KODU,
1.21 + PODLE_ID,
1.22 + PODLE_ID_PREDCHOZI,
1.23 + PODLE_ID_NASLEDUJICI
1.24 + }
1.25 +
1.26 + public Pruvodce getPruvodce(long id) {
1.27 + return getPruvodce(getSQL(SQL.PODLE_ID), id);
1.28 + }
1.29 +
1.30 + public Pruvodce getPruvodce(String kod) {
1.31 + return getPruvodce(getSQL(SQL.PODLE_KODU), kod);
1.32 + }
1.33 +
1.34 + public Pruvodce getPruvodcePredchozi(long id) {
1.35 + return getPruvodce(getSQL(SQL.PODLE_ID_PREDCHOZI), id);
1.36 + }
1.37 +
1.38 + public Pruvodce getPruvodceNasledujici(long id) {
1.39 + return getPruvodce(getSQL(SQL.PODLE_ID_NASLEDUJICI), id);
1.40 + }
1.41 +
1.42 + private Pruvodce getPruvodce(String selekt, Object... parametry) {
1.43 + Connection db = getSpojeni(DATABAZE.APLIKACE);
1.44 + if (db == null) {
1.45 + log.log(Level.SEVERE, "Databáze je null.");
1.46 + return null;
1.47 + } else {
1.48 + PreparedStatement ps = null;
1.49 + ResultSet rs = null;
1.50 + try {
1.51 + ps = db.prepareStatement(selekt);
1.52 + for (int i = 0; i < parametry.length; i++) {
1.53 + ps.setObject(i + 1, parametry[i]);
1.54 + }
1.55 + rs = ps.executeQuery();
1.56 + if (rs.next()) {
1.57 + Pruvodce p = new Pruvodce();
1.58 + p.setId(rs.getLong("id"));
1.59 + p.setKod(rs.getString("kod"));
1.60 + p.setNadpis(rs.getString("nadpis"));
1.61 + p.setObsah(rs.getString("obsah"));
1.62 + return p;
1.63 + } else {
1.64 + return null;
1.65 + }
1.66 + } catch (Exception e) {
1.67 + log.log(Level.SEVERE, "Chyba při hledání průvodce.", e);
1.68 + return null;
1.69 + } finally {
1.70 + zavri(db, ps, rs);
1.71 + }
1.72 + }
1.73 + }
1.74 +}
2.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
2.2 +++ b/java/sql-vyuka/src/java/cz/frantovo/sql/vyuka/dao/PruvodceDAO.sql.xml Tue Jun 02 00:27:15 2009 +0200
2.3 @@ -0,0 +1,36 @@
2.4 +<?xml version="1.0" encoding="UTF-8"?>
2.5 +<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
2.6 +<properties>
2.7 + <entry key="PODLE_KODU">
2.8 + <![CDATA[
2.9 + SELECT *
2.10 + FROM pruvodce
2.11 + WHERE kod = ?;
2.12 + ]]>
2.13 + </entry>
2.14 + <entry key="PODLE_ID">
2.15 + <![CDATA[
2.16 + SELECT *
2.17 + FROM pruvodce
2.18 + WHERE id = ?;
2.19 + ]]>
2.20 + </entry>
2.21 + <entry key="PODLE_ID_PREDCHOZI">
2.22 + <![CDATA[
2.23 + SELECT *
2.24 + FROM pruvodce
2.25 + WHERE id < ?
2.26 + ORDER BY id
2.27 + LIMIT 1;
2.28 + ]]>
2.29 + </entry>
2.30 + <entry key="PODLE_ID_NASLEDUJICI">
2.31 + <![CDATA[
2.32 + SELECT *
2.33 + FROM pruvodce
2.34 + WHERE id > ?
2.35 + ORDER BY id
2.36 + LIMIT 1;
2.37 + ]]>
2.38 + </entry>
2.39 +</properties>
2.40 \ No newline at end of file
3.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
3.2 +++ b/java/sql-vyuka/src/java/cz/frantovo/sql/vyuka/dto/Pruvodce.java Tue Jun 02 00:27:15 2009 +0200
3.3 @@ -0,0 +1,60 @@
3.4 +package cz.frantovo.sql.vyuka.dto;
3.5 +
3.6 +/**
3.7 + * Jedna stránka průvodce: kapitola (lekce)
3.8 + * @author fiki
3.9 + */
3.10 +public class Pruvodce {
3.11 +
3.12 + private long id;
3.13 + private String kod;
3.14 + private String nadpis;
3.15 + private String obsah;
3.16 + private boolean lokalizovat = false;
3.17 +
3.18 + public long getId() {
3.19 + return id;
3.20 + }
3.21 +
3.22 + public void setId(long id) {
3.23 + this.id = id;
3.24 + }
3.25 +
3.26 + public String getKod() {
3.27 + return kod;
3.28 + }
3.29 +
3.30 + public void setKod(String kod) {
3.31 + this.kod = kod;
3.32 + }
3.33 +
3.34 + public String getNadpis() {
3.35 + return nadpis;
3.36 + }
3.37 +
3.38 + public void setNadpis(String nadpis) {
3.39 + this.nadpis = nadpis;
3.40 + }
3.41 +
3.42 + public String getObsah() {
3.43 + return obsah;
3.44 + }
3.45 +
3.46 + public void setObsah(String obsah) {
3.47 + this.obsah = obsah;
3.48 + }
3.49 +
3.50 + /**
3.51 + * @return the lokalizovat
3.52 + */
3.53 + public boolean isLokalizovat() {
3.54 + return lokalizovat;
3.55 + }
3.56 +
3.57 + /**
3.58 + * @param lokalizovat the lokalizovat to set
3.59 + */
3.60 + public void setLokalizovat(boolean lokalizovat) {
3.61 + this.lokalizovat = lokalizovat;
3.62 + }
3.63 +}
4.1 --- a/java/sql-vyuka/src/java/cz/frantovo/sql/vyuka/preklady_cs.properties Mon Jun 01 22:06:25 2009 +0200
4.2 +++ b/java/sql-vyuka/src/java/cz/frantovo/sql/vyuka/preklady_cs.properties Tue Jun 02 00:27:15 2009 +0200
4.3 @@ -38,3 +38,6 @@
4.4 navigace.model=Model datab\u00E1ze
4.5 navigace.vpred=Vp\u0159ed v historii
4.6 navigace.nasledujici=N\u00E1sleduj\u00EDc\u00ED lekce
4.7 +
4.8 +pruvodce.chyba.nadpis=Chyba
4.9 +pruvodce.chyba.obsah=<p>Kapitola nenalezena.</p>
5.1 --- a/java/sql-vyuka/src/java/cz/frantovo/sql/vyuka/web/Ajax.java Mon Jun 01 22:06:25 2009 +0200
5.2 +++ b/java/sql-vyuka/src/java/cz/frantovo/sql/vyuka/web/Ajax.java Tue Jun 02 00:27:15 2009 +0200
5.3 @@ -2,6 +2,8 @@
5.4
5.5 import cz.frantovo.sql.vyuka.dao.HistorieDAO;
5.6 import cz.frantovo.sql.vyuka.dao.PiskovisteDAO;
5.7 +import cz.frantovo.sql.vyuka.dao.PruvodceDAO;
5.8 +import cz.frantovo.sql.vyuka.dto.Pruvodce;
5.9 import cz.frantovo.sql.vyuka.dto.Uzivatel;
5.10 import cz.frantovo.sql.vyuka.dto.VysledekSQL;
5.11
5.12 @@ -13,6 +15,8 @@
5.13
5.14 private final Uzivatel uzivatel = new Uzivatel();
5.15 private String sqlPrikaz;
5.16 + private long idPruvodce;
5.17 + private String kodPruvodce;
5.18
5.19 /**
5.20 * Nastaví informace o klientovi (uživateli).
5.21 @@ -33,6 +37,14 @@
5.22 this.sqlPrikaz = sqlPrikaz;
5.23 }
5.24
5.25 + public void setIdPruvodce(long idPruvodce) {
5.26 + this.idPruvodce = idPruvodce;
5.27 + }
5.28 +
5.29 + public void setKodPruvodce(String kodPruvodce) {
5.30 + this.kodPruvodce = kodPruvodce;
5.31 + }
5.32 +
5.33 /**
5.34 * @return Historie SQL příkazů daného uživatele.
5.35 */
5.36 @@ -49,4 +61,62 @@
5.37 PiskovisteDAO p = new PiskovisteDAO();
5.38 return p.vykonejSQL(sqlPrikaz, uzivatel);
5.39 }
5.40 +
5.41 + /**
5.42 + * Načte stránku průvodce – podle ID.
5.43 + * @return průvodce nebo chybová hláška.
5.44 + */
5.45 + public Pruvodce getPruvodcePodleId() {
5.46 + PruvodceDAO dao = new PruvodceDAO();
5.47 + Pruvodce p = dao.getPruvodce(idPruvodce);
5.48 + return osetriChybuPruvodce(p);
5.49 + }
5.50 +
5.51 + /**
5.52 + * Načte stránku průvodce – podle kódu.
5.53 + * @param kod kód průvodce, kterého hledáme.
5.54 + * @return průvodce nebo chybová hláška.
5.55 + */
5.56 + public Pruvodce getPruvodcePodleKodu() {
5.57 + PruvodceDAO dao = new PruvodceDAO();
5.58 + Pruvodce p = dao.getPruvodce(kodPruvodce);
5.59 + return osetriChybuPruvodce(p);
5.60 + }
5.61 +
5.62 + /**
5.63 + * Načte stránku průvodce.
5.64 + * idPruvodce = id, ke kterému hledáme předchozí stránku (záznam před).
5.65 + * @return průvodce nebo chybová hláška.
5.66 + */
5.67 + public Pruvodce getPruvodcePredchozi() {
5.68 + PruvodceDAO dao = new PruvodceDAO();
5.69 + Pruvodce p = dao.getPruvodcePredchozi(idPruvodce);
5.70 + return osetriChybuPruvodce(p);
5.71 + }
5.72 +
5.73 + /**
5.74 + * Načte stránku průvodce.
5.75 + * idPruvodce = id, ke kterému hledáme následující stránku (záznam po).
5.76 + * @return průvodce nebo chybová hláška.
5.77 + */
5.78 + public Pruvodce getPruvodceNasledujici() {
5.79 + PruvodceDAO dao = new PruvodceDAO();
5.80 + Pruvodce p = dao.getPruvodceNasledujici(idPruvodce);
5.81 + return osetriChybuPruvodce(p);
5.82 + }
5.83 +
5.84 + /**
5.85 + * @param p Stránka průvodce načtená z databáze.
5.86 + * @return zadaná stránka, nebo chybová hláška, pokud bylo načteno „null“
5.87 + */
5.88 + private static Pruvodce osetriChybuPruvodce(Pruvodce p) {
5.89 + if (p == null) {
5.90 + p = new Pruvodce();
5.91 + p.setKod("chyba");
5.92 + p.setNadpis("pruvodce.chyba.nadpis");
5.93 + p.setObsah("pruvodce.chyba.obsah");
5.94 + p.setLokalizovat(true);
5.95 + }
5.96 + return p;
5.97 + }
5.98 }
6.1 --- a/java/sql-vyuka/web/ajax.jspx Mon Jun 01 22:06:25 2009 +0200
6.2 +++ b/java/sql-vyuka/web/ajax.jspx Tue Jun 02 00:27:15 2009 +0200
6.3 @@ -119,7 +119,39 @@
6.4
6.5 <!-- <Akce: Nápověda> -->
6.6 <c:when test="${param.akce == 'napoveda'}">
6.7 - <p>TODO: nápověda.</p>
6.8 + <!-- <VolbaMetody> -->
6.9 + <c:choose>
6.10 + <c:when test="${param.pruvodce == 'podleId'}">
6.11 + <jsp:setProperty name="ajax" property="idPruvodce" value="${param.idPruvodce}"/>
6.12 + <c:set var="pruvodce" value="${ajax.pruvodcePodleId}" scope="request"/>
6.13 + </c:when>
6.14 + <c:when test="${param.pruvodce == 'podleKodu'}">
6.15 + <jsp:setProperty name="ajax" property="kodPruvodce" value="${param.kodPruvodce}"/>
6.16 + <c:set var="pruvodce" value="${ajax.pruvodcePodleKodu}" scope="request"/>
6.17 + </c:when>
6.18 + <c:when test="${param.pruvodce == 'predchozi'}">
6.19 + <jsp:setProperty name="ajax" property="idPruvodce" value="${param.idPruvodce}"/>
6.20 + <c:set var="pruvodce" value="${ajax.pruvodcePredchozi}" scope="request"/>
6.21 + </c:when>
6.22 + <c:when test="${param.pruvodce == 'nasledujici'}">
6.23 + <jsp:setProperty name="ajax" property="idPruvodce" value="${param.idPruvodce}"/>
6.24 + <c:set var="pruvodce" value="${ajax.pruvodceNasledujici}" scope="request"/>
6.25 + </c:when>
6.26 + </c:choose>
6.27 + <!-- </VolbaMetody> -->
6.28 +
6.29 + <!-- <Výpis> -->
6.30 + <c:choose>
6.31 + <c:when test="${pruvodce.lokalizovat}">
6.32 + <h1><fmt:message key="${pruvodce.nadpis}"/></h1>
6.33 + <fmt:message key="${pruvodce.obsah}"/>
6.34 + </c:when>
6.35 + <c:otherwise>
6.36 + <h1><c:out value="${pruvodce.nadpis}"/></h1>
6.37 + <c:out value="${pruvodce.obsah}" escapeXml="false"/>
6.38 + </c:otherwise>
6.39 + </c:choose>
6.40 + <!-- </Výpis> -->
6.41 </c:when>
6.42 <!-- </Akce: Nápověda> -->
6.43 </c:choose>