Synchronizace SimpleDateFormat – místo synchronizovaných metod bude stačit nestatická proměnná SimpleDateFormat
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 DateFormat formatData = new SimpleDateFormat(formatDataVzor);
33 public String getZacatekString() {
34 return formatData.format(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: " + formatData.format(zacatek));
53 public void setZacatekString(String zacatek) {
54 if (zacatek == null) {
55 nastavVychoziZacatek();
58 this.zacatek = new Date(formatData.parse(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: " + formatData.format(zacatek));
82 public void setKonecString(String konec) {
87 this.konec = new Date(formatData.parse(konec).getTime());
88 } catch (Exception e) {
94 public String getKonecString() {
95 return formatData.format(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 prezentační vrstvy */
154 for (Collection<Soucet> ss : soucty.values()) {
155 for (Soucet s : ss) {
156 filtrujCil(s.getCil());
164 * @return Seznam všech cílů. Ale bez těchto hodnot: databáze a selekt.
166 public Collection<Cil> getSeznamCilu() {
167 Collection<Cil> cile = new CilDAO().getCile();
168 /** ne všechno musíme posílat do prezentační vrstvy */
174 * Vymaže u cílů hodnoty „databáze“ a „selekt“ – ktreré v prezentační vrstvě většinou nepotřebujeme
175 * @param cile kolekce, který bude upravena
177 private static void filtrujCile(Collection<Cil> cile) {
184 * Vymaže u cíle hodnoty „databáze“ a „selekt“ – ktreré v prezentační vrstvě většinou nepotřebujeme
185 * @param c cíl, který bude upraven
187 private static void filtrujCil(Cil c) {
193 * @return Výchozí začátek je před měsícem
195 private static Date getVychoziZacatek() {
196 Calendar c = Calendar.getInstance();
197 c.add(Calendar.MONTH, -1);
198 return new Date(c.getTimeInMillis());
202 * @return Výchozí konec je současnost
204 private static Date getVychoziKonec() {
205 return new Date(System.currentTimeMillis());