java/sql-vyuka/src/java/cz/frantovo/sql/vyuka/dao/HistorieDAO.java
author František Kučera <franta-hg@frantovo.cz>
Fri May 29 03:44:35 2009 +0200 (2009-05-29)
changeset 16 9acb74ac7346
child 24 dceaaefb1946
permissions -rw-r--r--
Databázová vrstva: vykonávání příkazů a ukládání a načítání historie.
franta-hg@16
     1
package cz.frantovo.sql.vyuka.dao;
franta-hg@16
     2
franta-hg@16
     3
import cz.frantovo.sql.vyuka.dto.Hlaska;
franta-hg@16
     4
import cz.frantovo.sql.vyuka.dto.Hlaska.Typ;
franta-hg@16
     5
import cz.frantovo.sql.vyuka.dto.Tabulka;
franta-hg@16
     6
import cz.frantovo.sql.vyuka.dto.Uzivatel;
franta-hg@16
     7
import cz.frantovo.sql.vyuka.dto.VysledekSQL;
franta-hg@16
     8
import java.sql.Connection;
franta-hg@16
     9
import java.sql.PreparedStatement;
franta-hg@16
    10
import java.sql.ResultSet;
franta-hg@16
    11
import java.sql.Timestamp;
franta-hg@16
    12
import java.util.logging.Level;
franta-hg@16
    13
franta-hg@16
    14
/**
franta-hg@16
    15
 * Ukládání a načítání uživatelské historie.
franta-hg@16
    16
 * @author fiki
franta-hg@16
    17
 */
franta-hg@16
    18
public class HistorieDAO extends VyukaSuperDAO {
franta-hg@16
    19
franta-hg@16
    20
    TipyDAO tipy = new TipyDAO();
franta-hg@16
    21
franta-hg@16
    22
    private enum SQL {
franta-hg@16
    23
franta-hg@16
    24
        NACTI,
franta-hg@16
    25
        ULOZ
franta-hg@16
    26
    }
franta-hg@16
    27
franta-hg@16
    28
    /**
franta-hg@16
    29
     * @param sql uživatelský SQL příkaz k uložení
franta-hg@16
    30
     * @param uzivatel idSezení a IP adresa uživatele
franta-hg@16
    31
     * @return zda se podařilo historii uložit
franta-hg@16
    32
     */
franta-hg@16
    33
    public boolean ulozPrikaz(String sql, Uzivatel uzivatel) {
franta-hg@16
    34
        Connection db = getSpojeni(DATABAZE.APLIKACE);
franta-hg@16
    35
        if (db == null) {
franta-hg@16
    36
            return false;
franta-hg@16
    37
        } else {
franta-hg@16
    38
            PreparedStatement ps = null;
franta-hg@16
    39
            ResultSet rs = null;
franta-hg@16
    40
            try {
franta-hg@16
    41
                ps = db.prepareStatement(getSQL(SQL.ULOZ));
franta-hg@16
    42
                ps.setString(1, sql);
franta-hg@16
    43
                ps.setString(2, uzivatel.getIdSezeni());
franta-hg@16
    44
                ps.setString(3, uzivatel.getIpAdresa());
franta-hg@16
    45
                ps.executeUpdate();
franta-hg@16
    46
                return true;
franta-hg@16
    47
            } catch (Exception e) {
franta-hg@16
    48
                log.log(Level.SEVERE, "Chyba při ukládání historie.", e);
franta-hg@16
    49
                return false;
franta-hg@16
    50
            } finally {
franta-hg@16
    51
                zavri(db, ps, rs);
franta-hg@16
    52
            }
franta-hg@16
    53
        }
franta-hg@16
    54
    }
franta-hg@16
    55
franta-hg@16
    56
    public VysledekSQL nactiHistorii(Uzivatel uzivatel) {
franta-hg@16
    57
        VysledekSQL v = new VysledekSQL();
franta-hg@16
    58
franta-hg@16
    59
franta-hg@16
    60
        Tabulka t = new Tabulka();
franta-hg@16
    61
        String[] zahlavi = {"Kdy", "SQL příkaz"};
franta-hg@16
    62
        t.setZahlavi(zahlavi);
franta-hg@16
    63
franta-hg@16
    64
franta-hg@16
    65
        Connection db = getSpojeni(DATABAZE.APLIKACE);
franta-hg@16
    66
        if (db == null) {
franta-hg@16
    67
            v.getHlasky().add(new Hlaska("Došlo k chybě spojení.", Typ.Chyba));
franta-hg@16
    68
        } else {
franta-hg@16
    69
            PreparedStatement ps = null;
franta-hg@16
    70
            ResultSet rs = null;
franta-hg@16
    71
            try {
franta-hg@16
    72
                ps = db.prepareStatement(getSQL(SQL.NACTI));
franta-hg@16
    73
                ps.setString(1, uzivatel.getIdSezeni());
franta-hg@16
    74
                rs = ps.executeQuery();
franta-hg@16
    75
franta-hg@16
    76
                while (rs.next()) {
franta-hg@16
    77
                    Timestamp datum = rs.getTimestamp("datum");
franta-hg@16
    78
                    String sql = rs.getString("sql");
franta-hg@16
    79
                    Object[] hodnoty = {datum, sql};
franta-hg@16
    80
                    t.getHodnoty().add(hodnoty);
franta-hg@16
    81
                }
franta-hg@16
    82
franta-hg@16
    83
                if (t.getHodnoty().size() < 1) {
franta-hg@16
    84
                    v.getHlasky().add(new Hlaska("Historie SQL příkazů nenalezena.", Typ.Varovani));
franta-hg@16
    85
                } else {
franta-hg@16
    86
                    v.getTabulky().add(t);
franta-hg@16
    87
                }
franta-hg@16
    88
franta-hg@16
    89
            } catch (Exception e) {
franta-hg@16
    90
                log.log(Level.SEVERE, "Chyba při ukládání historie.", e);
franta-hg@16
    91
                v.getHlasky().add(new Hlaska("Došlo k chybě dotazu.", Typ.Chyba));
franta-hg@16
    92
            } finally {
franta-hg@16
    93
                zavri(db, ps, rs);
franta-hg@16
    94
            }
franta-hg@16
    95
        }
franta-hg@16
    96
franta-hg@16
    97
        v.getHlasky().add(new Hlaska(tipy.getTip(), Typ.Tip, false));
franta-hg@16
    98
        return v;
franta-hg@16
    99
    }
franta-hg@16
   100
}