java/HrisniciSpameri/src/java/cz/frantovo/hrisniciSpameri/dao/SouhrnDAO.java
changeset 21 2bc6c427894d
parent 6 38625daa449b
child 23 b22c06c8a55c
     1.1 --- a/java/HrisniciSpameri/src/java/cz/frantovo/hrisniciSpameri/dao/SouhrnDAO.java	Wed Feb 11 22:25:09 2009 +0100
     1.2 +++ b/java/HrisniciSpameri/src/java/cz/frantovo/hrisniciSpameri/dao/SouhrnDAO.java	Sat Feb 14 13:32:38 2009 +0100
     1.3 @@ -1,9 +1,94 @@
     1.4  package cz.frantovo.hrisniciSpameri.dao;
     1.5  
     1.6 +import cz.frantovo.hrisniciSpameri.dto.Cil;
     1.7 +import cz.frantovo.hrisniciSpameri.dto.SitovaAdresa;
     1.8 +import cz.frantovo.hrisniciSpameri.dto.Souhrn;
     1.9 +import java.sql.Connection;
    1.10 +import java.sql.Date;
    1.11 +import java.sql.PreparedStatement;
    1.12 +import java.sql.ResultSet;
    1.13 +import java.util.ArrayList;
    1.14 +import java.util.Collection;
    1.15 +import java.util.logging.Level;
    1.16 +
    1.17  /**
    1.18   *
    1.19   * @author fiki
    1.20   */
    1.21  public class SouhrnDAO extends HrisniciSuperDAO {
    1.22 -    
    1.23 +
    1.24 +    private enum SQL {
    1.25 +
    1.26 +        DENNI_SOUHRN,
    1.27 +        DENNI_SOUHRN_CIL,
    1.28 +        SOUHRN_ZA_OBDOBI,
    1.29 +        SOUHRN_ZA_OBDOBI_CIL
    1.30 +    }
    1.31 +
    1.32 +    /**
    1.33 +     * Získá z databáze souhrn útoků. Buď pro konkrétní den nebo pro dané období.
    1.34 +     * @param zacatek začátek období nebo konkrétní den
    1.35 +     * @param konec konec období nebo null (pokud nás zajímá konkrétní den)
    1.36 +     * @param cil id cíle nebo nula, pokud chceme všechny cíle
    1.37 +     * @return seznam útoků
    1.38 +     */
    1.39 +    public Collection<Souhrn> getSouhrn(Date zacatek, Date konec, int cil) {
    1.40 +        Collection<Souhrn> souhrn = new ArrayList<Souhrn>();
    1.41 +
    1.42 +        Connection db = getSpojeni(null);
    1.43 +        if (db == null) {
    1.44 +            return null;
    1.45 +        } else {
    1.46 +            PreparedStatement ps = null;
    1.47 +            ResultSet rs = null;
    1.48 +            try {
    1.49 +                if (konec == null) {
    1.50 +                    if (cil == 0) {
    1.51 +                        ps = db.prepareStatement(getSQL(SQL.DENNI_SOUHRN));
    1.52 +                        ps.setDate(1, zacatek);
    1.53 +                    } else {
    1.54 +                        ps = db.prepareStatement(getSQL(SQL.DENNI_SOUHRN_CIL));
    1.55 +                        ps.setDate(1, zacatek);
    1.56 +                        ps.setInt(2, cil);
    1.57 +                    }
    1.58 +                } else {
    1.59 +                    if (cil == 0) {
    1.60 +                        ps = db.prepareStatement(getSQL(SQL.SOUHRN_ZA_OBDOBI));
    1.61 +                        ps.setDate(1, zacatek);
    1.62 +                        ps.setDate(2, konec);
    1.63 +                    } else {
    1.64 +                        ps = db.prepareStatement(getSQL(SQL.SOUHRN_ZA_OBDOBI_CIL));
    1.65 +                        ps.setDate(1, zacatek);
    1.66 +                        ps.setDate(2, konec);
    1.67 +                        ps.setInt(3, cil);
    1.68 +                    }
    1.69 +                }
    1.70 +
    1.71 +
    1.72 +                rs = ps.executeQuery();
    1.73 +                while (rs.next()) {
    1.74 +                    Souhrn s = new Souhrn();
    1.75 +                    s.setAdresa(new SitovaAdresa(rs.getString("ip"), rs.getString("domena")));
    1.76 +                    s.setDen(rs.getDate("den"));
    1.77 +                    s.setPocet(rs.getInt("pocet"));
    1.78 +
    1.79 +                    Cil c = new Cil();
    1.80 +                    c.setId(rs.getInt("id"));
    1.81 +                    c.setNazev(rs.getString("nazev"));
    1.82 +                    c.setUrl(rs.getString("url"));
    1.83 +                    c.setSelekt(rs.getString("selekt"));
    1.84 +                    c.setDatabaze(rs.getString("databaze"));
    1.85 +                    s.setCil(c);
    1.86 +
    1.87 +                    souhrn.add(s);
    1.88 +                }
    1.89 +            } catch (Exception e) {
    1.90 +                log.log(Level.SEVERE, "Chyba při získávání souhrnu z databáze", e);
    1.91 +            } finally {
    1.92 +                zavri(db, ps, rs);
    1.93 +            }
    1.94 +        }
    1.95 +
    1.96 +        return souhrn;
    1.97 +    }
    1.98  }