root/java/sql-vyuka/src/java/cz/frantovo/sql/vyuka/dao/HistorieDAO.java @ 17:08cd160ec1c6

Revision 16:9acb74ac7346, 3.1 KB (checked in by František Kučera <franta-hg@…>, 15 years ago)

Databázová vrstva: vykonávání příkazů a ukládání a načítání historie.

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