[jboss-cvs] jboss-seam/src/main/org/jboss/seam/framework ...

Gavin King gavin.king at jboss.com
Sun Oct 8 15:35:48 EDT 2006


  User: gavin   
  Date: 06/10/08 15:35:48

  Modified:    src/main/org/jboss/seam/framework      EntityHome.java
                        HibernateEntityHome.java Query.java
  Added:       src/main/org/jboss/seam/framework      EntityQuery.java
                        HibernateEntityQuery.java
  Log:
  full Hibernate support in fwk
  
  Revision  Changes    Path
  1.5       +1 -0      jboss-seam/src/main/org/jboss/seam/framework/EntityHome.java
  
  (In the diff below, changes in quantity of whitespace are not shown.)
  
  Index: EntityHome.java
  ===================================================================
  RCS file: /cvsroot/jboss/jboss-seam/src/main/org/jboss/seam/framework/EntityHome.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -b -r1.4 -r1.5
  --- EntityHome.java	8 Oct 2006 19:12:36 -0000	1.4
  +++ EntityHome.java	8 Oct 2006 19:35:48 -0000	1.5
  @@ -14,6 +14,7 @@
      @Override
      public void validate()
      {
  +      super.validate();
         if ( getEntityManager()==null )
         {
            throw new IllegalStateException("entityManager is null");
  
  
  
  1.2       +10 -0     jboss-seam/src/main/org/jboss/seam/framework/HibernateEntityHome.java
  
  (In the diff below, changes in quantity of whitespace are not shown.)
  
  Index: HibernateEntityHome.java
  ===================================================================
  RCS file: /cvsroot/jboss/jboss-seam/src/main/org/jboss/seam/framework/HibernateEntityHome.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -b -r1.1 -r1.2
  --- HibernateEntityHome.java	8 Oct 2006 18:57:45 -0000	1.1
  +++ HibernateEntityHome.java	8 Oct 2006 19:35:48 -0000	1.2
  @@ -14,6 +14,16 @@
      @In(create=true) 
      private FacesMessages facesMessages; 
      
  +   @Override
  +   public void validate()
  +   {
  +      super.validate();
  +      if ( getSession()==null )
  +      {
  +         throw new IllegalStateException("session is null");
  +      }
  +   }
  +
      @Transactional
      public boolean isManaged()
      {
  
  
  
  1.7       +22 -108   jboss-seam/src/main/org/jboss/seam/framework/Query.java
  
  (In the diff below, changes in quantity of whitespace are not shown.)
  
  Index: Query.java
  ===================================================================
  RCS file: /cvsroot/jboss/jboss-seam/src/main/org/jboss/seam/framework/Query.java,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -b -r1.6 -r1.7
  --- Query.java	8 Oct 2006 14:01:53 -0000	1.6
  +++ Query.java	8 Oct 2006 19:35:48 -0000	1.7
  @@ -2,70 +2,42 @@
   
   import java.util.ArrayList;
   import java.util.List;
  -import java.util.Map;
   import java.util.StringTokenizer;
   
  +import javax.annotation.PostConstruct;
   import javax.faces.model.DataModel;
  -import javax.persistence.EntityManager;
   
   import org.jboss.seam.annotations.Transactional;
   import org.jboss.seam.core.Expressions;
   import org.jboss.seam.core.Expressions.ValueBinding;
   import org.jboss.seam.jsf.ListDataModel;
   
  -public class Query
  +public abstract class Query
   {
      private String ejbql;
      private Integer firstResult;
      private Integer maxResults;
  -   private EntityManager entityManager;
  -   private Map<String, String> hints;
      private List<String> restrictions;
      private String order;
      
  -   private List resultList;
      private DataModel dataModel;
  -   private Object singleResult;
  -   private Long resultCount;
      
      private String parsedEjbql;
      private List<ValueBinding> queryParameters;
      private List<String> parsedRestrictions;
      private List<ValueBinding> restrictionParameters;
   
  -   @Transactional
  -   public List getResultList()
  -   {
  -      if (resultList==null)
  -      {
  -         javax.persistence.Query query = createQuery();
  -         resultList = query==null ? null : query.getResultList();
  -      }
  -      return resultList;
  -   }
  +   public abstract List getResultList();
  +   public abstract Object getSingleResult();
  +   public abstract Long getResultCount();
      
  -   @Transactional
  -   public Object getSingleResult()
  +   @PostConstruct
  +   public void validate()
      {
  -      if (singleResult==null)
  +      if ( getEjbql()==null )
         {
  -         javax.persistence.Query query = createQuery();
  -         singleResult = query==null ? 
  -               null : query.getSingleResult();
  +         throw new IllegalStateException("ejbql is null");
         }
  -      return singleResult;
  -   }
  -
  -   @Transactional
  -   public Long getResultCount()
  -   {
  -      if (resultCount==null)
  -      {
  -         javax.persistence.Query query = createCountQuery();
  -         resultCount = query==null ? 
  -               null : (Long) query.getSingleResult();
  -      }
  -      return (Long) resultCount;
      }
   
      @Transactional
  @@ -78,58 +50,9 @@
         return dataModel;
      }
      
  -   protected javax.persistence.Query createQuery()
  -   {
  -      parseEjbql();
  -      
  -      getEntityManager().joinTransaction();
  -      javax.persistence.Query query = getEntityManager().createQuery( getRenderedEjbql() );
  -      setParameters(query, queryParameters, 0);
  -      setParameters(query, restrictionParameters, queryParameters.size());
  -      if (firstResult!=null) query.setFirstResult(firstResult);
  -      if (maxResults!=null) query.setMaxResults(maxResults);
  -      if (hints!=null)
  -      {
  -         for (Map.Entry<String, String> me: hints.entrySet())
  -         {
  -            query.setHint(me.getKey(), me.getValue());
  -         }
  -      }
  -      return query;
  -   }
  -   
  -   protected javax.persistence.Query createCountQuery()
  -   {
  -      parseEjbql();
  -      
  -      getEntityManager().joinTransaction();
  -      
  -      String countEjbql = getCountEjbql();
  -      
  -      javax.persistence.Query query = getEntityManager().createQuery(countEjbql);
  -      setParameters(query, queryParameters, 0);
  -      setParameters(query, restrictionParameters, queryParameters.size());
  -      return query;
  -   }
  -
  -   private void setParameters(javax.persistence.Query query, List<ValueBinding> parameters, int start)
  -   {
  -      for (int i=0; i<parameters.size(); i++)
  -      {
  -         Object parameterValue = parameters.get(i).getValue();
  -         if (parameterValue!=null)
  -         {
  -            query.setParameter(start++, parameterValue);
  -         }
  -      }
  -   }
  -
      public void refresh()
      {
         dataModel = null;
  -      resultCount = null;
  -      resultList = null;
  -      singleResult = null;
      }
      
      public void last()
  @@ -285,16 +208,6 @@
         this.ejbql = ejbql;
      }
   
  -   public EntityManager getEntityManager()
  -   {
  -      return entityManager;
  -   }
  -
  -   public void setEntityManager(EntityManager entityManager)
  -   {
  -      this.entityManager = entityManager;
  -   }
  -
      public Integer getFirstResult()
      {
         return firstResult;
  @@ -307,7 +220,8 @@
   
      public boolean isNextExists()
      {
  -      return resultList!=null && resultList.size() == maxResults;
  +      return getResultList()!=null && 
  +            getResultList().size() == maxResults;
      }
   
      public void setFirstResult(Integer firstResult)
  @@ -327,16 +241,6 @@
         this.maxResults = maxResults;
      }
   
  -   public Map<String, String> getHints()
  -   {
  -      return hints;
  -   }
  -
  -   public void setHints(Map<String, String> hints)
  -   {
  -      this.hints = hints;
  -   }
  -
      public List<String> getRestrictions()
      {
         return restrictions;
  @@ -357,4 +261,14 @@
         this.order = order;
      }
   
  +   protected List<ValueBinding> getQueryParameters()
  +   {
  +      return queryParameters;
  +   }
  +   
  +   protected List<ValueBinding> getRestrictionParameters()
  +   {
  +      return restrictionParameters;
  +   }
  +
   }
  
  
  
  1.1      date: 2006/10/08 19:35:48;  author: gavin;  state: Exp;jboss-seam/src/main/org/jboss/seam/framework/EntityQuery.java
  
  Index: EntityQuery.java
  ===================================================================
  package org.jboss.seam.framework;
  
  import java.util.List;
  import java.util.Map;
  
  import javax.persistence.EntityManager;
  
  import org.jboss.seam.annotations.Transactional;
  import org.jboss.seam.core.Expressions.ValueBinding;
  
  public class EntityQuery extends Query
  {
     private EntityManager entityManager;
  
     private List resultList;
     private Object singleResult;
     private Long resultCount;
     private Map<String, String> hints;
  
     @Override
     public void validate()
     {
        super.validate();
        if ( getEntityManager()==null )
        {
           throw new IllegalStateException("entityManager is null");
        }
     }
  
     @Transactional
     @Override
     public List getResultList()
     {
        if (resultList==null)
        {
           javax.persistence.Query query = createQuery();
           resultList = query==null ? null : query.getResultList();
        }
        return resultList;
     }
     
     @Transactional
     @Override
     public Object getSingleResult()
     {
        if (singleResult==null)
        {
           javax.persistence.Query query = createQuery();
           singleResult = query==null ? 
                 null : query.getSingleResult();
        }
        return singleResult;
     }
  
     @Transactional
     @Override
     public Long getResultCount()
     {
        if (resultCount==null)
        {
           javax.persistence.Query query = createCountQuery();
           resultCount = query==null ? 
                 null : (Long) query.getSingleResult();
        }
        return (Long) resultCount;
     }
  
     @Override
     public void refresh()
     {
        super.refresh();
        resultCount = null;
        resultList = null;
        singleResult = null;
     }
     
     public EntityManager getEntityManager()
     {
        return entityManager;
     }
  
     public void setEntityManager(EntityManager entityManager)
     {
        this.entityManager = entityManager;
     }
  
     protected javax.persistence.Query createQuery()
     {
        parseEjbql();
        
        getEntityManager().joinTransaction();
        javax.persistence.Query query = getEntityManager().createQuery( getRenderedEjbql() );
        setParameters( query, getQueryParameters(), 0 );
        setParameters( query, getRestrictionParameters(), getQueryParameters().size() );
        if ( getFirstResult()!=null) query.setFirstResult( getFirstResult() );
        if ( getMaxResults()!=null) query.setMaxResults( getMaxResults() );
        if ( getHints()!=null )
        {
           for ( Map.Entry<String, String> me: getHints().entrySet() )
           {
              query.setHint(me.getKey(), me.getValue());
           }
        }
        return query;
     }
     
     protected javax.persistence.Query createCountQuery()
     {
        parseEjbql();
        
        getEntityManager().joinTransaction();
        javax.persistence.Query query = getEntityManager().createQuery( getCountEjbql() );
        setParameters( query, getQueryParameters(), 0 );
        setParameters( query, getRestrictionParameters(), getQueryParameters().size() );
        return query;
     }
  
     private void setParameters(javax.persistence.Query query, List<ValueBinding> parameters, int start)
     {
        for (int i=0; i<parameters.size(); i++)
        {
           Object parameterValue = parameters.get(i).getValue();
           if (parameterValue!=null)
           {
              query.setParameter(start++, parameterValue);
           }
        }
     }
  
     public Map<String, String> getHints()
     {
        return hints;
     }
  
     public void setHints(Map<String, String> hints)
     {
        this.hints = hints;
     }
  
  }
  
  
  
  1.1      date: 2006/10/08 19:35:48;  author: gavin;  state: Exp;jboss-seam/src/main/org/jboss/seam/framework/HibernateEntityQuery.java
  
  Index: HibernateEntityQuery.java
  ===================================================================
  package org.jboss.seam.framework;
  
  import java.util.List;
  
  import org.hibernate.Session;
  import org.jboss.seam.annotations.Transactional;
  import org.jboss.seam.core.Expressions.ValueBinding;
  
  public class HibernateEntityQuery extends Query
  {
     private Session session;
  
     private List resultList;
     private Object singleResult;
     private Integer resultCount;
     
     private Boolean cacheable;
     private String cacheRegion;
     private Integer fetchSize;
     
     @Override
     public void validate()
     {
        super.validate();
        if ( getSession()==null )
        {
           throw new IllegalStateException("session is null");
        }
     }
  
     @Transactional
     @Override
     public List getResultList()
     {
        if (resultList==null)
        {
           org.hibernate.Query query = createQuery();
           resultList = query==null ? null : query.list();
        }
        return resultList;
     }
     
     @Transactional
     @Override
     public Object getSingleResult()
     {
        if (singleResult==null)
        {
           org.hibernate.Query query = createQuery();
           singleResult = query==null ? 
                 null : query.uniqueResult();
        }
        return singleResult;
     }
  
     @Transactional
     @Override
     public Long getResultCount()
     {
        if (resultCount==null)
        {
           org.hibernate.Query query = createCountQuery();
           resultCount = query==null ? 
                 null : (Integer) query.uniqueResult();
        }
        return resultCount.longValue();
     }
  
     @Override
     public void refresh()
     {
        super.refresh();
        resultCount = null;
        resultList = null;
        singleResult = null;
     }
     
     public Session getSession()
     {
        return session;
     }
  
     public void setSession(Session session)
     {
        this.session = session;
     }
  
     protected org.hibernate.Query createQuery()
     {
        parseEjbql();
        
        org.hibernate.Query query = getSession().createQuery( getRenderedEjbql() );
        setParameters( query, getQueryParameters(), 0 );
        setParameters( query, getRestrictionParameters(), getQueryParameters().size() );
        if ( getFirstResult()!=null) query.setFirstResult( getFirstResult() );
        if ( getMaxResults()!=null) query.setMaxResults( getMaxResults() );
        if ( getCacheable()!=null ) query.setCacheable( getCacheable() );
        if ( getCacheRegion()!=null ) query.setCacheRegion( getCacheRegion() );
        if ( getFetchSize()!=null ) query.setFetchSize( getFetchSize() );
        return query;
     }
     
     protected org.hibernate.Query createCountQuery()
     {
        parseEjbql();
        
        org.hibernate.Query query = getSession().createQuery( getCountEjbql() );
        setParameters( query, getQueryParameters(), 0 );
        setParameters( query, getRestrictionParameters(), getQueryParameters().size() );
        return query;
     }
  
     private void setParameters(org.hibernate.Query query, List<ValueBinding> parameters, int start)
     {
        for (int i=0; i<parameters.size(); i++)
        {
           Object parameterValue = parameters.get(i).getValue();
           if (parameterValue!=null)
           {
              query.setParameter(start++, parameterValue);
           }
        }
     }
  
     protected Boolean getCacheable()
     {
        return cacheable;
     }
  
     protected void setCacheable(Boolean cacheable)
     {
        this.cacheable = cacheable;
     }
  
     protected String getCacheRegion()
     {
        return cacheRegion;
     }
  
     protected void setCacheRegion(String cacheRegion)
     {
        this.cacheRegion = cacheRegion;
     }
  
     protected Integer getFetchSize()
     {
        return fetchSize;
     }
  
     protected void setFetchSize(Integer fetchSize)
     {
        this.fetchSize = fetchSize;
     }
  
  }
  
  
  



More information about the jboss-cvs-commits mailing list