java/sql-vyuka/src/java/cz/frantovo/sql/vyuka/dao/HistorieDAO.java
author František Kučera <franta-hg@frantovo.cz>
Sun May 31 18:16:15 2009 +0200 (2009-05-31)
changeset 26 5844d64930de
parent 24 dceaaefb1946
permissions -rw-r--r--
Lokalizace záhlaví tabulky.
     1 package cz.frantovo.sql.vyuka.dao;
     2 
     3 import cz.frantovo.sql.vyuka.dto.Hlaska;
     4 import cz.frantovo.sql.vyuka.dto.Hlaska.Typ;
     5 import cz.frantovo.sql.vyuka.dto.Tabulka;
     6 import cz.frantovo.sql.vyuka.dto.Uzivatel;
     7 import cz.frantovo.sql.vyuka.dto.VysledekSQL;
     8 import java.sql.Connection;
     9 import java.sql.PreparedStatement;
    10 import java.sql.ResultSet;
    11 import java.sql.Timestamp;
    12 import java.util.logging.Level;
    13 
    14 /**
    15  * Ukládání a načítání uživatelské historie.
    16  * @author fiki
    17  */
    18 public 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 = {"historie.kdy", "historie.prikaz"};
    62         t.setZahlavi(zahlavi);
    63         t.setZahlaviTip("historie.zahlaviTip");
    64         t.setLokalizovat(true);
    65 
    66         Connection db = getSpojeni(DATABAZE.APLIKACE);
    67         if (db == null) {
    68             v.getHlasky().add(new Hlaska("Došlo k chybě spojení.", Typ.Chyba));
    69         } else {
    70             PreparedStatement ps = null;
    71             ResultSet rs = null;
    72             try {
    73                 ps = db.prepareStatement(getSQL(SQL.NACTI));
    74                 ps.setString(1, uzivatel.getIdSezeni());
    75                 rs = ps.executeQuery();
    76 
    77                 while (rs.next()) {
    78                     Timestamp datum = rs.getTimestamp("datum");
    79                     String sql = rs.getString("sql");
    80                     Object[] hodnoty = {datum, sql};
    81                     t.getHodnoty().add(hodnoty);
    82                 }
    83 
    84                 if (t.getHodnoty().size() < 1) {
    85                     v.getHlasky().add(new Hlaska("Historie SQL příkazů nenalezena.", Typ.Varovani));
    86                 } else {
    87                     v.getTabulky().add(t);
    88                 }
    89 
    90             } catch (Exception e) {
    91                 log.log(Level.SEVERE, "Chyba při ukládání historie.", e);
    92                 v.getHlasky().add(new Hlaska("Došlo k chybě dotazu.", Typ.Chyba));
    93             } finally {
    94                 zavri(db, ps, rs);
    95             }
    96         }
    97 
    98         v.getHlasky().add(new Hlaska(tipy.getTip(), Typ.Tip, false));
    99         return v;
   100     }
   101 }