diff -r 000000000000 -r 571d37e53ecd java/HrisniciSpameri/src/java/cz/frantovo/hrisniciSpameri/dao/GeneratorSouhrnuDAO.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/java/HrisniciSpameri/src/java/cz/frantovo/hrisniciSpameri/dao/GeneratorSouhrnuDAO.java Sat Feb 14 14:27:53 2009 +0100 @@ -0,0 +1,75 @@ +package cz.frantovo.hrisniciSpameri.dao; + +import cz.frantovo.hrisniciSpameri.dto.Cil; +import java.sql.Connection; +import java.sql.Date; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.util.Collection; +import java.util.logging.Level; + +/** + * + * @author fiki + */ +public class GeneratorSouhrnuDAO extends HrisniciSuperDAO { + + private enum SQL { + + VLOZ_SOUHRN + } + + /** + * Vygeneruje souhrn pro daný cíl a datum a uloží ho do databáze + * @param cil cíl, pro který generujeme souhrn + * @param den den, pro který souhrn generujeme. + */ + private void generujSouhrn(Cil cil, Date den) { + Connection dbZdroj = getSpojeni(cil.getDatabaze()); + Connection dbSouhrn = getSpojeni(null); + + if (dbZdroj == null || dbSouhrn == null) { + /** TODO: Chyba spojení */ + } else { + PreparedStatement ps = null; + ResultSet rs = null; + try { + ps = dbZdroj.prepareStatement(cil.getSelekt()); + ps.setDate(1, den); + rs = ps.executeQuery(); + PreparedStatement psSouhrn = dbSouhrn.prepareStatement(getSQL(SQL.VLOZ_SOUHRN)); + while (rs.next()) { + /** + * Souhrn bychom mohli vkládat pomocí SouhrnDAO, + * ale z výkonnostních důvodů to budeme dělat tady + * (jedno spojení a jeden předpřipravený příkaz). + */ + psSouhrn.setDate(1, den); + psSouhrn.setString(2, rs.getString("ip")); + psSouhrn.setString(3, "TODO: přeložit " + rs.getString("ip")); + psSouhrn.setInt(4, rs.getInt("pocet")); + psSouhrn.setInt(5, cil.getId()); + psSouhrn.executeUpdate(); + } + zavri(null, psSouhrn, null); + dbSouhrn.commit(); + } catch (Exception e) { + log.log(Level.SEVERE, "Chyba při generování souhrnu.", e); + } finally { + zavri(dbZdroj, ps, rs); + zavri(dbSouhrn, null, null); + } + } + } + + /** + * Vygeneruje denní souhrny pro všechny cíle. + * @param den den, pro který souhrny generujeme. + */ + public void generujSouhrny(Date den) { + Collection cile = new CilDAO().getCile(); + for (Cil c : cile) { + generujSouhrn(c, den); + } + } +}