franta-hg@6: package cz.frantovo.hrisniciSpameri.dao; franta-hg@6: franta-hg@21: import cz.frantovo.hrisniciSpameri.dto.Cil; franta-hg@21: import cz.frantovo.hrisniciSpameri.dto.SitovaAdresa; franta-hg@21: import cz.frantovo.hrisniciSpameri.dto.Souhrn; franta-hg@21: import java.sql.Connection; franta-hg@21: import java.sql.Date; franta-hg@21: import java.sql.PreparedStatement; franta-hg@21: import java.sql.ResultSet; franta-hg@21: import java.util.ArrayList; franta-hg@21: import java.util.Collection; franta-hg@21: import java.util.logging.Level; franta-hg@21: franta-hg@6: /** franta-hg@6: * franta-hg@6: * @author fiki franta-hg@6: */ franta-hg@6: public class SouhrnDAO extends HrisniciSuperDAO { franta-hg@21: franta-hg@21: private enum SQL { franta-hg@21: franta-hg@21: DENNI_SOUHRN, franta-hg@21: DENNI_SOUHRN_CIL, franta-hg@21: SOUHRN_ZA_OBDOBI, franta-hg@21: SOUHRN_ZA_OBDOBI_CIL franta-hg@21: } franta-hg@21: franta-hg@23: private static final long DEN = 1000 * 60 * 60 * 24; franta-hg@23: franta-hg@21: /** franta-hg@21: * Získá z databáze souhrn útoků. Buď pro konkrétní den nebo pro dané období. franta-hg@21: * @param zacatek začátek období nebo konkrétní den franta-hg@21: * @param konec konec období nebo null (pokud nás zajímá konkrétní den) franta-hg@21: * @param cil id cíle nebo nula, pokud chceme všechny cíle franta-hg@21: * @return seznam útoků franta-hg@21: */ franta-hg@21: public Collection getSouhrn(Date zacatek, Date konec, int cil) { franta-hg@21: Collection souhrn = new ArrayList(); franta-hg@21: franta-hg@21: Connection db = getSpojeni(null); franta-hg@21: if (db == null) { franta-hg@21: return null; franta-hg@21: } else { franta-hg@21: PreparedStatement ps = null; franta-hg@21: ResultSet rs = null; franta-hg@21: try { franta-hg@21: if (konec == null) { franta-hg@21: if (cil == 0) { franta-hg@21: ps = db.prepareStatement(getSQL(SQL.DENNI_SOUHRN)); franta-hg@21: ps.setDate(1, zacatek); franta-hg@21: } else { franta-hg@21: ps = db.prepareStatement(getSQL(SQL.DENNI_SOUHRN_CIL)); franta-hg@21: ps.setDate(1, zacatek); franta-hg@21: ps.setInt(2, cil); franta-hg@21: } franta-hg@21: } else { franta-hg@21: if (cil == 0) { franta-hg@21: ps = db.prepareStatement(getSQL(SQL.SOUHRN_ZA_OBDOBI)); franta-hg@21: ps.setDate(1, zacatek); franta-hg@21: ps.setDate(2, konec); franta-hg@21: } else { franta-hg@21: ps = db.prepareStatement(getSQL(SQL.SOUHRN_ZA_OBDOBI_CIL)); franta-hg@21: ps.setDate(1, zacatek); franta-hg@21: ps.setDate(2, konec); franta-hg@21: ps.setInt(3, cil); franta-hg@21: } franta-hg@21: } franta-hg@21: franta-hg@21: franta-hg@21: rs = ps.executeQuery(); franta-hg@21: while (rs.next()) { franta-hg@21: Souhrn s = new Souhrn(); franta-hg@21: s.setAdresa(new SitovaAdresa(rs.getString("ip"), rs.getString("domena"))); franta-hg@21: s.setDen(rs.getDate("den")); franta-hg@21: s.setPocet(rs.getInt("pocet")); franta-hg@21: franta-hg@21: Cil c = new Cil(); franta-hg@21: c.setId(rs.getInt("id")); franta-hg@21: c.setNazev(rs.getString("nazev")); franta-hg@21: c.setUrl(rs.getString("url")); franta-hg@21: c.setSelekt(rs.getString("selekt")); franta-hg@21: c.setDatabaze(rs.getString("databaze")); franta-hg@21: s.setCil(c); franta-hg@21: franta-hg@21: souhrn.add(s); franta-hg@21: } franta-hg@21: } catch (Exception e) { franta-hg@21: log.log(Level.SEVERE, "Chyba při získávání souhrnu z databáze", e); franta-hg@21: } finally { franta-hg@21: zavri(db, ps, rs); franta-hg@21: } franta-hg@21: } franta-hg@21: franta-hg@21: return souhrn; franta-hg@21: } franta-hg@23: franta-hg@23: /** franta-hg@23: * Ve výchozím stavu zobrazujeme souhrn za předešlý den. franta-hg@23: * @return včerejšek franta-hg@23: */ franta-hg@23: public static Date getVychoziDen() { franta-hg@23: return new Date(System.currentTimeMillis() - DEN); franta-hg@23: } franta-hg@6: }