[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