java/HrisniciSpameri/src/java/cz/frantovo/hrisniciSpameri/dao/SouhrnDAO.java
author František Kučera <franta-hg@frantovo.cz>
Sat, 14 Feb 2009 13:32:38 +0100
changeset 21 2bc6c427894d
parent 6 38625daa449b
child 23 b22c06c8a55c
permissions -rw-r--r--
Denní souhr načítáme z databáze.
     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         SOUHRN_ZA_OBDOBI,
    25         SOUHRN_ZA_OBDOBI_CIL
    26     }
    27 
    28     /**
    29      * Získá z databáze souhrn útoků. Buď pro konkrétní den nebo pro dané období.
    30      * @param zacatek začátek období nebo konkrétní den
    31      * @param konec konec období nebo null (pokud nás zajímá konkrétní den)
    32      * @param cil id cíle nebo nula, pokud chceme všechny cíle
    33      * @return seznam útoků
    34      */
    35     public Collection<Souhrn> getSouhrn(Date zacatek, Date konec, int cil) {
    36         Collection<Souhrn> souhrn = new ArrayList<Souhrn>();
    37 
    38         Connection db = getSpojeni(null);
    39         if (db == null) {
    40             return null;
    41         } else {
    42             PreparedStatement ps = null;
    43             ResultSet rs = null;
    44             try {
    45                 if (konec == null) {
    46                     if (cil == 0) {
    47                         ps = db.prepareStatement(getSQL(SQL.DENNI_SOUHRN));
    48                         ps.setDate(1, zacatek);
    49                     } else {
    50                         ps = db.prepareStatement(getSQL(SQL.DENNI_SOUHRN_CIL));
    51                         ps.setDate(1, zacatek);
    52                         ps.setInt(2, cil);
    53                     }
    54                 } else {
    55                     if (cil == 0) {
    56                         ps = db.prepareStatement(getSQL(SQL.SOUHRN_ZA_OBDOBI));
    57                         ps.setDate(1, zacatek);
    58                         ps.setDate(2, konec);
    59                     } else {
    60                         ps = db.prepareStatement(getSQL(SQL.SOUHRN_ZA_OBDOBI_CIL));
    61                         ps.setDate(1, zacatek);
    62                         ps.setDate(2, konec);
    63                         ps.setInt(3, cil);
    64                     }
    65                 }
    66 
    67 
    68                 rs = ps.executeQuery();
    69                 while (rs.next()) {
    70                     Souhrn s = new Souhrn();
    71                     s.setAdresa(new SitovaAdresa(rs.getString("ip"), rs.getString("domena")));
    72                     s.setDen(rs.getDate("den"));
    73                     s.setPocet(rs.getInt("pocet"));
    74 
    75                     Cil c = new Cil();
    76                     c.setId(rs.getInt("id"));
    77                     c.setNazev(rs.getString("nazev"));
    78                     c.setUrl(rs.getString("url"));
    79                     c.setSelekt(rs.getString("selekt"));
    80                     c.setDatabaze(rs.getString("databaze"));
    81                     s.setCil(c);
    82 
    83                     souhrn.add(s);
    84                 }
    85             } catch (Exception e) {
    86                 log.log(Level.SEVERE, "Chyba při získávání souhrnu z databáze", e);
    87             } finally {
    88                 zavri(db, ps, rs);
    89             }
    90         }
    91 
    92         return souhrn;
    93     }
    94 }