# HG changeset patch
# User František Kučera <franta-hg@frantovo.cz>
# Date 1265879199 -3600
# Node ID 0f037986bb6baec6dd2048f2b98a2b248510d968
# Parent  88f3012c60a2533b4184493fd8ca872cb95b7fff
Hibernate.

diff -r 88f3012c60a2 -r 0f037986bb6b java/nekurak.net-ear/nbproject/project.properties
--- a/java/nekurak.net-ear/nbproject/project.properties	Thu Feb 11 08:52:50 2010 +0100
+++ b/java/nekurak.net-ear/nbproject/project.properties	Thu Feb 11 10:06:39 2010 +0100
@@ -4,7 +4,7 @@
 client.module.uri=nekurak.net-web
 client.urlPart=
 debug.classpath=${javac.classpath}::${jar.content.additional}:${run.classpath}
-display.browser=true
+display.browser=false
 dist.dir=dist
 dist.jar=${dist.dir}/${jar.name}
 endorsed.classpath=\
@@ -30,4 +30,5 @@
 reference.nekurak_net-ejb.dist-ear=${project.nekurak_net-ejb}/dist/nekurak.net-ejb.jar
 reference.nekurak_net-web.dist-ear=${project.nekurak_net-web}/dist/nekurak.net-web.war
 resource.dir=setup
+run.classpath=
 source.root=.
