[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