franta-hg@6
|
1 |
package cz.frantovo.hrisniciSpameri.dao;
|
franta-hg@6
|
2 |
|
franta-hg@21
|
3 |
import cz.frantovo.hrisniciSpameri.dto.Cil;
|
franta-hg@21
|
4 |
import cz.frantovo.hrisniciSpameri.dto.SitovaAdresa;
|
franta-hg@21
|
5 |
import cz.frantovo.hrisniciSpameri.dto.Souhrn;
|
franta-hg@21
|
6 |
import java.sql.Connection;
|
franta-hg@21
|
7 |
import java.sql.Date;
|
franta-hg@21
|
8 |
import java.sql.PreparedStatement;
|
franta-hg@21
|
9 |
import java.sql.ResultSet;
|
franta-hg@21
|
10 |
import java.util.ArrayList;
|
franta-hg@21
|
11 |
import java.util.Collection;
|
franta-hg@21
|
12 |
import java.util.logging.Level;
|
franta-hg@21
|
13 |
|
franta-hg@6
|
14 |
/**
|
franta-hg@6
|
15 |
*
|
franta-hg@6
|
16 |
* @author fiki
|
franta-hg@6
|
17 |
*/
|
franta-hg@6
|
18 |
public class SouhrnDAO extends HrisniciSuperDAO {
|
franta-hg@21
|
19 |
|
franta-hg@21
|
20 |
private enum SQL {
|
franta-hg@21
|
21 |
|
franta-hg@21
|
22 |
DENNI_SOUHRN,
|
franta-hg@21
|
23 |
DENNI_SOUHRN_CIL,
|
franta-hg@21
|
24 |
SOUHRN_ZA_OBDOBI,
|
franta-hg@21
|
25 |
SOUHRN_ZA_OBDOBI_CIL
|
franta-hg@21
|
26 |
}
|
franta-hg@21
|
27 |
|
franta-hg@23
|
28 |
private static final long DEN = 1000 * 60 * 60 * 24;
|
franta-hg@23
|
29 |
|
franta-hg@21
|
30 |
/**
|
franta-hg@21
|
31 |
* Získá z databáze souhrn útoků. Buď pro konkrétní den nebo pro dané období.
|
franta-hg@21
|
32 |
* @param zacatek začátek období nebo konkrétní den
|
franta-hg@21
|
33 |
* @param konec konec období nebo null (pokud nás zajímá konkrétní den)
|
franta-hg@21
|
34 |
* @param cil id cíle nebo nula, pokud chceme všechny cíle
|
franta-hg@21
|
35 |
* @return seznam útoků
|
franta-hg@21
|
36 |
*/
|
franta-hg@21
|
37 |
public Collection<Souhrn> getSouhrn(Date zacatek, Date konec, int cil) {
|
franta-hg@21
|
38 |
Collection<Souhrn> souhrn = new ArrayList<Souhrn>();
|
franta-hg@21
|
39 |
|
franta-hg@21
|
40 |
Connection db = getSpojeni(null);
|
franta-hg@21
|
41 |
if (db == null) {
|
franta-hg@21
|
42 |
return null;
|
franta-hg@21
|
43 |
} else {
|
franta-hg@21
|
44 |
PreparedStatement ps = null;
|
franta-hg@21
|
45 |
ResultSet rs = null;
|
franta-hg@21
|
46 |
try {
|
franta-hg@21
|
47 |
if (konec == null) {
|
franta-hg@21
|
48 |
if (cil == 0) {
|
franta-hg@21
|
49 |
ps = db.prepareStatement(getSQL(SQL.DENNI_SOUHRN));
|
franta-hg@21
|
50 |
ps.setDate(1, zacatek);
|
franta-hg@21
|
51 |
} else {
|
franta-hg@21
|
52 |
ps = db.prepareStatement(getSQL(SQL.DENNI_SOUHRN_CIL));
|
franta-hg@21
|
53 |
ps.setDate(1, zacatek);
|
franta-hg@21
|
54 |
ps.setInt(2, cil);
|
franta-hg@21
|
55 |
}
|
franta-hg@21
|
56 |
} else {
|
franta-hg@21
|
57 |
if (cil == 0) {
|
franta-hg@21
|
58 |
ps = db.prepareStatement(getSQL(SQL.SOUHRN_ZA_OBDOBI));
|
franta-hg@21
|
59 |
ps.setDate(1, zacatek);
|
franta-hg@21
|
60 |
ps.setDate(2, konec);
|
franta-hg@21
|
61 |
} else {
|
franta-hg@21
|
62 |
ps = db.prepareStatement(getSQL(SQL.SOUHRN_ZA_OBDOBI_CIL));
|
franta-hg@21
|
63 |
ps.setDate(1, zacatek);
|
franta-hg@21
|
64 |
ps.setDate(2, konec);
|
franta-hg@21
|
65 |
ps.setInt(3, cil);
|
franta-hg@21
|
66 |
}
|
franta-hg@21
|
67 |
}
|
franta-hg@21
|
68 |
|
franta-hg@21
|
69 |
|
franta-hg@21
|
70 |
rs = ps.executeQuery();
|
franta-hg@21
|
71 |
while (rs.next()) {
|
franta-hg@21
|
72 |
Souhrn s = new Souhrn();
|
franta-hg@21
|
73 |
s.setAdresa(new SitovaAdresa(rs.getString("ip"), rs.getString("domena")));
|
franta-hg@21
|
74 |
s.setDen(rs.getDate("den"));
|
franta-hg@21
|
75 |
s.setPocet(rs.getInt("pocet"));
|
franta-hg@21
|
76 |
|
franta-hg@21
|
77 |
Cil c = new Cil();
|
franta-hg@21
|
78 |
c.setId(rs.getInt("id"));
|
franta-hg@21
|
79 |
c.setNazev(rs.getString("nazev"));
|
franta-hg@21
|
80 |
c.setUrl(rs.getString("url"));
|
franta-hg@21
|
81 |
c.setSelekt(rs.getString("selekt"));
|
franta-hg@21
|
82 |
c.setDatabaze(rs.getString("databaze"));
|
franta-hg@21
|
83 |
s.setCil(c);
|
franta-hg@21
|
84 |
|
franta-hg@21
|
85 |
souhrn.add(s);
|
franta-hg@21
|
86 |
}
|
franta-hg@21
|
87 |
} catch (Exception e) {
|
franta-hg@21
|
88 |
log.log(Level.SEVERE, "Chyba při získávání souhrnu z databáze", e);
|
franta-hg@21
|
89 |
} finally {
|
franta-hg@21
|
90 |
zavri(db, ps, rs);
|
franta-hg@21
|
91 |
}
|
franta-hg@21
|
92 |
}
|
franta-hg@21
|
93 |
|
franta-hg@21
|
94 |
return souhrn;
|
franta-hg@21
|
95 |
}
|
franta-hg@23
|
96 |
|
franta-hg@23
|
97 |
/**
|
franta-hg@23
|
98 |
* Ve výchozím stavu zobrazujeme souhrn za předešlý den.
|
franta-hg@23
|
99 |
* @return včerejšek
|
franta-hg@23
|
100 |
*/
|
franta-hg@23
|
101 |
public static Date getVychoziDen() {
|
franta-hg@23
|
102 |
return new Date(System.currentTimeMillis() - DEN);
|
franta-hg@23
|
103 |
}
|
franta-hg@6
|
104 |
}
|