DAO vrstva a načítání seznamu podniků z databáze.
1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1.2 +++ b/java/nekurak.net-web/src/java/cz/frantovo/nekurak/dao/PodnikDAO.java Wed Jan 27 01:28:52 2010 +0100
1.3 @@ -0,0 +1,85 @@
1.4 +package cz.frantovo.nekurak.dao;
1.5 +
1.6 +import cz.frantovo.nekurak.dto.Podnik;
1.7 +import java.sql.Connection;
1.8 +import java.sql.PreparedStatement;
1.9 +import java.sql.ResultSet;
1.10 +import java.util.ArrayList;
1.11 +import java.util.Collection;
1.12 +import java.util.logging.Level;
1.13 +
1.14 +/**
1.15 + * Stará se o načítání a ukládání podniků (hospod) z a do databáze.
1.16 + * @author fiki
1.17 + */
1.18 +public class PodnikDAO extends NekurakSuperDAO {
1.19 +
1.20 + private enum SQL {
1.21 +
1.22 + SELECT_VSECHNY,
1.23 + INSERT,
1.24 + UPDATE,
1.25 + NEXTVAL
1.26 + }
1.27 +
1.28 + public Collection<Podnik> getPodniky() {
1.29 + Connection db = getSpojeni();
1.30 + PreparedStatement ps = null;
1.31 + ResultSet rs = null;
1.32 + try {
1.33 + ps = db.prepareStatement(getSQL(SQL.SELECT_VSECHNY));
1.34 + rs = ps.executeQuery();
1.35 + Collection<Podnik> vysledek = new ArrayList<Podnik>();
1.36 +
1.37 + while (rs.next()) {
1.38 + vysledek.add(new Podnik(rs.getInt("id"), rs.getString("nazev")));
1.39 + }
1.40 +
1.41 + return vysledek;
1.42 + } catch (Exception e) {
1.43 + log.log(Level.SEVERE, "Chyba při získávání podniků.", e);
1.44 + return null;
1.45 + } finally {
1.46 + zavri(db, ps, rs);
1.47 + }
1.48 + }
1.49 +
1.50 + /**
1.51 + * Uloží podnik do databáze.
1.52 + * @param p Podnik k uložení. Pokud má být vložen nový, má id = 0.
1.53 + * @return id vloženého nebo uloženého podniku.
1.54 + */
1.55 + public int ulozPodnik(Podnik p) {
1.56 + Connection db = getSpojeni();
1.57 + PreparedStatement psUpdate = null;
1.58 + PreparedStatement psId = null;
1.59 + ResultSet rsId = null;
1.60 + try {
1.61 + if (p.getId() == 0) {
1.62 + psId = db.prepareStatement(getSQL(SQL.NEXTVAL));
1.63 + rsId = psId.executeQuery();
1.64 + rsId.next();
1.65 + p.setId(rsId.getInt(1));
1.66 +
1.67 + psUpdate = db.prepareStatement(getSQL(SQL.INSERT));
1.68 + } else {
1.69 + psUpdate = db.prepareStatement(getSQL(SQL.UPDATE));
1.70 + }
1.71 +
1.72 + psUpdate.setString(1, p.getNazev());
1.73 + psUpdate.setInt(2, p.getId());
1.74 +
1.75 + psUpdate.executeUpdate();
1.76 +
1.77 + db.commit();
1.78 + return p.getId();
1.79 + } catch (Exception e) {
1.80 + rollback(db);
1.81 + log.log(Level.SEVERE, "Chyba při ukládání podniku.", e);
1.82 + return -1;
1.83 + } finally {
1.84 + zavri(null, psId, rsId);
1.85 + zavri(db, psUpdate, null);
1.86 + }
1.87 + }
1.88 +}
2.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
2.2 +++ b/java/nekurak.net-web/src/java/cz/frantovo/nekurak/dao/PodnikDAO.sql.xml Wed Jan 27 01:28:52 2010 +0100
2.3 @@ -0,0 +1,27 @@
2.4 +<?xml version="1.0" encoding="UTF-8"?>
2.5 +<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
2.6 +<properties>
2.7 + <entry key="SELECT_VSECHNY">
2.8 + <![CDATA[
2.9 + SELECT * FROM podnik;
2.10 + ]]>
2.11 + </entry>
2.12 + <entry key="INSERT">
2.13 + <![CDATA[
2.14 + INSERT INTO podnik (nazev, id)
2.15 + VALUES (?, ?);
2.16 + ]]>
2.17 + </entry>
2.18 + <entry key="UPDATE">
2.19 + <![CDATA[
2.20 + UPDATE podnik
2.21 + SET nazev = ?
2.22 + WHERE id = ?
2.23 + ]]>
2.24 + </entry>
2.25 + <entry key="NEXTVAL">
2.26 + <![CDATA[
2.27 + SELECT nextval('podnik_seq');
2.28 + ]]>
2.29 + </entry>
2.30 +</properties>
2.31 \ No newline at end of file
3.1 --- a/java/nekurak.net-web/src/java/cz/frantovo/nekurak/web/PodnikyWeb.java Tue Jan 26 20:35:40 2010 +0100
3.2 +++ b/java/nekurak.net-web/src/java/cz/frantovo/nekurak/web/PodnikyWeb.java Wed Jan 27 01:28:52 2010 +0100
3.3 @@ -1,8 +1,8 @@
3.4 package cz.frantovo.nekurak.web;
3.5
3.6 +import cz.frantovo.nekurak.dao.PodnikDAO;
3.7 import cz.frantovo.nekurak.dto.Podnik;
3.8 import java.io.Serializable;
3.9 -import java.util.ArrayList;
3.10 import java.util.Collection;
3.11
3.12 /**
3.13 @@ -11,14 +11,9 @@
3.14 */
3.15 public class PodnikyWeb implements Serializable {
3.16
3.17 + private PodnikDAO dao = new PodnikDAO();
3.18 +
3.19 public Collection<Podnik> getPodniky() {
3.20 - ArrayList<Podnik> vysledek = new ArrayList<Podnik>();
3.21 -
3.22 - vysledek.add(new Podnik(1, "Na Kovárně"));
3.23 - vysledek.add(new Podnik(2, "U Přátelského potkana"));
3.24 - vysledek.add(new Podnik(3, "Na Růžku"));
3.25 -
3.26 - return vysledek;
3.27 + return dao.getPodniky();
3.28 }
3.29 -
3.30 }
4.1 --- a/java/nekurak.net-web/src/java/cz/frantovo/superDAO/SuperDAO.java Tue Jan 26 20:35:40 2010 +0100
4.2 +++ b/java/nekurak.net-web/src/java/cz/frantovo/superDAO/SuperDAO.java Wed Jan 27 01:28:52 2010 +0100
4.3 @@ -3,6 +3,7 @@
4.4 import java.io.InputStream;
4.5 import java.sql.Connection;
4.6 import java.sql.ResultSet;
4.7 +import java.sql.SQLException;
4.8 import java.sql.Statement;
4.9 import java.util.Collections;
4.10 import java.util.HashMap;
4.11 @@ -23,7 +24,7 @@
4.12
4.13 private enum VLASTNOSTI {
4.14
4.15 - AHOJ
4.16 + AHOJ
4.17 }
4.18
4.19 /**
4.20 @@ -37,14 +38,14 @@
4.21 * @return SQL dotaz nebo null v případě chyby
4.22 */
4.23 protected String getSQL(Enum klic, Class trida) {
4.24 - return getHodnota(sql, "sql.xml", klic, trida);
4.25 + return getHodnota(sql, "sql.xml", klic, trida);
4.26 }
4.27
4.28 /**
4.29 * @see getSQL(Enum klic, Class trida)
4.30 */
4.31 protected String getSQL(Enum klic) {
4.32 - return getSQL(klic, null);
4.33 + return getSQL(klic, null);
4.34 }
4.35
4.36 /**
4.37 @@ -58,14 +59,14 @@
4.38 * @return textová hodnota nebo null v případě chyby
4.39 */
4.40 protected String getVlastnost(Enum klic, Class trida) {
4.41 - return getHodnota(vlastnosti, "xml", klic, trida);
4.42 + return getHodnota(vlastnosti, "xml", klic, trida);
4.43 }
4.44
4.45 /**
4.46 * @see getVlastnost(Enum klic, Class trida)
4.47 */
4.48 protected String getVlastnost(Enum klic) {
4.49 - return getVlastnost(klic, null);
4.50 + return getVlastnost(klic, null);
4.51 }
4.52
4.53 /**
4.54 @@ -75,21 +76,21 @@
4.55 */
4.56 private String getHodnota(Map<Class, Properties> mezipamet, String pripona, Enum klic, Class trida) {
4.57
4.58 - if (trida == null) {
4.59 - trida = getClass();
4.60 - }
4.61 + if (trida == null) {
4.62 + trida = getClass();
4.63 + }
4.64
4.65 - if (mezipamet.get(trida) == null) {
4.66 - /** Ještě nemáme načteno ze souboru */
4.67 - mezipamet.put(trida, getHodnoty(pripona, trida));
4.68 + if (mezipamet.get(trida) == null) {
4.69 + /** Ještě nemáme načteno ze souboru */
4.70 + mezipamet.put(trida, getHodnoty(pripona, trida));
4.71
4.72 - if (mezipamet.get(trida) == null) {
4.73 - /** Došlo k chybě --> už to příště nebudeme zkoušet načítat */
4.74 - mezipamet.put(trida, new Properties());
4.75 - }
4.76 - }
4.77 + if (mezipamet.get(trida) == null) {
4.78 + /** Došlo k chybě --> už to příště nebudeme zkoušet načítat */
4.79 + mezipamet.put(trida, new Properties());
4.80 + }
4.81 + }
4.82
4.83 - return mezipamet.get(trida).getProperty(klic.toString());
4.84 + return mezipamet.get(trida).getProperty(klic.toString());
4.85 }
4.86
4.87 /**
4.88 @@ -97,7 +98,7 @@
4.89 * @param args prázdné
4.90 */
4.91 public static void main(String[] args) {
4.92 - System.out.println(new SuperDAO().getSQL(VLASTNOSTI.AHOJ));
4.93 + System.out.println(new SuperDAO().getSQL(VLASTNOSTI.AHOJ));
4.94 }
4.95
4.96 /**
4.97 @@ -107,17 +108,29 @@
4.98 * @return načtené vlastnosti nebo null v případě chyby
4.99 */
4.100 private Properties getHodnoty(String pripona, Class trida) {
4.101 - String soubor = trida.getSimpleName() + "." + pripona;
4.102 + String soubor = trida.getSimpleName() + "." + pripona;
4.103
4.104 - try {
4.105 - Properties hodnoty = new Properties();
4.106 - InputStream fis = trida.getResourceAsStream(soubor);
4.107 - hodnoty.loadFromXML(fis);
4.108 - return hodnoty;
4.109 - } catch (Exception e) {
4.110 - log.log(Level.SEVERE, "Chyba při načítání vlastností: " + soubor, e);
4.111 - return null;
4.112 - }
4.113 + try {
4.114 + Properties hodnoty = new Properties();
4.115 + InputStream fis = trida.getResourceAsStream(soubor);
4.116 + hodnoty.loadFromXML(fis);
4.117 + return hodnoty;
4.118 + } catch (Exception e) {
4.119 + log.log(Level.SEVERE, "Chyba při načítání vlastností: " + soubor, e);
4.120 + return null;
4.121 + }
4.122 + }
4.123 +
4.124 + /**
4.125 + * Pokusí se zrušit transakci.
4.126 + * @param spojeni databázové spojení.
4.127 + */
4.128 + protected void rollback(Connection spojeni) {
4.129 + try {
4.130 + spojeni.rollback();
4.131 + } catch (SQLException e) {
4.132 + log.log(Level.FINEST, "rollback se nezdařil", e);
4.133 + }
4.134 }
4.135
4.136 /**
4.137 @@ -127,24 +140,24 @@
4.138 * @param vysledek DB výsledek
4.139 */
4.140 protected static void zavri(Connection spojeni, Statement prikaz, ResultSet vysledek) {
4.141 - if (vysledek != null) {
4.142 - try {
4.143 - vysledek.close();
4.144 - } catch (Exception e) {
4.145 - }
4.146 - }
4.147 - if (prikaz != null) {
4.148 - try {
4.149 - prikaz.close();
4.150 - } catch (Exception e) {
4.151 - }
4.152 - }
4.153 - if (spojeni != null) {
4.154 - try {
4.155 - spojeni.close();
4.156 - } catch (Exception e) {
4.157 - }
4.158 - }
4.159 + if (vysledek != null) {
4.160 + try {
4.161 + vysledek.close();
4.162 + } catch (Exception e) {
4.163 + }
4.164 + }
4.165 + if (prikaz != null) {
4.166 + try {
4.167 + prikaz.close();
4.168 + } catch (Exception e) {
4.169 + }
4.170 + }
4.171 + if (spojeni != null) {
4.172 + try {
4.173 + spojeni.close();
4.174 + } catch (Exception e) {
4.175 + }
4.176 + }
4.177 }
4.178
4.179 /**
4.180 @@ -154,10 +167,10 @@
4.181 * @return Text s oříznutými bílými znany nazačátku a nakonci.
4.182 */
4.183 public static String orizni(String text) {
4.184 - if (text == null) {
4.185 - return null;
4.186 - } else {
4.187 - return text.trim();
4.188 - }
4.189 + if (text == null) {
4.190 + return null;
4.191 + } else {
4.192 + return text.trim();
4.193 + }
4.194 }
4.195 -}
4.196 \ No newline at end of file
4.197 +}
5.1 --- a/java/nekurak.net-web/web/index.jsp Tue Jan 26 20:35:40 2010 +0100
5.2 +++ b/java/nekurak.net-web/web/index.jsp Wed Jan 27 01:28:52 2010 +0100
5.3 @@ -13,7 +13,7 @@
5.4 </head>
5.5 <body>
5.6 <h1>Nekuřák.net</h1>
5.7 - <p>Začínáme s J2EE…</p>
5.8 + <p>Načítáme údaje z databáze.</p>
5.9
5.10
5.11 <!-- jednoduchá podmínka -->