diff -r 571d37e53ecd -r b22c06c8a55c java/HrisniciSpameri/src/java/cz/frantovo/hrisniciSpameri/dao/GeneratorSouhrnuDAO.java --- a/java/HrisniciSpameri/src/java/cz/frantovo/hrisniciSpameri/dao/GeneratorSouhrnuDAO.java Sat Feb 14 14:27:53 2009 +0100 +++ b/java/HrisniciSpameri/src/java/cz/frantovo/hrisniciSpameri/dao/GeneratorSouhrnuDAO.java Sat Feb 14 19:31:33 2009 +0100 @@ -1,6 +1,7 @@ package cz.frantovo.hrisniciSpameri.dao; import cz.frantovo.hrisniciSpameri.dto.Cil; +import java.net.InetAddress; import java.sql.Connection; import java.sql.Date; import java.sql.PreparedStatement; @@ -16,7 +17,8 @@ private enum SQL { - VLOZ_SOUHRN + VLOZ_SOUHRN, + SMAZ_SOUHRNY } /** @@ -24,7 +26,7 @@ * @param cil cíl, pro který generujeme souhrn * @param den den, pro který souhrn generujeme. */ - private void generujSouhrn(Cil cil, Date den) { + public void generujSouhrn(Cil cil, Date den) { Connection dbZdroj = getSpojeni(cil.getDatabaze()); Connection dbSouhrn = getSpojeni(null); @@ -32,8 +34,18 @@ /** TODO: Chyba spojení */ } else { PreparedStatement ps = null; + PreparedStatement psSmazat = null; ResultSet rs = null; try { + log.log(Level.SEVERE, "AUTOCOMIT: " + dbSouhrn.getAutoCommit()); + dbSouhrn.setAutoCommit(false); + + /** pokud už něco vygenerovaného pro daný den a cíl máme, smažeme to */ + psSmazat = dbSouhrn.prepareStatement(getSQL(SQL.SMAZ_SOUHRNY)); + psSmazat.setInt(1, cil.getId()); + psSmazat.setDate(2, den); + psSmazat.executeUpdate(); + ps = dbZdroj.prepareStatement(cil.getSelekt()); ps.setDate(1, den); rs = ps.executeQuery(); @@ -46,7 +58,7 @@ */ psSouhrn.setDate(1, den); psSouhrn.setString(2, rs.getString("ip")); - psSouhrn.setString(3, "TODO: přeložit " + rs.getString("ip")); + psSouhrn.setString(3, prelozIP(rs.getString("ip"))); psSouhrn.setInt(4, rs.getInt("pocet")); psSouhrn.setInt(5, cil.getId()); psSouhrn.executeUpdate(); @@ -57,7 +69,7 @@ log.log(Level.SEVERE, "Chyba při generování souhrnu.", e); } finally { zavri(dbZdroj, ps, rs); - zavri(dbSouhrn, null, null); + zavri(dbSouhrn, psSmazat, null); } } } @@ -67,9 +79,26 @@ * @param den den, pro který souhrny generujeme. */ public void generujSouhrny(Date den) { + if (den == null) { + den = SouhrnDAO.getVychoziDen(); + } + Collection cile = new CilDAO().getCile(); for (Cil c : cile) { generujSouhrn(c, den); } } + + /** + * Přeloží IP adresu na doménu + * @param ip IP adresa + * @return doména + */ + private static String prelozIP(String ip) { + try { + return InetAddress.getByName(ip).getHostName(); + } catch (Exception e) { + return "Chyba: nepodařilo se přeložit."; + } + } }