franta-hg@16: package cz.frantovo.sql.vyuka.dao; franta-hg@16: franta-hg@16: import cz.frantovo.sql.vyuka.dto.Hlaska; franta-hg@16: import cz.frantovo.sql.vyuka.dto.Hlaska.Typ; franta-hg@16: import cz.frantovo.sql.vyuka.dto.Tabulka; franta-hg@16: import cz.frantovo.sql.vyuka.dto.Uzivatel; franta-hg@16: import cz.frantovo.sql.vyuka.dto.VysledekSQL; franta-hg@16: import java.sql.Connection; franta-hg@16: import java.sql.PreparedStatement; franta-hg@16: import java.sql.ResultSet; franta-hg@16: import java.sql.Timestamp; franta-hg@16: import java.util.logging.Level; franta-hg@16: franta-hg@16: /** franta-hg@16: * Ukládání a načítání uživatelské historie. franta-hg@16: * @author fiki franta-hg@16: */ franta-hg@16: public class HistorieDAO extends VyukaSuperDAO { franta-hg@16: franta-hg@16: TipyDAO tipy = new TipyDAO(); franta-hg@16: franta-hg@16: private enum SQL { franta-hg@16: franta-hg@16: NACTI, franta-hg@16: ULOZ franta-hg@16: } franta-hg@16: franta-hg@16: /** franta-hg@16: * @param sql uživatelský SQL příkaz k uložení franta-hg@16: * @param uzivatel idSezení a IP adresa uživatele franta-hg@16: * @return zda se podařilo historii uložit franta-hg@16: */ franta-hg@16: public boolean ulozPrikaz(String sql, Uzivatel uzivatel) { franta-hg@16: Connection db = getSpojeni(DATABAZE.APLIKACE); franta-hg@16: if (db == null) { franta-hg@16: return false; franta-hg@16: } else { franta-hg@16: PreparedStatement ps = null; franta-hg@16: ResultSet rs = null; franta-hg@16: try { franta-hg@16: ps = db.prepareStatement(getSQL(SQL.ULOZ)); franta-hg@16: ps.setString(1, sql); franta-hg@16: ps.setString(2, uzivatel.getIdSezeni()); franta-hg@16: ps.setString(3, uzivatel.getIpAdresa()); franta-hg@16: ps.executeUpdate(); franta-hg@16: return true; franta-hg@16: } catch (Exception e) { franta-hg@16: log.log(Level.SEVERE, "Chyba při ukládání historie.", e); franta-hg@16: return false; franta-hg@16: } finally { franta-hg@16: zavri(db, ps, rs); franta-hg@16: } franta-hg@16: } franta-hg@16: } franta-hg@16: franta-hg@16: public VysledekSQL nactiHistorii(Uzivatel uzivatel) { franta-hg@16: VysledekSQL v = new VysledekSQL(); franta-hg@16: franta-hg@16: franta-hg@16: Tabulka t = new Tabulka(); franta-hg@16: String[] zahlavi = {"Kdy", "SQL příkaz"}; franta-hg@16: t.setZahlavi(zahlavi); franta-hg@16: franta-hg@16: franta-hg@16: Connection db = getSpojeni(DATABAZE.APLIKACE); franta-hg@16: if (db == null) { franta-hg@16: v.getHlasky().add(new Hlaska("Došlo k chybě spojení.", Typ.Chyba)); franta-hg@16: } else { franta-hg@16: PreparedStatement ps = null; franta-hg@16: ResultSet rs = null; franta-hg@16: try { franta-hg@16: ps = db.prepareStatement(getSQL(SQL.NACTI)); franta-hg@16: ps.setString(1, uzivatel.getIdSezeni()); franta-hg@16: rs = ps.executeQuery(); franta-hg@16: franta-hg@16: while (rs.next()) { franta-hg@16: Timestamp datum = rs.getTimestamp("datum"); franta-hg@16: String sql = rs.getString("sql"); franta-hg@16: Object[] hodnoty = {datum, sql}; franta-hg@16: t.getHodnoty().add(hodnoty); franta-hg@16: } franta-hg@16: franta-hg@16: if (t.getHodnoty().size() < 1) { franta-hg@16: v.getHlasky().add(new Hlaska("Historie SQL příkazů nenalezena.", Typ.Varovani)); franta-hg@16: } else { franta-hg@16: v.getTabulky().add(t); franta-hg@16: } franta-hg@16: franta-hg@16: } catch (Exception e) { franta-hg@16: log.log(Level.SEVERE, "Chyba při ukládání historie.", e); franta-hg@16: v.getHlasky().add(new Hlaska("Došlo k chybě dotazu.", Typ.Chyba)); franta-hg@16: } finally { franta-hg@16: zavri(db, ps, rs); franta-hg@16: } franta-hg@16: } franta-hg@16: franta-hg@16: v.getHlasky().add(new Hlaska(tipy.getTip(), Typ.Tip, false)); franta-hg@16: return v; franta-hg@16: } franta-hg@16: }