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 }