java/HrisniciSpameri/src/java/cz/frantovo/hrisniciSpameri/dao/SouhrnDAO.java
author František Kučera <franta-hg@frantovo.cz>
Sun, 15 Feb 2009 22:24:37 +0100
changeset 30 0ffc8c1b2b9c
parent 24 0e73428ba7b1
child 40 fd29fd5a8e29
permissions -rw-r--r--
Výchozí zobrazení: souhrn za poslední měsíc
chybný nebo nulový začátek z webu → o měsíc zpátky
chybný nebo nulový konec z webu → dnešek
     1 package cz.frantovo.hrisniciSpameri.dao;
     2 
     3 import cz.frantovo.hrisniciSpameri.dto.Cil;
     4 import cz.frantovo.hrisniciSpameri.dto.SitovaAdresa;
     5 import cz.frantovo.hrisniciSpameri.dto.Souhrn;
     6 import java.sql.Connection;
     7 import java.sql.Date;
     8 import java.sql.PreparedStatement;
     9 import java.sql.ResultSet;
    10 import java.util.ArrayList;
    11 import java.util.Collection;
    12 import java.util.logging.Level;
    13 
    14 /**
    15  *
    16  * @author fiki
    17  */
    18 public class SouhrnDAO extends HrisniciSuperDAO {
    19 
    20     private enum SQL {
    21 
    22         DENNI_SOUHRN,
    23         DENNI_SOUHRN_CIL,
    24     }
    25     private static final long DEN = 1000 * 60 * 60 * 24;
    26 
    27     /**
    28      * Získá z databáze souhrn útoků. Buď pro konkrétní den nebo pro dané období.
    29      * @param zacatek začátek období nebo konkrétní den
    30      * @param konec konec období nebo null (pokud nás zajímá konkrétní den)
    31      * @param cil id cíle nebo nula, pokud chceme všechny cíle
    32      * @return seznam útoků
    33      */
    34     public Collection<Souhrn> getSouhrn(Date zacatek, Date konec, int cil) {
    35         Collection<Souhrn> souhrn = new ArrayList<Souhrn>();
    36 
    37         Connection db = getSpojeni(null);
    38         if (db == null) {
    39             return null;
    40         } else {
    41             PreparedStatement ps = null;
    42             ResultSet rs = null;
    43             try {
    44                 if (konec == null) {
    45                     konec = zacatek;
    46                 }
    47 
    48                 if (cil == 0) {
    49                     ps = db.prepareStatement(getSQL(SQL.DENNI_SOUHRN));
    50                     ps.setDate(1, zacatek);
    51                     ps.setDate(2, konec);
    52                 } else {
    53                     ps = db.prepareStatement(getSQL(SQL.DENNI_SOUHRN_CIL));
    54                     ps.setDate(1, zacatek);
    55                     ps.setDate(2, konec);
    56                     ps.setInt(3, cil);
    57                 }
    58                 rs = ps.executeQuery();
    59                 while (rs.next()) {
    60                     Souhrn s = new Souhrn();
    61                     s.setAdresa(new SitovaAdresa(rs.getString("ip"), rs.getString("domena")));
    62                     s.setDen(rs.getDate("den"));
    63                     s.setPocet(rs.getInt("pocet"));
    64 
    65                     Cil c = new Cil();
    66                     c.setId(rs.getInt("id"));
    67                     c.setNazev(rs.getString("nazev"));
    68                     c.setUrl(rs.getString("url"));
    69                     c.setSelekt(rs.getString("selekt"));
    70                     c.setDatabaze(rs.getString("databaze"));
    71                     s.setCil(c);
    72 
    73                     souhrn.add(s);
    74                 }
    75             } catch (Exception e) {
    76                 log.log(Level.SEVERE, "Chyba při získávání souhrnu z databáze", e);
    77             } finally {
    78                 zavri(db, ps, rs);
    79             }
    80         }
    81 
    82         return souhrn;
    83     }
    84 }