diff -r 88f3012c60a2 -r 0f037986bb6b java/nekurak.net-ejb/src/conf/Podnik.hbm.xml
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/java/nekurak.net-ejb/src/conf/Podnik.hbm.xml	Thu Feb 11 10:06:39 2010 +0100
@@ -0,0 +1,9 @@
+<?xml version="1.0"?>
+<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
+"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
+<hibernate-mapping>
+    <class name="cz.frantovo.nekurak.dto.Podnik" table="podnik">
+	<id name="id" column="id" type="integer"/>
+	<property name="nazev" column="nazev"/>
+    </class>
+</hibernate-mapping>
\ No newline at end of file
diff -r 88f3012c60a2 -r 0f037986bb6b java/nekurak.net-ejb/src/conf/persistence.xml
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/java/nekurak.net-ejb/src/conf/persistence.xml	Thu Feb 11 10:06:39 2010 +0100
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<persistence version="1.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd">
+  <persistence-unit name="nekurak.net-PU" transaction-type="JTA">
+    <provider>org.hibernate.ejb.HibernatePersistence</provider>
+    <jta-data-source>jdbc/nekurak</jta-data-source>
+    <exclude-unlisted-classes>false</exclude-unlisted-classes>
+    <properties>
+      <property name="hibernate.dialect" value="org.hibernate.dialect.PostgreSQLDialect"/>
+      <property name="hibernate.hbm2ddl.auto" value="validate"/>
+      <property name="hibernate.max_fetch_depth " value="3"/>
+      <property name="hibernate.default_batch_fetch_size" value="16"/>
+      <property name="hibernate.order_updates" value="true"/>
+      <property name="hibernate.order_inserts" value="true"/>
+      <property name="hibernate.show_sql" value="false"/>
+    </properties>
+  </persistence-unit>
+</persistence>
diff -r 88f3012c60a2 -r 0f037986bb6b java/nekurak.net-ejb/src/java/cz/frantovo/nekurak/ejb/PodnikHibernateDAO.java
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/java/nekurak.net-ejb/src/java/cz/frantovo/nekurak/ejb/PodnikHibernateDAO.java	Thu Feb 11 10:06:39 2010 +0100
@@ -0,0 +1,31 @@
+package cz.frantovo.nekurak.ejb;
+
+import cz.frantovo.nekurak.dto.Podnik;
+import java.util.Collection;
+import javax.ejb.Stateless;
+import javax.persistence.EntityManager;
+import javax.persistence.PersistenceContext;
+import javax.persistence.Query;
+
+/**
+ *
+ * @author fiki
+ */
+@Stateless
+public class PodnikHibernateDAO implements PodnikHibernateDAORemote {
+
+    private static final String PU = "nekurak.net-PU";
+
+    @PersistenceContext(unitName = PU)
+    private EntityManager em;
+
+    public Collection<Podnik> getPodniky() {
+	Query dotaz = em.createQuery("FROM " + t(Podnik.class) + " o ORDER BY nazev");
+        return dotaz.getResultList();
+    }
+
+    
+    private static String t(Class trida) {
+        return trida.getSimpleName();
+    }
+}
diff -r 88f3012c60a2 -r 0f037986bb6b java/nekurak.net-lib/src/cz/frantovo/nekurak/dto/Podnik.java
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/java/nekurak.net-lib/src/cz/frantovo/nekurak/dto/Podnik.java	Thu Feb 11 10:06:39 2010 +0100
@@ -0,0 +1,38 @@
+package cz.frantovo.nekurak.dto;
+
+import java.io.Serializable;
+
+/**
+ *
+ * @author fiki
+ */
+public class Podnik implements Serializable {
+
+    private int id;
+    private String nazev;
+
+    public Podnik() {
+    }
+
+    public Podnik(int id, String nazev) {
+	this.id = id;
+	this.nazev = nazev;
+    }
+
+    public int getId() {
+	return id;
+    }
+
+    public void setId(int id) {
+	this.id = id;
+    }
+
+    public String getNazev() {
+	return nazev;
+    }
+
+    public void setNazev(String nazev) {
+	this.nazev = nazev;
+    }
+
+}
diff -r 88f3012c60a2 -r 0f037986bb6b java/nekurak.net-lib/src/cz/frantovo/nekurak/ejb/PodnikHibernateDAORemote.java
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/java/nekurak.net-lib/src/cz/frantovo/nekurak/ejb/PodnikHibernateDAORemote.java	Thu Feb 11 10:06:39 2010 +0100
@@ -0,0 +1,16 @@
+package cz.frantovo.nekurak.ejb;
+
+import cz.frantovo.nekurak.dto.Podnik;
+import java.util.Collection;
+import javax.ejb.Remote;
+
+/**
+ *
+ * @author fiki
+ */
+@Remote
+public interface PodnikHibernateDAORemote {
+
+    public Collection<Podnik> getPodniky();
+    
+}
diff -r 88f3012c60a2 -r 0f037986bb6b java/nekurak.net-web/src/java/cz/frantovo/nekurak/dto/Podnik.java
--- a/java/nekurak.net-web/src/java/cz/frantovo/nekurak/dto/Podnik.java	Thu Feb 11 08:52:50 2010 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,38 +0,0 @@
-package cz.frantovo.nekurak.dto;
-
-import java.io.Serializable;
-
-/**
- *
- * @author fiki
- */
-public class Podnik implements Serializable {
-
-    private int id;
-    private String nazev;
-
-    public Podnik() {
-    }
-
-    public Podnik(int id, String nazev) {
-	this.id = id;
-	this.nazev = nazev;
-    }
-
-    public int getId() {
-	return id;
-    }
-
-    public void setId(int id) {
-	this.id = id;
-    }
-
-    public String getNazev() {
-	return nazev;
-    }
-
-    public void setNazev(String nazev) {
-	this.nazev = nazev;
-    }
-
-}
diff -r 88f3012c60a2 -r 0f037986bb6b java/nekurak.net-web/src/java/cz/frantovo/nekurak/web/PodnikyHibernateWeb.java
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/java/nekurak.net-web/src/java/cz/frantovo/nekurak/web/PodnikyHibernateWeb.java	Thu Feb 11 10:06:39 2010 +0100
@@ -0,0 +1,38 @@
+package cz.frantovo.nekurak.web;
+
+import cz.frantovo.nekurak.dto.Podnik;
+import cz.frantovo.nekurak.ejb.PodnikHibernateDAORemote;
+import java.io.Serializable;
+import java.util.Collection;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import javax.naming.Context;
+import javax.naming.InitialContext;
+import javax.naming.NamingException;
+
+/**
+ *
+ * @author fiki
+ */
+public class PodnikyHibernateWeb implements Serializable {
+
+    private PodnikHibernateDAORemote podnikDAO;
+    private static final Logger log = Logger.getLogger(PodnikyHibernateWeb.class.getSimpleName());
+
+    public Collection<Podnik> getPodniky() {
+	return lookupCilDAO().getPodniky();
+    }
+
+    private PodnikHibernateDAORemote lookupCilDAO() {
+	if (podnikDAO == null) {
+	    try {
+		Context c = new InitialContext();
+		podnikDAO = (PodnikHibernateDAORemote) c.lookup("cz.frantovo.nekurak.ejb.PodnikHibernateDAORemote");
+	    } catch (NamingException e) {
+		log.log(Level.SEVERE, "Chyba při hledání PodnikHibernateDAO", e);
+		throw new RuntimeException(e);
+	    }
+	}
+	return podnikDAO;
+    }
+}
diff -r 88f3012c60a2 -r 0f037986bb6b java/nekurak.net-web/web/hibernate.jsp
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/java/nekurak.net-web/web/hibernate.jsp	Thu Feb 11 10:06:39 2010 +0100
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<jsp:root xmlns:jsp="http://java.sun.com/JSP/Page"
+	  xmlns:c="http://java.sun.com/jsp/jstl/core"
+	  version="2.0">
+    <jsp:directive.page contentType="application/xhtml+xml"/>
+    <jsp:output doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"
+		doctype-root-element="html"
+		omit-xml-declaration="false"/>
+
+    <html xmlns="http://www.w3.org/1999/xhtml">
+	<head>
+	    <title>Nekuřák.net</title>
+	    <link href="styl.css" type="text/css" rel="StyleSheet"/>
+	</head>
+	<body>
+	    <h1>Nekuřák.net – Hibernate:</h1>
+	    <p>Načítáme údaje z databáze.</p>
+
+	    <p>Seznam podniků načtený pomocí Hibernate:</p>
+	    <!-- Vytvoříme si instanci JavaBeany -->
+	    <jsp:useBean id="podnikyWeb" class="cz.frantovo.nekurak.web.PodnikyHibernateWeb" scope="request"/>
+	    <table>
+		<thead>
+		    <tr>
+			<td>Číslo</td>
+			<td>Název</td>
+		    </tr>
+		</thead>
+		<tbody>
+		    <c:forEach var="p" items="${podnikyWeb.podniky}">
+			<tr>
+			    <td><c:out value="${p.id}"/></td>
+			    <td><c:out value="${p.nazev}"/></td>
+			</tr>
+		    </c:forEach>
+		</tbody>
+	    </table>
+
+	</body>
+    </html>
+
+</jsp:root>