java/sql-vyuka/src/java/cz/frantovo/sql/vyuka/dao/HistorieDAO.java
changeset 16 9acb74ac7346
child 24 dceaaefb1946
     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/HistorieDAO.java	Fri May 29 03:44:35 2009 +0200
     1.3 @@ -0,0 +1,100 @@
     1.4 +package cz.frantovo.sql.vyuka.dao;
     1.5 +
     1.6 +import cz.frantovo.sql.vyuka.dto.Hlaska;
     1.7 +import cz.frantovo.sql.vyuka.dto.Hlaska.Typ;
     1.8 +import cz.frantovo.sql.vyuka.dto.Tabulka;
     1.9 +import cz.frantovo.sql.vyuka.dto.Uzivatel;
    1.10 +import cz.frantovo.sql.vyuka.dto.VysledekSQL;
    1.11 +import java.sql.Connection;
    1.12 +import java.sql.PreparedStatement;
    1.13 +import java.sql.ResultSet;
    1.14 +import java.sql.Timestamp;
    1.15 +import java.util.logging.Level;
    1.16 +
    1.17 +/**
    1.18 + * Ukládání a načítání uživatelské historie.
    1.19 + * @author fiki
    1.20 + */
    1.21 +public class HistorieDAO extends VyukaSuperDAO {
    1.22 +
    1.23 +    TipyDAO tipy = new TipyDAO();
    1.24 +
    1.25 +    private enum SQL {
    1.26 +
    1.27 +        NACTI,
    1.28 +        ULOZ
    1.29 +    }
    1.30 +
    1.31 +    /**
    1.32 +     * @param sql uživatelský SQL příkaz k uložení
    1.33 +     * @param uzivatel idSezení a IP adresa uživatele
    1.34 +     * @return zda se podařilo historii uložit
    1.35 +     */
    1.36 +    public boolean ulozPrikaz(String sql, Uzivatel uzivatel) {
    1.37 +        Connection db = getSpojeni(DATABAZE.APLIKACE);
    1.38 +        if (db == null) {
    1.39 +            return false;
    1.40 +        } else {
    1.41 +            PreparedStatement ps = null;
    1.42 +            ResultSet rs = null;
    1.43 +            try {
    1.44 +                ps = db.prepareStatement(getSQL(SQL.ULOZ));
    1.45 +                ps.setString(1, sql);
    1.46 +                ps.setString(2, uzivatel.getIdSezeni());
    1.47 +                ps.setString(3, uzivatel.getIpAdresa());
    1.48 +                ps.executeUpdate();
    1.49 +                return true;
    1.50 +            } catch (Exception e) {
    1.51 +                log.log(Level.SEVERE, "Chyba při ukládání historie.", e);
    1.52 +                return false;
    1.53 +            } finally {
    1.54 +                zavri(db, ps, rs);
    1.55 +            }
    1.56 +        }
    1.57 +    }
    1.58 +
    1.59 +    public VysledekSQL nactiHistorii(Uzivatel uzivatel) {
    1.60 +        VysledekSQL v = new VysledekSQL();
    1.61 +
    1.62 +
    1.63 +        Tabulka t = new Tabulka();
    1.64 +        String[] zahlavi = {"Kdy", "SQL příkaz"};
    1.65 +        t.setZahlavi(zahlavi);
    1.66 +
    1.67 +
    1.68 +        Connection db = getSpojeni(DATABAZE.APLIKACE);
    1.69 +        if (db == null) {
    1.70 +            v.getHlasky().add(new Hlaska("Došlo k chybě spojení.", Typ.Chyba));
    1.71 +        } else {
    1.72 +            PreparedStatement ps = null;
    1.73 +            ResultSet rs = null;
    1.74 +            try {
    1.75 +                ps = db.prepareStatement(getSQL(SQL.NACTI));
    1.76 +                ps.setString(1, uzivatel.getIdSezeni());
    1.77 +                rs = ps.executeQuery();
    1.78 +
    1.79 +                while (rs.next()) {
    1.80 +                    Timestamp datum = rs.getTimestamp("datum");
    1.81 +                    String sql = rs.getString("sql");
    1.82 +                    Object[] hodnoty = {datum, sql};
    1.83 +                    t.getHodnoty().add(hodnoty);
    1.84 +                }
    1.85 +
    1.86 +                if (t.getHodnoty().size() < 1) {
    1.87 +                    v.getHlasky().add(new Hlaska("Historie SQL příkazů nenalezena.", Typ.Varovani));
    1.88 +                } else {
    1.89 +                    v.getTabulky().add(t);
    1.90 +                }
    1.91 +
    1.92 +            } catch (Exception e) {
    1.93 +                log.log(Level.SEVERE, "Chyba při ukládání historie.", e);
    1.94 +                v.getHlasky().add(new Hlaska("Došlo k chybě dotazu.", Typ.Chyba));
    1.95 +            } finally {
    1.96 +                zavri(db, ps, rs);
    1.97 +            }
    1.98 +        }
    1.99 +
   1.100 +        v.getHlasky().add(new Hlaska(tipy.getTip(), Typ.Tip, false));
   1.101 +        return v;
   1.102 +    }
   1.103 +}