Metoda nebude deklarovat, že vrací HashMapu, ale jen Mapu – obecné rozhraní místo konkrétní implementace (uvnitř se stále používá HashMapa).
1 package cz.frantovo.hrisniciSpameri.dao;
3 import cz.frantovo.hrisniciSpameri.dto.Cil;
4 import cz.frantovo.hrisniciSpameri.dto.SitovaAdresa;
5 import cz.frantovo.hrisniciSpameri.dto.Soucet;
6 import cz.frantovo.hrisniciSpameri.dto.Souhrn;
7 import java.sql.Connection;
9 import java.sql.PreparedStatement;
10 import java.sql.ResultSet;
11 import java.util.ArrayList;
12 import java.util.Collection;
13 import java.util.HashMap;
15 import java.util.logging.Level;
21 public class SouhrnDAO extends HrisniciSuperDAO {
32 * Získá z databáze souhrn útoků. Buď pro konkrétní den nebo pro dané období.
33 * @param zacatek začátek období nebo konkrétní den
34 * @param konec konec období nebo null (pokud nás zajímá konkrétní den)
35 * @param cil id cíle nebo nula, pokud chceme všechny cíle
36 * @return seznam útoků
38 public Collection<Souhrn> getSouhrn(Date zacatek, Date konec, int cil) {
39 Collection<Souhrn> souhrn = new ArrayList<Souhrn>();
41 Connection db = getSpojeni(null);
45 PreparedStatement ps = null;
53 ps = db.prepareStatement(getSQL(SQL.DENNI_SOUHRN));
54 ps.setDate(1, zacatek);
57 ps = db.prepareStatement(getSQL(SQL.DENNI_SOUHRN_CIL));
58 ps.setDate(1, zacatek);
62 rs = ps.executeQuery();
64 Souhrn s = new Souhrn();
65 s.setAdresa(new SitovaAdresa(rs.getString("ip"), rs.getString("domena")));
66 s.setDen(rs.getDate("den"));
67 s.setPocet(rs.getInt("pocet"));
70 c.setId(rs.getInt("id"));
71 c.setNazev(rs.getString("nazev"));
72 c.setUrl(rs.getString("url"));
73 c.setSelekt(rs.getString("selekt"));
74 c.setDatabaze(rs.getString("databaze"));
79 } catch (Exception e) {
80 log.log(Level.SEVERE, "Chyba při získávání souhrnu z databáze", e);
90 * @param zacatek začátek období nebo konkrétní den
91 * @param konec konec období nebo null (pokud nás zajímá konkrétní den – což nás tady většinou nezajímá)
92 * @param cil id cíle nebo nula, pokud chceme všechny cíle
93 * @return součty útoků za jednotlivé dny, seskupené podle cílů
95 public Map<Cil, Collection<Soucet>> getSoucty(Date zacatek, Date konec, int cil) {
96 HashMap<Cil, Collection<Soucet>> soucty = new HashMap<Cil, Collection<Soucet>>();
98 Connection db = getSpojeni(null);
102 PreparedStatement ps = null;
110 ps = db.prepareStatement(getSQL(SQL.DENNI_SOUCTY));
111 ps.setDate(1, zacatek);
112 ps.setDate(2, konec);
114 ps = db.prepareStatement(getSQL(SQL.DENNI_SOUCTY_CIL));
115 ps.setDate(1, zacatek);
116 ps.setDate(2, konec);
119 rs = ps.executeQuery();
121 Soucet s = new Soucet();
122 s.setDen(rs.getDate("den"));
123 s.setPocet(rs.getInt("pocet"));
126 c.setId(rs.getInt("id"));
127 c.setNazev(rs.getString("nazev"));
128 c.setUrl(rs.getString("url"));
129 c.setSelekt(rs.getString("selekt"));
130 c.setDatabaze(rs.getString("databaze"));
133 if (soucty.get(c) == null) {
134 soucty.put(c, new ArrayList<Soucet>());
137 soucty.get(c).add(s);
139 } catch (Exception e) {
140 log.log(Level.SEVERE, "Chyba při získávání součtů z databáze", e);