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@40
|
5 |
import cz.frantovo.hrisniciSpameri.dto.Soucet;
|
franta-hg@21
|
6 |
import cz.frantovo.hrisniciSpameri.dto.Souhrn;
|
franta-hg@21
|
7 |
import java.sql.Connection;
|
franta-hg@21
|
8 |
import java.sql.Date;
|
franta-hg@21
|
9 |
import java.sql.PreparedStatement;
|
franta-hg@21
|
10 |
import java.sql.ResultSet;
|
franta-hg@21
|
11 |
import java.util.ArrayList;
|
franta-hg@21
|
12 |
import java.util.Collection;
|
franta-hg@40
|
13 |
import java.util.HashMap;
|
franta-hg@49
|
14 |
import java.util.Map;
|
franta-hg@21
|
15 |
import java.util.logging.Level;
|
franta-hg@21
|
16 |
|
franta-hg@6
|
17 |
/**
|
franta-hg@6
|
18 |
*
|
franta-hg@6
|
19 |
* @author fiki
|
franta-hg@6
|
20 |
*/
|
franta-hg@6
|
21 |
public class SouhrnDAO extends HrisniciSuperDAO {
|
franta-hg@21
|
22 |
|
franta-hg@21
|
23 |
private enum SQL {
|
franta-hg@21
|
24 |
|
franta-hg@21
|
25 |
DENNI_SOUHRN,
|
franta-hg@21
|
26 |
DENNI_SOUHRN_CIL,
|
franta-hg@40
|
27 |
DENNI_SOUCTY,
|
franta-hg@40
|
28 |
DENNI_SOUCTY_CIL
|
franta-hg@21
|
29 |
}
|
franta-hg@23
|
30 |
|
franta-hg@21
|
31 |
/**
|
franta-hg@21
|
32 |
* Získá z databáze souhrn útoků. Buď pro konkrétní den nebo pro dané období.
|
franta-hg@21
|
33 |
* @param zacatek začátek období nebo konkrétní den
|
franta-hg@21
|
34 |
* @param konec konec období nebo null (pokud nás zajímá konkrétní den)
|
franta-hg@21
|
35 |
* @param cil id cíle nebo nula, pokud chceme všechny cíle
|
franta-hg@21
|
36 |
* @return seznam útoků
|
franta-hg@21
|
37 |
*/
|
franta-hg@21
|
38 |
public Collection<Souhrn> getSouhrn(Date zacatek, Date konec, int cil) {
|
franta-hg@21
|
39 |
Collection<Souhrn> souhrn = new ArrayList<Souhrn>();
|
franta-hg@21
|
40 |
|
franta-hg@21
|
41 |
Connection db = getSpojeni(null);
|
franta-hg@21
|
42 |
if (db == null) {
|
franta-hg@21
|
43 |
return null;
|
franta-hg@21
|
44 |
} else {
|
franta-hg@21
|
45 |
PreparedStatement ps = null;
|
franta-hg@21
|
46 |
ResultSet rs = null;
|
franta-hg@21
|
47 |
try {
|
franta-hg@21
|
48 |
if (konec == null) {
|
franta-hg@24
|
49 |
konec = zacatek;
|
franta-hg@24
|
50 |
}
|
franta-hg@30
|
51 |
|
franta-hg@24
|
52 |
if (cil == 0) {
|
franta-hg@24
|
53 |
ps = db.prepareStatement(getSQL(SQL.DENNI_SOUHRN));
|
franta-hg@24
|
54 |
ps.setDate(1, zacatek);
|
franta-hg@24
|
55 |
ps.setDate(2, konec);
|
franta-hg@21
|
56 |
} else {
|
franta-hg@24
|
57 |
ps = db.prepareStatement(getSQL(SQL.DENNI_SOUHRN_CIL));
|
franta-hg@24
|
58 |
ps.setDate(1, zacatek);
|
franta-hg@24
|
59 |
ps.setDate(2, konec);
|
franta-hg@24
|
60 |
ps.setInt(3, cil);
|
franta-hg@21
|
61 |
}
|
franta-hg@21
|
62 |
rs = ps.executeQuery();
|
franta-hg@21
|
63 |
while (rs.next()) {
|
franta-hg@21
|
64 |
Souhrn s = new Souhrn();
|
franta-hg@21
|
65 |
s.setAdresa(new SitovaAdresa(rs.getString("ip"), rs.getString("domena")));
|
franta-hg@21
|
66 |
s.setDen(rs.getDate("den"));
|
franta-hg@21
|
67 |
s.setPocet(rs.getInt("pocet"));
|
franta-hg@21
|
68 |
|
franta-hg@21
|
69 |
Cil c = new Cil();
|
franta-hg@21
|
70 |
c.setId(rs.getInt("id"));
|
franta-hg@21
|
71 |
c.setNazev(rs.getString("nazev"));
|
franta-hg@21
|
72 |
c.setUrl(rs.getString("url"));
|
franta-hg@21
|
73 |
c.setSelekt(rs.getString("selekt"));
|
franta-hg@21
|
74 |
c.setDatabaze(rs.getString("databaze"));
|
franta-hg@21
|
75 |
s.setCil(c);
|
franta-hg@21
|
76 |
|
franta-hg@21
|
77 |
souhrn.add(s);
|
franta-hg@21
|
78 |
}
|
franta-hg@21
|
79 |
} catch (Exception e) {
|
franta-hg@21
|
80 |
log.log(Level.SEVERE, "Chyba při získávání souhrnu z databáze", e);
|
franta-hg@21
|
81 |
} finally {
|
franta-hg@21
|
82 |
zavri(db, ps, rs);
|
franta-hg@21
|
83 |
}
|
franta-hg@21
|
84 |
}
|
franta-hg@21
|
85 |
|
franta-hg@21
|
86 |
return souhrn;
|
franta-hg@21
|
87 |
}
|
franta-hg@40
|
88 |
|
franta-hg@40
|
89 |
/**
|
franta-hg@40
|
90 |
* @param zacatek začátek období nebo konkrétní den
|
franta-hg@40
|
91 |
* @param konec konec období nebo null (pokud nás zajímá konkrétní den – což nás tady většinou nezajímá)
|
franta-hg@40
|
92 |
* @param cil id cíle nebo nula, pokud chceme všechny cíle
|
franta-hg@40
|
93 |
* @return součty útoků za jednotlivé dny, seskupené podle cílů
|
franta-hg@40
|
94 |
*/
|
franta-hg@49
|
95 |
public Map<Cil, Collection<Soucet>> getSoucty(Date zacatek, Date konec, int cil) {
|
franta-hg@40
|
96 |
HashMap<Cil, Collection<Soucet>> soucty = new HashMap<Cil, Collection<Soucet>>();
|
franta-hg@40
|
97 |
|
franta-hg@40
|
98 |
Connection db = getSpojeni(null);
|
franta-hg@40
|
99 |
if (db == null) {
|
franta-hg@40
|
100 |
return null;
|
franta-hg@40
|
101 |
} else {
|
franta-hg@40
|
102 |
PreparedStatement ps = null;
|
franta-hg@40
|
103 |
ResultSet rs = null;
|
franta-hg@40
|
104 |
try {
|
franta-hg@40
|
105 |
if (konec == null) {
|
franta-hg@40
|
106 |
konec = zacatek;
|
franta-hg@40
|
107 |
}
|
franta-hg@40
|
108 |
|
franta-hg@40
|
109 |
if (cil == 0) {
|
franta-hg@40
|
110 |
ps = db.prepareStatement(getSQL(SQL.DENNI_SOUCTY));
|
franta-hg@40
|
111 |
ps.setDate(1, zacatek);
|
franta-hg@40
|
112 |
ps.setDate(2, konec);
|
franta-hg@40
|
113 |
} else {
|
franta-hg@40
|
114 |
ps = db.prepareStatement(getSQL(SQL.DENNI_SOUCTY_CIL));
|
franta-hg@40
|
115 |
ps.setDate(1, zacatek);
|
franta-hg@40
|
116 |
ps.setDate(2, konec);
|
franta-hg@40
|
117 |
ps.setInt(3, cil);
|
franta-hg@40
|
118 |
}
|
franta-hg@40
|
119 |
rs = ps.executeQuery();
|
franta-hg@40
|
120 |
while (rs.next()) {
|
franta-hg@40
|
121 |
Soucet s = new Soucet();
|
franta-hg@40
|
122 |
s.setDen(rs.getDate("den"));
|
franta-hg@40
|
123 |
s.setPocet(rs.getInt("pocet"));
|
franta-hg@40
|
124 |
|
franta-hg@40
|
125 |
Cil c = new Cil();
|
franta-hg@40
|
126 |
c.setId(rs.getInt("id"));
|
franta-hg@40
|
127 |
c.setNazev(rs.getString("nazev"));
|
franta-hg@40
|
128 |
c.setUrl(rs.getString("url"));
|
franta-hg@40
|
129 |
c.setSelekt(rs.getString("selekt"));
|
franta-hg@40
|
130 |
c.setDatabaze(rs.getString("databaze"));
|
franta-hg@40
|
131 |
s.setCil(c);
|
franta-hg@40
|
132 |
|
franta-hg@40
|
133 |
if (soucty.get(c) == null) {
|
franta-hg@40
|
134 |
soucty.put(c, new ArrayList<Soucet>());
|
franta-hg@40
|
135 |
}
|
franta-hg@40
|
136 |
|
franta-hg@40
|
137 |
soucty.get(c).add(s);
|
franta-hg@40
|
138 |
}
|
franta-hg@40
|
139 |
} catch (Exception e) {
|
franta-hg@40
|
140 |
log.log(Level.SEVERE, "Chyba při získávání součtů z databáze", e);
|
franta-hg@40
|
141 |
} finally {
|
franta-hg@40
|
142 |
zavri(db, ps, rs);
|
franta-hg@40
|
143 |
}
|
franta-hg@40
|
144 |
}
|
franta-hg@40
|
145 |
return soucty;
|
franta-hg@40
|
146 |
}
|
franta-hg@30
|
147 |
} |