# HG changeset patch # User František Kučera # Date 1264552132 -3600 # Node ID f76fc9f3cb7c4e72d4c8140259e2ba5c1e2294d3 # Parent b215d5297a311938dc7bce2b13e1860516060b45 DAO vrstva a načítání seznamu podniků z databáze. diff -r b215d5297a31 -r f76fc9f3cb7c java/nekurak.net-web/src/java/cz/frantovo/nekurak/dao/PodnikDAO.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/java/nekurak.net-web/src/java/cz/frantovo/nekurak/dao/PodnikDAO.java Wed Jan 27 01:28:52 2010 +0100 @@ -0,0 +1,85 @@ +package cz.frantovo.nekurak.dao; + +import cz.frantovo.nekurak.dto.Podnik; +import java.sql.Connection; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.util.ArrayList; +import java.util.Collection; +import java.util.logging.Level; + +/** + * Stará se o načítání a ukládání podniků (hospod) z a do databáze. + * @author fiki + */ +public class PodnikDAO extends NekurakSuperDAO { + + private enum SQL { + + SELECT_VSECHNY, + INSERT, + UPDATE, + NEXTVAL + } + + public Collection getPodniky() { + Connection db = getSpojeni(); + PreparedStatement ps = null; + ResultSet rs = null; + try { + ps = db.prepareStatement(getSQL(SQL.SELECT_VSECHNY)); + rs = ps.executeQuery(); + Collection vysledek = new ArrayList(); + + while (rs.next()) { + vysledek.add(new Podnik(rs.getInt("id"), rs.getString("nazev"))); + } + + return vysledek; + } catch (Exception e) { + log.log(Level.SEVERE, "Chyba při získávání podniků.", e); + return null; + } finally { + zavri(db, ps, rs); + } + } + + /** + * Uloží podnik do databáze. + * @param p Podnik k uložení. Pokud má být vložen nový, má id = 0. + * @return id vloženého nebo uloženého podniku. + */ + public int ulozPodnik(Podnik p) { + Connection db = getSpojeni(); + PreparedStatement psUpdate = null; + PreparedStatement psId = null; + ResultSet rsId = null; + try { + if (p.getId() == 0) { + psId = db.prepareStatement(getSQL(SQL.NEXTVAL)); + rsId = psId.executeQuery(); + rsId.next(); + p.setId(rsId.getInt(1)); + + psUpdate = db.prepareStatement(getSQL(SQL.INSERT)); + } else { + psUpdate = db.prepareStatement(getSQL(SQL.UPDATE)); + } + + psUpdate.setString(1, p.getNazev()); + psUpdate.setInt(2, p.getId()); + + psUpdate.executeUpdate(); + + db.commit(); + return p.getId(); + } catch (Exception e) { + rollback(db); + log.log(Level.SEVERE, "Chyba při ukládání podniku.", e); + return -1; + } finally { + zavri(null, psId, rsId); + zavri(db, psUpdate, null); + } + } +} diff -r b215d5297a31 -r f76fc9f3cb7c java/nekurak.net-web/src/java/cz/frantovo/nekurak/dao/PodnikDAO.sql.xml --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/java/nekurak.net-web/src/java/cz/frantovo/nekurak/dao/PodnikDAO.sql.xml Wed Jan 27 01:28:52 2010 +0100 @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + \ No newline at end of file diff -r b215d5297a31 -r f76fc9f3cb7c java/nekurak.net-web/src/java/cz/frantovo/nekurak/web/PodnikyWeb.java --- a/java/nekurak.net-web/src/java/cz/frantovo/nekurak/web/PodnikyWeb.java Tue Jan 26 20:35:40 2010 +0100 +++ b/java/nekurak.net-web/src/java/cz/frantovo/nekurak/web/PodnikyWeb.java Wed Jan 27 01:28:52 2010 +0100 @@ -1,8 +1,8 @@ package cz.frantovo.nekurak.web; +import cz.frantovo.nekurak.dao.PodnikDAO; import cz.frantovo.nekurak.dto.Podnik; import java.io.Serializable; -import java.util.ArrayList; import java.util.Collection; /** @@ -11,14 +11,9 @@ */ public class PodnikyWeb implements Serializable { + private PodnikDAO dao = new PodnikDAO(); + public Collection getPodniky() { - ArrayList vysledek = new ArrayList(); - - vysledek.add(new Podnik(1, "Na Kovárně")); - vysledek.add(new Podnik(2, "U Přátelského potkana")); - vysledek.add(new Podnik(3, "Na Růžku")); - - return vysledek; + return dao.getPodniky(); } - } diff -r b215d5297a31 -r f76fc9f3cb7c java/nekurak.net-web/src/java/cz/frantovo/superDAO/SuperDAO.java --- a/java/nekurak.net-web/src/java/cz/frantovo/superDAO/SuperDAO.java Tue Jan 26 20:35:40 2010 +0100 +++ b/java/nekurak.net-web/src/java/cz/frantovo/superDAO/SuperDAO.java Wed Jan 27 01:28:52 2010 +0100 @@ -3,6 +3,7 @@ import java.io.InputStream; import java.sql.Connection; import java.sql.ResultSet; +import java.sql.SQLException; import java.sql.Statement; import java.util.Collections; import java.util.HashMap; @@ -23,7 +24,7 @@ private enum VLASTNOSTI { - AHOJ + AHOJ } /** @@ -37,14 +38,14 @@ * @return SQL dotaz nebo null v případě chyby */ protected String getSQL(Enum klic, Class trida) { - return getHodnota(sql, "sql.xml", klic, trida); + return getHodnota(sql, "sql.xml", klic, trida); } /** * @see getSQL(Enum klic, Class trida) */ protected String getSQL(Enum klic) { - return getSQL(klic, null); + return getSQL(klic, null); } /** @@ -58,14 +59,14 @@ * @return textová hodnota nebo null v případě chyby */ protected String getVlastnost(Enum klic, Class trida) { - return getHodnota(vlastnosti, "xml", klic, trida); + return getHodnota(vlastnosti, "xml", klic, trida); } /** * @see getVlastnost(Enum klic, Class trida) */ protected String getVlastnost(Enum klic) { - return getVlastnost(klic, null); + return getVlastnost(klic, null); } /** @@ -75,21 +76,21 @@ */ private String getHodnota(Map mezipamet, String pripona, Enum klic, Class trida) { - if (trida == null) { - trida = getClass(); - } + if (trida == null) { + trida = getClass(); + } - if (mezipamet.get(trida) == null) { - /** Ještě nemáme načteno ze souboru */ - mezipamet.put(trida, getHodnoty(pripona, trida)); + if (mezipamet.get(trida) == null) { + /** Ještě nemáme načteno ze souboru */ + mezipamet.put(trida, getHodnoty(pripona, trida)); - if (mezipamet.get(trida) == null) { - /** Došlo k chybě --> už to příště nebudeme zkoušet načítat */ - mezipamet.put(trida, new Properties()); - } - } + if (mezipamet.get(trida) == null) { + /** Došlo k chybě --> už to příště nebudeme zkoušet načítat */ + mezipamet.put(trida, new Properties()); + } + } - return mezipamet.get(trida).getProperty(klic.toString()); + return mezipamet.get(trida).getProperty(klic.toString()); } /** @@ -97,7 +98,7 @@ * @param args prázdné */ public static void main(String[] args) { - System.out.println(new SuperDAO().getSQL(VLASTNOSTI.AHOJ)); + System.out.println(new SuperDAO().getSQL(VLASTNOSTI.AHOJ)); } /** @@ -107,17 +108,29 @@ * @return načtené vlastnosti nebo null v případě chyby */ private Properties getHodnoty(String pripona, Class trida) { - String soubor = trida.getSimpleName() + "." + pripona; + String soubor = trida.getSimpleName() + "." + pripona; - try { - Properties hodnoty = new Properties(); - InputStream fis = trida.getResourceAsStream(soubor); - hodnoty.loadFromXML(fis); - return hodnoty; - } catch (Exception e) { - log.log(Level.SEVERE, "Chyba při načítání vlastností: " + soubor, e); - return null; - } + try { + Properties hodnoty = new Properties(); + InputStream fis = trida.getResourceAsStream(soubor); + hodnoty.loadFromXML(fis); + return hodnoty; + } catch (Exception e) { + log.log(Level.SEVERE, "Chyba při načítání vlastností: " + soubor, e); + return null; + } + } + + /** + * Pokusí se zrušit transakci. + * @param spojeni databázové spojení. + */ + protected void rollback(Connection spojeni) { + try { + spojeni.rollback(); + } catch (SQLException e) { + log.log(Level.FINEST, "rollback se nezdařil", e); + } } /** @@ -127,24 +140,24 @@ * @param vysledek DB výsledek */ protected static void zavri(Connection spojeni, Statement prikaz, ResultSet vysledek) { - if (vysledek != null) { - try { - vysledek.close(); - } catch (Exception e) { - } - } - if (prikaz != null) { - try { - prikaz.close(); - } catch (Exception e) { - } - } - if (spojeni != null) { - try { - spojeni.close(); - } catch (Exception e) { - } - } + if (vysledek != null) { + try { + vysledek.close(); + } catch (Exception e) { + } + } + if (prikaz != null) { + try { + prikaz.close(); + } catch (Exception e) { + } + } + if (spojeni != null) { + try { + spojeni.close(); + } catch (Exception e) { + } + } } /** @@ -154,10 +167,10 @@ * @return Text s oříznutými bílými znany nazačátku a nakonci. */ public static String orizni(String text) { - if (text == null) { - return null; - } else { - return text.trim(); - } + if (text == null) { + return null; + } else { + return text.trim(); + } } -} \ No newline at end of file +} diff -r b215d5297a31 -r f76fc9f3cb7c java/nekurak.net-web/web/index.jsp --- a/java/nekurak.net-web/web/index.jsp Tue Jan 26 20:35:40 2010 +0100 +++ b/java/nekurak.net-web/web/index.jsp Wed Jan 27 01:28:52 2010 +0100 @@ -13,7 +13,7 @@

Nekuřák.net

-

Začínáme s J2EE…

+

Načítáme údaje z databáze.