1 package cz.frantovo.hrisniciSpameri;
3 import cz.frantovo.hrisniciSpameri.dao.CilDAO;
4 import cz.frantovo.hrisniciSpameri.dao.SouhrnDAO;
5 import cz.frantovo.hrisniciSpameri.dto.Cil;
6 import cz.frantovo.hrisniciSpameri.dto.Soucet;
7 import cz.frantovo.hrisniciSpameri.dto.Souhrn;
8 import java.io.Serializable;
10 import java.text.DateFormat;
11 import java.text.ParseException;
12 import java.text.SimpleDateFormat;
13 import java.util.Calendar;
14 import java.util.Collection;
15 import java.util.HashMap;
16 import java.util.logging.Level;
17 import java.util.logging.Logger;
20 * Beana zprostředkovávající denní souhrn hříšníků.
23 public class DenniSouhrn implements Serializable {
25 private static final long serialVersionUID = 7932392366943861342L;
26 private static final Logger log = Logger.getLogger(DenniSouhrn.class.getName());
27 private static String formatDataVzor = "yyyy-MM-dd";
28 public static DateFormat formatData = new SimpleDateFormat(formatDataVzor);
33 public String getZacatekString() {
34 return formatujDatum(getZacatek());
37 public Date getZacatek() {
38 if (zacatek == null) {
39 nastavVychoziZacatek();
44 public void setZacatek(Date zacatek) {
45 if (zacatek == null) {
46 nastavVychoziZacatek();
48 this.zacatek = zacatek;
50 log.log(Level.FINE, "Začátek nastaven na: " + formatujDatum(zacatek));
53 public void setZacatekString(String zacatek) {
54 if (zacatek == null) {
55 nastavVychoziZacatek();
58 this.zacatek = new Date(prevedDatum(zacatek).getTime());
59 } catch (ParseException e) {
60 log.log(Level.FINE, "Chybně zadané datum – začátek: " + zacatek, e);
61 nastavVychoziZacatek();
66 public Date getKonec() {
73 public void setKonec(Date konec) {
79 log.log(Level.FINE, "Konec nastaven na: " + formatujDatum(zacatek));
82 public void setKonecString(String konec) {
87 this.konec = new Date(prevedDatum(konec).getTime());
88 } catch (Exception e) {
94 public String getKonecString() {
95 return formatujDatum(getKonec());
98 public void setCilString(String cil) {
100 this.cil = Integer.parseInt(cil);
101 } catch (Exception e) {
106 public void setCil(int cil) {
110 public String getCilString() {
111 return String.valueOf(cil);
114 public int getCil() {
118 private void nastavVychoziZacatek() {
119 log.log(Level.FINE, "Nastavuji začátek na výchozí hodnotu.");
120 setZacatek(getVychoziZacatek());
123 private void nastavVychoziKonec() {
124 log.log(Level.FINE, "Nastavuji konec na výchozí hodnotu.");
125 setKonec(getVychoziKonec());
129 * @return Denní souhrny útoků –
130 * obsahuje IP adresy a domény útočníků,
131 * datum je den poslendího útoku daného útočníka na daný cíl.
133 public Collection<Souhrn> getSouhrn() {
134 Collection<Souhrn> souhrn = new SouhrnDAO().getSouhrn(zacatek, konec, cil);
136 /** ne všechno musíme posílat do JSP vrstvy */
137 for (Souhrn s : souhrn) {
138 s.getCil().setDatabaze(null);
139 s.getCil().setSelekt(null);
146 * @return Vyšší stupeň agregace než souhrn –
147 * obsahuje jen součty útoků pro daný den a daný cíl,
148 * neobsahuje podrobnosti o útočnících (ip adresa, doména).
150 public HashMap<Cil, Collection<Soucet>> getSoucty() {
151 HashMap<Cil, Collection<Soucet>> soucty = new SouhrnDAO().getSoucty(zacatek, konec, cil);
153 /** ne všechno musíme posílat do JSP vrstvy */
154 for (Collection<Soucet> ss : soucty.values()) {
155 for (Soucet s : ss) {
156 s.getCil().setDatabaze(null);
157 s.getCil().setSelekt(null);
165 * @return Seznam všech cílů. Ale bez těchto hodnot: databáze a selekt.
167 public Collection<Cil> getSeznamCilu() {
168 Collection<Cil> cile = new CilDAO().getCile();
170 /** ne všechno musíme posílat do JSP vrstvy */
180 * @return Výchozí začátek je před měsícem
182 private static Date getVychoziZacatek() {
183 Calendar c = Calendar.getInstance();
184 c.add(Calendar.MONTH, -1);
185 return new Date(c.getTimeInMillis());
189 * @return Výchozí konec je současnost
191 private static Date getVychoziKonec() {
192 return new Date(System.currentTimeMillis());
195 private synchronized String formatujDatum(Date d) {
196 return formatData.format(d);
199 private synchronized java.util.Date prevedDatum(String d) throws ParseException {
200 return formatData.parse(d);