[jboss-cvs] jboss-seam/examples/wiki/src/org/jboss/seam/wiki/core/dao ...
Christian Bauer
christian.bauer at jboss.com
Wed Feb 28 13:25:07 EST 2007
User: cbauer
Date: 07/02/28 13:25:07
Modified: examples/wiki/src/org/jboss/seam/wiki/core/dao
NodeDAO.java UserDAO.java WikiRoot.java
Log:
Basic file attachment/image embedding support
Revision Changes Path
1.2 +34 -9 jboss-seam/examples/wiki/src/org/jboss/seam/wiki/core/dao/NodeDAO.java
(In the diff below, changes in quantity of whitespace are not shown.)
Index: NodeDAO.java
===================================================================
RCS file: /cvsroot/jboss/jboss-seam/examples/wiki/src/org/jboss/seam/wiki/core/dao/NodeDAO.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -b -r1.1 -r1.2
--- NodeDAO.java 21 Feb 2007 16:24:09 -0000 1.1
+++ NodeDAO.java 28 Feb 2007 18:25:07 -0000 1.2
@@ -3,9 +3,11 @@
import org.jboss.seam.annotations.Name;
import org.jboss.seam.annotations.In;
import org.jboss.seam.annotations.Transactional;
+import org.jboss.seam.annotations.AutoCreate;
import org.jboss.seam.wiki.core.node.Node;
import org.jboss.seam.wiki.core.node.Directory;
import org.jboss.seam.wiki.core.node.Document;
+import org.jboss.seam.wiki.core.node.File;
import javax.persistence.EntityManager;
import javax.persistence.EntityNotFoundException;
@@ -17,22 +19,23 @@
* The primary reason why this DAO exists is the broken JPA specification. There is no reason
* why query.getSingleResult() should throw any exception if the query result is empty. It should
* just return <tt>null</tt>, like Hibernates query.uniqueResult() method. So instead of using
- * the EntityManager directly, must users, like me, will outsource this exception wrapping into
+ * the EntityManager directly, most users, like me, will outsource this exception wrapping into
* a DAO. Hey, this sounds like a job for Spring? Or maybe we should fix the specification...
*
* @author Christian Bauer
*
*/
@Name("nodeDAO")
+ at AutoCreate
+ at Transactional
public class NodeDAO {
@In
protected EntityManager entityManager;
- @In(create = true)
+ @In
Directory wikiRoot;
- @Transactional
public Node findNode(Long nodeId) {
entityManager.joinTransaction();
try {
@@ -42,7 +45,6 @@
return null;
}
- @Transactional
public Node findNodeInArea(Long areaNumber, String wikiname) {
entityManager.joinTransaction();
@@ -58,7 +60,21 @@
return null;
}
- @Transactional
+ public Node findNodeInDirectory(Directory directory, String wikiname) {
+ entityManager.joinTransaction();
+
+ try {
+ return (Node) entityManager
+ .createQuery("select n from Node n where n.parent = :parentDir and n.wikiname = :wikiname")
+ .setParameter("parentDir", directory)
+ .setParameter("wikiname", wikiname)
+ .getSingleResult();
+ } catch (EntityNotFoundException ex) {
+ } catch (NoResultException ex) {
+ }
+ return null;
+ }
+
public Document findDocumentInArea(Long areaNumber, String wikiname) {
entityManager.joinTransaction();
@@ -74,7 +90,6 @@
return null;
}
- @Transactional
public Directory findDirectoryInArea(Long areaNumber, String wikiname) {
entityManager.joinTransaction();
@@ -90,7 +105,6 @@
return null;
}
- @Transactional
public Directory findArea(String wikiname) {
entityManager.joinTransaction();
@@ -112,7 +126,6 @@
// TODO: A new Hibernate version should fix find()/get() - the old JBoss AS 4.0.5 version is broken
// ... or is it not: http://opensource.atlassian.com/projects/hibernate/browse/HHH-2352
- @Transactional
public Document findDocument(Long documentId) {
entityManager.joinTransaction();
@@ -127,7 +140,6 @@
return null;
}
- @Transactional
public Directory findDirectory(Long directoryId) {
entityManager.joinTransaction();
@@ -142,4 +154,17 @@
return null;
}
+ public File findFile(Long fileId) {
+ entityManager.joinTransaction();
+
+ try {
+ return (File) entityManager
+ .createQuery("select f from File f where f.id = :id")
+ .setParameter("id", fileId)
+ .getSingleResult();
+ } catch (EntityNotFoundException ex) {
+ } catch (NoResultException ex) {
+ }
+ return null;
+ }
}
1.5 +4 -5 jboss-seam/examples/wiki/src/org/jboss/seam/wiki/core/dao/UserDAO.java
(In the diff below, changes in quantity of whitespace are not shown.)
Index: UserDAO.java
===================================================================
RCS file: /cvsroot/jboss/jboss-seam/examples/wiki/src/org/jboss/seam/wiki/core/dao/UserDAO.java,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -b -r1.4 -r1.5
--- UserDAO.java 23 Feb 2007 01:32:35 -0000 1.4
+++ UserDAO.java 28 Feb 2007 18:25:07 -0000 1.5
@@ -7,6 +7,7 @@
import org.jboss.seam.annotations.In;
import org.jboss.seam.annotations.Name;
import org.jboss.seam.annotations.Transactional;
+import org.jboss.seam.annotations.AutoCreate;
import org.jboss.seam.wiki.core.users.Role;
import org.jboss.seam.wiki.core.users.User;
import org.hibernate.criterion.Order;
@@ -20,12 +21,13 @@
import java.util.List;
@Name("userDAO")
+ at AutoCreate
+ at Transactional
public class UserDAO {
@In
protected EntityManager entityManager;
- @Transactional
public User findUser(String username, boolean onlyActivated) {
entityManager.joinTransaction();
@@ -43,7 +45,6 @@
return null;
}
- @Transactional
public User findUserWithActivationCode(String activationCode) {
entityManager.joinTransaction();
@@ -59,7 +60,6 @@
return null;
}
- @Transactional
public Role findRole(String rolename) {
entityManager.joinTransaction();
@@ -74,7 +74,6 @@
return null;
}
- @Transactional
public List<User> findByExample(User exampleUser, String orderByProperty, boolean orderDescending,
int firstResult, int maxResults, String... ignoreProperty) {
Criteria crit = prepareExampleCriteria(exampleUser, orderByProperty, orderDescending, ignoreProperty);
@@ -82,7 +81,6 @@
return (List<User>)crit.list();
}
- @Transactional
public int getRowCountByExample(User exampleUser, String... ignoreProperty) {
Criteria crit = prepareExampleCriteria(exampleUser, null, false, ignoreProperty);
@@ -94,6 +92,7 @@
}
private Criteria prepareExampleCriteria(User exampleUser, String orderByProperty, boolean orderDescending, String... ignoreProperty) {
+ entityManager.joinTransaction();
Example example = Example.create(exampleUser).enableLike(MatchMode.ANYWHERE).ignoreCase();
1.2 +3 -1 jboss-seam/examples/wiki/src/org/jboss/seam/wiki/core/dao/WikiRoot.java
(In the diff below, changes in quantity of whitespace are not shown.)
Index: WikiRoot.java
===================================================================
RCS file: /cvsroot/jboss/jboss-seam/examples/wiki/src/org/jboss/seam/wiki/core/dao/WikiRoot.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -b -r1.1 -r1.2
--- WikiRoot.java 21 Feb 2007 16:24:09 -0000 1.1
+++ WikiRoot.java 28 Feb 2007 18:25:07 -0000 1.2
@@ -5,10 +5,12 @@
import org.jboss.seam.wiki.core.node.Directory;
import javax.persistence.EntityManager;
+import java.io.Serializable;
@Name("wikiRoot")
@Scope(ScopeType.CONVERSATION)
-public class WikiRoot {
+ at AutoCreate
+public class WikiRoot implements Serializable {
@In
protected EntityManager entityManager;
More information about the jboss-cvs-commits
mailing list